https://launchpad.net/ubuntu/+archive/test-rebuild-20191220-focal-gcc10/+build/18385219 RUN: /usr/share/launchpad-buildd/bin/builder-prep Kernel version: Linux bos02-arm64-052 4.4.0-170-generic #199-Ubuntu SMP Thu Nov 14 01:46:18 UTC 2019 aarch64 Buildd toolchain package versions: launchpad-buildd_183 python-lpbuildd_183 sbuild_0.67.0-2ubuntu7.1 bzr-builder_0.7.3+bzr174~ppa13~ubuntu14.10.1 bzr_2.7.0-2ubuntu3.1 git-build-recipe_0.3.6~git201906051340.ff11471~ubuntu16.04.1 git_1:2.7.4-0ubuntu1.7 dpkg-dev_1.18.4ubuntu1.6 python-debian_0.1.27ubuntu2. Syncing the system clock with the buildd NTP service... 6 Jan 14:15:26 ntpdate[1859]: adjust time server 10.211.37.1 offset -0.089337 sec RUN: /usr/share/launchpad-buildd/bin/in-target unpack-chroot --backend=chroot --series=focal --arch=arm64 PACKAGEBUILD-18385219 --image-type chroot /home/buildd/filecache-default/9d93b4075e16ce7cfbdf01f21507152b0a173b17 Creating target for build PACKAGEBUILD-18385219 RUN: /usr/share/launchpad-buildd/bin/in-target mount-chroot --backend=chroot --series=focal --arch=arm64 PACKAGEBUILD-18385219 Starting target for build PACKAGEBUILD-18385219 RUN: /usr/share/launchpad-buildd/bin/in-target override-sources-list --backend=chroot --series=focal --arch=arm64 PACKAGEBUILD-18385219 'deb http://ppa.launchpad.net/doko/toolchain/ubuntu focal main' 'deb http://ppa.launchpad.net/ubuntu-toolchain-r/volatile/ubuntu focal main' 'deb http://ftpmaster.internal/ubuntu focal main restricted universe multiverse' Overriding sources.list in build-PACKAGEBUILD-18385219 RUN: /usr/share/launchpad-buildd/bin/in-target add-trusted-keys --backend=chroot --series=focal --arch=arm64 PACKAGEBUILD-18385219 Adding trusted keys to build-PACKAGEBUILD-18385219 Warning: apt-key output should not be parsed (stdout is not a terminal) OK Warning: apt-key output should not be parsed (stdout is not a terminal) /etc/apt/trusted.gpg -------------------- pub rsa1024 2009-01-18 [SC] 352B AA4B C10A 077D 04D2 8CAF 726C 32B5 38D0 4956 uid [ unknown] Launchpad PPA for Matthias Klose pub rsa1024 2009-10-22 [SC] 60C3 1780 3A41 BA51 845E 371A 1E93 77A2 BA9E F27F uid [ unknown] Launchpad Toolchain builds /etc/apt/trusted.gpg.d/ubuntu-keyring-2012-archive.gpg ------------------------------------------------------ pub rsa4096 2012-05-11 [SC] 790B C727 7767 219C 42C8 6F93 3B4F E6AC C0B2 1F32 uid [ unknown] Ubuntu Archive Automatic Signing Key (2012) /etc/apt/trusted.gpg.d/ubuntu-keyring-2012-cdimage.gpg ------------------------------------------------------ pub rsa4096 2012-05-11 [SC] 8439 38DF 228D 22F7 B374 2BC0 D94A A3F0 EFE2 1092 uid [ unknown] Ubuntu CD Image Automatic Signing Key (2012) /etc/apt/trusted.gpg.d/ubuntu-keyring-2018-archive.gpg ------------------------------------------------------ pub rsa4096 2018-09-17 [SC] F6EC B376 2474 EDA9 D21B 7022 8719 20D1 991B C93C uid [ unknown] Ubuntu Archive Automatic Signing Key (2018) RUN: /usr/share/launchpad-buildd/bin/in-target update-debian-chroot --backend=chroot --series=focal --arch=arm64 PACKAGEBUILD-18385219 Updating target for build PACKAGEBUILD-18385219 Get:1 http://ppa.launchpad.net/doko/toolchain/ubuntu focal InRelease [15.4 kB] Get:2 http://ftpmaster.internal/ubuntu focal InRelease [255 kB] Get:3 http://ppa.launchpad.net/ubuntu-toolchain-r/volatile/ubuntu focal InRelease [15.4 kB] Get:4 http://ppa.launchpad.net/doko/toolchain/ubuntu focal/main arm64 Packages [105 kB] Get:5 http://ppa.launchpad.net/doko/toolchain/ubuntu focal/main Translation-en [26.5 kB] Get:6 http://ftpmaster.internal/ubuntu focal/main arm64 Packages [938 kB] Get:7 http://ppa.launchpad.net/ubuntu-toolchain-r/volatile/ubuntu focal/main arm64 Packages [100 kB] Get:8 http://ppa.launchpad.net/ubuntu-toolchain-r/volatile/ubuntu focal/main Translation-en [23.7 kB] Get:9 http://ftpmaster.internal/ubuntu focal/main Translation-en [499 kB] Get:10 http://ftpmaster.internal/ubuntu focal/restricted arm64 Packages [1512 B] Get:11 http://ftpmaster.internal/ubuntu focal/restricted Translation-en [5768 B] Get:12 http://ftpmaster.internal/ubuntu focal/universe arm64 Packages [8508 kB] Get:13 http://ftpmaster.internal/ubuntu focal/universe Translation-en [5196 kB] Get:14 http://ftpmaster.internal/ubuntu focal/multiverse arm64 Packages [122 kB] Get:15 http://ftpmaster.internal/ubuntu focal/multiverse Translation-en [110 kB] Fetched 15.9 MB in 9s (1751 kB/s) Reading package lists... Reading package lists... Building dependency tree... Reading state information... Calculating upgrade... The following packages were automatically installed and are no longer required: g++-9 libhogweed4 libisl21 libnettle6 libperl5.28 libstdc++-9-dev perl-modules-5.28 Use 'sudo apt autoremove' to remove them. The following NEW packages will be installed: cpp-10 g++-10 gcc-10 gcc-10-base libasan6 libctf-nobfd0 libctf0 libgcc-10-dev libgcc-s1 libhogweed5 libisl22 libnettle7 libperl5.30 libstdc++-10-dev perl-modules-5.30 The following packages will be upgraded: apt base-files base-passwd bash binutils binutils-aarch64-linux-gnu binutils-common bsdutils bzip2 cpp cpp-9 debianutils fdisk g++ g++-9 gcc gcc-9 gcc-9-base gpg gpg-agent gpgconf gpgv gzip hostname libacl1 libapparmor1 libapt-pkg5.90 libasan5 libatomic1 libattr1 libaudit-common libaudit1 libbinutils libblkid1 libbz2-1.0 libc-bin libc-dev-bin libc6 libc6-dev libcap-ng0 libcap2 libcc1-0 libcryptsetup12 libdebconfclient0 libdevmapper1.02.1 libfdisk1 libgcc-9-dev libgcc1 libgcrypt20 libgnutls30 libgomp1 libitm1 libjson-c4 libkmod2 liblockfile-bin liblockfile1 liblsan0 liblz4-1 libmount1 libncurses6 libncursesw6 libp11-kit0 libpam-modules libpam-modules-bin libpam-runtime libpam0g libpcre2-8-0 libseccomp2 libselinux1 libsemanage-common libsemanage1 libsepol1 libsmartcols1 libsqlite3-0 libstdc++-9-dev libstdc++6 libsystemd0 libtasn1-6 libtinfo6 libtsan0 libubsan1 libudev1 libuuid1 libzstd1 linux-libc-dev lsb-base mount ncurses-base ncurses-bin perl perl-base sensible-utils systemd systemd-sysv sysvinit-utils util-linux 96 upgraded, 15 newly installed, 0 to remove and 0 not upgraded. Need to get 203 MB of archives. After this operation, 695 MB of additional disk space will be used. Get:1 http://ftpmaster.internal/ubuntu focal/main arm64 libc6-dev arm64 2.30-0ubuntu3 [2091 kB] Get:2 http://ppa.launchpad.net/doko/toolchain/ubuntu focal/main arm64 gcc-10-base arm64 10-20200104-1ubuntu2 [18.9 kB] Get:3 http://ppa.launchpad.net/doko/toolchain/ubuntu focal/main arm64 libgcc-s1 arm64 10-20200104-1ubuntu2 [34.8 kB] Get:4 http://ppa.launchpad.net/doko/toolchain/ubuntu focal/main arm64 libgcc1 arm64 1:10-20200104-1ubuntu2 [34.8 kB] Get:5 http://ppa.launchpad.net/doko/toolchain/ubuntu focal/main arm64 libstdc++6 arm64 10-20200104-1ubuntu2 [462 kB] Get:6 http://ppa.launchpad.net/doko/toolchain/ubuntu focal/main arm64 libgomp1 arm64 10-20200104-1ubuntu2 [92.0 kB] Get:7 http://ppa.launchpad.net/doko/toolchain/ubuntu focal/main arm64 libitm1 arm64 10-20200104-1ubuntu2 [23.8 kB] Get:8 http://ppa.launchpad.net/doko/toolchain/ubuntu focal/main arm64 libatomic1 arm64 10-20200104-1ubuntu2 [9236 B] Get:9 http://ppa.launchpad.net/doko/toolchain/ubuntu focal/main arm64 liblsan0 arm64 10-20200104-1ubuntu2 [130 kB] Get:10 http://ppa.launchpad.net/doko/toolchain/ubuntu focal/main arm64 libtsan0 arm64 10-20200104-1ubuntu2 [301 kB] Get:11 http://ppa.launchpad.net/doko/toolchain/ubuntu focal/main arm64 libubsan1 arm64 10-20200104-1ubuntu2 [126 kB] Get:12 http://ppa.launchpad.net/doko/toolchain/ubuntu focal/main arm64 libcc1-0 arm64 10-20200104-1ubuntu2 [37.1 kB] Get:13 http://ppa.launchpad.net/doko/toolchain/ubuntu focal/main arm64 binutils-aarch64-linux-gnu arm64 2.33.50.20200105-2ubuntu2 [2006 kB] Get:14 http://ftpmaster.internal/ubuntu focal/main arm64 libc-dev-bin arm64 2.30-0ubuntu3 [64.1 kB] Get:15 http://ftpmaster.internal/ubuntu focal/main arm64 linux-libc-dev arm64 5.3.0-24.26 [1077 kB] Get:16 http://ftpmaster.internal/ubuntu focal/main arm64 libc6 arm64 2.30-0ubuntu3 [2273 kB] Get:17 http://ppa.launchpad.net/doko/toolchain/ubuntu focal/main arm64 libbinutils arm64 2.33.50.20200105-2ubuntu2 [476 kB] Get:18 http://ppa.launchpad.net/doko/toolchain/ubuntu focal/main arm64 binutils arm64 2.33.50.20200105-2ubuntu2 [3360 B] Get:19 http://ppa.launchpad.net/doko/toolchain/ubuntu focal/main arm64 binutils-common arm64 2.33.50.20200105-2ubuntu2 [205 kB] Get:20 http://ppa.launchpad.net/doko/toolchain/ubuntu focal/main arm64 libctf-nobfd0 arm64 2.33.50.20200105-2ubuntu2 [44.1 kB] Get:21 http://ppa.launchpad.net/doko/toolchain/ubuntu focal/main arm64 libctf0 arm64 2.33.50.20200105-2ubuntu2 [43.9 kB] Get:22 http://ppa.launchpad.net/doko/toolchain/ubuntu focal/main arm64 cpp-10 arm64 10-20200104-1ubuntu2 [43.0 MB] Get:23 http://ftpmaster.internal/ubuntu focal/main arm64 base-files arm64 11ubuntu2 [60.0 kB] Get:24 http://ftpmaster.internal/ubuntu focal/main arm64 debianutils arm64 4.9.1 [85.6 kB] Get:25 http://ftpmaster.internal/ubuntu focal/main arm64 bash arm64 5.0-5ubuntu1 [603 kB] Get:26 http://ftpmaster.internal/ubuntu focal/main arm64 bsdutils arm64 1:2.34-0.1ubuntu4 [60.8 kB] Get:27 http://ftpmaster.internal/ubuntu focal/main arm64 gzip arm64 1.10-0ubuntu4 [93.0 kB] Get:28 http://ftpmaster.internal/ubuntu focal/main arm64 hostname arm64 3.23 [11.1 kB] Get:29 http://ftpmaster.internal/ubuntu focal/main arm64 ncurses-bin arm64 6.1+20191019-1ubuntu1 [166 kB] Get:30 http://ftpmaster.internal/ubuntu focal/main arm64 perl-modules-5.30 all 5.30.0-9 [2739 kB] Get:31 http://ftpmaster.internal/ubuntu focal/main arm64 libperl5.30 arm64 5.30.0-9 [3764 kB] Get:32 http://ftpmaster.internal/ubuntu focal/main arm64 perl arm64 5.30.0-9 [224 kB] Get:33 http://ftpmaster.internal/ubuntu focal/main arm64 perl-base arm64 5.30.0-9 [1389 kB] Get:34 http://ftpmaster.internal/ubuntu focal/main arm64 bzip2 arm64 1.0.8-2 [33.0 kB] Get:35 http://ftpmaster.internal/ubuntu focal/main arm64 libbz2-1.0 arm64 1.0.8-2 [32.9 kB] Get:36 http://ftpmaster.internal/ubuntu focal/main arm64 libblkid1 arm64 2.34-0.1ubuntu4 [129 kB] Get:37 http://ftpmaster.internal/ubuntu focal/main arm64 libuuid1 arm64 2.34-0.1ubuntu4 [20.0 kB] Get:38 http://ftpmaster.internal/ubuntu focal/main arm64 libfdisk1 arm64 2.34-0.1ubuntu4 [160 kB] Get:39 http://ftpmaster.internal/ubuntu focal/main arm64 libpcre2-8-0 arm64 10.34-7 [170 kB] Get:40 http://ftpmaster.internal/ubuntu focal/main arm64 libselinux1 arm64 3.0-1 [64.8 kB] Get:41 http://ftpmaster.internal/ubuntu focal/main arm64 libmount1 arm64 2.34-0.1ubuntu4 [140 kB] Get:42 http://ftpmaster.internal/ubuntu focal/main arm64 libncurses6 arm64 6.1+20191019-1ubuntu1 [91.8 kB] Get:43 http://ftpmaster.internal/ubuntu focal/main arm64 libtinfo6 arm64 6.1+20191019-1ubuntu1 [80.4 kB] Get:44 http://ftpmaster.internal/ubuntu focal/main arm64 libncursesw6 arm64 6.1+20191019-1ubuntu1 [120 kB] Get:45 http://ftpmaster.internal/ubuntu focal/main arm64 libsmartcols1 arm64 2.34-0.1ubuntu4 [93.5 kB] Get:46 http://ftpmaster.internal/ubuntu focal/main arm64 fdisk arm64 2.34-0.1ubuntu4 [115 kB] Get:47 http://ftpmaster.internal/ubuntu focal/main arm64 util-linux arm64 2.34-0.1ubuntu4 [984 kB] Get:48 http://ftpmaster.internal/ubuntu focal/main arm64 libdebconfclient0 arm64 0.250ubuntu2 [6260 B] Get:49 http://ftpmaster.internal/ubuntu focal/main arm64 base-passwd arm64 3.5.47 [47.0 kB] Get:50 http://ftpmaster.internal/ubuntu focal/main arm64 libc-bin arm64 2.30-0ubuntu3 [502 kB] Get:51 http://ftpmaster.internal/ubuntu focal/main arm64 ncurses-base all 6.1+20191019-1ubuntu1 [17.9 kB] Get:52 http://ftpmaster.internal/ubuntu focal/main arm64 lsb-base all 11.1.0ubuntu2 [12.1 kB] Get:53 http://ftpmaster.internal/ubuntu focal/main arm64 sysvinit-utils arm64 2.96-1ubuntu1 [20.5 kB] Get:54 http://ftpmaster.internal/ubuntu focal/main arm64 liblz4-1 arm64 1.9.2-2 [52.7 kB] Get:55 http://ftpmaster.internal/ubuntu focal/main arm64 systemd-sysv arm64 244-3ubuntu1 [9368 B] Get:56 http://ftpmaster.internal/ubuntu focal/main arm64 libacl1 arm64 2.2.53-5ubuntu1 [17.7 kB] Get:57 http://ftpmaster.internal/ubuntu focal/main arm64 libapparmor1 arm64 2.13.3-7ubuntu1 [33.2 kB] Get:58 http://ftpmaster.internal/ubuntu focal/main arm64 libaudit-common all 1:2.8.5-2ubuntu5 [4076 B] Get:59 http://ftpmaster.internal/ubuntu focal/main arm64 libcap-ng0 arm64 0.7.9-2.1 [10.5 kB] Get:60 http://ftpmaster.internal/ubuntu focal/main arm64 libaudit1 arm64 1:2.8.5-2ubuntu5 [38.4 kB] Get:61 http://ftpmaster.internal/ubuntu focal/main arm64 libcap2 arm64 1:2.27-1 [13.9 kB] Get:62 http://ftpmaster.internal/ubuntu focal/main arm64 libudev1 arm64 244-3ubuntu1 [70.2 kB] Get:63 http://ftpmaster.internal/ubuntu focal/main arm64 libdevmapper1.02.1 arm64 2:1.02.155-2ubuntu7 [111 kB] Get:64 http://ftpmaster.internal/ubuntu focal/main arm64 libjson-c4 arm64 0.13.1+dfsg-6 [28.0 kB] Get:65 http://ftpmaster.internal/ubuntu focal/main arm64 libcryptsetup12 arm64 2:2.2.2-1ubuntu1 [166 kB] Get:66 http://ftpmaster.internal/ubuntu focal/main arm64 libnettle7 arm64 3.5.1+really3.5.1-2 [124 kB] Get:67 http://ftpmaster.internal/ubuntu focal/main arm64 libhogweed5 arm64 3.5.1+really3.5.1-2 [134 kB] Get:68 http://ftpmaster.internal/ubuntu focal/main arm64 libp11-kit0 arm64 0.23.18.1-2 [177 kB] Get:69 http://ftpmaster.internal/ubuntu focal/main arm64 libtasn1-6 arm64 4.15.0-2 [36.3 kB] Get:70 http://ftpmaster.internal/ubuntu focal/main arm64 libgnutls30 arm64 3.6.11.1-2 [721 kB] Get:71 http://ftpmaster.internal/ubuntu focal/main arm64 libkmod2 arm64 26-3ubuntu1 [39.5 kB] Get:72 http://ftpmaster.internal/ubuntu focal/main arm64 libpam0g arm64 1.3.1-5ubuntu4 [53.9 kB] Get:73 http://ftpmaster.internal/ubuntu focal/main arm64 libseccomp2 arm64 2.4.2-2ubuntu1 [39.9 kB] Get:74 http://ftpmaster.internal/ubuntu focal/main arm64 mount arm64 2.34-0.1ubuntu4 [112 kB] Get:75 http://ftpmaster.internal/ubuntu focal/main arm64 systemd arm64 244-3ubuntu1 [3382 kB] Get:76 http://ftpmaster.internal/ubuntu focal/main arm64 libsystemd0 arm64 244-3ubuntu1 [240 kB] Get:77 http://ftpmaster.internal/ubuntu focal/main arm64 libzstd1 arm64 1.4.4+dfsg-1 [216 kB] Get:78 http://ftpmaster.internal/ubuntu focal/main arm64 libapt-pkg5.90 arm64 1.9.5 [776 kB] Get:79 http://ftpmaster.internal/ubuntu focal/main arm64 libgcrypt20 arm64 1.8.5-3ubuntu1 [350 kB] Get:80 http://ftpmaster.internal/ubuntu focal/main arm64 gpgv arm64 2.2.17-3ubuntu1 [183 kB] Get:81 http://ftpmaster.internal/ubuntu focal/main arm64 apt arm64 1.9.5 [1231 kB] Get:82 http://ftpmaster.internal/ubuntu focal/main arm64 libpam-modules-bin arm64 1.3.1-5ubuntu4 [35.8 kB] Get:83 http://ftpmaster.internal/ubuntu focal/main arm64 libpam-modules arm64 1.3.1-5ubuntu4 [242 kB] Get:84 http://ftpmaster.internal/ubuntu focal/main arm64 libattr1 arm64 1:2.4.48-5 [12.5 kB] Get:85 http://ftpmaster.internal/ubuntu focal/main arm64 libpam-runtime all 1.3.1-5ubuntu4 [37.3 kB] Get:86 http://ftpmaster.internal/ubuntu focal/main arm64 libsepol1 arm64 3.0-1 [231 kB] Get:87 http://ftpmaster.internal/ubuntu focal/main arm64 libsemanage-common all 3.0-1 [9880 B] Get:88 http://ftpmaster.internal/ubuntu focal/main arm64 libsemanage1 arm64 3.0-1 [79.6 kB] Get:89 http://ftpmaster.internal/ubuntu focal/main arm64 libasan5 arm64 9.2.1-21ubuntu1 [365 kB] Get:90 http://ftpmaster.internal/ubuntu focal/main arm64 g++-9 arm64 9.2.1-21ubuntu1 [9602 kB] Get:91 http://ftpmaster.internal/ubuntu focal/main arm64 gcc-9 arm64 9.2.1-21ubuntu1 [9017 kB] Get:92 http://ftpmaster.internal/ubuntu focal/main arm64 libstdc++-9-dev arm64 9.2.1-21ubuntu1 [1674 kB] Get:93 http://ftpmaster.internal/ubuntu focal/main arm64 libgcc-9-dev arm64 9.2.1-21ubuntu1 [915 kB] Get:94 http://ppa.launchpad.net/doko/toolchain/ubuntu focal/main arm64 libasan6 arm64 10-20200104-1ubuntu2 [318 kB] Get:95 http://ppa.launchpad.net/doko/toolchain/ubuntu focal/main arm64 libgcc-10-dev arm64 10-20200104-1ubuntu2 [904 kB] Get:96 http://ftpmaster.internal/ubuntu focal/main arm64 libisl22 arm64 0.22-2 [536 kB] Get:97 http://ppa.launchpad.net/doko/toolchain/ubuntu focal/main arm64 gcc-10 arm64 10-20200104-1ubuntu2 [48.3 MB] Get:98 http://ftpmaster.internal/ubuntu focal/main arm64 cpp-9 arm64 9.2.1-21ubuntu1 [8396 kB] Get:99 http://ftpmaster.internal/ubuntu focal/main arm64 gcc-9-base arm64 9.2.1-21ubuntu1 [19.1 kB] Get:100 http://ftpmaster.internal/ubuntu focal/main arm64 sensible-utils all 0.0.12+nmu1 [15.0 kB] Get:101 http://ftpmaster.internal/ubuntu focal/main arm64 libsqlite3-0 arm64 3.30.1-1ubuntu1 [499 kB] Get:102 http://ftpmaster.internal/ubuntu focal/main arm64 gpg arm64 2.2.17-3ubuntu1 [437 kB] Get:103 http://ftpmaster.internal/ubuntu focal/main arm64 gpgconf arm64 2.2.17-3ubuntu1 [117 kB] Get:104 http://ftpmaster.internal/ubuntu focal/main arm64 gpg-agent arm64 2.2.17-3ubuntu1 [216 kB] Get:105 http://ftpmaster.internal/ubuntu focal/main arm64 liblockfile-bin arm64 1.16-1.1 [11.3 kB] Get:106 http://ftpmaster.internal/ubuntu focal/main arm64 liblockfile1 arm64 1.16-1.1 [6440 B] Get:107 http://ppa.launchpad.net/doko/toolchain/ubuntu focal/main arm64 libstdc++-10-dev arm64 10-20200104-1ubuntu2 [1633 kB] Get:108 http://ppa.launchpad.net/doko/toolchain/ubuntu focal/main arm64 g++-10 arm64 10-20200104-1ubuntu2 [46.1 MB] Get:109 http://ppa.launchpad.net/doko/toolchain/ubuntu focal/main arm64 g++ arm64 4:10-1ubuntu1 [1600 B] Get:110 http://ppa.launchpad.net/doko/toolchain/ubuntu focal/main arm64 gcc arm64 4:10-1ubuntu1 [5228 B] Get:111 http://ppa.launchpad.net/doko/toolchain/ubuntu focal/main arm64 cpp arm64 4:10-1ubuntu1 [27.7 kB] debconf: delaying package configuration, since apt-utils is not installed Fetched 203 MB in 12s (16.6 MB/s) (Reading database ... 12731 files and directories currently installed.) Preparing to unpack .../libc6-dev_2.30-0ubuntu3_arm64.deb ... Unpacking libc6-dev:arm64 (2.30-0ubuntu3) over (2.30-0ubuntu2) ... Preparing to unpack .../libc-dev-bin_2.30-0ubuntu3_arm64.deb ... Unpacking libc-dev-bin (2.30-0ubuntu3) over (2.30-0ubuntu2) ... Preparing to unpack .../linux-libc-dev_5.3.0-24.26_arm64.deb ... Unpacking linux-libc-dev:arm64 (5.3.0-24.26) over (5.3.0-18.19) ... Selecting previously unselected package gcc-10-base:arm64. Preparing to unpack .../gcc-10-base_10-20200104-1ubuntu2_arm64.deb ... Unpacking gcc-10-base:arm64 (10-20200104-1ubuntu2) ... Setting up gcc-10-base:arm64 (10-20200104-1ubuntu2) ... Selecting previously unselected package libgcc-s1:arm64. (Reading database ... 12737 files and directories currently installed.) Preparing to unpack .../libgcc-s1_10-20200104-1ubuntu2_arm64.deb ... Unpacking libgcc-s1:arm64 (10-20200104-1ubuntu2) ... Setting up libgcc-s1:arm64 (10-20200104-1ubuntu2) ... (Reading database ... 12740 files and directories currently installed.) Preparing to unpack .../libgcc1_1%3a10-20200104-1ubuntu2_arm64.deb ... Unpacking libgcc1 (1:10-20200104-1ubuntu2) over (1:9.2.1-9ubuntu2) ... Setting up libgcc1 (1:10-20200104-1ubuntu2) ... (Reading database ... 12740 files and directories currently installed.) Preparing to unpack .../libc6_2.30-0ubuntu3_arm64.deb ... Unpacking libc6:arm64 (2.30-0ubuntu3) over (2.30-0ubuntu2) ... Setting up libc6:arm64 (2.30-0ubuntu3) ... (Reading database ... 12740 files and directories currently installed.) Preparing to unpack .../base-files_11ubuntu2_arm64.deb ... Unpacking base-files (11ubuntu2) over (10.2ubuntu7) ... Setting up base-files (11ubuntu2) ... Installing new version of config file /etc/debian_version ... Installing new version of config file /etc/issue ... Installing new version of config file /etc/issue.net ... Installing new version of config file /etc/lsb-release ... Installing new version of config file /etc/update-motd.d/50-motd-news ... Updating /root/.profile to current default. (Reading database ... 12740 files and directories currently installed.) Preparing to unpack .../debianutils_4.9.1_arm64.deb ... Unpacking debianutils (4.9.1) over (4.8.6.3) ... Setting up debianutils (4.9.1) ... (Reading database ... 12740 files and directories currently installed.) Preparing to unpack .../bash_5.0-5ubuntu1_arm64.deb ... Unpacking bash (5.0-5ubuntu1) over (5.0-4ubuntu1) ... Setting up bash (5.0-5ubuntu1) ... update-alternatives: using /usr/share/man/man7/bash-builtins.7.gz to provide /usr/share/man/man7/builtins.7.gz (builtins.7.gz) in auto mode (Reading database ... 12740 files and directories currently installed.) Preparing to unpack .../bsdutils_1%3a2.34-0.1ubuntu4_arm64.deb ... Unpacking bsdutils (1:2.34-0.1ubuntu4) over (1:2.34-0.1ubuntu2) ... Setting up bsdutils (1:2.34-0.1ubuntu4) ... (Reading database ... 12740 files and directories currently installed.) Preparing to unpack .../gzip_1.10-0ubuntu4_arm64.deb ... Unpacking gzip (1.10-0ubuntu4) over (1.10-0ubuntu3) ... Setting up gzip (1.10-0ubuntu4) ... (Reading database ... 12740 files and directories currently installed.) Preparing to unpack .../hostname_3.23_arm64.deb ... Unpacking hostname (3.23) over (3.22) ... Setting up hostname (3.23) ... (Reading database ... 12740 files and directories currently installed.) Preparing to unpack .../ncurses-bin_6.1+20191019-1ubuntu1_arm64.deb ... Unpacking ncurses-bin (6.1+20191019-1ubuntu1) over (6.1+20190803-1ubuntu1) ... Setting up ncurses-bin (6.1+20191019-1ubuntu1) ... (Reading database ... 12740 files and directories currently installed.) Preparing to unpack .../perl_5.30.0-9_arm64.deb ... Unpacking perl (5.30.0-9) over (5.28.1-6build1) ... Replacing files in old package perl-base (5.28.1-6build1) ... Selecting previously unselected package perl-modules-5.30. Preparing to unpack .../perl-modules-5.30_5.30.0-9_all.deb ... Unpacking perl-modules-5.30 (5.30.0-9) ... Selecting previously unselected package libperl5.30:arm64. Preparing to unpack .../libperl5.30_5.30.0-9_arm64.deb ... Unpacking libperl5.30:arm64 (5.30.0-9) ... Preparing to unpack .../perl-base_5.30.0-9_arm64.deb ... Unpacking perl-base (5.30.0-9) over (5.28.1-6build1) ... Setting up perl-base (5.30.0-9) ... (Reading database ... 14650 files and directories currently installed.) Preparing to unpack .../bzip2_1.0.8-2_arm64.deb ... Unpacking bzip2 (1.0.8-2) over (1.0.6-9.2) ... Preparing to unpack .../libbz2-1.0_1.0.8-2_arm64.deb ... Unpacking libbz2-1.0:arm64 (1.0.8-2) over (1.0.6-9.2) ... Setting up libbz2-1.0:arm64 (1.0.8-2) ... (Reading database ... 14650 files and directories currently installed.) Preparing to unpack .../libblkid1_2.34-0.1ubuntu4_arm64.deb ... Unpacking libblkid1:arm64 (2.34-0.1ubuntu4) over (2.34-0.1ubuntu2) ... Setting up libblkid1:arm64 (2.34-0.1ubuntu4) ... (Reading database ... 14650 files and directories currently installed.) Preparing to unpack .../libuuid1_2.34-0.1ubuntu4_arm64.deb ... Unpacking libuuid1:arm64 (2.34-0.1ubuntu4) over (2.34-0.1ubuntu2) ... Setting up libuuid1:arm64 (2.34-0.1ubuntu4) ... (Reading database ... 14650 files and directories currently installed.) Preparing to unpack .../libfdisk1_2.34-0.1ubuntu4_arm64.deb ... Unpacking libfdisk1:arm64 (2.34-0.1ubuntu4) over (2.34-0.1ubuntu2) ... Setting up libfdisk1:arm64 (2.34-0.1ubuntu4) ... (Reading database ... 14650 files and directories currently installed.) Preparing to unpack .../libpcre2-8-0_10.34-7_arm64.deb ... Unpacking libpcre2-8-0:arm64 (10.34-7) over (10.32-5) ... Setting up libpcre2-8-0:arm64 (10.34-7) ... (Reading database ... 14650 files and directories currently installed.) Preparing to unpack .../libselinux1_3.0-1_arm64.deb ... Unpacking libselinux1:arm64 (3.0-1) over (2.9-2) ... Setting up libselinux1:arm64 (3.0-1) ... (Reading database ... 14650 files and directories currently installed.) Preparing to unpack .../libmount1_2.34-0.1ubuntu4_arm64.deb ... Unpacking libmount1:arm64 (2.34-0.1ubuntu4) over (2.34-0.1ubuntu2) ... Setting up libmount1:arm64 (2.34-0.1ubuntu4) ... (Reading database ... 14650 files and directories currently installed.) Preparing to unpack .../libncurses6_6.1+20191019-1ubuntu1_arm64.deb ... Unpacking libncurses6:arm64 (6.1+20191019-1ubuntu1) over (6.1+20190803-1ubuntu1) ... Preparing to unpack .../libtinfo6_6.1+20191019-1ubuntu1_arm64.deb ... Unpacking libtinfo6:arm64 (6.1+20191019-1ubuntu1) over (6.1+20190803-1ubuntu1) ... Setting up libtinfo6:arm64 (6.1+20191019-1ubuntu1) ... (Reading database ... 14650 files and directories currently installed.) Preparing to unpack .../libncursesw6_6.1+20191019-1ubuntu1_arm64.deb ... Unpacking libncursesw6:arm64 (6.1+20191019-1ubuntu1) over (6.1+20190803-1ubuntu1) ... Setting up libncursesw6:arm64 (6.1+20191019-1ubuntu1) ... (Reading database ... 14650 files and directories currently installed.) Preparing to unpack .../libsmartcols1_2.34-0.1ubuntu4_arm64.deb ... Unpacking libsmartcols1:arm64 (2.34-0.1ubuntu4) over (2.34-0.1ubuntu2) ... Setting up libsmartcols1:arm64 (2.34-0.1ubuntu4) ... (Reading database ... 14650 files and directories currently installed.) Preparing to unpack .../fdisk_2.34-0.1ubuntu4_arm64.deb ... Unpacking fdisk (2.34-0.1ubuntu4) over (2.34-0.1ubuntu2) ... Setting up fdisk (2.34-0.1ubuntu4) ... (Reading database ... 14650 files and directories currently installed.) Preparing to unpack .../util-linux_2.34-0.1ubuntu4_arm64.deb ... Unpacking util-linux (2.34-0.1ubuntu4) over (2.34-0.1ubuntu2) ... Setting up util-linux (2.34-0.1ubuntu4) ... (Reading database ... 14650 files and directories currently installed.) Preparing to unpack .../libdebconfclient0_0.250ubuntu2_arm64.deb ... Unpacking libdebconfclient0:arm64 (0.250ubuntu2) over (0.249ubuntu1) ... Setting up libdebconfclient0:arm64 (0.250ubuntu2) ... (Reading database ... 14650 files and directories currently installed.) Preparing to unpack .../base-passwd_3.5.47_arm64.deb ... Unpacking base-passwd (3.5.47) over (3.5.46) ... Setting up base-passwd (3.5.47) ... (Reading database ... 14650 files and directories currently installed.) Preparing to unpack .../libc-bin_2.30-0ubuntu3_arm64.deb ... Unpacking libc-bin (2.30-0ubuntu3) over (2.30-0ubuntu2) ... Setting up libc-bin (2.30-0ubuntu3) ... (Reading database ... 14650 files and directories currently installed.) Preparing to unpack .../ncurses-base_6.1+20191019-1ubuntu1_all.deb ... Unpacking ncurses-base (6.1+20191019-1ubuntu1) over (6.1+20190803-1ubuntu1) ... Setting up ncurses-base (6.1+20191019-1ubuntu1) ... (Reading database ... 14650 files and directories currently installed.) Preparing to unpack .../lsb-base_11.1.0ubuntu2_all.deb ... Unpacking lsb-base (11.1.0ubuntu2) over (11.0.1ubuntu1) ... Setting up lsb-base (11.1.0ubuntu2) ... (Reading database ... 14649 files and directories currently installed.) Preparing to unpack .../sysvinit-utils_2.96-1ubuntu1_arm64.deb ... Unpacking sysvinit-utils (2.96-1ubuntu1) over (2.95-5ubuntu2) ... Setting up sysvinit-utils (2.96-1ubuntu1) ... (Reading database ... 14649 files and directories currently installed.) Preparing to unpack .../liblz4-1_1.9.2-2_arm64.deb ... Unpacking liblz4-1:arm64 (1.9.2-2) over (1.9.1-1) ... Setting up liblz4-1:arm64 (1.9.2-2) ... (Reading database ... 14649 files and directories currently installed.) Preparing to unpack .../libstdc++6_10-20200104-1ubuntu2_arm64.deb ... Unpacking libstdc++6:arm64 (10-20200104-1ubuntu2) over (9.2.1-9ubuntu2) ... Setting up libstdc++6:arm64 (10-20200104-1ubuntu2) ... (Reading database ... 14649 files and directories currently installed.) Preparing to unpack .../systemd-sysv_244-3ubuntu1_arm64.deb ... Unpacking systemd-sysv (244-3ubuntu1) over (242-7ubuntu3) ... Preparing to unpack .../libacl1_2.2.53-5ubuntu1_arm64.deb ... Unpacking libacl1:arm64 (2.2.53-5ubuntu1) over (2.2.53-4) ... Setting up libacl1:arm64 (2.2.53-5ubuntu1) ... (Reading database ... 14649 files and directories currently installed.) Preparing to unpack .../libapparmor1_2.13.3-7ubuntu1_arm64.deb ... Unpacking libapparmor1:arm64 (2.13.3-7ubuntu1) over (2.13.3-5ubuntu1) ... Preparing to unpack .../libaudit-common_1%3a2.8.5-2ubuntu5_all.deb ... Unpacking libaudit-common (1:2.8.5-2ubuntu5) over (1:2.8.5-2ubuntu1) ... Setting up libaudit-common (1:2.8.5-2ubuntu5) ... (Reading database ... 14649 files and directories currently installed.) Preparing to unpack .../libcap-ng0_0.7.9-2.1_arm64.deb ... Unpacking libcap-ng0:arm64 (0.7.9-2.1) over (0.7.9-2) ... Setting up libcap-ng0:arm64 (0.7.9-2.1) ... (Reading database ... 14649 files and directories currently installed.) Preparing to unpack .../libaudit1_1%3a2.8.5-2ubuntu5_arm64.deb ... Unpacking libaudit1:arm64 (1:2.8.5-2ubuntu5) over (1:2.8.5-2ubuntu1) ... Setting up libaudit1:arm64 (1:2.8.5-2ubuntu5) ... (Reading database ... 14649 files and directories currently installed.) Preparing to unpack .../libcap2_1%3a2.27-1_arm64.deb ... Unpacking libcap2:arm64 (1:2.27-1) over (1:2.25-2) ... Preparing to unpack .../libudev1_244-3ubuntu1_arm64.deb ... Unpacking libudev1:arm64 (244-3ubuntu1) over (242-7ubuntu3) ... Setting up libudev1:arm64 (244-3ubuntu1) ... (Reading database ... 14649 files and directories currently installed.) Preparing to unpack .../libdevmapper1.02.1_2%3a1.02.155-2ubuntu7_arm64.deb ... Unpacking libdevmapper1.02.1:arm64 (2:1.02.155-2ubuntu7) over (2:1.02.155-2ubuntu6) ... Preparing to unpack .../libjson-c4_0.13.1+dfsg-6_arm64.deb ... Unpacking libjson-c4:arm64 (0.13.1+dfsg-6) over (0.13.1+dfsg-4) ... Preparing to unpack .../libcryptsetup12_2%3a2.2.2-1ubuntu1_arm64.deb ... Unpacking libcryptsetup12:arm64 (2:2.2.2-1ubuntu1) over (2:2.2.0-3ubuntu1) ... Selecting previously unselected package libnettle7:arm64. Preparing to unpack .../libnettle7_3.5.1+really3.5.1-2_arm64.deb ... Unpacking libnettle7:arm64 (3.5.1+really3.5.1-2) ... Setting up libnettle7:arm64 (3.5.1+really3.5.1-2) ... Selecting previously unselected package libhogweed5:arm64. (Reading database ... 14656 files and directories currently installed.) Preparing to unpack .../libhogweed5_3.5.1+really3.5.1-2_arm64.deb ... Unpacking libhogweed5:arm64 (3.5.1+really3.5.1-2) ... Setting up libhogweed5:arm64 (3.5.1+really3.5.1-2) ... (Reading database ... 14659 files and directories currently installed.) Preparing to unpack .../libp11-kit0_0.23.18.1-2_arm64.deb ... Unpacking libp11-kit0:arm64 (0.23.18.1-2) over (0.23.17-2) ... Setting up libp11-kit0:arm64 (0.23.18.1-2) ... (Reading database ... 14659 files and directories currently installed.) Preparing to unpack .../libtasn1-6_4.15.0-2_arm64.deb ... Unpacking libtasn1-6:arm64 (4.15.0-2) over (4.14-3) ... Setting up libtasn1-6:arm64 (4.15.0-2) ... (Reading database ... 14659 files and directories currently installed.) Preparing to unpack .../libgnutls30_3.6.11.1-2_arm64.deb ... Unpacking libgnutls30:arm64 (3.6.11.1-2) over (3.6.9-5ubuntu1) ... Setting up libgnutls30:arm64 (3.6.11.1-2) ... (Reading database ... 14658 files and directories currently installed.) Preparing to unpack .../libkmod2_26-3ubuntu1_arm64.deb ... Unpacking libkmod2:arm64 (26-3ubuntu1) over (26-1ubuntu1) ... Preparing to unpack .../libpam0g_1.3.1-5ubuntu4_arm64.deb ... Unpacking libpam0g:arm64 (1.3.1-5ubuntu4) over (1.3.1-5ubuntu1) ... Setting up libpam0g:arm64 (1.3.1-5ubuntu4) ... (Reading database ... 14658 files and directories currently installed.) Preparing to unpack .../libseccomp2_2.4.2-2ubuntu1_arm64.deb ... Unpacking libseccomp2:arm64 (2.4.2-2ubuntu1) over (2.4.1-0ubuntu0.19.10.3) ... Setting up libseccomp2:arm64 (2.4.2-2ubuntu1) ... (Reading database ... 14658 files and directories currently installed.) Preparing to unpack .../mount_2.34-0.1ubuntu4_arm64.deb ... Unpacking mount (2.34-0.1ubuntu4) over (2.34-0.1ubuntu2) ... Preparing to unpack .../systemd_244-3ubuntu1_arm64.deb ... Unpacking systemd (244-3ubuntu1) over (242-7ubuntu3) ... Preparing to unpack .../libsystemd0_244-3ubuntu1_arm64.deb ... Unpacking libsystemd0:arm64 (244-3ubuntu1) over (242-7ubuntu3) ... Setting up libsystemd0:arm64 (244-3ubuntu1) ... (Reading database ... 14652 files and directories currently installed.) Preparing to unpack .../libzstd1_1.4.4+dfsg-1_arm64.deb ... Unpacking libzstd1:arm64 (1.4.4+dfsg-1) over (1.4.3+dfsg-1) ... Setting up libzstd1:arm64 (1.4.4+dfsg-1) ... (Reading database ... 14652 files and directories currently installed.) Preparing to unpack .../libapt-pkg5.90_1.9.5_arm64.deb ... Unpacking libapt-pkg5.90:arm64 (1.9.5) over (1.9.4) ... Setting up libapt-pkg5.90:arm64 (1.9.5) ... (Reading database ... 14652 files and directories currently installed.) Preparing to unpack .../libgcrypt20_1.8.5-3ubuntu1_arm64.deb ... Unpacking libgcrypt20:arm64 (1.8.5-3ubuntu1) over (1.8.4-5ubuntu2) ... Setting up libgcrypt20:arm64 (1.8.5-3ubuntu1) ... (Reading database ... 14652 files and directories currently installed.) Preparing to unpack .../gpgv_2.2.17-3ubuntu1_arm64.deb ... Unpacking gpgv (2.2.17-3ubuntu1) over (2.2.12-1ubuntu3) ... Setting up gpgv (2.2.17-3ubuntu1) ... (Reading database ... 14652 files and directories currently installed.) Preparing to unpack .../archives/apt_1.9.5_arm64.deb ... Unpacking apt (1.9.5) over (1.9.4) ... Setting up apt (1.9.5) ... (Reading database ... 14652 files and directories currently installed.) Preparing to unpack .../libpam-modules-bin_1.3.1-5ubuntu4_arm64.deb ... Unpacking libpam-modules-bin (1.3.1-5ubuntu4) over (1.3.1-5ubuntu1) ... Setting up libpam-modules-bin (1.3.1-5ubuntu4) ... (Reading database ... 14652 files and directories currently installed.) Preparing to unpack .../libpam-modules_1.3.1-5ubuntu4_arm64.deb ... Unpacking libpam-modules:arm64 (1.3.1-5ubuntu4) over (1.3.1-5ubuntu1) ... Setting up libpam-modules:arm64 (1.3.1-5ubuntu4) ... (Reading database ... 14652 files and directories currently installed.) Preparing to unpack .../libattr1_1%3a2.4.48-5_arm64.deb ... Unpacking libattr1:arm64 (1:2.4.48-5) over (1:2.4.48-4) ... Setting up libattr1:arm64 (1:2.4.48-5) ... (Reading database ... 14652 files and directories currently installed.) Preparing to unpack .../libpam-runtime_1.3.1-5ubuntu4_all.deb ... Unpacking libpam-runtime (1.3.1-5ubuntu4) over (1.3.1-5ubuntu1) ... Setting up libpam-runtime (1.3.1-5ubuntu4) ... (Reading database ... 14652 files and directories currently installed.) Preparing to unpack .../libsepol1_3.0-1_arm64.deb ... Unpacking libsepol1:arm64 (3.0-1) over (2.9-2) ... Setting up libsepol1:arm64 (3.0-1) ... (Reading database ... 14652 files and directories currently installed.) Preparing to unpack .../libsemanage-common_3.0-1_all.deb ... Unpacking libsemanage-common (3.0-1) over (2.9-3) ... Setting up libsemanage-common (3.0-1) ... (Reading database ... 14652 files and directories currently installed.) Preparing to unpack .../libsemanage1_3.0-1_arm64.deb ... Unpacking libsemanage1:arm64 (3.0-1) over (2.9-3) ... Setting up libsemanage1:arm64 (3.0-1) ... (Reading database ... 14652 files and directories currently installed.) Preparing to unpack .../00-libgomp1_10-20200104-1ubuntu2_arm64.deb ... Unpacking libgomp1:arm64 (10-20200104-1ubuntu2) over (9.2.1-9ubuntu2) ... Preparing to unpack .../01-libitm1_10-20200104-1ubuntu2_arm64.deb ... Unpacking libitm1:arm64 (10-20200104-1ubuntu2) over (9.2.1-9ubuntu2) ... Preparing to unpack .../02-libatomic1_10-20200104-1ubuntu2_arm64.deb ... Unpacking libatomic1:arm64 (10-20200104-1ubuntu2) over (9.2.1-9ubuntu2) ... Preparing to unpack .../03-libasan5_9.2.1-21ubuntu1_arm64.deb ... Unpacking libasan5:arm64 (9.2.1-21ubuntu1) over (9.2.1-9ubuntu2) ... Preparing to unpack .../04-liblsan0_10-20200104-1ubuntu2_arm64.deb ... Unpacking liblsan0:arm64 (10-20200104-1ubuntu2) over (9.2.1-9ubuntu2) ... Preparing to unpack .../05-libtsan0_10-20200104-1ubuntu2_arm64.deb ... Unpacking libtsan0:arm64 (10-20200104-1ubuntu2) over (9.2.1-9ubuntu2) ... Preparing to unpack .../06-libubsan1_10-20200104-1ubuntu2_arm64.deb ... Unpacking libubsan1:arm64 (10-20200104-1ubuntu2) over (9.2.1-9ubuntu2) ... Preparing to unpack .../07-g++-9_9.2.1-21ubuntu1_arm64.deb ... Unpacking g++-9 (9.2.1-21ubuntu1) over (9.2.1-9ubuntu2) ... Preparing to unpack .../08-gcc-9_9.2.1-21ubuntu1_arm64.deb ... Unpacking gcc-9 (9.2.1-21ubuntu1) over (9.2.1-9ubuntu2) ... Preparing to unpack .../09-libstdc++-9-dev_9.2.1-21ubuntu1_arm64.deb ... Unpacking libstdc++-9-dev:arm64 (9.2.1-21ubuntu1) over (9.2.1-9ubuntu2) ... Preparing to unpack .../10-libgcc-9-dev_9.2.1-21ubuntu1_arm64.deb ... Unpacking libgcc-9-dev:arm64 (9.2.1-21ubuntu1) over (9.2.1-9ubuntu2) ... Selecting previously unselected package libisl22:arm64. Preparing to unpack .../11-libisl22_0.22-2_arm64.deb ... Unpacking libisl22:arm64 (0.22-2) ... Preparing to unpack .../12-libcc1-0_10-20200104-1ubuntu2_arm64.deb ... Unpacking libcc1-0:arm64 (10-20200104-1ubuntu2) over (9.2.1-9ubuntu2) ... Preparing to unpack .../13-binutils-aarch64-linux-gnu_2.33.50.20200105-2ubuntu2_arm64.deb ... Unpacking binutils-aarch64-linux-gnu (2.33.50.20200105-2ubuntu2) over (2.33-2ubuntu1) ... Preparing to unpack .../14-libbinutils_2.33.50.20200105-2ubuntu2_arm64.deb ... Unpacking libbinutils:arm64 (2.33.50.20200105-2ubuntu2) over (2.33-2ubuntu1) ... Preparing to unpack .../15-binutils_2.33.50.20200105-2ubuntu2_arm64.deb ... Unpacking binutils (2.33.50.20200105-2ubuntu2) over (2.33-2ubuntu1) ... Preparing to unpack .../16-binutils-common_2.33.50.20200105-2ubuntu2_arm64.deb ... Unpacking binutils-common:arm64 (2.33.50.20200105-2ubuntu2) over (2.33-2ubuntu1) ... Selecting previously unselected package libctf-nobfd0:arm64. Preparing to unpack .../17-libctf-nobfd0_2.33.50.20200105-2ubuntu2_arm64.deb ... Unpacking libctf-nobfd0:arm64 (2.33.50.20200105-2ubuntu2) ... Selecting previously unselected package libctf0:arm64. Preparing to unpack .../18-libctf0_2.33.50.20200105-2ubuntu2_arm64.deb ... Unpacking libctf0:arm64 (2.33.50.20200105-2ubuntu2) ... Preparing to unpack .../19-cpp-9_9.2.1-21ubuntu1_arm64.deb ... Unpacking cpp-9 (9.2.1-21ubuntu1) over (9.2.1-9ubuntu2) ... Preparing to unpack .../20-gcc-9-base_9.2.1-21ubuntu1_arm64.deb ... Unpacking gcc-9-base:arm64 (9.2.1-21ubuntu1) over (9.2.1-9ubuntu2) ... Preparing to unpack .../21-sensible-utils_0.0.12+nmu1_all.deb ... Unpacking sensible-utils (0.0.12+nmu1) over (0.0.12) ... Preparing to unpack .../22-libsqlite3-0_3.30.1-1ubuntu1_arm64.deb ... Unpacking libsqlite3-0:arm64 (3.30.1-1ubuntu1) over (3.29.0-2) ... Selecting previously unselected package cpp-10. Preparing to unpack .../23-cpp-10_10-20200104-1ubuntu2_arm64.deb ... Unpacking cpp-10 (10-20200104-1ubuntu2) ... Selecting previously unselected package libasan6:arm64. Preparing to unpack .../24-libasan6_10-20200104-1ubuntu2_arm64.deb ... Unpacking libasan6:arm64 (10-20200104-1ubuntu2) ... Selecting previously unselected package libgcc-10-dev:arm64. Preparing to unpack .../25-libgcc-10-dev_10-20200104-1ubuntu2_arm64.deb ... Unpacking libgcc-10-dev:arm64 (10-20200104-1ubuntu2) ... Selecting previously unselected package gcc-10. Preparing to unpack .../26-gcc-10_10-20200104-1ubuntu2_arm64.deb ... Unpacking gcc-10 (10-20200104-1ubuntu2) ... Selecting previously unselected package libstdc++-10-dev:arm64. Preparing to unpack .../27-libstdc++-10-dev_10-20200104-1ubuntu2_arm64.deb ... Unpacking libstdc++-10-dev:arm64 (10-20200104-1ubuntu2) ... Selecting previously unselected package g++-10. Preparing to unpack .../28-g++-10_10-20200104-1ubuntu2_arm64.deb ... Unpacking g++-10 (10-20200104-1ubuntu2) ... Preparing to unpack .../29-g++_4%3a10-1ubuntu1_arm64.deb ... Unpacking g++ (4:10-1ubuntu1) over (4:9.2.1-3.1ubuntu1) ... Preparing to unpack .../30-gcc_4%3a10-1ubuntu1_arm64.deb ... Unpacking gcc (4:10-1ubuntu1) over (4:9.2.1-3.1ubuntu1) ... Preparing to unpack .../31-cpp_4%3a10-1ubuntu1_arm64.deb ... Unpacking cpp (4:10-1ubuntu1) over (4:9.2.1-3.1ubuntu1) ... Preparing to unpack .../32-gpg_2.2.17-3ubuntu1_arm64.deb ... Unpacking gpg (2.2.17-3ubuntu1) over (2.2.12-1ubuntu3) ... Preparing to unpack .../33-gpgconf_2.2.17-3ubuntu1_arm64.deb ... Unpacking gpgconf (2.2.17-3ubuntu1) over (2.2.12-1ubuntu3) ... Preparing to unpack .../34-gpg-agent_2.2.17-3ubuntu1_arm64.deb ... Unpacking gpg-agent (2.2.17-3ubuntu1) over (2.2.12-1ubuntu3) ... Preparing to unpack .../35-liblockfile-bin_1.16-1.1_arm64.deb ... Unpacking liblockfile-bin (1.16-1.1) over (1.15-1) ... Preparing to unpack .../36-liblockfile1_1.16-1.1_arm64.deb ... Unpacking liblockfile1:arm64 (1.16-1.1) over (1.15-1) ... Setting up libapparmor1:arm64 (2.13.3-7ubuntu1) ... Setting up liblockfile-bin (1.16-1.1) ... Setting up perl-modules-5.30 (5.30.0-9) ... Setting up libsqlite3-0:arm64 (3.30.1-1ubuntu1) ... Setting up binutils-common:arm64 (2.33.50.20200105-2ubuntu2) ... Setting up linux-libc-dev:arm64 (5.3.0-24.26) ... Setting up libctf-nobfd0:arm64 (2.33.50.20200105-2ubuntu2) ... Setting up libgomp1:arm64 (10-20200104-1ubuntu2) ... Setting up bzip2 (1.0.8-2) ... Setting up libcap2:arm64 (1:2.27-1) ... Setting up libasan6:arm64 (10-20200104-1ubuntu2) ... Setting up libncurses6:arm64 (6.1+20191019-1ubuntu1) ... Setting up libatomic1:arm64 (10-20200104-1ubuntu2) ... Setting up libubsan1:arm64 (10-20200104-1ubuntu2) ... Setting up libdevmapper1.02.1:arm64 (2:1.02.155-2ubuntu7) ... Setting up mount (2.34-0.1ubuntu4) ... Setting up sensible-utils (0.0.12+nmu1) ... Setting up gpgconf (2.2.17-3ubuntu1) ... Setting up libperl5.30:arm64 (5.30.0-9) ... Setting up libisl22:arm64 (0.22-2) ... Setting up liblockfile1:arm64 (1.16-1.1) ... Setting up libjson-c4:arm64 (0.13.1+dfsg-6) ... Setting up libbinutils:arm64 (2.33.50.20200105-2ubuntu2) ... Setting up libc-dev-bin (2.30-0ubuntu3) ... Setting up libcc1-0:arm64 (10-20200104-1ubuntu2) ... Setting up gpg (2.2.17-3ubuntu1) ... Setting up liblsan0:arm64 (10-20200104-1ubuntu2) ... Setting up cpp-10 (10-20200104-1ubuntu2) ... Setting up libitm1:arm64 (10-20200104-1ubuntu2) ... Setting up libkmod2:arm64 (26-3ubuntu1) ... Setting up gcc-9-base:arm64 (9.2.1-21ubuntu1) ... Setting up libtsan0:arm64 (10-20200104-1ubuntu2) ... Setting up libctf0:arm64 (2.33.50.20200105-2ubuntu2) ... Setting up gpg-agent (2.2.17-3ubuntu1) ... Installing new version of config file /etc/logcheck/ignore.d.server/gpg-agent ... Created symlink /etc/systemd/user/sockets.target.wants/gpg-agent-browser.socket -> /usr/lib/systemd/user/gpg-agent-browser.socket. Created symlink /etc/systemd/user/sockets.target.wants/gpg-agent-extra.socket -> /usr/lib/systemd/user/gpg-agent-extra.socket. Created symlink /etc/systemd/user/sockets.target.wants/gpg-agent-ssh.socket -> /usr/lib/systemd/user/gpg-agent-ssh.socket. Created symlink /etc/systemd/user/sockets.target.wants/gpg-agent.socket -> /usr/lib/systemd/user/gpg-agent.socket. Setting up libgcc-10-dev:arm64 (10-20200104-1ubuntu2) ... Setting up binutils-aarch64-linux-gnu (2.33.50.20200105-2ubuntu2) ... Setting up binutils (2.33.50.20200105-2ubuntu2) ... Setting up libasan5:arm64 (9.2.1-21ubuntu1) ... Setting up perl (5.30.0-9) ... Setting up gcc-10 (10-20200104-1ubuntu2) ... Setting up cpp (4:10-1ubuntu1) ... Setting up cpp-9 (9.2.1-21ubuntu1) ... Setting up libc6-dev:arm64 (2.30-0ubuntu3) ... Setting up libcryptsetup12:arm64 (2:2.2.2-1ubuntu1) ... Setting up libstdc++-10-dev:arm64 (10-20200104-1ubuntu2) ... Setting up g++-10 (10-20200104-1ubuntu2) ... Setting up systemd (244-3ubuntu1) ... Installing new version of config file /etc/dhcp/dhclient-enter-hooks.d/resolved ... Installing new version of config file /etc/systemd/networkd.conf ... Installing new version of config file /etc/systemd/system.conf ... Installing new version of config file /etc/systemd/user.conf ... Initializing machine ID from KVM UUID. Setting up gcc (4:10-1ubuntu1) ... Setting up libgcc-9-dev:arm64 (9.2.1-21ubuntu1) ... Setting up g++ (4:10-1ubuntu1) ... Setting up gcc-9 (9.2.1-21ubuntu1) ... Setting up systemd-sysv (244-3ubuntu1) ... Setting up libstdc++-9-dev:arm64 (9.2.1-21ubuntu1) ... Setting up g++-9 (9.2.1-21ubuntu1) ... Processing triggers for libc-bin (2.30-0ubuntu3) ... RUN: /usr/share/launchpad-buildd/bin/sbuild-package PACKAGEBUILD-18385219 arm64 focal -c chroot:build-PACKAGEBUILD-18385219 --arch=arm64 --dist=focal --nolog 'gemmlowp_0.0~git20190708.a227af1-1.dsc' Initiating build PACKAGEBUILD-18385219 with 4 jobs across 4 processor cores. Kernel reported to sbuild: 4.4.0-170-generic #199-Ubuntu SMP Thu Nov 14 01:46:18 UTC 2019 aarch64 sbuild (Debian sbuild) 0.67.0 (26 Dec 2015) on bos02-arm64-052.buildd +==============================================================================+ | gemmlowp 0.0~git20190708.a227af1-1 (arm64) 06 Jan 2020 14:17 | +==============================================================================+ Package: gemmlowp Version: 0.0~git20190708.a227af1-1 Source Version: 0.0~git20190708.a227af1-1 Distribution: focal Machine Architecture: arm64 Host Architecture: arm64 Build Architecture: arm64 I: NOTICE: Log filtering will replace 'build/gemmlowp-3HGUF_/gemmlowp-0.0~git20190708.a227af1' with '<>' I: NOTICE: Log filtering will replace 'build/gemmlowp-3HGUF_' with '<>' I: NOTICE: Log filtering will replace 'home/buildd/build-PACKAGEBUILD-18385219/chroot-autobuild' with '<>' +------------------------------------------------------------------------------+ | Fetch source files | +------------------------------------------------------------------------------+ Local sources ------------- gemmlowp_0.0~git20190708.a227af1-1.dsc exists in .; copying to chroot Check architectures ------------------- Check dependencies ------------------ Merged Build-Depends: build-essential, fakeroot Filtered Build-Depends: build-essential, fakeroot dpkg-deb: building package 'sbuild-build-depends-core-dummy' in '/<>/resolver-O0OHXy/apt_archive/sbuild-build-depends-core-dummy.deb'. Ign:1 copy:/<>/resolver-O0OHXy/apt_archive ./ InRelease Get:2 copy:/<>/resolver-O0OHXy/apt_archive ./ Release [2119 B] Ign:3 copy:/<>/resolver-O0OHXy/apt_archive ./ Release.gpg Get:4 copy:/<>/resolver-O0OHXy/apt_archive ./ Sources [214 B] Get:5 copy:/<>/resolver-O0OHXy/apt_archive ./ Packages [527 B] Fetched 2860 B in 0s (121 kB/s) Reading package lists... Reading package lists... +------------------------------------------------------------------------------+ | Install core build dependencies (apt-based resolver) | +------------------------------------------------------------------------------+ Installing build dependencies Reading package lists... Building dependency tree... Reading state information... The following packages were automatically installed and are no longer required: g++-9 libhogweed4 libisl21 libnettle6 libperl5.28 libstdc++-9-dev perl-modules-5.28 Use 'apt autoremove' to remove them. The following NEW packages will be installed: sbuild-build-depends-core-dummy 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 852 B of archives. After this operation, 0 B of additional disk space will be used. Get:1 copy:/<>/resolver-O0OHXy/apt_archive ./ sbuild-build-depends-core-dummy 0.invalid.0 [852 B] debconf: delaying package configuration, since apt-utils is not installed Fetched 852 B in 0s (0 B/s) Selecting previously unselected package sbuild-build-depends-core-dummy. (Reading database ... 15627 files and directories currently installed.) Preparing to unpack .../sbuild-build-depends-core-dummy_0.invalid.0_arm64.deb ... Unpacking sbuild-build-depends-core-dummy (0.invalid.0) ... Setting up sbuild-build-depends-core-dummy (0.invalid.0) ... Merged Build-Depends: debhelper (>= 12~), cmake Filtered Build-Depends: debhelper (>= 12~), cmake dpkg-deb: building package 'sbuild-build-depends-gemmlowp-dummy' in '/<>/resolver-jI9LZl/apt_archive/sbuild-build-depends-gemmlowp-dummy.deb'. Ign:1 copy:/<>/resolver-jI9LZl/apt_archive ./ InRelease Get:2 copy:/<>/resolver-jI9LZl/apt_archive ./ Release [2119 B] Ign:3 copy:/<>/resolver-jI9LZl/apt_archive ./ Release.gpg Get:4 copy:/<>/resolver-jI9LZl/apt_archive ./ Sources [217 B] Get:5 copy:/<>/resolver-jI9LZl/apt_archive ./ Packages [535 B] Fetched 2871 B in 0s (120 kB/s) Reading package lists... Reading package lists... +------------------------------------------------------------------------------+ | Install gemmlowp build dependencies (apt-based resolver) | +------------------------------------------------------------------------------+ Installing build dependencies Reading package lists... Building dependency tree... Reading state information... The following packages were automatically installed and are no longer required: g++-9 libhogweed4 libisl21 libnettle6 libperl5.28 libstdc++-9-dev perl-modules-5.28 Use 'apt autoremove' to remove them. The following additional packages will be installed: autoconf automake autopoint autotools-dev bsdmainutils cmake cmake-data debhelper dh-autoreconf dh-strip-nondeterminism dwz file gettext gettext-base groff-base intltool-debian libarchive-zip-perl libarchive13 libasn1-8-heimdal libbrotli1 libbsd0 libcroco3 libcurl4 libdebhelper-perl libelf1 libexpat1 libfile-stripnondeterminism-perl libglib2.0-0 libgssapi-krb5-2 libgssapi3-heimdal libhcrypto4-heimdal libheimbase1-heimdal libheimntlm0-heimdal libhx509-5-heimdal libicu63 libjsoncpp1 libk5crypto3 libkeyutils1 libkrb5-26-heimdal libkrb5-3 libkrb5support0 libldap-2.4-2 libldap-common libmagic-mgc libmagic1 libnghttp2-14 libpipeline1 libpsl5 librhash0 libroken18-heimdal librtmp1 libsasl2-2 libsasl2-modules-db libsigsegv2 libssh-4 libsub-override-perl libtool libuchardet0 libuv1 libwind0-heimdal libxml2 m4 man-db po-debconf Suggested packages: autoconf-archive gnu-standards autoconf-doc wamerican | wordlist whois vacation cmake-doc ninja-build dh-make gettext-doc libasprintf-dev libgettextpo-dev groff lrzip krb5-doc krb5-user libtool-doc gfortran | fortran95-compiler gcj-jdk m4-doc apparmor less www-browser libmail-box-perl Recommended packages: curl | wget | lynx libarchive-cpio-perl libglib2.0-data shared-mime-info xdg-user-dirs krb5-locales publicsuffix libsasl2-modules libltdl-dev libmail-sendmail-perl The following NEW packages will be installed: autoconf automake autopoint autotools-dev bsdmainutils cmake cmake-data debhelper dh-autoreconf dh-strip-nondeterminism dwz file gettext gettext-base groff-base intltool-debian libarchive-zip-perl libarchive13 libasn1-8-heimdal libbrotli1 libbsd0 libcroco3 libcurl4 libdebhelper-perl libelf1 libexpat1 libfile-stripnondeterminism-perl libglib2.0-0 libgssapi-krb5-2 libgssapi3-heimdal libhcrypto4-heimdal libheimbase1-heimdal libheimntlm0-heimdal libhx509-5-heimdal libicu63 libjsoncpp1 libk5crypto3 libkeyutils1 libkrb5-26-heimdal libkrb5-3 libkrb5support0 libldap-2.4-2 libldap-common libmagic-mgc libmagic1 libnghttp2-14 libpipeline1 libpsl5 librhash0 libroken18-heimdal librtmp1 libsasl2-2 libsasl2-modules-db libsigsegv2 libssh-4 libsub-override-perl libtool libuchardet0 libuv1 libwind0-heimdal libxml2 m4 man-db po-debconf sbuild-build-depends-gemmlowp-dummy 0 upgraded, 65 newly installed, 0 to remove and 0 not upgraded. Need to get 24.2 MB of archives. After this operation, 100 MB of additional disk space will be used. Get:1 copy:/<>/resolver-jI9LZl/apt_archive ./ sbuild-build-depends-gemmlowp-dummy 0.invalid.0 [860 B] Get:2 http://ftpmaster.internal/ubuntu focal/main arm64 libbsd0 arm64 0.10.0-1 [43.7 kB] Get:3 http://ftpmaster.internal/ubuntu focal/main arm64 bsdmainutils arm64 11.1.2ubuntu2 [175 kB] Get:4 http://ftpmaster.internal/ubuntu focal/main arm64 libuchardet0 arm64 0.0.6-3 [65.0 kB] Get:5 http://ftpmaster.internal/ubuntu focal/main arm64 groff-base arm64 1.22.4-4 [815 kB] Get:6 http://ftpmaster.internal/ubuntu focal/main arm64 libpipeline1 arm64 1.5.1-3 [25.7 kB] Get:7 http://ftpmaster.internal/ubuntu focal/main arm64 man-db arm64 2.9.0-2 [1097 kB] Get:8 http://ftpmaster.internal/ubuntu focal/main arm64 libmagic-mgc arm64 1:5.37-6 [209 kB] Get:9 http://ftpmaster.internal/ubuntu focal/main arm64 libmagic1 arm64 1:5.37-6 [70.9 kB] Get:10 http://ftpmaster.internal/ubuntu focal/main arm64 file arm64 1:5.37-6 [23.2 kB] Get:11 http://ftpmaster.internal/ubuntu focal/main arm64 libelf1 arm64 0.176-1.1 [43.6 kB] Get:12 http://ftpmaster.internal/ubuntu focal/main arm64 libexpat1 arm64 2.2.9-1 [61.3 kB] Get:13 http://ftpmaster.internal/ubuntu focal/main arm64 libglib2.0-0 arm64 2.63.3-1 [1192 kB] Get:14 http://ftpmaster.internal/ubuntu focal/main arm64 libicu63 arm64 63.2-2 [8146 kB] Get:15 http://ftpmaster.internal/ubuntu focal/main arm64 libxml2 arm64 2.9.4+dfsg1-8ubuntu1 [575 kB] Get:16 http://ftpmaster.internal/ubuntu focal/main arm64 gettext-base arm64 0.19.8.1-10 [48.4 kB] Get:17 http://ftpmaster.internal/ubuntu focal/main arm64 libkrb5support0 arm64 1.17-6 [30.8 kB] Get:18 http://ftpmaster.internal/ubuntu focal/main arm64 libk5crypto3 arm64 1.17-6 [80.5 kB] Get:19 http://ftpmaster.internal/ubuntu focal/main arm64 libkeyutils1 arm64 1.6-6ubuntu1 [10.1 kB] Get:20 http://ftpmaster.internal/ubuntu focal/main arm64 libkrb5-3 arm64 1.17-6 [312 kB] Get:21 http://ftpmaster.internal/ubuntu focal/main arm64 libgssapi-krb5-2 arm64 1.17-6 [113 kB] Get:22 http://ftpmaster.internal/ubuntu focal/main arm64 libpsl5 arm64 0.20.2-2 [49.9 kB] Get:23 http://ftpmaster.internal/ubuntu focal/main arm64 libsigsegv2 arm64 2.12-2 [13.3 kB] Get:24 http://ftpmaster.internal/ubuntu focal/main arm64 m4 arm64 1.4.18-4 [194 kB] Get:25 http://ftpmaster.internal/ubuntu focal/main arm64 autoconf all 2.69-11ubuntu1 [321 kB] Get:26 http://ftpmaster.internal/ubuntu focal/main arm64 autotools-dev all 20180224.1 [39.6 kB] Get:27 http://ftpmaster.internal/ubuntu focal/main arm64 automake all 1:1.16.1-4ubuntu3 [522 kB] Get:28 http://ftpmaster.internal/ubuntu focal/main arm64 autopoint all 0.19.8.1-10 [412 kB] Get:29 http://ftpmaster.internal/ubuntu focal/main arm64 cmake-data all 3.15.4-1ubuntu2 [1562 kB] Get:30 http://ftpmaster.internal/ubuntu focal/main arm64 libarchive13 arm64 3.4.0-1build1 [304 kB] Get:31 http://ftpmaster.internal/ubuntu focal/main arm64 libbrotli1 arm64 1.0.7-5 [259 kB] Get:32 http://ftpmaster.internal/ubuntu focal/main arm64 libroken18-heimdal arm64 7.7.0+dfsg-1 [39.3 kB] Get:33 http://ftpmaster.internal/ubuntu focal/main arm64 libasn1-8-heimdal arm64 7.7.0+dfsg-1 [150 kB] Get:34 http://ftpmaster.internal/ubuntu focal/main arm64 libheimbase1-heimdal arm64 7.7.0+dfsg-1 [27.9 kB] Get:35 http://ftpmaster.internal/ubuntu focal/main arm64 libhcrypto4-heimdal arm64 7.7.0+dfsg-1 [86.5 kB] Get:36 http://ftpmaster.internal/ubuntu focal/main arm64 libwind0-heimdal arm64 7.7.0+dfsg-1 [47.2 kB] Get:37 http://ftpmaster.internal/ubuntu focal/main arm64 libhx509-5-heimdal arm64 7.7.0+dfsg-1 [98.6 kB] Get:38 http://ftpmaster.internal/ubuntu focal/main arm64 libkrb5-26-heimdal arm64 7.7.0+dfsg-1 [192 kB] Get:39 http://ftpmaster.internal/ubuntu focal/main arm64 libheimntlm0-heimdal arm64 7.7.0+dfsg-1 [14.8 kB] Get:40 http://ftpmaster.internal/ubuntu focal/main arm64 libgssapi3-heimdal arm64 7.7.0+dfsg-1 [88.3 kB] Get:41 http://ftpmaster.internal/ubuntu focal/main arm64 libsasl2-modules-db arm64 2.1.27+dfsg-2 [15.1 kB] Get:42 http://ftpmaster.internal/ubuntu focal/main arm64 libsasl2-2 arm64 2.1.27+dfsg-2 [48.4 kB] Get:43 http://ftpmaster.internal/ubuntu focal/main arm64 libldap-common all 2.4.48+dfsg-1ubuntu3 [17.3 kB] Get:44 http://ftpmaster.internal/ubuntu focal/main arm64 libldap-2.4-2 arm64 2.4.48+dfsg-1ubuntu3 [146 kB] Get:45 http://ftpmaster.internal/ubuntu focal/main arm64 libnghttp2-14 arm64 1.40.0-1 [75.2 kB] Get:46 http://ftpmaster.internal/ubuntu focal/main arm64 librtmp1 arm64 2.4+20151223.gitfa8646d.1-2build1 [53.3 kB] Get:47 http://ftpmaster.internal/ubuntu focal/main arm64 libssh-4 arm64 0.9.0-1ubuntu5 [185 kB] Get:48 http://ftpmaster.internal/ubuntu focal/main arm64 libcurl4 arm64 7.66.0-1ubuntu1 [213 kB] Get:49 http://ftpmaster.internal/ubuntu focal/main arm64 libjsoncpp1 arm64 1.7.4-3 [69.2 kB] Get:50 http://ftpmaster.internal/ubuntu focal/main arm64 librhash0 arm64 1.3.9-1 [111 kB] Get:51 http://ftpmaster.internal/ubuntu focal/main arm64 libuv1 arm64 1.33.1-2 [74.5 kB] Get:52 http://ftpmaster.internal/ubuntu focal/main arm64 cmake arm64 3.15.4-1ubuntu2 [3059 kB] Get:53 http://ftpmaster.internal/ubuntu focal/main arm64 libtool all 2.4.6-11 [194 kB] Get:54 http://ftpmaster.internal/ubuntu focal/main arm64 dh-autoreconf all 19 [16.1 kB] Get:55 http://ftpmaster.internal/ubuntu focal/main arm64 libdebhelper-perl all 12.7.1ubuntu1 [52.0 kB] Get:56 http://ftpmaster.internal/ubuntu focal/main arm64 libarchive-zip-perl all 1.67-1 [90.4 kB] Get:57 http://ftpmaster.internal/ubuntu focal/main arm64 libsub-override-perl all 0.09-2 [9532 B] Get:58 http://ftpmaster.internal/ubuntu focal/main arm64 libfile-stripnondeterminism-perl all 1.6.3-1 [16.0 kB] Get:59 http://ftpmaster.internal/ubuntu focal/main arm64 dh-strip-nondeterminism all 1.6.3-1 [5224 B] Get:60 http://ftpmaster.internal/ubuntu focal/main arm64 dwz arm64 0.13-5 [134 kB] Get:61 http://ftpmaster.internal/ubuntu focal/main arm64 libcroco3 arm64 0.6.13-1 [77.1 kB] Get:62 http://ftpmaster.internal/ubuntu focal/main arm64 gettext arm64 0.19.8.1-10 [851 kB] Get:63 http://ftpmaster.internal/ubuntu focal/main arm64 intltool-debian all 0.35.0+20060710.5 [24.9 kB] Get:64 http://ftpmaster.internal/ubuntu focal/main arm64 po-debconf all 1.0.21 [233 kB] Get:65 http://ftpmaster.internal/ubuntu focal/main arm64 debhelper all 12.7.1ubuntu1 [875 kB] debconf: delaying package configuration, since apt-utils is not installed Fetched 24.2 MB in 1s (25.5 MB/s) Selecting previously unselected package libbsd0:arm64. (Reading database ... 15627 files and directories currently installed.) Preparing to unpack .../00-libbsd0_0.10.0-1_arm64.deb ... Unpacking libbsd0:arm64 (0.10.0-1) ... Selecting previously unselected package bsdmainutils. Preparing to unpack .../01-bsdmainutils_11.1.2ubuntu2_arm64.deb ... Unpacking bsdmainutils (11.1.2ubuntu2) ... Selecting previously unselected package libuchardet0:arm64. Preparing to unpack .../02-libuchardet0_0.0.6-3_arm64.deb ... Unpacking libuchardet0:arm64 (0.0.6-3) ... Selecting previously unselected package groff-base. Preparing to unpack .../03-groff-base_1.22.4-4_arm64.deb ... Unpacking groff-base (1.22.4-4) ... Selecting previously unselected package libpipeline1:arm64. Preparing to unpack .../04-libpipeline1_1.5.1-3_arm64.deb ... Unpacking libpipeline1:arm64 (1.5.1-3) ... Selecting previously unselected package man-db. Preparing to unpack .../05-man-db_2.9.0-2_arm64.deb ... Unpacking man-db (2.9.0-2) ... Selecting previously unselected package libmagic-mgc. Preparing to unpack .../06-libmagic-mgc_1%3a5.37-6_arm64.deb ... Unpacking libmagic-mgc (1:5.37-6) ... Selecting previously unselected package libmagic1:arm64. Preparing to unpack .../07-libmagic1_1%3a5.37-6_arm64.deb ... Unpacking libmagic1:arm64 (1:5.37-6) ... Selecting previously unselected package file. Preparing to unpack .../08-file_1%3a5.37-6_arm64.deb ... Unpacking file (1:5.37-6) ... Selecting previously unselected package libelf1:arm64. Preparing to unpack .../09-libelf1_0.176-1.1_arm64.deb ... Unpacking libelf1:arm64 (0.176-1.1) ... Selecting previously unselected package libexpat1:arm64. Preparing to unpack .../10-libexpat1_2.2.9-1_arm64.deb ... Unpacking libexpat1:arm64 (2.2.9-1) ... Selecting previously unselected package libglib2.0-0:arm64. Preparing to unpack .../11-libglib2.0-0_2.63.3-1_arm64.deb ... Unpacking libglib2.0-0:arm64 (2.63.3-1) ... Selecting previously unselected package libicu63:arm64. Preparing to unpack .../12-libicu63_63.2-2_arm64.deb ... Unpacking libicu63:arm64 (63.2-2) ... Selecting previously unselected package libxml2:arm64. Preparing to unpack .../13-libxml2_2.9.4+dfsg1-8ubuntu1_arm64.deb ... Unpacking libxml2:arm64 (2.9.4+dfsg1-8ubuntu1) ... Selecting previously unselected package gettext-base. Preparing to unpack .../14-gettext-base_0.19.8.1-10_arm64.deb ... Unpacking gettext-base (0.19.8.1-10) ... Selecting previously unselected package libkrb5support0:arm64. Preparing to unpack .../15-libkrb5support0_1.17-6_arm64.deb ... Unpacking libkrb5support0:arm64 (1.17-6) ... Selecting previously unselected package libk5crypto3:arm64. Preparing to unpack .../16-libk5crypto3_1.17-6_arm64.deb ... Unpacking libk5crypto3:arm64 (1.17-6) ... Selecting previously unselected package libkeyutils1:arm64. Preparing to unpack .../17-libkeyutils1_1.6-6ubuntu1_arm64.deb ... Unpacking libkeyutils1:arm64 (1.6-6ubuntu1) ... Selecting previously unselected package libkrb5-3:arm64. Preparing to unpack .../18-libkrb5-3_1.17-6_arm64.deb ... Unpacking libkrb5-3:arm64 (1.17-6) ... Selecting previously unselected package libgssapi-krb5-2:arm64. Preparing to unpack .../19-libgssapi-krb5-2_1.17-6_arm64.deb ... Unpacking libgssapi-krb5-2:arm64 (1.17-6) ... Selecting previously unselected package libpsl5:arm64. Preparing to unpack .../20-libpsl5_0.20.2-2_arm64.deb ... Unpacking libpsl5:arm64 (0.20.2-2) ... Selecting previously unselected package libsigsegv2:arm64. Preparing to unpack .../21-libsigsegv2_2.12-2_arm64.deb ... Unpacking libsigsegv2:arm64 (2.12-2) ... Selecting previously unselected package m4. Preparing to unpack .../22-m4_1.4.18-4_arm64.deb ... Unpacking m4 (1.4.18-4) ... Selecting previously unselected package autoconf. Preparing to unpack .../23-autoconf_2.69-11ubuntu1_all.deb ... Unpacking autoconf (2.69-11ubuntu1) ... Selecting previously unselected package autotools-dev. Preparing to unpack .../24-autotools-dev_20180224.1_all.deb ... Unpacking autotools-dev (20180224.1) ... Selecting previously unselected package automake. Preparing to unpack .../25-automake_1%3a1.16.1-4ubuntu3_all.deb ... Unpacking automake (1:1.16.1-4ubuntu3) ... Selecting previously unselected package autopoint. Preparing to unpack .../26-autopoint_0.19.8.1-10_all.deb ... Unpacking autopoint (0.19.8.1-10) ... Selecting previously unselected package cmake-data. Preparing to unpack .../27-cmake-data_3.15.4-1ubuntu2_all.deb ... Unpacking cmake-data (3.15.4-1ubuntu2) ... Selecting previously unselected package libarchive13:arm64. Preparing to unpack .../28-libarchive13_3.4.0-1build1_arm64.deb ... Unpacking libarchive13:arm64 (3.4.0-1build1) ... Selecting previously unselected package libbrotli1:arm64. Preparing to unpack .../29-libbrotli1_1.0.7-5_arm64.deb ... Unpacking libbrotli1:arm64 (1.0.7-5) ... Selecting previously unselected package libroken18-heimdal:arm64. Preparing to unpack .../30-libroken18-heimdal_7.7.0+dfsg-1_arm64.deb ... Unpacking libroken18-heimdal:arm64 (7.7.0+dfsg-1) ... Selecting previously unselected package libasn1-8-heimdal:arm64. Preparing to unpack .../31-libasn1-8-heimdal_7.7.0+dfsg-1_arm64.deb ... Unpacking libasn1-8-heimdal:arm64 (7.7.0+dfsg-1) ... Selecting previously unselected package libheimbase1-heimdal:arm64. Preparing to unpack .../32-libheimbase1-heimdal_7.7.0+dfsg-1_arm64.deb ... Unpacking libheimbase1-heimdal:arm64 (7.7.0+dfsg-1) ... Selecting previously unselected package libhcrypto4-heimdal:arm64. Preparing to unpack .../33-libhcrypto4-heimdal_7.7.0+dfsg-1_arm64.deb ... Unpacking libhcrypto4-heimdal:arm64 (7.7.0+dfsg-1) ... Selecting previously unselected package libwind0-heimdal:arm64. Preparing to unpack .../34-libwind0-heimdal_7.7.0+dfsg-1_arm64.deb ... Unpacking libwind0-heimdal:arm64 (7.7.0+dfsg-1) ... Selecting previously unselected package libhx509-5-heimdal:arm64. Preparing to unpack .../35-libhx509-5-heimdal_7.7.0+dfsg-1_arm64.deb ... Unpacking libhx509-5-heimdal:arm64 (7.7.0+dfsg-1) ... Selecting previously unselected package libkrb5-26-heimdal:arm64. Preparing to unpack .../36-libkrb5-26-heimdal_7.7.0+dfsg-1_arm64.deb ... Unpacking libkrb5-26-heimdal:arm64 (7.7.0+dfsg-1) ... Selecting previously unselected package libheimntlm0-heimdal:arm64. Preparing to unpack .../37-libheimntlm0-heimdal_7.7.0+dfsg-1_arm64.deb ... Unpacking libheimntlm0-heimdal:arm64 (7.7.0+dfsg-1) ... Selecting previously unselected package libgssapi3-heimdal:arm64. Preparing to unpack .../38-libgssapi3-heimdal_7.7.0+dfsg-1_arm64.deb ... Unpacking libgssapi3-heimdal:arm64 (7.7.0+dfsg-1) ... Selecting previously unselected package libsasl2-modules-db:arm64. Preparing to unpack .../39-libsasl2-modules-db_2.1.27+dfsg-2_arm64.deb ... Unpacking libsasl2-modules-db:arm64 (2.1.27+dfsg-2) ... Selecting previously unselected package libsasl2-2:arm64. Preparing to unpack .../40-libsasl2-2_2.1.27+dfsg-2_arm64.deb ... Unpacking libsasl2-2:arm64 (2.1.27+dfsg-2) ... Selecting previously unselected package libldap-common. Preparing to unpack .../41-libldap-common_2.4.48+dfsg-1ubuntu3_all.deb ... Unpacking libldap-common (2.4.48+dfsg-1ubuntu3) ... Selecting previously unselected package libldap-2.4-2:arm64. Preparing to unpack .../42-libldap-2.4-2_2.4.48+dfsg-1ubuntu3_arm64.deb ... Unpacking libldap-2.4-2:arm64 (2.4.48+dfsg-1ubuntu3) ... Selecting previously unselected package libnghttp2-14:arm64. Preparing to unpack .../43-libnghttp2-14_1.40.0-1_arm64.deb ... Unpacking libnghttp2-14:arm64 (1.40.0-1) ... Selecting previously unselected package librtmp1:arm64. Preparing to unpack .../44-librtmp1_2.4+20151223.gitfa8646d.1-2build1_arm64.deb ... Unpacking librtmp1:arm64 (2.4+20151223.gitfa8646d.1-2build1) ... Selecting previously unselected package libssh-4:arm64. Preparing to unpack .../45-libssh-4_0.9.0-1ubuntu5_arm64.deb ... Unpacking libssh-4:arm64 (0.9.0-1ubuntu5) ... Selecting previously unselected package libcurl4:arm64. Preparing to unpack .../46-libcurl4_7.66.0-1ubuntu1_arm64.deb ... Unpacking libcurl4:arm64 (7.66.0-1ubuntu1) ... Selecting previously unselected package libjsoncpp1:arm64. Preparing to unpack .../47-libjsoncpp1_1.7.4-3_arm64.deb ... Unpacking libjsoncpp1:arm64 (1.7.4-3) ... Selecting previously unselected package librhash0:arm64. Preparing to unpack .../48-librhash0_1.3.9-1_arm64.deb ... Unpacking librhash0:arm64 (1.3.9-1) ... Selecting previously unselected package libuv1:arm64. Preparing to unpack .../49-libuv1_1.33.1-2_arm64.deb ... Unpacking libuv1:arm64 (1.33.1-2) ... Selecting previously unselected package cmake. Preparing to unpack .../50-cmake_3.15.4-1ubuntu2_arm64.deb ... Unpacking cmake (3.15.4-1ubuntu2) ... Selecting previously unselected package libtool. Preparing to unpack .../51-libtool_2.4.6-11_all.deb ... Unpacking libtool (2.4.6-11) ... Selecting previously unselected package dh-autoreconf. Preparing to unpack .../52-dh-autoreconf_19_all.deb ... Unpacking dh-autoreconf (19) ... Selecting previously unselected package libdebhelper-perl. Preparing to unpack .../53-libdebhelper-perl_12.7.1ubuntu1_all.deb ... Unpacking libdebhelper-perl (12.7.1ubuntu1) ... Selecting previously unselected package libarchive-zip-perl. Preparing to unpack .../54-libarchive-zip-perl_1.67-1_all.deb ... Unpacking libarchive-zip-perl (1.67-1) ... Selecting previously unselected package libsub-override-perl. Preparing to unpack .../55-libsub-override-perl_0.09-2_all.deb ... Unpacking libsub-override-perl (0.09-2) ... Selecting previously unselected package libfile-stripnondeterminism-perl. Preparing to unpack .../56-libfile-stripnondeterminism-perl_1.6.3-1_all.deb ... Unpacking libfile-stripnondeterminism-perl (1.6.3-1) ... Selecting previously unselected package dh-strip-nondeterminism. Preparing to unpack .../57-dh-strip-nondeterminism_1.6.3-1_all.deb ... Unpacking dh-strip-nondeterminism (1.6.3-1) ... Selecting previously unselected package dwz. Preparing to unpack .../58-dwz_0.13-5_arm64.deb ... Unpacking dwz (0.13-5) ... Selecting previously unselected package libcroco3:arm64. Preparing to unpack .../59-libcroco3_0.6.13-1_arm64.deb ... Unpacking libcroco3:arm64 (0.6.13-1) ... Selecting previously unselected package gettext. Preparing to unpack .../60-gettext_0.19.8.1-10_arm64.deb ... Unpacking gettext (0.19.8.1-10) ... Selecting previously unselected package intltool-debian. Preparing to unpack .../61-intltool-debian_0.35.0+20060710.5_all.deb ... Unpacking intltool-debian (0.35.0+20060710.5) ... Selecting previously unselected package po-debconf. Preparing to unpack .../62-po-debconf_1.0.21_all.deb ... Unpacking po-debconf (1.0.21) ... Selecting previously unselected package debhelper. Preparing to unpack .../63-debhelper_12.7.1ubuntu1_all.deb ... Unpacking debhelper (12.7.1ubuntu1) ... Selecting previously unselected package sbuild-build-depends-gemmlowp-dummy. Preparing to unpack .../64-sbuild-build-depends-gemmlowp-dummy_0.invalid.0_arm64.deb ... Unpacking sbuild-build-depends-gemmlowp-dummy (0.invalid.0) ... Setting up libexpat1:arm64 (2.2.9-1) ... Setting up libpipeline1:arm64 (1.5.1-3) ... Setting up libkeyutils1:arm64 (1.6-6ubuntu1) ... Setting up libpsl5:arm64 (0.20.2-2) ... Setting up libmagic-mgc (1:5.37-6) ... Setting up libarchive-zip-perl (1.67-1) ... Setting up libglib2.0-0:arm64 (2.63.3-1) ... No schema files found: doing nothing. Setting up libdebhelper-perl (12.7.1ubuntu1) ... Setting up libbrotli1:arm64 (1.0.7-5) ... Setting up libnghttp2-14:arm64 (1.40.0-1) ... Setting up libmagic1:arm64 (1:5.37-6) ... Setting up gettext-base (0.19.8.1-10) ... Setting up file (1:5.37-6) ... Setting up libldap-common (2.4.48+dfsg-1ubuntu3) ... Setting up libicu63:arm64 (63.2-2) ... Setting up libkrb5support0:arm64 (1.17-6) ... Setting up libsasl2-modules-db:arm64 (2.1.27+dfsg-2) ... Setting up autotools-dev (20180224.1) ... Setting up libuv1:arm64 (1.33.1-2) ... Setting up librtmp1:arm64 (2.4+20151223.gitfa8646d.1-2build1) ... Setting up libsigsegv2:arm64 (2.12-2) ... Setting up autopoint (0.19.8.1-10) ... Setting up libk5crypto3:arm64 (1.17-6) ... Setting up libsasl2-2:arm64 (2.1.27+dfsg-2) ... Setting up libroken18-heimdal:arm64 (7.7.0+dfsg-1) ... Setting up librhash0:arm64 (1.3.9-1) ... Setting up libuchardet0:arm64 (0.0.6-3) ... Setting up libsub-override-perl (0.09-2) ... Setting up cmake-data (3.15.4-1ubuntu2) ... Setting up libkrb5-3:arm64 (1.17-6) ... Setting up libbsd0:arm64 (0.10.0-1) ... Setting up libelf1:arm64 (0.176-1.1) ... Setting up libxml2:arm64 (2.9.4+dfsg1-8ubuntu1) ... Setting up libjsoncpp1:arm64 (1.7.4-3) ... Setting up libheimbase1-heimdal:arm64 (7.7.0+dfsg-1) ... Setting up libfile-stripnondeterminism-perl (1.6.3-1) ... Setting up libtool (2.4.6-11) ... Setting up libarchive13:arm64 (3.4.0-1build1) ... Setting up libasn1-8-heimdal:arm64 (7.7.0+dfsg-1) ... Setting up m4 (1.4.18-4) ... Setting up libhcrypto4-heimdal:arm64 (7.7.0+dfsg-1) ... Setting up libwind0-heimdal:arm64 (7.7.0+dfsg-1) ... Setting up bsdmainutils (11.1.2ubuntu2) ... update-alternatives: using /usr/bin/bsd-write to provide /usr/bin/write (write) in auto mode update-alternatives: using /usr/bin/bsd-from to provide /usr/bin/from (from) in auto mode Setting up libgssapi-krb5-2:arm64 (1.17-6) ... Setting up libcroco3:arm64 (0.6.13-1) ... Setting up libssh-4:arm64 (0.9.0-1ubuntu5) ... Setting up autoconf (2.69-11ubuntu1) ... Setting up dh-strip-nondeterminism (1.6.3-1) ... Setting up dwz (0.13-5) ... Setting up groff-base (1.22.4-4) ... Setting up automake (1:1.16.1-4ubuntu3) ... update-alternatives: using /usr/bin/automake-1.16 to provide /usr/bin/automake (automake) in auto mode Setting up gettext (0.19.8.1-10) ... Setting up libhx509-5-heimdal:arm64 (7.7.0+dfsg-1) ... Setting up man-db (2.9.0-2) ... Not building database; man-db/auto-update is not 'true'. Created symlink /etc/systemd/system/timers.target.wants/man-db.timer → /lib/systemd/system/man-db.timer. Setting up intltool-debian (0.35.0+20060710.5) ... Setting up libkrb5-26-heimdal:arm64 (7.7.0+dfsg-1) ... Setting up po-debconf (1.0.21) ... Setting up libheimntlm0-heimdal:arm64 (7.7.0+dfsg-1) ... Setting up libgssapi3-heimdal:arm64 (7.7.0+dfsg-1) ... Setting up libldap-2.4-2:arm64 (2.4.48+dfsg-1ubuntu3) ... Setting up libcurl4:arm64 (7.66.0-1ubuntu1) ... Setting up cmake (3.15.4-1ubuntu2) ... Setting up dh-autoreconf (19) ... Setting up debhelper (12.7.1ubuntu1) ... Setting up sbuild-build-depends-gemmlowp-dummy (0.invalid.0) ... Processing triggers for libc-bin (2.30-0ubuntu3) ... +------------------------------------------------------------------------------+ | Build environment | +------------------------------------------------------------------------------+ Kernel: Linux 4.4.0-170-generic arm64 (aarch64) Toolchain package versions: binutils_2.33.50.20200105-2ubuntu2 dpkg-dev_1.19.7ubuntu2 g++-10_10-20200104-1ubuntu2 g++-9_9.2.1-21ubuntu1 gcc-10_10-20200104-1ubuntu2 gcc-9_9.2.1-21ubuntu1 libc6-dev_2.30-0ubuntu3 libstdc++-10-dev_10-20200104-1ubuntu2 libstdc++-9-dev_9.2.1-21ubuntu1 libstdc++6_10-20200104-1ubuntu2 linux-libc-dev_5.3.0-24.26 Package versions: adduser_3.118ubuntu1 advancecomp_2.1-2.1 apt_1.9.5 autoconf_2.69-11ubuntu1 automake_1:1.16.1-4ubuntu3 autopoint_0.19.8.1-10 autotools-dev_20180224.1 base-files_11ubuntu2 base-passwd_3.5.47 bash_5.0-5ubuntu1 binutils_2.33.50.20200105-2ubuntu2 binutils-aarch64-linux-gnu_2.33.50.20200105-2ubuntu2 binutils-common_2.33.50.20200105-2ubuntu2 bsdmainutils_11.1.2ubuntu2 bsdutils_1:2.34-0.1ubuntu4 build-essential_12.8ubuntu1 bzip2_1.0.8-2 ca-certificates_20190110 cmake_3.15.4-1ubuntu2 cmake-data_3.15.4-1ubuntu2 coreutils_8.30-3ubuntu2 cpp_4:10-1ubuntu1 cpp-10_10-20200104-1ubuntu2 cpp-9_9.2.1-21ubuntu1 dash_0.5.10.2-6 debconf_1.5.73 debhelper_12.7.1ubuntu1 debianutils_4.9.1 dh-autoreconf_19 dh-strip-nondeterminism_1.6.3-1 diffutils_1:3.7-3 dpkg_1.19.7ubuntu2 dpkg-dev_1.19.7ubuntu2 dwz_0.13-5 e2fsprogs_1.45.3-4ubuntu2 fakeroot_1.24-1 fdisk_2.34-0.1ubuntu4 file_1:5.37-6 findutils_4.6.0+git+20190209-2ubuntu1 g++_4:10-1ubuntu1 g++-10_10-20200104-1ubuntu2 g++-9_9.2.1-21ubuntu1 gcc_4:10-1ubuntu1 gcc-10_10-20200104-1ubuntu2 gcc-10-base_10-20200104-1ubuntu2 gcc-9_9.2.1-21ubuntu1 gcc-9-base_9.2.1-21ubuntu1 gettext_0.19.8.1-10 gettext-base_0.19.8.1-10 gpg_2.2.17-3ubuntu1 gpg-agent_2.2.17-3ubuntu1 gpgconf_2.2.17-3ubuntu1 gpgv_2.2.17-3ubuntu1 grep_3.3-1build1 groff-base_1.22.4-4 gzip_1.10-0ubuntu4 hostname_3.23 init_1.57 init-system-helpers_1.57 intltool-debian_0.35.0+20060710.5 libacl1_2.2.53-5ubuntu1 libapparmor1_2.13.3-7ubuntu1 libapt-pkg5.90_1.9.5 libarchive-zip-perl_1.67-1 libarchive13_3.4.0-1build1 libargon2-1_0~20171227-0.2 libasan5_9.2.1-21ubuntu1 libasan6_10-20200104-1ubuntu2 libasn1-8-heimdal_7.7.0+dfsg-1 libassuan0_2.5.3-7ubuntu1 libatomic1_10-20200104-1ubuntu2 libattr1_1:2.4.48-5 libaudit-common_1:2.8.5-2ubuntu5 libaudit1_1:2.8.5-2ubuntu5 libbinutils_2.33.50.20200105-2ubuntu2 libblkid1_2.34-0.1ubuntu4 libbrotli1_1.0.7-5 libbsd0_0.10.0-1 libbz2-1.0_1.0.8-2 libc-bin_2.30-0ubuntu3 libc-dev-bin_2.30-0ubuntu3 libc6_2.30-0ubuntu3 libc6-dev_2.30-0ubuntu3 libcap-ng0_0.7.9-2.1 libcap2_1:2.27-1 libcc1-0_10-20200104-1ubuntu2 libcom-err2_1.45.3-4ubuntu2 libcroco3_0.6.13-1 libcryptsetup12_2:2.2.2-1ubuntu1 libctf-nobfd0_2.33.50.20200105-2ubuntu2 libctf0_2.33.50.20200105-2ubuntu2 libcurl4_7.66.0-1ubuntu1 libdb5.3_5.3.28+dfsg1-0.6ubuntu1 libdebconfclient0_0.250ubuntu2 libdebhelper-perl_12.7.1ubuntu1 libdevmapper1.02.1_2:1.02.155-2ubuntu7 libdpkg-perl_1.19.7ubuntu2 libelf1_0.176-1.1 libexpat1_2.2.9-1 libext2fs2_1.45.3-4ubuntu2 libfakeroot_1.24-1 libfdisk1_2.34-0.1ubuntu4 libffi6_3.2.1-9 libfile-stripnondeterminism-perl_1.6.3-1 libgcc-10-dev_10-20200104-1ubuntu2 libgcc-9-dev_9.2.1-21ubuntu1 libgcc-s1_10-20200104-1ubuntu2 libgcc1_1:10-20200104-1ubuntu2 libgcrypt20_1.8.5-3ubuntu1 libgdbm-compat4_1.18.1-5 libgdbm6_1.18.1-5 libglib2.0-0_2.63.3-1 libgmp10_2:6.1.2+dfsg-4 libgnutls30_3.6.11.1-2 libgomp1_10-20200104-1ubuntu2 libgpg-error0_1.36-7 libgssapi-krb5-2_1.17-6 libgssapi3-heimdal_7.7.0+dfsg-1 libhcrypto4-heimdal_7.7.0+dfsg-1 libheimbase1-heimdal_7.7.0+dfsg-1 libheimntlm0-heimdal_7.7.0+dfsg-1 libhogweed4_3.4.1-1 libhogweed5_3.5.1+really3.5.1-2 libhx509-5-heimdal_7.7.0+dfsg-1 libicu63_63.2-2 libidn2-0_2.2.0-2 libip4tc2_1.8.3-2ubuntu5 libisl21_0.21-2 libisl22_0.22-2 libitm1_10-20200104-1ubuntu2 libjson-c4_0.13.1+dfsg-6 libjsoncpp1_1.7.4-3 libk5crypto3_1.17-6 libkeyutils1_1.6-6ubuntu1 libkmod2_26-3ubuntu1 libkrb5-26-heimdal_7.7.0+dfsg-1 libkrb5-3_1.17-6 libkrb5support0_1.17-6 libldap-2.4-2_2.4.48+dfsg-1ubuntu3 libldap-common_2.4.48+dfsg-1ubuntu3 liblockfile-bin_1.16-1.1 liblockfile1_1.16-1.1 liblsan0_10-20200104-1ubuntu2 liblz4-1_1.9.2-2 liblzma5_5.2.4-1 libmagic-mgc_1:5.37-6 libmagic1_1:5.37-6 libmount1_2.34-0.1ubuntu4 libmpc3_1.1.0-1 libmpfr6_4.0.2-1 libncurses6_6.1+20191019-1ubuntu1 libncursesw6_6.1+20191019-1ubuntu1 libnettle6_3.4.1-1 libnettle7_3.5.1+really3.5.1-2 libnghttp2-14_1.40.0-1 libnpth0_1.6-1 libp11-kit0_0.23.18.1-2 libpam-modules_1.3.1-5ubuntu4 libpam-modules-bin_1.3.1-5ubuntu4 libpam-runtime_1.3.1-5ubuntu4 libpam0g_1.3.1-5ubuntu4 libpcre2-8-0_10.34-7 libpcre3_2:8.39-12 libperl5.28_5.28.1-6build1 libperl5.30_5.30.0-9 libpipeline1_1.5.1-3 libpng16-16_1.6.37-1 libprocps7_2:3.3.15-2ubuntu3 libpsl5_0.20.2-2 libreadline8_8.0-3 librhash0_1.3.9-1 libroken18-heimdal_7.7.0+dfsg-1 librtmp1_2.4+20151223.gitfa8646d.1-2build1 libsasl2-2_2.1.27+dfsg-2 libsasl2-modules-db_2.1.27+dfsg-2 libseccomp2_2.4.2-2ubuntu1 libselinux1_3.0-1 libsemanage-common_3.0-1 libsemanage1_3.0-1 libsepol1_3.0-1 libsigsegv2_2.12-2 libsmartcols1_2.34-0.1ubuntu4 libsqlite3-0_3.30.1-1ubuntu1 libss2_1.45.3-4ubuntu2 libssh-4_0.9.0-1ubuntu5 libssl1.1_1.1.1c-1ubuntu4 libstdc++-10-dev_10-20200104-1ubuntu2 libstdc++-9-dev_9.2.1-21ubuntu1 libstdc++6_10-20200104-1ubuntu2 libsub-override-perl_0.09-2 libsystemd0_244-3ubuntu1 libtasn1-6_4.15.0-2 libtinfo6_6.1+20191019-1ubuntu1 libtool_2.4.6-11 libtsan0_10-20200104-1ubuntu2 libubsan1_10-20200104-1ubuntu2 libuchardet0_0.0.6-3 libudev1_244-3ubuntu1 libunistring2_0.9.10-2 libuuid1_2.34-0.1ubuntu4 libuv1_1.33.1-2 libwind0-heimdal_7.7.0+dfsg-1 libxml2_2.9.4+dfsg1-8ubuntu1 libzstd1_1.4.4+dfsg-1 linux-libc-dev_5.3.0-24.26 lockfile-progs_0.1.18 login_1:4.5-1.1ubuntu4 logsave_1.45.3-4ubuntu2 lsb-base_11.1.0ubuntu2 m4_1.4.18-4 make_4.2.1-1.2 man-db_2.9.0-2 mawk_1.3.3-17ubuntu3 mount_2.34-0.1ubuntu4 ncurses-base_6.1+20191019-1ubuntu1 ncurses-bin_6.1+20191019-1ubuntu1 openssl_1.1.1c-1ubuntu4 optipng_0.7.7-1 passwd_1:4.5-1.1ubuntu4 patch_2.7.6-6 perl_5.30.0-9 perl-base_5.30.0-9 perl-modules-5.28_5.28.1-6build1 perl-modules-5.30_5.30.0-9 pinentry-curses_1.1.0-3 pkgbinarymangler_144 po-debconf_1.0.21 policyrcd-script-zg2_0.1-3 procps_2:3.3.15-2ubuntu3 readline-common_8.0-3 sbuild-build-depends-core-dummy_0.invalid.0 sbuild-build-depends-gemmlowp-dummy_0.invalid.0 sed_4.7-1 sensible-utils_0.0.12+nmu1 systemd_244-3ubuntu1 systemd-sysv_244-3ubuntu1 sysvinit-utils_2.96-1ubuntu1 tar_1.30+dfsg-6 tzdata_2019c-3 ubuntu-keyring_2018.09.18.1 util-linux_2.34-0.1ubuntu4 xz-utils_5.2.4-1 zlib1g_1:1.2.11.dfsg-1ubuntu3 +------------------------------------------------------------------------------+ | Build | +------------------------------------------------------------------------------+ Unpack source ------------- gpgv: Signature made Tue Aug 13 02:04:45 2019 UTC gpgv: using RSA key 638BC75EC1E5C589067E35DE62645EB35F686A8A gpgv: issuer "cdluminate@gmail.com" gpgv: Can't check signature: No public key dpkg-source: warning: failed to verify signature on ./gemmlowp_0.0~git20190708.a227af1-1.dsc dpkg-source: info: extracting gemmlowp in gemmlowp-0.0~git20190708.a227af1 dpkg-source: info: unpacking gemmlowp_0.0~git20190708.a227af1.orig.tar.xz dpkg-source: info: unpacking gemmlowp_0.0~git20190708.a227af1-1.debian.tar.xz dpkg-source: info: using patch list from debian/patches/series dpkg-source: info: applying 0001-cmake-build-fix.patch Check disc space ---------------- Sufficient free space for build User Environment ---------------- APT_CONFIG=/var/lib/sbuild/apt.conf DEB_BUILD_OPTIONS=noautodbgsym parallel=4 HOME=/sbuild-nonexistent LANG=C.UTF-8 LC_ALL=C.UTF-8 LOGNAME=buildd PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games SCHROOT_ALIAS_NAME=build-PACKAGEBUILD-18385219 SCHROOT_CHROOT_NAME=build-PACKAGEBUILD-18385219 SCHROOT_COMMAND=env SCHROOT_GID=2501 SCHROOT_GROUP=buildd SCHROOT_SESSION_ID=build-PACKAGEBUILD-18385219 SCHROOT_UID=2001 SCHROOT_USER=buildd SHELL=/bin/sh TERM=unknown USER=buildd V=1 dpkg-buildpackage ----------------- dpkg-buildpackage: info: source package gemmlowp dpkg-buildpackage: info: source version 0.0~git20190708.a227af1-1 dpkg-buildpackage: info: source distribution unstable dpkg-source --before-build . dpkg-buildpackage: info: host architecture arm64 fakeroot debian/rules clean dh clean -Scmake dh_testdir -O-Scmake debian/rules override_dh_auto_clean make[1]: Entering directory '/<>' rm -f CMakeLists.txt dh_auto_clean make[1]: Leaving directory '/<>' dh_autoreconf_clean -O-Scmake dh_clean -O-Scmake debian/rules build-arch dh build-arch -Scmake dh_testdir -a -O-Scmake dh_update_autotools_config -a -O-Scmake dh_autoreconf -a -O-Scmake debian/rules override_dh_auto_configure make[1]: Entering directory '/<>' ln -s contrib/CMakeLists.txt . dh_auto_configure -- \ -DCMAKE_C_FLAGS="-g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2" \ -DCMAKE_CXX_FLAGS="-g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2" cd obj-aarch64-linux-gnu && cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=None -DCMAKE_INSTALL_SYSCONFDIR=/etc -DCMAKE_INSTALL_LOCALSTATEDIR=/var -DCMAKE_EXPORT_NO_PACKAGE_REGISTRY=ON -DCMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY=ON -DCMAKE_INSTALL_RUNSTATEDIR=/run "-GUnix Makefiles" -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_INSTALL_LIBDIR=lib/aarch64-linux-gnu "-DCMAKE_C_FLAGS=-g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2" "-DCMAKE_CXX_FLAGS=-g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2" .. -- The C compiler identification is GNU 10.0.0 -- The CXX compiler identification is GNU 10.0.0 -- Check for working C compiler: /usr/bin/cc -- Check for working C compiler: /usr/bin/cc -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Detecting C compile features -- Detecting C compile features - done -- Check for working CXX compiler: /usr/bin/c++ -- Check for working CXX compiler: /usr/bin/c++ -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Detecting CXX compile features -- Detecting CXX compile features - done -- Configuring done -- Generating done CMake Warning: Manually-specified variables were not used by the project: CMAKE_EXPORT_NO_PACKAGE_REGISTRY CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY CMAKE_INSTALL_LIBDIR CMAKE_INSTALL_LOCALSTATEDIR CMAKE_INSTALL_RUNSTATEDIR CMAKE_INSTALL_SYSCONFDIR -- Build files have been written to: /<>/obj-aarch64-linux-gnu make[1]: Leaving directory '/<>' dh_auto_build -a -O-Scmake cd obj-aarch64-linux-gnu && make -j4 "INSTALL=install --strip-program=true" make[1]: Entering directory '/<>/obj-aarch64-linux-gnu' /usr/bin/cmake -S"/<>" -B"/<>/obj-aarch64-linux-gnu" --check-build-system CMakeFiles/Makefile.cmake 0 /usr/bin/cmake -E cmake_progress_start "/<>/obj-aarch64-linux-gnu/CMakeFiles" "/<>/obj-aarch64-linux-gnu/CMakeFiles/progress.marks" make -f CMakeFiles/Makefile2 all make[2]: Entering directory '/<>/obj-aarch64-linux-gnu' make -f CMakeFiles/test_fixedpoint.dir/build.make CMakeFiles/test_fixedpoint.dir/depend make -f CMakeFiles/test_allocator.dir/build.make CMakeFiles/test_allocator.dir/depend make -f CMakeFiles/test_math_helpers.dir/build.make CMakeFiles/test_math_helpers.dir/depend make -f CMakeFiles/test_blocking_counter.dir/build.make CMakeFiles/test_blocking_counter.dir/depend make[3]: Entering directory '/<>/obj-aarch64-linux-gnu' cd "/<>/obj-aarch64-linux-gnu" && /usr/bin/cmake -E cmake_depends "Unix Makefiles" "/<>" "/<>" "/<>/obj-aarch64-linux-gnu" "/<>/obj-aarch64-linux-gnu" "/<>/obj-aarch64-linux-gnu/CMakeFiles/test_fixedpoint.dir/DependInfo.cmake" --color= make[3]: Entering directory '/<>/obj-aarch64-linux-gnu' cd "/<>/obj-aarch64-linux-gnu" && /usr/bin/cmake -E cmake_depends "Unix Makefiles" "/<>" "/<>" "/<>/obj-aarch64-linux-gnu" "/<>/obj-aarch64-linux-gnu" "/<>/obj-aarch64-linux-gnu/CMakeFiles/test_allocator.dir/DependInfo.cmake" --color= make[3]: Entering directory '/<>/obj-aarch64-linux-gnu' cd "/<>/obj-aarch64-linux-gnu" && /usr/bin/cmake -E cmake_depends "Unix Makefiles" "/<>" "/<>" "/<>/obj-aarch64-linux-gnu" "/<>/obj-aarch64-linux-gnu" "/<>/obj-aarch64-linux-gnu/CMakeFiles/test_math_helpers.dir/DependInfo.cmake" --color= make[3]: Entering directory '/<>/obj-aarch64-linux-gnu' cd "/<>/obj-aarch64-linux-gnu" && /usr/bin/cmake -E cmake_depends "Unix Makefiles" "/<>" "/<>" "/<>/obj-aarch64-linux-gnu" "/<>/obj-aarch64-linux-gnu" "/<>/obj-aarch64-linux-gnu/CMakeFiles/test_blocking_counter.dir/DependInfo.cmake" --color= Scanning dependencies of target test_fixedpoint Scanning dependencies of target test_math_helpers make[3]: Leaving directory '/<>/obj-aarch64-linux-gnu' make[3]: Leaving directory '/<>/obj-aarch64-linux-gnu' make -f CMakeFiles/test_fixedpoint.dir/build.make CMakeFiles/test_fixedpoint.dir/build Scanning dependencies of target test_allocator make -f CMakeFiles/test_math_helpers.dir/build.make CMakeFiles/test_math_helpers.dir/build make[3]: Leaving directory '/<>/obj-aarch64-linux-gnu' make[3]: Entering directory '/<>/obj-aarch64-linux-gnu' make -f CMakeFiles/test_allocator.dir/build.make CMakeFiles/test_allocator.dir/build make[3]: Entering directory '/<>/obj-aarch64-linux-gnu' make[3]: Entering directory '/<>/obj-aarch64-linux-gnu' Scanning dependencies of target test_blocking_counter make[3]: Leaving directory '/<>/obj-aarch64-linux-gnu' make -f CMakeFiles/test_blocking_counter.dir/build.make CMakeFiles/test_blocking_counter.dir/build make[3]: Entering directory '/<>/obj-aarch64-linux-gnu' [ 5%] Building CXX object CMakeFiles/test_allocator.dir/test/test_allocator.cc.o /usr/bin/c++ -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -std=gnu++11 -o CMakeFiles/test_allocator.dir/test/test_allocator.cc.o -c "/<>/test/test_allocator.cc" [ 11%] Building CXX object CMakeFiles/test_blocking_counter.dir/test/test_blocking_counter.cc.o /usr/bin/c++ -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -std=gnu++11 -o CMakeFiles/test_blocking_counter.dir/test/test_blocking_counter.cc.o -c "/<>/test/test_blocking_counter.cc" [ 17%] Building CXX object CMakeFiles/test_math_helpers.dir/test/test_math_helpers.cc.o /usr/bin/c++ -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -std=gnu++11 -o CMakeFiles/test_math_helpers.dir/test/test_math_helpers.cc.o -c "/<>/test/test_math_helpers.cc" [ 23%] Building CXX object CMakeFiles/test_fixedpoint.dir/test/test_fixedpoint.cc.o /usr/bin/c++ -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -std=gnu++11 -o CMakeFiles/test_fixedpoint.dir/test/test_fixedpoint.cc.o -c "/<>/test/test_fixedpoint.cc" [ 29%] Linking CXX executable test_allocator /usr/bin/cmake -E cmake_link_script CMakeFiles/test_allocator.dir/link.txt --verbose=1 /usr/bin/c++ -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now -Wl,--as-needed CMakeFiles/test_allocator.dir/test/test_allocator.cc.o -o test_allocator [ 35%] Linking CXX executable test_blocking_counter /usr/bin/cmake -E cmake_link_script CMakeFiles/test_blocking_counter.dir/link.txt --verbose=1 /usr/bin/c++ -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now -Wl,--as-needed CMakeFiles/test_blocking_counter.dir/test/test_blocking_counter.cc.o -o test_blocking_counter -lpthread make[3]: Leaving directory '/<>/obj-aarch64-linux-gnu' [ 35%] Built target test_allocator make -f CMakeFiles/eight_bit_int_gemm.dir/build.make CMakeFiles/eight_bit_int_gemm.dir/depend make[3]: Entering directory '/<>/obj-aarch64-linux-gnu' cd "/<>/obj-aarch64-linux-gnu" && /usr/bin/cmake -E cmake_depends "Unix Makefiles" "/<>" "/<>" "/<>/obj-aarch64-linux-gnu" "/<>/obj-aarch64-linux-gnu" "/<>/obj-aarch64-linux-gnu/CMakeFiles/eight_bit_int_gemm.dir/DependInfo.cmake" --color= make[3]: Leaving directory '/<>/obj-aarch64-linux-gnu' [ 35%] Built target test_blocking_counter make -f CMakeFiles/benchmark_all_sizes.dir/build.make CMakeFiles/benchmark_all_sizes.dir/depend Scanning dependencies of target eight_bit_int_gemm make[3]: Entering directory '/<>/obj-aarch64-linux-gnu' cd "/<>/obj-aarch64-linux-gnu" && /usr/bin/cmake -E cmake_depends "Unix Makefiles" "/<>" "/<>" "/<>/obj-aarch64-linux-gnu" "/<>/obj-aarch64-linux-gnu" "/<>/obj-aarch64-linux-gnu/CMakeFiles/benchmark_all_sizes.dir/DependInfo.cmake" --color= make[3]: Leaving directory '/<>/obj-aarch64-linux-gnu' make -f CMakeFiles/eight_bit_int_gemm.dir/build.make CMakeFiles/eight_bit_int_gemm.dir/build make[3]: Entering directory '/<>/obj-aarch64-linux-gnu' [ 41%] Building CXX object CMakeFiles/eight_bit_int_gemm.dir/eight_bit_int_gemm/eight_bit_int_gemm.cc.o /usr/bin/c++ -Deight_bit_int_gemm_EXPORTS -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -std=gnu++11 -o CMakeFiles/eight_bit_int_gemm.dir/eight_bit_int_gemm/eight_bit_int_gemm.cc.o -c "/<>/eight_bit_int_gemm/eight_bit_int_gemm.cc" Scanning dependencies of target benchmark_all_sizes make[3]: Leaving directory '/<>/obj-aarch64-linux-gnu' make -f CMakeFiles/benchmark_all_sizes.dir/build.make CMakeFiles/benchmark_all_sizes.dir/build make[3]: Entering directory '/<>/obj-aarch64-linux-gnu' [ 47%] Building CXX object CMakeFiles/benchmark_all_sizes.dir/test/benchmark_all_sizes.cc.o /usr/bin/c++ -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -DBENCHMARK_8bit -DBENCHMARK_QUICK -std=gnu++11 -o CMakeFiles/benchmark_all_sizes.dir/test/benchmark_all_sizes.cc.o -c "/<>/test/benchmark_all_sizes.cc" [ 52%] Linking CXX executable test_math_helpers /usr/bin/cmake -E cmake_link_script CMakeFiles/test_math_helpers.dir/link.txt --verbose=1 /usr/bin/c++ -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now -Wl,--as-needed CMakeFiles/test_math_helpers.dir/test/test_math_helpers.cc.o -o test_math_helpers make[3]: Leaving directory '/<>/obj-aarch64-linux-gnu' [ 52%] Built target test_math_helpers make -f CMakeFiles/benchmark.dir/build.make CMakeFiles/benchmark.dir/depend make[3]: Entering directory '/<>/obj-aarch64-linux-gnu' cd "/<>/obj-aarch64-linux-gnu" && /usr/bin/cmake -E cmake_depends "Unix Makefiles" "/<>" "/<>" "/<>/obj-aarch64-linux-gnu" "/<>/obj-aarch64-linux-gnu" "/<>/obj-aarch64-linux-gnu/CMakeFiles/benchmark.dir/DependInfo.cmake" --color= Scanning dependencies of target benchmark make[3]: Leaving directory '/<>/obj-aarch64-linux-gnu' make -f CMakeFiles/benchmark.dir/build.make CMakeFiles/benchmark.dir/build make[3]: Entering directory '/<>/obj-aarch64-linux-gnu' [ 58%] Building CXX object CMakeFiles/benchmark.dir/test/benchmark.cc.o /usr/bin/c++ -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -std=gnu++11 -o CMakeFiles/benchmark.dir/test/benchmark.cc.o -c "/<>/test/benchmark.cc" [ 64%] Linking CXX executable benchmark_all_sizes /usr/bin/cmake -E cmake_link_script CMakeFiles/benchmark_all_sizes.dir/link.txt --verbose=1 /usr/bin/c++ -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now -Wl,--as-needed CMakeFiles/benchmark_all_sizes.dir/test/benchmark_all_sizes.cc.o -o benchmark_all_sizes -lpthread make[3]: Leaving directory '/<>/obj-aarch64-linux-gnu' [ 64%] Built target benchmark_all_sizes [ 70%] Linking CXX executable benchmark /usr/bin/cmake -E cmake_link_script CMakeFiles/benchmark.dir/link.txt --verbose=1 /usr/bin/c++ -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now -Wl,--as-needed CMakeFiles/benchmark.dir/test/benchmark.cc.o -o benchmark -lpthread make[3]: Leaving directory '/<>/obj-aarch64-linux-gnu' [ 70%] Built target benchmark [ 76%] Linking CXX executable test_fixedpoint /usr/bin/cmake -E cmake_link_script CMakeFiles/test_fixedpoint.dir/link.txt --verbose=1 /usr/bin/c++ -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now -Wl,--as-needed CMakeFiles/test_fixedpoint.dir/test/test_fixedpoint.cc.o -o test_fixedpoint make[3]: Leaving directory '/<>/obj-aarch64-linux-gnu' [ 76%] Built target test_fixedpoint [ 82%] Linking CXX shared library libeight_bit_int_gemm.so /usr/bin/cmake -E cmake_link_script CMakeFiles/eight_bit_int_gemm.dir/link.txt --verbose=1 /usr/bin/c++ -fPIC -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -shared -Wl,-soname,libeight_bit_int_gemm.so -o libeight_bit_int_gemm.so CMakeFiles/eight_bit_int_gemm.dir/eight_bit_int_gemm/eight_bit_int_gemm.cc.o -lpthread make[3]: Leaving directory '/<>/obj-aarch64-linux-gnu' [ 82%] Built target eight_bit_int_gemm make -f CMakeFiles/test_gemmlowp.dir/build.make CMakeFiles/test_gemmlowp.dir/depend make[3]: Entering directory '/<>/obj-aarch64-linux-gnu' cd "/<>/obj-aarch64-linux-gnu" && /usr/bin/cmake -E cmake_depends "Unix Makefiles" "/<>" "/<>" "/<>/obj-aarch64-linux-gnu" "/<>/obj-aarch64-linux-gnu" "/<>/obj-aarch64-linux-gnu/CMakeFiles/test_gemmlowp.dir/DependInfo.cmake" --color= Scanning dependencies of target test_gemmlowp make[3]: Leaving directory '/<>/obj-aarch64-linux-gnu' make -f CMakeFiles/test_gemmlowp.dir/build.make CMakeFiles/test_gemmlowp.dir/build make[3]: Entering directory '/<>/obj-aarch64-linux-gnu' [ 88%] Building CXX object CMakeFiles/test_gemmlowp.dir/test/test.cc.o [ 94%] Building CXX object CMakeFiles/test_gemmlowp.dir/test/test_data.cc.o /usr/bin/c++ -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -std=gnu++11 -o CMakeFiles/test_gemmlowp.dir/test/test.cc.o -c "/<>/test/test.cc" /usr/bin/c++ -g -O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -std=gnu++11 -o CMakeFiles/test_gemmlowp.dir/test/test_data.cc.o -c "/<>/test/test_data.cc" /<>/test/test.cc: In static member function ‘static const char* gemmlowp::MultiThreadGemmWrapper::Name() [with Kernel = gemmlowp::ReferenceKernel, 1>, gemmlowp::KernelSideFormat, 1> > >; Scalar = unsigned char; tBitDepthParams = gemmlowp::BitDepthParams, gemmlowp::OperandRange<0, 255> >]’: /<>/test/test.cc:163:58: warning: ‘%s’ directive output may be truncated writing up to 255 bytes into a region of size 231 [-Wformat-truncation=] 163 | snprintf(buf, sizeof(buf), "MultiThreadGemm, Kernel: %s", Kernel().Name()); | ^~ In file included from /usr/include/stdio.h:867, from /usr/include/c++/10/cstdio:42, from /usr/include/c++/10/ext/string_conversions.h:43, from /usr/include/c++/10/bits/basic_string.h:6505, from /usr/include/c++/10/string:55, from /usr/include/c++/10/bits/locale_classes.h:40, from /usr/include/c++/10/bits/ios_base.h:41, from /usr/include/c++/10/ios:42, from /usr/include/c++/10/ostream:38, from /usr/include/c++/10/iostream:39, from /<>/test/test.h:26, from /<>/test/test.cc:15: /usr/include/aarch64-linux-gnu/bits/stdio2.h:67:35: note: ‘__builtin___snprintf_chk’ output between 26 and 281 bytes into a destination of size 256 67 | return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1, | ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 68 | __bos (__s), __fmt, __va_arg_pack ()); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /<>/test/test.cc: In static member function ‘static const char* gemmlowp::MultiThreadGemmWrapper::Name() [with Kernel = gemmlowp::ReferenceKernel, 1>, gemmlowp::KernelSideFormat, 2> > >; Scalar = unsigned char; tBitDepthParams = gemmlowp::BitDepthParams, gemmlowp::OperandRange<0, 255> >]’: /<>/test/test.cc:163:58: warning: ‘%s’ directive output may be truncated writing up to 255 bytes into a region of size 231 [-Wformat-truncation=] 163 | snprintf(buf, sizeof(buf), "MultiThreadGemm, Kernel: %s", Kernel().Name()); | ^~ In file included from /usr/include/stdio.h:867, from /usr/include/c++/10/cstdio:42, from /usr/include/c++/10/ext/string_conversions.h:43, from /usr/include/c++/10/bits/basic_string.h:6505, from /usr/include/c++/10/string:55, from /usr/include/c++/10/bits/locale_classes.h:40, from /usr/include/c++/10/bits/ios_base.h:41, from /usr/include/c++/10/ios:42, from /usr/include/c++/10/ostream:38, from /usr/include/c++/10/iostream:39, from /<>/test/test.h:26, from /<>/test/test.cc:15: /usr/include/aarch64-linux-gnu/bits/stdio2.h:67:35: note: ‘__builtin___snprintf_chk’ output between 26 and 281 bytes into a destination of size 256 67 | return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1, | ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 68 | __bos (__s), __fmt, __va_arg_pack ()); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /<>/test/test.cc: In static member function ‘static const char* gemmlowp::MultiThreadGemmWrapper::Name() [with Kernel = gemmlowp::ReferenceKernel, 4>, gemmlowp::KernelSideFormat, 5> > >; Scalar = unsigned char; tBitDepthParams = gemmlowp::BitDepthParams, gemmlowp::OperandRange<0, 255> >]’: /<>/test/test.cc:163:58: warning: ‘%s’ directive output may be truncated writing up to 255 bytes into a region of size 231 [-Wformat-truncation=] 163 | snprintf(buf, sizeof(buf), "MultiThreadGemm, Kernel: %s", Kernel().Name()); | ^~ In file included from /usr/include/stdio.h:867, from /usr/include/c++/10/cstdio:42, from /usr/include/c++/10/ext/string_conversions.h:43, from /usr/include/c++/10/bits/basic_string.h:6505, from /usr/include/c++/10/string:55, from /usr/include/c++/10/bits/locale_classes.h:40, from /usr/include/c++/10/bits/ios_base.h:41, from /usr/include/c++/10/ios:42, from /usr/include/c++/10/ostream:38, from /usr/include/c++/10/iostream:39, from /<>/test/test.h:26, from /<>/test/test.cc:15: /usr/include/aarch64-linux-gnu/bits/stdio2.h:67:35: note: ‘__builtin___snprintf_chk’ output between 26 and 281 bytes into a destination of size 256 67 | return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1, | ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 68 | __bos (__s), __fmt, __va_arg_pack ()); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /<>/test/test.cc: In static member function ‘static const char* gemmlowp::MultiThreadGemmWrapper::Name() [with Kernel = gemmlowp::ReferenceKernel, 2>, gemmlowp::KernelSideFormat, 3> > >; Scalar = unsigned char; tBitDepthParams = gemmlowp::BitDepthParams, gemmlowp::OperandRange<0, 255> >]’: /<>/test/test.cc:163:58: warning: ‘%s’ directive output may be truncated writing up to 255 bytes into a region of size 231 [-Wformat-truncation=] 163 | snprintf(buf, sizeof(buf), "MultiThreadGemm, Kernel: %s", Kernel().Name()); | ^~ In file included from /usr/include/stdio.h:867, from /usr/include/c++/10/cstdio:42, from /usr/include/c++/10/ext/string_conversions.h:43, from /usr/include/c++/10/bits/basic_string.h:6505, from /usr/include/c++/10/string:55, from /usr/include/c++/10/bits/locale_classes.h:40, from /usr/include/c++/10/bits/ios_base.h:41, from /usr/include/c++/10/ios:42, from /usr/include/c++/10/ostream:38, from /usr/include/c++/10/iostream:39, from /<>/test/test.h:26, from /<>/test/test.cc:15: /usr/include/aarch64-linux-gnu/bits/stdio2.h:67:35: note: ‘__builtin___snprintf_chk’ output between 26 and 281 bytes into a destination of size 256 67 | return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1, | ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 68 | __bos (__s), __fmt, __va_arg_pack ()); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /<>/test/test.cc: In static member function ‘static const char* gemmlowp::MultiThreadGemmWrapper::Name() [with Kernel = gemmlowp::ReferenceKernel, 2>, gemmlowp::KernelSideFormat, 3> > >; Scalar = unsigned char; tBitDepthParams = gemmlowp::BitDepthParams, gemmlowp::OperandRange<0, 255> >]’: /<>/test/test.cc:163:58: warning: ‘%s’ directive output may be truncated writing up to 255 bytes into a region of size 231 [-Wformat-truncation=] 163 | snprintf(buf, sizeof(buf), "MultiThreadGemm, Kernel: %s", Kernel().Name()); | ^~ In file included from /usr/include/stdio.h:867, from /usr/include/c++/10/cstdio:42, from /usr/include/c++/10/ext/string_conversions.h:43, from /usr/include/c++/10/bits/basic_string.h:6505, from /usr/include/c++/10/string:55, from /usr/include/c++/10/bits/locale_classes.h:40, from /usr/include/c++/10/bits/ios_base.h:41, from /usr/include/c++/10/ios:42, from /usr/include/c++/10/ostream:38, from /usr/include/c++/10/iostream:39, from /<>/test/test.h:26, from /<>/test/test.cc:15: /usr/include/aarch64-linux-gnu/bits/stdio2.h:67:35: note: ‘__builtin___snprintf_chk’ output between 26 and 281 bytes into a destination of size 256 67 | return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1, | ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 68 | __bos (__s), __fmt, __va_arg_pack ()); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /<>/test/test.cc: In static member function ‘static const char* gemmlowp::MultiThreadGemmWrapper::Name() [with Kernel = gemmlowp::ReferenceKernel, 3>, gemmlowp::KernelSideFormat, 2> > >; Scalar = unsigned char; tBitDepthParams = gemmlowp::BitDepthParams, gemmlowp::OperandRange<0, 255> >]’: /<>/test/test.cc:163:58: warning: ‘%s’ directive output may be truncated writing up to 255 bytes into a region of size 231 [-Wformat-truncation=] 163 | snprintf(buf, sizeof(buf), "MultiThreadGemm, Kernel: %s", Kernel().Name()); | ^~ In file included from /usr/include/stdio.h:867, from /usr/include/c++/10/cstdio:42, from /usr/include/c++/10/ext/string_conversions.h:43, from /usr/include/c++/10/bits/basic_string.h:6505, from /usr/include/c++/10/string:55, from /usr/include/c++/10/bits/locale_classes.h:40, from /usr/include/c++/10/bits/ios_base.h:41, from /usr/include/c++/10/ios:42, from /usr/include/c++/10/ostream:38, from /usr/include/c++/10/iostream:39, from /<>/test/test.h:26, from /<>/test/test.cc:15: /usr/include/aarch64-linux-gnu/bits/stdio2.h:67:35: note: ‘__builtin___snprintf_chk’ output between 26 and 281 bytes into a destination of size 256 67 | return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1, | ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 68 | __bos (__s), __fmt, __va_arg_pack ()); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /<>/test/test.cc: In static member function ‘static const char* gemmlowp::MultiThreadGemmWrapper::Name() [with Kernel = gemmlowp::ReferenceKernel, 3>, gemmlowp::KernelSideFormat, 2> > >; Scalar = unsigned char; tBitDepthParams = gemmlowp::BitDepthParams, gemmlowp::OperandRange<0, 255> >]’: /<>/test/test.cc:163:58: warning: ‘%s’ directive output may be truncated writing up to 255 bytes into a region of size 231 [-Wformat-truncation=] 163 | snprintf(buf, sizeof(buf), "MultiThreadGemm, Kernel: %s", Kernel().Name()); | ^~ In file included from /usr/include/stdio.h:867, from /usr/include/c++/10/cstdio:42, from /usr/include/c++/10/ext/string_conversions.h:43, from /usr/include/c++/10/bits/basic_string.h:6505, from /usr/include/c++/10/string:55, from /usr/include/c++/10/bits/locale_classes.h:40, from /usr/include/c++/10/bits/ios_base.h:41, from /usr/include/c++/10/ios:42, from /usr/include/c++/10/ostream:38, from /usr/include/c++/10/iostream:39, from /<>/test/test.h:26, from /<>/test/test.cc:15: /usr/include/aarch64-linux-gnu/bits/stdio2.h:67:35: note: ‘__builtin___snprintf_chk’ output between 26 and 281 bytes into a destination of size 256 67 | return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1, | ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 68 | __bos (__s), __fmt, __va_arg_pack ()); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /<>/test/test.cc: In static member function ‘static const char* gemmlowp::MultiThreadGemmWrapper::Name() [with Kernel = gemmlowp::ReferenceKernel, 2>, gemmlowp::KernelSideFormat, 1> > >; Scalar = unsigned char; tBitDepthParams = gemmlowp::BitDepthParams, gemmlowp::OperandRange<0, 255> >]’: /<>/test/test.cc:163:58: warning: ‘%s’ directive output may be truncated writing up to 255 bytes into a region of size 231 [-Wformat-truncation=] 163 | snprintf(buf, sizeof(buf), "MultiThreadGemm, Kernel: %s", Kernel().Name()); | ^~ In file included from /usr/include/stdio.h:867, from /usr/include/c++/10/cstdio:42, from /usr/include/c++/10/ext/string_conversions.h:43, from /usr/include/c++/10/bits/basic_string.h:6505, from /usr/include/c++/10/string:55, from /usr/include/c++/10/bits/locale_classes.h:40, from /usr/include/c++/10/bits/ios_base.h:41, from /usr/include/c++/10/ios:42, from /usr/include/c++/10/ostream:38, from /usr/include/c++/10/iostream:39, from /<>/test/test.h:26, from /<>/test/test.cc:15: /usr/include/aarch64-linux-gnu/bits/stdio2.h:67:35: note: ‘__builtin___snprintf_chk’ output between 26 and 281 bytes into a destination of size 256 67 | return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1, | ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 68 | __bos (__s), __fmt, __va_arg_pack ()); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /<>/test/test.cc: In static member function ‘static const char* gemmlowp::MultiThreadGemmWrapper::Name() [with Kernel = gemmlowp::ReferenceKernel, 1>, gemmlowp::KernelSideFormat, 1> > >; Scalar = unsigned char; tBitDepthParams = gemmlowp::BitDepthParams, gemmlowp::OperandRange<0, 255> >]’: /<>/test/test.cc:163:58: warning: ‘%s’ directive output may be truncated writing up to 255 bytes into a region of size 231 [-Wformat-truncation=] 163 | snprintf(buf, sizeof(buf), "MultiThreadGemm, Kernel: %s", Kernel().Name()); | ^~ In file included from /usr/include/stdio.h:867, from /usr/include/c++/10/cstdio:42, from /usr/include/c++/10/ext/string_conversions.h:43, from /usr/include/c++/10/bits/basic_string.h:6505, from /usr/include/c++/10/string:55, from /usr/include/c++/10/bits/locale_classes.h:40, from /usr/include/c++/10/bits/ios_base.h:41, from /usr/include/c++/10/ios:42, from /usr/include/c++/10/ostream:38, from /usr/include/c++/10/iostream:39, from /<>/test/test.h:26, from /<>/test/test.cc:15: /usr/include/aarch64-linux-gnu/bits/stdio2.h:67:35: note: ‘__builtin___snprintf_chk’ output between 26 and 281 bytes into a destination of size 256 67 | return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1, | ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 68 | __bos (__s), __fmt, __va_arg_pack ()); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ during RTL pass: reload In file included from /<>/test/../public/../internal/single_thread_gemm.h:29, from /<>/test/../public/../internal/multi_thread_gemm.h:27, from /<>/test/../public/../internal/dispatch_gemm_shape.h:23, from /<>/test/../public/gemmlowp.h:19, from /<>/test/test.h:30, from /<>/test/test.cc:15: /<>/test/../public/../internal/unpack.h: In function ‘void gemmlowp::UnpackResult(ResultBlockType*, const gemmlowp::MatrixBlockBounds&, const PackedResultType&, int, const int32_t*, const int32_t*, const LhsOffset&, const RhsOffset&, const OutputPipelineType&) [with KernelFormat = gemmlowp::KernelFormat, 3>, gemmlowp::KernelSideFormat, 2> >; ResultBlockType = gemmlowp::MatrixMap; PackedResultType = gemmlowp::PackedResult; LhsOffset = gemmlowp::VectorDup; RhsOffset = gemmlowp::VectorDup; OutputPipelineType = std::tuple]’: /<>/test/../public/../internal/unpack.h:276:1: internal compiler error: maximum number of generated reload insns per insn achieved (90) 276 | } | ^ 0xa9a09f lra_constraints(bool) ../../src/gcc/lra-constraints.c:4945 0xa84507 lra(_IO_FILE*) ../../src/gcc/lra.c:2437 0xa43457 do_reload ../../src/gcc/ira.c:5526 0xa43457 execute ../../src/gcc/ira.c:5712 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See for instructions. Preprocessed source stored into /tmp/cc1oThv4.out file, please attach this to your bugreport. === BEGIN GCC DUMP === 5209: // Target: aarch64-linux-gnu 5209: // Configured with: ../src/configure -v --with-pkgversion='Ubuntu 10-20200104-1ubuntu2' --with-bugurl=file:///usr/share/doc/gcc-10/README.Bugs --enable-languages=c,c++,go,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-10 --program-prefix=aarch64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libquadmath --disable-libquadmath-support --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-multiarch --enable-fix-cortex-a53-843419 --disable-werror --enable-checking=release --build=aarch64-linux-gnu --host=aarch64-linux-gnu --target=aarch64-linux-gnu 5209: // Thread model: posix 5209: // Supported LTO compression algorithms: zlib 5209: // gcc version 10.0.0 20200104 (experimental) [trunk revision 279880] (Ubuntu 10-20200104-1ubuntu2) 5209: // 5209: // /<>/test/test.cc: In static member function ‘static const char* gemmlowp::MultiThreadGemmWrapper::Name() [with Kernel = gemmlowp::ReferenceKernel, 1>, gemmlowp::KernelSideFormat, 1> > >; Scalar = unsigned char; tBitDepthParams = gemmlowp::BitDepthParams, gemmlowp::OperandRange<0, 255> >]’: 5209: // /<>/test/test.cc:163:58: warning: ‘%s’ directive output may be truncated writing up to 255 bytes into a region of size 231 [-Wformat-truncation=] 5209: // 163 | snprintf(buf, sizeof(buf), "MultiThreadGemm, Kernel: %s", Kernel().Name()); 5209: // | ^~ 5209: // In file included from /usr/include/stdio.h:867, 5209: // from /usr/include/c++/10/cstdio:42, 5209: // from /usr/include/c++/10/ext/string_conversions.h:43, 5209: // from /usr/include/c++/10/bits/basic_string.h:6505, 5209: // from /usr/include/c++/10/string:55, 5209: // from /usr/include/c++/10/bits/locale_classes.h:40, 5209: // from /usr/include/c++/10/bits/ios_base.h:41, 5209: // from /usr/include/c++/10/ios:42, 5209: // from /usr/include/c++/10/ostream:38, 5209: // from /usr/include/c++/10/iostream:39, 5209: // from /<>/test/test.h:26, 5209: // from /<>/test/test.cc:15: 5209: // /usr/include/aarch64-linux-gnu/bits/stdio2.h:67:35: note: ‘__builtin___snprintf_chk’ output between 26 and 281 bytes into a destination of size 256 5209: // 67 | return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1, 5209: // | ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5209: // 68 | __bos (__s), __fmt, __va_arg_pack ()); 5209: // | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5209: // /<>/test/test.cc: In static member function ‘static const char* gemmlowp::MultiThreadGemmWrapper::Name() [with Kernel = gemmlowp::ReferenceKernel, 1>, gemmlowp::KernelSideFormat, 2> > >; Scalar = unsigned char; tBitDepthParams = gemmlowp::BitDepthParams, gemmlowp::OperandRange<0, 255> >]’: 5209: // /<>/test/test.cc:163:58: warning: ‘%s’ directive output may be truncated writing up to 255 bytes into a region of size 231 [-Wformat-truncation=] 5209: // 163 | snprintf(buf, sizeof(buf), "MultiThreadGemm, Kernel: %s", Kernel().Name()); 5209: // | ^~ 5209: // In file included from /usr/include/stdio.h:867, 5209: // from /usr/include/c++/10/cstdio:42, 5209: // from /usr/include/c++/10/ext/string_conversions.h:43, 5209: // from /usr/include/c++/10/bits/basic_string.h:6505, 5209: // from /usr/include/c++/10/string:55, 5209: // from /usr/include/c++/10/bits/locale_classes.h:40, 5209: // from /usr/include/c++/10/bits/ios_base.h:41, 5209: // from /usr/include/c++/10/ios:42, 5209: // from /usr/include/c++/10/ostream:38, 5209: // from /usr/include/c++/10/iostream:39, 5209: // from /<>/test/test.h:26, 5209: // from /<>/test/test.cc:15: 5209: // /usr/include/aarch64-linux-gnu/bits/stdio2.h:67:35: note: ‘__builtin___snprintf_chk’ output between 26 and 281 bytes into a destination of size 256 5209: // 67 | return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1, 5209: // | ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5209: // 68 | __bos (__s), __fmt, __va_arg_pack ()); 5209: // | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5209: // /<>/test/test.cc: In static member function ‘static const char* gemmlowp::MultiThreadGemmWrapper::Name() [with Kernel = gemmlowp::ReferenceKernel, 4>, gemmlowp::KernelSideFormat, 5> > >; Scalar = unsigned char; tBitDepthParams = gemmlowp::BitDepthParams, gemmlowp::OperandRange<0, 255> >]’: 5209: // /<>/test/test.cc:163:58: warning: ‘%s’ directive output may be truncated writing up to 255 bytes into a region of size 231 [-Wformat-truncation=] 5209: // 163 | snprintf(buf, sizeof(buf), "MultiThreadGemm, Kernel: %s", Kernel().Name()); 5209: // | ^~ 5209: // In file included from /usr/include/stdio.h:867, 5209: // from /usr/include/c++/10/cstdio:42, 5209: // from /usr/include/c++/10/ext/string_conversions.h:43, 5209: // from /usr/include/c++/10/bits/basic_string.h:6505, 5209: // from /usr/include/c++/10/string:55, 5209: // from /usr/include/c++/10/bits/locale_classes.h:40, 5209: // from /usr/include/c++/10/bits/ios_base.h:41, 5209: // from /usr/include/c++/10/ios:42, 5209: // from /usr/include/c++/10/ostream:38, 5209: // from /usr/include/c++/10/iostream:39, 5209: // from /<>/test/test.h:26, 5209: // from /<>/test/test.cc:15: 5209: // /usr/include/aarch64-linux-gnu/bits/stdio2.h:67:35: note: ‘__builtin___snprintf_chk’ output between 26 and 281 bytes into a destination of size 256 5209: // 67 | return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1, 5209: // | ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5209: // 68 | __bos (__s), __fmt, __va_arg_pack ()); 5209: // | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5209: // /<>/test/test.cc: In static member function ‘static const char* gemmlowp::MultiThreadGemmWrapper::Name() [with Kernel = gemmlowp::ReferenceKernel, 2>, gemmlowp::KernelSideFormat, 3> > >; Scalar = unsigned char; tBitDepthParams = gemmlowp::BitDepthParams, gemmlowp::OperandRange<0, 255> >]’: 5209: // /<>/test/test.cc:163:58: warning: ‘%s’ directive output may be truncated writing up to 255 bytes into a region of size 231 [-Wformat-truncation=] 5209: // 163 | snprintf(buf, sizeof(buf), "MultiThreadGemm, Kernel: %s", Kernel().Name()); 5209: // | ^~ 5209: // In file included from /usr/include/stdio.h:867, 5209: // from /usr/include/c++/10/cstdio:42, 5209: // from /usr/include/c++/10/ext/string_conversions.h:43, 5209: // from /usr/include/c++/10/bits/basic_string.h:6505, 5209: // from /usr/include/c++/10/string:55, 5209: // from /usr/include/c++/10/bits/locale_classes.h:40, 5209: // from /usr/include/c++/10/bits/ios_base.h:41, 5209: // from /usr/include/c++/10/ios:42, 5209: // from /usr/include/c++/10/ostream:38, 5209: // from /usr/include/c++/10/iostream:39, 5209: // from /<>/test/test.h:26, 5209: // from /<>/test/test.cc:15: 5209: // /usr/include/aarch64-linux-gnu/bits/stdio2.h:67:35: note: ‘__builtin___snprintf_chk’ output between 26 and 281 bytes into a destination of size 256 5209: // 67 | return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1, 5209: // | ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5209: // 68 | __bos (__s), __fmt, __va_arg_pack ()); 5209: // | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5209: // /<>/test/test.cc: In static member function ‘static const char* gemmlowp::MultiThreadGemmWrapper::Name() [with Kernel = gemmlowp::ReferenceKernel, 2>, gemmlowp::KernelSideFormat, 3> > >; Scalar = unsigned char; tBitDepthParams = gemmlowp::BitDepthParams, gemmlowp::OperandRange<0, 255> >]’: 5209: // /<>/test/test.cc:163:58: warning: ‘%s’ directive output may be truncated writing up to 255 bytes into a region of size 231 [-Wformat-truncation=] 5209: // 163 | snprintf(buf, sizeof(buf), "MultiThreadGemm, Kernel: %s", Kernel().Name()); 5209: // | ^~ 5209: // In file included from /usr/include/stdio.h:867, 5209: // from /usr/include/c++/10/cstdio:42, 5209: // from /usr/include/c++/10/ext/string_conversions.h:43, 5209: // from /usr/include/c++/10/bits/basic_string.h:6505, 5209: // from /usr/include/c++/10/string:55, 5209: // from /usr/include/c++/10/bits/locale_classes.h:40, 5209: // from /usr/include/c++/10/bits/ios_base.h:41, 5209: // from /usr/include/c++/10/ios:42, 5209: // from /usr/include/c++/10/ostream:38, 5209: // from /usr/include/c++/10/iostream:39, 5209: // from /<>/test/test.h:26, 5209: // from /<>/test/test.cc:15: 5209: // /usr/include/aarch64-linux-gnu/bits/stdio2.h:67:35: note: ‘__builtin___snprintf_chk’ output between 26 and 281 bytes into a destination of size 256 5209: // 67 | return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1, 5209: // | ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5209: // 68 | __bos (__s), __fmt, __va_arg_pack ()); 5209: // | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5209: // /<>/test/test.cc: In static member function ‘static const char* gemmlowp::MultiThreadGemmWrapper::Name() [with Kernel = gemmlowp::ReferenceKernel, 3>, gemmlowp::KernelSideFormat, 2> > >; Scalar = unsigned char; tBitDepthParams = gemmlowp::BitDepthParams, gemmlowp::OperandRange<0, 255> >]’: 5209: // /<>/test/test.cc:163:58: warning: ‘%s’ directive output may be truncated writing up to 255 bytes into a region of size 231 [-Wformat-truncation=] 5209: // 163 | snprintf(buf, sizeof(buf), "MultiThreadGemm, Kernel: %s", Kernel().Name()); 5209: // | ^~ 5209: // In file included from /usr/include/stdio.h:867, 5209: // from /usr/include/c++/10/cstdio:42, 5209: // from /usr/include/c++/10/ext/string_conversions.h:43, 5209: // from /usr/include/c++/10/bits/basic_string.h:6505, 5209: // from /usr/include/c++/10/string:55, 5209: // from /usr/include/c++/10/bits/locale_classes.h:40, 5209: // from /usr/include/c++/10/bits/ios_base.h:41, 5209: // from /usr/include/c++/10/ios:42, 5209: // from /usr/include/c++/10/ostream:38, 5209: // from /usr/include/c++/10/iostream:39, 5209: // from /<>/test/test.h:26, 5209: // from /<>/test/test.cc:15: 5209: // /usr/include/aarch64-linux-gnu/bits/stdio2.h:67:35: note: ‘__builtin___snprintf_chk’ output between 26 and 281 bytes into a destination of size 256 5209: // 67 | return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1, 5209: // | ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5209: // 68 | __bos (__s), __fmt, __va_arg_pack ()); 5209: // | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5209: // /<>/test/test.cc: In static member function ‘static const char* gemmlowp::MultiThreadGemmWrapper::Name() [with Kernel = gemmlowp::ReferenceKernel, 3>, gemmlowp::KernelSideFormat, 2> > >; Scalar = unsigned char; tBitDepthParams = gemmlowp::BitDepthParams, gemmlowp::OperandRange<0, 255> >]’: 5209: // /<>/test/test.cc:163:58: warning: ‘%s’ directive output may be truncated writing up to 255 bytes into a region of size 231 [-Wformat-truncation=] 5209: // 163 | snprintf(buf, sizeof(buf), "MultiThreadGemm, Kernel: %s", Kernel().Name()); 5209: // | ^~ 5209: // In file included from /usr/include/stdio.h:867, 5209: // from /usr/include/c++/10/cstdio:42, 5209: // from /usr/include/c++/10/ext/string_conversions.h:43, 5209: // from /usr/include/c++/10/bits/basic_string.h:6505, 5209: // from /usr/include/c++/10/string:55, 5209: // from /usr/include/c++/10/bits/locale_classes.h:40, 5209: // from /usr/include/c++/10/bits/ios_base.h:41, 5209: // from /usr/include/c++/10/ios:42, 5209: // from /usr/include/c++/10/ostream:38, 5209: // from /usr/include/c++/10/iostream:39, 5209: // from /<>/test/test.h:26, 5209: // from /<>/test/test.cc:15: 5209: // /usr/include/aarch64-linux-gnu/bits/stdio2.h:67:35: note: ‘__builtin___snprintf_chk’ output between 26 and 281 bytes into a destination of size 256 5209: // 67 | return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1, 5209: // | ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5209: // 68 | __bos (__s), __fmt, __va_arg_pack ()); 5209: // | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5209: // /<>/test/test.cc: In static member function ‘static const char* gemmlowp::MultiThreadGemmWrapper::Name() [with Kernel = gemmlowp::ReferenceKernel, 2>, gemmlowp::KernelSideFormat, 1> > >; Scalar = unsigned char; tBitDepthParams = gemmlowp::BitDepthParams, gemmlowp::OperandRange<0, 255> >]’: 5209: // /<>/test/test.cc:163:58: warning: ‘%s’ directive output may be truncated writing up to 255 bytes into a region of size 231 [-Wformat-truncation=] 5209: // 163 | snprintf(buf, sizeof(buf), "MultiThreadGemm, Kernel: %s", Kernel().Name()); 5209: // | ^~ 5209: // In file included from /usr/include/stdio.h:867, 5209: // from /usr/include/c++/10/cstdio:42, 5209: // from /usr/include/c++/10/ext/string_conversions.h:43, 5209: // from /usr/include/c++/10/bits/basic_string.h:6505, 5209: // from /usr/include/c++/10/string:55, 5209: // from /usr/include/c++/10/bits/locale_classes.h:40, 5209: // from /usr/include/c++/10/bits/ios_base.h:41, 5209: // from /usr/include/c++/10/ios:42, 5209: // from /usr/include/c++/10/ostream:38, 5209: // from /usr/include/c++/10/iostream:39, 5209: // from /<>/test/test.h:26, 5209: // from /<>/test/test.cc:15: 5209: // /usr/include/aarch64-linux-gnu/bits/stdio2.h:67:35: note: ‘__builtin___snprintf_chk’ output between 26 and 281 bytes into a destination of size 256 5209: // 67 | return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1, 5209: // | ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5209: // 68 | __bos (__s), __fmt, __va_arg_pack ()); 5209: // | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5209: // /<>/test/test.cc: In static member function ‘static const char* gemmlowp::MultiThreadGemmWrapper::Name() [with Kernel = gemmlowp::ReferenceKernel, 1>, gemmlowp::KernelSideFormat, 1> > >; Scalar = unsigned char; tBitDepthParams = gemmlowp::BitDepthParams, gemmlowp::OperandRange<0, 255> >]’: 5209: // /<>/test/test.cc:163:58: warning: ‘%s’ directive output may be truncated writing up to 255 bytes into a region of size 231 [-Wformat-truncation=] 5209: // 163 | snprintf(buf, sizeof(buf), "MultiThreadGemm, Kernel: %s", Kernel().Name()); 5209: // | ^~ 5209: // In file included from /usr/include/stdio.h:867, 5209: // from /usr/include/c++/10/cstdio:42, 5209: // from /usr/include/c++/10/ext/string_conversions.h:43, 5209: // from /usr/include/c++/10/bits/basic_string.h:6505, 5209: // from /usr/include/c++/10/string:55, 5209: // from /usr/include/c++/10/bits/locale_classes.h:40, 5209: // from /usr/include/c++/10/bits/ios_base.h:41, 5209: // from /usr/include/c++/10/ios:42, 5209: // from /usr/include/c++/10/ostream:38, 5209: // from /usr/include/c++/10/iostream:39, 5209: // from /<>/test/test.h:26, 5209: // from /<>/test/test.cc:15: 5209: // /usr/include/aarch64-linux-gnu/bits/stdio2.h:67:35: note: ‘__builtin___snprintf_chk’ output between 26 and 281 bytes into a destination of size 256 5209: // 67 | return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1, 5209: // | ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5209: // 68 | __bos (__s), __fmt, __va_arg_pack ()); 5209: // | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5209: // during RTL pass: reload 5209: // In file included from /<>/test/../public/../internal/single_thread_gemm.h:29, 5209: // from /<>/test/../public/../internal/multi_thread_gemm.h:27, 5209: // from /<>/test/../public/../internal/dispatch_gemm_shape.h:23, 5209: // from /<>/test/../public/gemmlowp.h:19, 5209: // from /<>/test/test.h:30, 5209: // from /<>/test/test.cc:15: 5209: // /<>/test/../public/../internal/unpack.h: In function ‘void gemmlowp::UnpackResult(ResultBlockType*, const gemmlowp::MatrixBlockBounds&, const PackedResultType&, int, const int32_t*, const int32_t*, const LhsOffset&, const RhsOffset&, const OutputPipelineType&) [with KernelFormat = gemmlowp::KernelFormat, 3>, gemmlowp::KernelSideFormat, 2> >; ResultBlockType = gemmlowp::MatrixMap; PackedResultType = gemmlowp::PackedResult; LhsOffset = gemmlowp::VectorDup; RhsOffset = gemmlowp::VectorDup; OutputPipelineType = std::tuple]’: 5209: // /<>/test/../public/../internal/unpack.h:276:1: internal compiler error: maximum number of generated reload insns per insn achieved (90) 5209: // 276 | } 5209: // | ^ 5209: // 0xa9a09f lra_constraints(bool) 5209: // ../../src/gcc/lra-constraints.c:4945 5209: // 0xa84507 lra(_IO_FILE*) 5209: // ../../src/gcc/lra.c:2437 5209: // 0xa43457 do_reload 5209: // ../../src/gcc/ira.c:5526 5209: // 0xa43457 execute 5209: // ../../src/gcc/ira.c:5712 5209: // Please submit a full bug report, 5209: // with preprocessed source if appropriate. 5209: // Please include the complete backtrace with any bug report. 5209: // See for instructions. 5209: 5209: // /usr/lib/gcc/aarch64-linux-gnu/10/cc1plus -quiet -imultiarch aarch64-linux-gnu -D_GNU_SOURCE -D _FORTIFY_SOURCE=2 /<>/test/test.cc -quiet -dumpbase test.cc -mlittle-endian -mabi=lp64 -auxbase-strip CMakeFiles/test_gemmlowp.dir/test/test.cc.o -g -O2 -Wformat=1 -Werror=format-security -Wdate-time -std=gnu++11 -fdebug-prefix-map=/<>=. -fstack-protector-strong -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -o - -frandom-seed=0 -fdump-noaddr 5209: 5209: # 1 "/<>/test/test.cc" 5209: # 1 "/<>/obj-aarch64-linux-gnu//" 5209: # 1 "" 5209: # 1 "" 5209: # 1 "/usr/include/stdc-predef.h" 1 3 4 5209: # 1 "" 2 5209: # 1 "/<>/test/test.cc" 5209: # 15 "/<>/test/test.cc" 5209: # 1 "/<>/test/test.h" 1 5209: # 25 "/<>/test/test.h" 5209: # 1 "/usr/include/c++/10/cstring" 1 3 5209: # 39 "/usr/include/c++/10/cstring" 3 5209: 5209: # 40 "/usr/include/c++/10/cstring" 3 5209: 5209: # 1 "/usr/include/aarch64-linux-gnu/c++/10/bits/c++config.h" 1 3 5209: # 251 "/usr/include/aarch64-linux-gnu/c++/10/bits/c++config.h" 3 5209: 5209: # 251 "/usr/include/aarch64-linux-gnu/c++/10/bits/c++config.h" 3 5209: namespace std 5209: { 5209: typedef long unsigned int size_t; 5209: typedef long int ptrdiff_t; 5209: 5209: 5209: typedef decltype(nullptr) nullptr_t; 5209: 5209: } 5209: # 273 "/usr/include/aarch64-linux-gnu/c++/10/bits/c++config.h" 3 5209: namespace std 5209: { 5209: inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } 5209: } 5209: namespace __gnu_cxx 5209: { 5209: inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } 5209: } 5209: # 511 "/usr/include/aarch64-linux-gnu/c++/10/bits/c++config.h" 3 5209: # 1 "/usr/include/aarch64-linux-gnu/c++/10/bits/os_defines.h" 1 3 5209: # 39 "/usr/include/aarch64-linux-gnu/c++/10/bits/os_defines.h" 3 5209: # 1 "/usr/include/features.h" 1 3 4 5209: # 446 "/usr/include/features.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/sys/cdefs.h" 1 3 4 5209: # 460 "/usr/include/aarch64-linux-gnu/sys/cdefs.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/wordsize.h" 1 3 4 5209: # 461 "/usr/include/aarch64-linux-gnu/sys/cdefs.h" 2 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/long-double.h" 1 3 4 5209: # 462 "/usr/include/aarch64-linux-gnu/sys/cdefs.h" 2 3 4 5209: # 447 "/usr/include/features.h" 2 3 4 5209: # 470 "/usr/include/features.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/gnu/stubs.h" 1 3 4 5209: 5209: 5209: 5209: 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/wordsize.h" 1 3 4 5209: # 6 "/usr/include/aarch64-linux-gnu/gnu/stubs.h" 2 3 4 5209: 5209: 5209: # 1 "/usr/include/aarch64-linux-gnu/gnu/stubs-lp64.h" 1 3 4 5209: # 9 "/usr/include/aarch64-linux-gnu/gnu/stubs.h" 2 3 4 5209: # 471 "/usr/include/features.h" 2 3 4 5209: # 40 "/usr/include/aarch64-linux-gnu/c++/10/bits/os_defines.h" 2 3 5209: # 512 "/usr/include/aarch64-linux-gnu/c++/10/bits/c++config.h" 2 3 5209: 5209: 5209: # 1 "/usr/include/aarch64-linux-gnu/c++/10/bits/cpu_defines.h" 1 3 5209: # 515 "/usr/include/aarch64-linux-gnu/c++/10/bits/c++config.h" 2 3 5209: # 42 "/usr/include/c++/10/cstring" 2 3 5209: # 1 "/usr/include/string.h" 1 3 4 5209: # 26 "/usr/include/string.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/libc-header-start.h" 1 3 4 5209: # 27 "/usr/include/string.h" 2 3 4 5209: 5209: extern "C" { 5209: 5209: 5209: 5209: 5209: # 1 "/usr/lib/gcc/aarch64-linux-gnu/10/include/stddef.h" 1 3 4 5209: # 209 "/usr/lib/gcc/aarch64-linux-gnu/10/include/stddef.h" 3 4 5209: typedef long unsigned int size_t; 5209: # 34 "/usr/include/string.h" 2 3 4 5209: # 42 "/usr/include/string.h" 3 4 5209: extern void *memcpy (void *__restrict __dest, const void *__restrict __src, 5209: size_t __n) throw () __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: extern void *memmove (void *__dest, const void *__src, size_t __n) 5209: throw () __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: 5209: 5209: 5209: extern void *memccpy (void *__restrict __dest, const void *__restrict __src, 5209: int __c, size_t __n) 5209: throw () __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: 5209: 5209: extern void *memset (void *__s, int __c, size_t __n) throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: extern int memcmp (const void *__s1, const void *__s2, size_t __n) 5209: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: 5209: extern "C++" 5209: { 5209: extern void *memchr (void *__s, int __c, size_t __n) 5209: throw () __asm ("memchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 5209: extern const void *memchr (const void *__s, int __c, size_t __n) 5209: throw () __asm ("memchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) void * 5209: memchr (void *__s, int __c, size_t __n) throw () 5209: { 5209: return __builtin_memchr (__s, __c, __n); 5209: } 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const void * 5209: memchr (const void *__s, int __c, size_t __n) throw () 5209: { 5209: return __builtin_memchr (__s, __c, __n); 5209: } 5209: 5209: } 5209: # 98 "/usr/include/string.h" 3 4 5209: extern "C++" void *rawmemchr (void *__s, int __c) 5209: throw () __asm ("rawmemchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 5209: extern "C++" const void *rawmemchr (const void *__s, int __c) 5209: throw () __asm ("rawmemchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern "C++" void *memrchr (void *__s, int __c, size_t __n) 5209: throw () __asm ("memrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 5209: extern "C++" const void *memrchr (const void *__s, int __c, size_t __n) 5209: throw () __asm ("memrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 5209: # 121 "/usr/include/string.h" 3 4 5209: extern char *strcpy (char *__restrict __dest, const char *__restrict __src) 5209: throw () __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: extern char *strncpy (char *__restrict __dest, 5209: const char *__restrict __src, size_t __n) 5209: throw () __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: extern char *strcat (char *__restrict __dest, const char *__restrict __src) 5209: throw () __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: extern char *strncat (char *__restrict __dest, const char *__restrict __src, 5209: size_t __n) throw () __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: extern int strcmp (const char *__s1, const char *__s2) 5209: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: extern int strncmp (const char *__s1, const char *__s2, size_t __n) 5209: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: extern int strcoll (const char *__s1, const char *__s2) 5209: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: extern size_t strxfrm (char *__restrict __dest, 5209: const char *__restrict __src, size_t __n) 5209: throw () __attribute__ ((__nonnull__ (2))); 5209: 5209: 5209: 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/types/locale_t.h" 1 3 4 5209: # 22 "/usr/include/aarch64-linux-gnu/bits/types/locale_t.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/types/__locale_t.h" 1 3 4 5209: # 28 "/usr/include/aarch64-linux-gnu/bits/types/__locale_t.h" 3 4 5209: struct __locale_struct 5209: { 5209: 5209: struct __locale_data *__locales[13]; 5209: 5209: 5209: const unsigned short int *__ctype_b; 5209: const int *__ctype_tolower; 5209: const int *__ctype_toupper; 5209: 5209: 5209: const char *__names[13]; 5209: }; 5209: 5209: typedef struct __locale_struct *__locale_t; 5209: # 23 "/usr/include/aarch64-linux-gnu/bits/types/locale_t.h" 2 3 4 5209: 5209: typedef __locale_t locale_t; 5209: # 153 "/usr/include/string.h" 2 3 4 5209: 5209: 5209: extern int strcoll_l (const char *__s1, const char *__s2, locale_t __l) 5209: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3))); 5209: 5209: 5209: extern size_t strxfrm_l (char *__dest, const char *__src, size_t __n, 5209: locale_t __l) throw () __attribute__ ((__nonnull__ (2, 4))); 5209: 5209: 5209: 5209: 5209: 5209: extern char *strdup (const char *__s) 5209: throw () __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern char *strndup (const char *__string, size_t __n) 5209: throw () __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1))); 5209: # 203 "/usr/include/string.h" 3 4 5209: extern "C++" 5209: { 5209: extern char *strchr (char *__s, int __c) 5209: throw () __asm ("strchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 5209: extern const char *strchr (const char *__s, int __c) 5209: throw () __asm ("strchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * 5209: strchr (char *__s, int __c) throw () 5209: { 5209: return __builtin_strchr (__s, __c); 5209: } 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * 5209: strchr (const char *__s, int __c) throw () 5209: { 5209: return __builtin_strchr (__s, __c); 5209: } 5209: 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern "C++" 5209: { 5209: extern char *strrchr (char *__s, int __c) 5209: throw () __asm ("strrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 5209: extern const char *strrchr (const char *__s, int __c) 5209: throw () __asm ("strrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * 5209: strrchr (char *__s, int __c) throw () 5209: { 5209: return __builtin_strrchr (__s, __c); 5209: } 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * 5209: strrchr (const char *__s, int __c) throw () 5209: { 5209: return __builtin_strrchr (__s, __c); 5209: } 5209: 5209: } 5209: # 260 "/usr/include/string.h" 3 4 5209: extern "C++" char *strchrnul (char *__s, int __c) 5209: throw () __asm ("strchrnul") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 5209: extern "C++" const char *strchrnul (const char *__s, int __c) 5209: throw () __asm ("strchrnul") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 5209: # 272 "/usr/include/string.h" 3 4 5209: extern size_t strcspn (const char *__s, const char *__reject) 5209: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: extern size_t strspn (const char *__s, const char *__accept) 5209: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: extern "C++" 5209: { 5209: extern char *strpbrk (char *__s, const char *__accept) 5209: throw () __asm ("strpbrk") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 5209: extern const char *strpbrk (const char *__s, const char *__accept) 5209: throw () __asm ("strpbrk") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * 5209: strpbrk (char *__s, const char *__accept) throw () 5209: { 5209: return __builtin_strpbrk (__s, __accept); 5209: } 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * 5209: strpbrk (const char *__s, const char *__accept) throw () 5209: { 5209: return __builtin_strpbrk (__s, __accept); 5209: } 5209: 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern "C++" 5209: { 5209: extern char *strstr (char *__haystack, const char *__needle) 5209: throw () __asm ("strstr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 5209: extern const char *strstr (const char *__haystack, const char *__needle) 5209: throw () __asm ("strstr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * 5209: strstr (char *__haystack, const char *__needle) throw () 5209: { 5209: return __builtin_strstr (__haystack, __needle); 5209: } 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * 5209: strstr (const char *__haystack, const char *__needle) throw () 5209: { 5209: return __builtin_strstr (__haystack, __needle); 5209: } 5209: 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern char *strtok (char *__restrict __s, const char *__restrict __delim) 5209: throw () __attribute__ ((__nonnull__ (2))); 5209: 5209: 5209: 5209: extern char *__strtok_r (char *__restrict __s, 5209: const char *__restrict __delim, 5209: char **__restrict __save_ptr) 5209: throw () __attribute__ ((__nonnull__ (2, 3))); 5209: 5209: extern char *strtok_r (char *__restrict __s, const char *__restrict __delim, 5209: char **__restrict __save_ptr) 5209: throw () __attribute__ ((__nonnull__ (2, 3))); 5209: 5209: 5209: 5209: 5209: 5209: extern "C++" char *strcasestr (char *__haystack, const char *__needle) 5209: throw () __asm ("strcasestr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 5209: extern "C++" const char *strcasestr (const char *__haystack, 5209: const char *__needle) 5209: throw () __asm ("strcasestr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 5209: # 368 "/usr/include/string.h" 3 4 5209: extern void *memmem (const void *__haystack, size_t __haystacklen, 5209: const void *__needle, size_t __needlelen) 5209: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 3))); 5209: 5209: 5209: 5209: extern void *__mempcpy (void *__restrict __dest, 5209: const void *__restrict __src, size_t __n) 5209: throw () __attribute__ ((__nonnull__ (1, 2))); 5209: extern void *mempcpy (void *__restrict __dest, 5209: const void *__restrict __src, size_t __n) 5209: throw () __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: 5209: 5209: extern size_t strlen (const char *__s) 5209: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: 5209: 5209: extern size_t strnlen (const char *__string, size_t __maxlen) 5209: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: 5209: 5209: extern char *strerror (int __errnum) throw (); 5209: # 420 "/usr/include/string.h" 3 4 5209: extern char *strerror_r (int __errnum, char *__buf, size_t __buflen) 5209: throw () __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: 5209: extern char *strerror_l (int __errnum, locale_t __l) throw (); 5209: 5209: 5209: 5209: # 1 "/usr/include/strings.h" 1 3 4 5209: # 23 "/usr/include/strings.h" 3 4 5209: # 1 "/usr/lib/gcc/aarch64-linux-gnu/10/include/stddef.h" 1 3 4 5209: # 24 "/usr/include/strings.h" 2 3 4 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern "C" { 5209: 5209: 5209: 5209: extern int bcmp (const void *__s1, const void *__s2, size_t __n) 5209: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: extern void bcopy (const void *__src, void *__dest, size_t __n) 5209: throw () __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: extern void bzero (void *__s, size_t __n) throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: 5209: extern "C++" 5209: { 5209: extern char *index (char *__s, int __c) 5209: throw () __asm ("index") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 5209: extern const char *index (const char *__s, int __c) 5209: throw () __asm ("index") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * 5209: index (char *__s, int __c) throw () 5209: { 5209: return __builtin_index (__s, __c); 5209: } 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * 5209: index (const char *__s, int __c) throw () 5209: { 5209: return __builtin_index (__s, __c); 5209: } 5209: 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern "C++" 5209: { 5209: extern char *rindex (char *__s, int __c) 5209: throw () __asm ("rindex") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 5209: extern const char *rindex (const char *__s, int __c) 5209: throw () __asm ("rindex") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * 5209: rindex (char *__s, int __c) throw () 5209: { 5209: return __builtin_rindex (__s, __c); 5209: } 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * 5209: rindex (const char *__s, int __c) throw () 5209: { 5209: return __builtin_rindex (__s, __c); 5209: } 5209: 5209: } 5209: # 104 "/usr/include/strings.h" 3 4 5209: extern int ffs (int __i) throw () __attribute__ ((__const__)); 5209: 5209: 5209: 5209: 5209: 5209: extern int ffsl (long int __l) throw () __attribute__ ((__const__)); 5209: __extension__ extern int ffsll (long long int __ll) 5209: throw () __attribute__ ((__const__)); 5209: 5209: 5209: 5209: extern int strcasecmp (const char *__s1, const char *__s2) 5209: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: extern int strncasecmp (const char *__s1, const char *__s2, size_t __n) 5209: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern int strcasecmp_l (const char *__s1, const char *__s2, locale_t __loc) 5209: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3))); 5209: 5209: 5209: 5209: extern int strncasecmp_l (const char *__s1, const char *__s2, 5209: size_t __n, locale_t __loc) 5209: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 4))); 5209: 5209: 5209: } 5209: 5209: 5209: 5209: 5209: 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/strings_fortified.h" 1 3 4 5209: # 22 "/usr/include/aarch64-linux-gnu/bits/strings_fortified.h" 3 4 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void 5209: __attribute__ ((__leaf__)) bcopy (const void *__src, void *__dest, size_t __len) throw () 5209: { 5209: (void) __builtin___memmove_chk (__dest, __src, __len, __builtin_object_size (__dest, 0)); 5209: } 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void 5209: __attribute__ ((__leaf__)) bzero (void *__dest, size_t __len) throw () 5209: { 5209: (void) __builtin___memset_chk (__dest, '\0', __len, __builtin_object_size (__dest, 0)); 5209: } 5209: # 145 "/usr/include/strings.h" 2 3 4 5209: # 432 "/usr/include/string.h" 2 3 4 5209: 5209: 5209: 5209: extern void explicit_bzero (void *__s, size_t __n) throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: 5209: extern char *strsep (char **__restrict __stringp, 5209: const char *__restrict __delim) 5209: throw () __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: 5209: 5209: extern char *strsignal (int __sig) throw (); 5209: 5209: 5209: extern char *__stpcpy (char *__restrict __dest, const char *__restrict __src) 5209: throw () __attribute__ ((__nonnull__ (1, 2))); 5209: extern char *stpcpy (char *__restrict __dest, const char *__restrict __src) 5209: throw () __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: 5209: extern char *__stpncpy (char *__restrict __dest, 5209: const char *__restrict __src, size_t __n) 5209: throw () __attribute__ ((__nonnull__ (1, 2))); 5209: extern char *stpncpy (char *__restrict __dest, 5209: const char *__restrict __src, size_t __n) 5209: throw () __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: 5209: 5209: extern int strverscmp (const char *__s1, const char *__s2) 5209: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: extern char *strfry (char *__string) throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: extern void *memfrob (void *__s, size_t __n) throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern "C++" char *basename (char *__filename) 5209: throw () __asm ("basename") __attribute__ ((__nonnull__ (1))); 5209: extern "C++" const char *basename (const char *__filename) 5209: throw () __asm ("basename") __attribute__ ((__nonnull__ (1))); 5209: # 494 "/usr/include/string.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/string_fortified.h" 1 3 4 5209: # 30 "/usr/include/aarch64-linux-gnu/bits/string_fortified.h" 3 4 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void * 5209: __attribute__ ((__leaf__)) memcpy (void *__restrict __dest, const void *__restrict __src, size_t __len) throw () 5209: 5209: { 5209: return __builtin___memcpy_chk (__dest, __src, __len, __builtin_object_size (__dest, 0)); 5209: } 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void * 5209: __attribute__ ((__leaf__)) memmove (void *__dest, const void *__src, size_t __len) throw () 5209: { 5209: return __builtin___memmove_chk (__dest, __src, __len, __builtin_object_size (__dest, 0)); 5209: } 5209: 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void * 5209: __attribute__ ((__leaf__)) mempcpy (void *__restrict __dest, const void *__restrict __src, size_t __len) throw () 5209: 5209: { 5209: return __builtin___mempcpy_chk (__dest, __src, __len, __builtin_object_size (__dest, 0)); 5209: } 5209: # 58 "/usr/include/aarch64-linux-gnu/bits/string_fortified.h" 3 4 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void * 5209: __attribute__ ((__leaf__)) memset (void *__dest, int __ch, size_t __len) throw () 5209: { 5209: # 71 "/usr/include/aarch64-linux-gnu/bits/string_fortified.h" 3 4 5209: return __builtin___memset_chk (__dest, __ch, __len, __builtin_object_size (__dest, 0)); 5209: } 5209: 5209: 5209: 5209: 5209: void __explicit_bzero_chk (void *__dest, size_t __len, size_t __destlen) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void 5209: __attribute__ ((__leaf__)) explicit_bzero (void *__dest, size_t __len) throw () 5209: { 5209: __explicit_bzero_chk (__dest, __len, __builtin_object_size (__dest, 0)); 5209: } 5209: 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * 5209: __attribute__ ((__leaf__)) strcpy (char *__restrict __dest, const char *__restrict __src) throw () 5209: { 5209: return __builtin___strcpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1)); 5209: } 5209: 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * 5209: __attribute__ ((__leaf__)) stpcpy (char *__restrict __dest, const char *__restrict __src) throw () 5209: { 5209: return __builtin___stpcpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1)); 5209: } 5209: 5209: 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * 5209: __attribute__ ((__leaf__)) strncpy (char *__restrict __dest, const char *__restrict __src, size_t __len) throw () 5209: 5209: { 5209: return __builtin___strncpy_chk (__dest, __src, __len, __builtin_object_size (__dest, 2 > 1)); 5209: } 5209: 5209: 5209: extern char *__stpncpy_chk (char *__dest, const char *__src, size_t __n, 5209: size_t __destlen) throw (); 5209: extern char *__stpncpy_alias (char *__dest, const char *__src, size_t __n) throw () __asm__ ("" "stpncpy") 5209: ; 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * 5209: __attribute__ ((__leaf__)) stpncpy (char *__dest, const char *__src, size_t __n) throw () 5209: { 5209: if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1 5209: && (!__builtin_constant_p (__n) || __n > __builtin_object_size (__dest, 2 > 1))) 5209: return __stpncpy_chk (__dest, __src, __n, __builtin_object_size (__dest, 2 > 1)); 5209: return __stpncpy_alias (__dest, __src, __n); 5209: } 5209: 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * 5209: __attribute__ ((__leaf__)) strcat (char *__restrict __dest, const char *__restrict __src) throw () 5209: { 5209: return __builtin___strcat_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1)); 5209: } 5209: 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * 5209: __attribute__ ((__leaf__)) strncat (char *__restrict __dest, const char *__restrict __src, size_t __len) throw () 5209: 5209: { 5209: return __builtin___strncat_chk (__dest, __src, __len, __builtin_object_size (__dest, 2 > 1)); 5209: } 5209: # 495 "/usr/include/string.h" 2 3 4 5209: 5209: 5209: 5209: } 5209: # 43 "/usr/include/c++/10/cstring" 2 3 5209: # 71 "/usr/include/c++/10/cstring" 3 5209: extern "C++" 5209: { 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: using ::memchr; 5209: using ::memcmp; 5209: using ::memcpy; 5209: using ::memmove; 5209: using ::memset; 5209: using ::strcat; 5209: using ::strcmp; 5209: using ::strcoll; 5209: using ::strcpy; 5209: using ::strcspn; 5209: using ::strerror; 5209: using ::strlen; 5209: using ::strncat; 5209: using ::strncmp; 5209: using ::strncpy; 5209: using ::strspn; 5209: using ::strtok; 5209: using ::strxfrm; 5209: using ::strchr; 5209: using ::strpbrk; 5209: using ::strrchr; 5209: using ::strstr; 5209: # 122 "/usr/include/c++/10/cstring" 3 5209: 5209: } 5209: } 5209: # 26 "/<>/test/test.h" 2 5209: # 1 "/usr/include/c++/10/iostream" 1 3 5209: # 36 "/usr/include/c++/10/iostream" 3 5209: 5209: # 37 "/usr/include/c++/10/iostream" 3 5209: 5209: 5209: # 1 "/usr/include/c++/10/ostream" 1 3 5209: # 36 "/usr/include/c++/10/ostream" 3 5209: 5209: # 37 "/usr/include/c++/10/ostream" 3 5209: 5209: # 1 "/usr/include/c++/10/ios" 1 3 5209: # 36 "/usr/include/c++/10/ios" 3 5209: 5209: # 37 "/usr/include/c++/10/ios" 3 5209: 5209: # 1 "/usr/include/c++/10/iosfwd" 1 3 5209: # 36 "/usr/include/c++/10/iosfwd" 3 5209: 5209: # 37 "/usr/include/c++/10/iosfwd" 3 5209: 5209: 5209: # 1 "/usr/include/c++/10/bits/stringfwd.h" 1 3 5209: # 37 "/usr/include/c++/10/bits/stringfwd.h" 3 5209: 5209: # 38 "/usr/include/c++/10/bits/stringfwd.h" 3 5209: 5209: 5209: # 1 "/usr/include/c++/10/bits/memoryfwd.h" 1 3 5209: # 46 "/usr/include/c++/10/bits/memoryfwd.h" 3 5209: 5209: # 47 "/usr/include/c++/10/bits/memoryfwd.h" 3 5209: 5209: 5209: 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: # 63 "/usr/include/c++/10/bits/memoryfwd.h" 3 5209: template 5209: class allocator; 5209: 5209: 5209: template<> 5209: class allocator; 5209: 5209: 5209: 5209: 5209: template 5209: struct uses_allocator; 5209: 5209: 5209: 5209: 5209: 5209: } 5209: # 41 "/usr/include/c++/10/bits/stringfwd.h" 2 3 5209: 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: struct char_traits; 5209: 5209: template<> struct char_traits; 5209: 5209: 5209: template<> struct char_traits; 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: template<> struct char_traits; 5209: template<> struct char_traits; 5209: 5209: 5209: namespace __cxx11 { 5209: 5209: template, 5209: typename _Alloc = allocator<_CharT> > 5209: class basic_string; 5209: 5209: } 5209: 5209: 5209: typedef basic_string string; 5209: 5209: 5209: 5209: typedef basic_string wstring; 5209: # 93 "/usr/include/c++/10/bits/stringfwd.h" 3 5209: typedef basic_string u16string; 5209: 5209: 5209: typedef basic_string u32string; 5209: 5209: 5209: 5209: 5209: 5209: } 5209: # 40 "/usr/include/c++/10/iosfwd" 2 3 5209: # 1 "/usr/include/c++/10/bits/postypes.h" 1 3 5209: # 38 "/usr/include/c++/10/bits/postypes.h" 3 5209: 5209: # 39 "/usr/include/c++/10/bits/postypes.h" 3 5209: 5209: # 1 "/usr/include/c++/10/cwchar" 1 3 5209: # 39 "/usr/include/c++/10/cwchar" 3 5209: 5209: # 40 "/usr/include/c++/10/cwchar" 3 5209: 5209: 5209: 5209: 5209: # 1 "/usr/include/wchar.h" 1 3 4 5209: # 27 "/usr/include/wchar.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/libc-header-start.h" 1 3 4 5209: # 28 "/usr/include/wchar.h" 2 3 4 5209: 5209: 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/floatn.h" 1 3 4 5209: # 23 "/usr/include/aarch64-linux-gnu/bits/floatn.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/long-double.h" 1 3 4 5209: # 24 "/usr/include/aarch64-linux-gnu/bits/floatn.h" 2 3 4 5209: # 80 "/usr/include/aarch64-linux-gnu/bits/floatn.h" 3 4 5209: typedef long double _Float128; 5209: # 95 "/usr/include/aarch64-linux-gnu/bits/floatn.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/floatn-common.h" 1 3 4 5209: # 24 "/usr/include/aarch64-linux-gnu/bits/floatn-common.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/long-double.h" 1 3 4 5209: # 25 "/usr/include/aarch64-linux-gnu/bits/floatn-common.h" 2 3 4 5209: # 214 "/usr/include/aarch64-linux-gnu/bits/floatn-common.h" 3 4 5209: typedef float _Float32; 5209: # 251 "/usr/include/aarch64-linux-gnu/bits/floatn-common.h" 3 4 5209: typedef double _Float64; 5209: # 268 "/usr/include/aarch64-linux-gnu/bits/floatn-common.h" 3 4 5209: typedef double _Float32x; 5209: # 285 "/usr/include/aarch64-linux-gnu/bits/floatn-common.h" 3 4 5209: typedef long double _Float64x; 5209: # 96 "/usr/include/aarch64-linux-gnu/bits/floatn.h" 2 3 4 5209: # 31 "/usr/include/wchar.h" 2 3 4 5209: 5209: 5209: 5209: 5209: # 1 "/usr/lib/gcc/aarch64-linux-gnu/10/include/stddef.h" 1 3 4 5209: # 36 "/usr/include/wchar.h" 2 3 4 5209: 5209: 5209: # 1 "/usr/lib/gcc/aarch64-linux-gnu/10/include/stdarg.h" 1 3 4 5209: # 40 "/usr/lib/gcc/aarch64-linux-gnu/10/include/stdarg.h" 3 4 5209: typedef __builtin_va_list __gnuc_va_list; 5209: # 39 "/usr/include/wchar.h" 2 3 4 5209: 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/wchar.h" 1 3 4 5209: # 41 "/usr/include/wchar.h" 2 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/types/wint_t.h" 1 3 4 5209: # 20 "/usr/include/aarch64-linux-gnu/bits/types/wint_t.h" 3 4 5209: typedef unsigned int wint_t; 5209: # 42 "/usr/include/wchar.h" 2 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/types/mbstate_t.h" 1 3 4 5209: 5209: 5209: 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/types/__mbstate_t.h" 1 3 4 5209: # 13 "/usr/include/aarch64-linux-gnu/bits/types/__mbstate_t.h" 3 4 5209: typedef struct 5209: { 5209: int __count; 5209: union 5209: { 5209: unsigned int __wch; 5209: char __wchb[4]; 5209: } __value; 5209: } __mbstate_t; 5209: # 5 "/usr/include/aarch64-linux-gnu/bits/types/mbstate_t.h" 2 3 4 5209: 5209: typedef __mbstate_t mbstate_t; 5209: # 43 "/usr/include/wchar.h" 2 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/types/__FILE.h" 1 3 4 5209: 5209: 5209: 5209: struct _IO_FILE; 5209: typedef struct _IO_FILE __FILE; 5209: # 44 "/usr/include/wchar.h" 2 3 4 5209: 5209: 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/types/FILE.h" 1 3 4 5209: 5209: 5209: 5209: struct _IO_FILE; 5209: 5209: 5209: typedef struct _IO_FILE FILE; 5209: # 47 "/usr/include/wchar.h" 2 3 4 5209: # 79 "/usr/include/wchar.h" 3 4 5209: extern "C" { 5209: 5209: 5209: 5209: struct tm; 5209: 5209: 5209: 5209: extern wchar_t *wcscpy (wchar_t *__restrict __dest, 5209: const wchar_t *__restrict __src) 5209: throw () __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: extern wchar_t *wcsncpy (wchar_t *__restrict __dest, 5209: const wchar_t *__restrict __src, size_t __n) 5209: throw () __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: extern wchar_t *wcscat (wchar_t *__restrict __dest, 5209: const wchar_t *__restrict __src) 5209: throw () __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: extern wchar_t *wcsncat (wchar_t *__restrict __dest, 5209: const wchar_t *__restrict __src, size_t __n) 5209: throw () __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: extern int wcscmp (const wchar_t *__s1, const wchar_t *__s2) 5209: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: extern int wcsncmp (const wchar_t *__s1, const wchar_t *__s2, size_t __n) 5209: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: 5209: extern int wcscasecmp (const wchar_t *__s1, const wchar_t *__s2) throw (); 5209: 5209: 5209: extern int wcsncasecmp (const wchar_t *__s1, const wchar_t *__s2, 5209: size_t __n) throw (); 5209: 5209: 5209: 5209: extern int wcscasecmp_l (const wchar_t *__s1, const wchar_t *__s2, 5209: locale_t __loc) throw (); 5209: 5209: extern int wcsncasecmp_l (const wchar_t *__s1, const wchar_t *__s2, 5209: size_t __n, locale_t __loc) throw (); 5209: 5209: 5209: 5209: 5209: extern int wcscoll (const wchar_t *__s1, const wchar_t *__s2) throw (); 5209: 5209: 5209: 5209: extern size_t wcsxfrm (wchar_t *__restrict __s1, 5209: const wchar_t *__restrict __s2, size_t __n) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern int wcscoll_l (const wchar_t *__s1, const wchar_t *__s2, 5209: locale_t __loc) throw (); 5209: 5209: 5209: 5209: 5209: extern size_t wcsxfrm_l (wchar_t *__s1, const wchar_t *__s2, 5209: size_t __n, locale_t __loc) throw (); 5209: 5209: 5209: extern wchar_t *wcsdup (const wchar_t *__s) throw () __attribute__ ((__malloc__)); 5209: 5209: 5209: 5209: 5209: extern "C++" wchar_t *wcschr (wchar_t *__wcs, wchar_t __wc) 5209: throw () __asm ("wcschr") __attribute__ ((__pure__)); 5209: extern "C++" const wchar_t *wcschr (const wchar_t *__wcs, wchar_t __wc) 5209: throw () __asm ("wcschr") __attribute__ ((__pure__)); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern "C++" wchar_t *wcsrchr (wchar_t *__wcs, wchar_t __wc) 5209: throw () __asm ("wcsrchr") __attribute__ ((__pure__)); 5209: extern "C++" const wchar_t *wcsrchr (const wchar_t *__wcs, wchar_t __wc) 5209: throw () __asm ("wcsrchr") __attribute__ ((__pure__)); 5209: # 181 "/usr/include/wchar.h" 3 4 5209: extern wchar_t *wcschrnul (const wchar_t *__s, wchar_t __wc) 5209: throw () __attribute__ ((__pure__)); 5209: 5209: 5209: 5209: 5209: extern size_t wcscspn (const wchar_t *__wcs, const wchar_t *__reject) 5209: throw () __attribute__ ((__pure__)); 5209: 5209: 5209: extern size_t wcsspn (const wchar_t *__wcs, const wchar_t *__accept) 5209: throw () __attribute__ ((__pure__)); 5209: 5209: 5209: extern "C++" wchar_t *wcspbrk (wchar_t *__wcs, const wchar_t *__accept) 5209: throw () __asm ("wcspbrk") __attribute__ ((__pure__)); 5209: extern "C++" const wchar_t *wcspbrk (const wchar_t *__wcs, 5209: const wchar_t *__accept) 5209: throw () __asm ("wcspbrk") __attribute__ ((__pure__)); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern "C++" wchar_t *wcsstr (wchar_t *__haystack, const wchar_t *__needle) 5209: throw () __asm ("wcsstr") __attribute__ ((__pure__)); 5209: extern "C++" const wchar_t *wcsstr (const wchar_t *__haystack, 5209: const wchar_t *__needle) 5209: throw () __asm ("wcsstr") __attribute__ ((__pure__)); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern wchar_t *wcstok (wchar_t *__restrict __s, 5209: const wchar_t *__restrict __delim, 5209: wchar_t **__restrict __ptr) throw (); 5209: 5209: 5209: extern size_t wcslen (const wchar_t *__s) throw () __attribute__ ((__pure__)); 5209: 5209: 5209: 5209: 5209: extern "C++" wchar_t *wcswcs (wchar_t *__haystack, const wchar_t *__needle) 5209: throw () __asm ("wcswcs") __attribute__ ((__pure__)); 5209: extern "C++" const wchar_t *wcswcs (const wchar_t *__haystack, 5209: const wchar_t *__needle) 5209: throw () __asm ("wcswcs") __attribute__ ((__pure__)); 5209: # 240 "/usr/include/wchar.h" 3 4 5209: extern size_t wcsnlen (const wchar_t *__s, size_t __maxlen) 5209: throw () __attribute__ ((__pure__)); 5209: 5209: 5209: 5209: 5209: 5209: extern "C++" wchar_t *wmemchr (wchar_t *__s, wchar_t __c, size_t __n) 5209: throw () __asm ("wmemchr") __attribute__ ((__pure__)); 5209: extern "C++" const wchar_t *wmemchr (const wchar_t *__s, wchar_t __c, 5209: size_t __n) 5209: throw () __asm ("wmemchr") __attribute__ ((__pure__)); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern int wmemcmp (const wchar_t *__s1, const wchar_t *__s2, size_t __n) 5209: throw () __attribute__ ((__pure__)); 5209: 5209: 5209: extern wchar_t *wmemcpy (wchar_t *__restrict __s1, 5209: const wchar_t *__restrict __s2, size_t __n) throw (); 5209: 5209: 5209: 5209: extern wchar_t *wmemmove (wchar_t *__s1, const wchar_t *__s2, size_t __n) 5209: throw (); 5209: 5209: 5209: extern wchar_t *wmemset (wchar_t *__s, wchar_t __c, size_t __n) throw (); 5209: 5209: 5209: 5209: 5209: extern wchar_t *wmempcpy (wchar_t *__restrict __s1, 5209: const wchar_t *__restrict __s2, size_t __n) 5209: throw (); 5209: 5209: 5209: 5209: 5209: 5209: extern wint_t btowc (int __c) throw (); 5209: 5209: 5209: 5209: extern int wctob (wint_t __c) throw (); 5209: 5209: 5209: 5209: extern int mbsinit (const mbstate_t *__ps) throw () __attribute__ ((__pure__)); 5209: 5209: 5209: 5209: extern size_t mbrtowc (wchar_t *__restrict __pwc, 5209: const char *__restrict __s, size_t __n, 5209: mbstate_t *__restrict __p) throw (); 5209: 5209: 5209: extern size_t wcrtomb (char *__restrict __s, wchar_t __wc, 5209: mbstate_t *__restrict __ps) throw (); 5209: 5209: 5209: extern size_t __mbrlen (const char *__restrict __s, size_t __n, 5209: mbstate_t *__restrict __ps) throw (); 5209: extern size_t mbrlen (const char *__restrict __s, size_t __n, 5209: mbstate_t *__restrict __ps) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern wint_t __btowc_alias (int __c) __asm ("btowc"); 5209: extern __inline __attribute__ ((__gnu_inline__)) wint_t 5209: __attribute__ ((__leaf__)) btowc (int __c) throw () 5209: { return (__builtin_constant_p (__c) && __c >= '\0' && __c <= '\x7f' 5209: ? (wint_t) __c : __btowc_alias (__c)); } 5209: 5209: extern int __wctob_alias (wint_t __c) __asm ("wctob"); 5209: extern __inline __attribute__ ((__gnu_inline__)) int 5209: __attribute__ ((__leaf__)) wctob (wint_t __wc) throw () 5209: { return (__builtin_constant_p (__wc) && __wc >= L'\0' && __wc <= L'\x7f' 5209: ? (int) __wc : __wctob_alias (__wc)); } 5209: 5209: extern __inline __attribute__ ((__gnu_inline__)) size_t 5209: __attribute__ ((__leaf__)) mbrlen (const char *__restrict __s, size_t __n, mbstate_t *__restrict __ps) throw () 5209: 5209: { return (__ps != __null 5209: ? mbrtowc (__null, __s, __n, __ps) : __mbrlen (__s, __n, __null)); } 5209: 5209: 5209: 5209: 5209: extern size_t mbsrtowcs (wchar_t *__restrict __dst, 5209: const char **__restrict __src, size_t __len, 5209: mbstate_t *__restrict __ps) throw (); 5209: 5209: 5209: 5209: extern size_t wcsrtombs (char *__restrict __dst, 5209: const wchar_t **__restrict __src, size_t __len, 5209: mbstate_t *__restrict __ps) throw (); 5209: 5209: 5209: 5209: 5209: 5209: extern size_t mbsnrtowcs (wchar_t *__restrict __dst, 5209: const char **__restrict __src, size_t __nmc, 5209: size_t __len, mbstate_t *__restrict __ps) throw (); 5209: 5209: 5209: 5209: extern size_t wcsnrtombs (char *__restrict __dst, 5209: const wchar_t **__restrict __src, 5209: size_t __nwc, size_t __len, 5209: mbstate_t *__restrict __ps) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern int wcwidth (wchar_t __c) throw (); 5209: 5209: 5209: 5209: extern int wcswidth (const wchar_t *__s, size_t __n) throw (); 5209: 5209: 5209: 5209: 5209: 5209: extern double wcstod (const wchar_t *__restrict __nptr, 5209: wchar_t **__restrict __endptr) throw (); 5209: 5209: 5209: 5209: extern float wcstof (const wchar_t *__restrict __nptr, 5209: wchar_t **__restrict __endptr) throw (); 5209: extern long double wcstold (const wchar_t *__restrict __nptr, 5209: wchar_t **__restrict __endptr) throw (); 5209: # 396 "/usr/include/wchar.h" 3 4 5209: extern _Float32 wcstof32 (const wchar_t *__restrict __nptr, 5209: wchar_t **__restrict __endptr) throw (); 5209: 5209: 5209: 5209: extern _Float64 wcstof64 (const wchar_t *__restrict __nptr, 5209: wchar_t **__restrict __endptr) throw (); 5209: 5209: 5209: 5209: extern _Float128 wcstof128 (const wchar_t *__restrict __nptr, 5209: wchar_t **__restrict __endptr) throw (); 5209: 5209: 5209: 5209: extern _Float32x wcstof32x (const wchar_t *__restrict __nptr, 5209: wchar_t **__restrict __endptr) throw (); 5209: 5209: 5209: 5209: extern _Float64x wcstof64x (const wchar_t *__restrict __nptr, 5209: wchar_t **__restrict __endptr) throw (); 5209: # 428 "/usr/include/wchar.h" 3 4 5209: extern long int wcstol (const wchar_t *__restrict __nptr, 5209: wchar_t **__restrict __endptr, int __base) throw (); 5209: 5209: 5209: 5209: extern unsigned long int wcstoul (const wchar_t *__restrict __nptr, 5209: wchar_t **__restrict __endptr, int __base) 5209: throw (); 5209: 5209: 5209: 5209: 5209: __extension__ 5209: extern long long int wcstoll (const wchar_t *__restrict __nptr, 5209: wchar_t **__restrict __endptr, int __base) 5209: throw (); 5209: 5209: 5209: 5209: __extension__ 5209: extern unsigned long long int wcstoull (const wchar_t *__restrict __nptr, 5209: wchar_t **__restrict __endptr, 5209: int __base) throw (); 5209: 5209: 5209: 5209: 5209: 5209: __extension__ 5209: extern long long int wcstoq (const wchar_t *__restrict __nptr, 5209: wchar_t **__restrict __endptr, int __base) 5209: throw (); 5209: 5209: 5209: 5209: __extension__ 5209: extern unsigned long long int wcstouq (const wchar_t *__restrict __nptr, 5209: wchar_t **__restrict __endptr, 5209: int __base) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern long int wcstol_l (const wchar_t *__restrict __nptr, 5209: wchar_t **__restrict __endptr, int __base, 5209: locale_t __loc) throw (); 5209: 5209: extern unsigned long int wcstoul_l (const wchar_t *__restrict __nptr, 5209: wchar_t **__restrict __endptr, 5209: int __base, locale_t __loc) throw (); 5209: 5209: __extension__ 5209: extern long long int wcstoll_l (const wchar_t *__restrict __nptr, 5209: wchar_t **__restrict __endptr, 5209: int __base, locale_t __loc) throw (); 5209: 5209: __extension__ 5209: extern unsigned long long int wcstoull_l (const wchar_t *__restrict __nptr, 5209: wchar_t **__restrict __endptr, 5209: int __base, locale_t __loc) 5209: throw (); 5209: 5209: extern double wcstod_l (const wchar_t *__restrict __nptr, 5209: wchar_t **__restrict __endptr, locale_t __loc) 5209: throw (); 5209: 5209: extern float wcstof_l (const wchar_t *__restrict __nptr, 5209: wchar_t **__restrict __endptr, locale_t __loc) 5209: throw (); 5209: 5209: extern long double wcstold_l (const wchar_t *__restrict __nptr, 5209: wchar_t **__restrict __endptr, 5209: locale_t __loc) throw (); 5209: # 511 "/usr/include/wchar.h" 3 4 5209: extern _Float32 wcstof32_l (const wchar_t *__restrict __nptr, 5209: wchar_t **__restrict __endptr, 5209: locale_t __loc) throw (); 5209: 5209: 5209: 5209: extern _Float64 wcstof64_l (const wchar_t *__restrict __nptr, 5209: wchar_t **__restrict __endptr, 5209: locale_t __loc) throw (); 5209: 5209: 5209: 5209: extern _Float128 wcstof128_l (const wchar_t *__restrict __nptr, 5209: wchar_t **__restrict __endptr, 5209: locale_t __loc) throw (); 5209: 5209: 5209: 5209: extern _Float32x wcstof32x_l (const wchar_t *__restrict __nptr, 5209: wchar_t **__restrict __endptr, 5209: locale_t __loc) throw (); 5209: 5209: 5209: 5209: extern _Float64x wcstof64x_l (const wchar_t *__restrict __nptr, 5209: wchar_t **__restrict __endptr, 5209: locale_t __loc) throw (); 5209: # 551 "/usr/include/wchar.h" 3 4 5209: extern wchar_t *wcpcpy (wchar_t *__restrict __dest, 5209: const wchar_t *__restrict __src) throw (); 5209: 5209: 5209: 5209: extern wchar_t *wcpncpy (wchar_t *__restrict __dest, 5209: const wchar_t *__restrict __src, size_t __n) 5209: throw (); 5209: # 567 "/usr/include/wchar.h" 3 4 5209: extern __FILE *open_wmemstream (wchar_t **__bufloc, size_t *__sizeloc) throw (); 5209: 5209: 5209: 5209: 5209: 5209: extern int fwide (__FILE *__fp, int __mode) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern int fwprintf (__FILE *__restrict __stream, 5209: const wchar_t *__restrict __format, ...) 5209: ; 5209: 5209: 5209: 5209: 5209: extern int wprintf (const wchar_t *__restrict __format, ...) 5209: ; 5209: 5209: extern int swprintf (wchar_t *__restrict __s, size_t __n, 5209: const wchar_t *__restrict __format, ...) 5209: throw () ; 5209: 5209: 5209: 5209: 5209: 5209: extern int vfwprintf (__FILE *__restrict __s, 5209: const wchar_t *__restrict __format, 5209: __gnuc_va_list __arg) 5209: ; 5209: 5209: 5209: 5209: 5209: extern int vwprintf (const wchar_t *__restrict __format, 5209: __gnuc_va_list __arg) 5209: ; 5209: 5209: 5209: extern int vswprintf (wchar_t *__restrict __s, size_t __n, 5209: const wchar_t *__restrict __format, 5209: __gnuc_va_list __arg) 5209: throw () ; 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern int fwscanf (__FILE *__restrict __stream, 5209: const wchar_t *__restrict __format, ...) 5209: ; 5209: 5209: 5209: 5209: 5209: extern int wscanf (const wchar_t *__restrict __format, ...) 5209: ; 5209: 5209: extern int swscanf (const wchar_t *__restrict __s, 5209: const wchar_t *__restrict __format, ...) 5209: throw () ; 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern int fwscanf (__FILE *__restrict __stream, const wchar_t *__restrict __format, ...) __asm__ ("" "__isoc99_fwscanf") 5209: 5209: 5209: ; 5209: extern int wscanf (const wchar_t *__restrict __format, ...) __asm__ ("" "__isoc99_wscanf") 5209: 5209: ; 5209: extern int swscanf (const wchar_t *__restrict __s, const wchar_t *__restrict __format, ...) throw () __asm__ ("" "__isoc99_swscanf") 5209: 5209: 5209: ; 5209: # 671 "/usr/include/wchar.h" 3 4 5209: extern int vfwscanf (__FILE *__restrict __s, 5209: const wchar_t *__restrict __format, 5209: __gnuc_va_list __arg) 5209: ; 5209: 5209: 5209: 5209: 5209: extern int vwscanf (const wchar_t *__restrict __format, 5209: __gnuc_va_list __arg) 5209: ; 5209: 5209: extern int vswscanf (const wchar_t *__restrict __s, 5209: const wchar_t *__restrict __format, 5209: __gnuc_va_list __arg) 5209: throw () ; 5209: # 725 "/usr/include/wchar.h" 3 4 5209: extern wint_t fgetwc (__FILE *__stream); 5209: extern wint_t getwc (__FILE *__stream); 5209: 5209: 5209: 5209: 5209: 5209: extern wint_t getwchar (void); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern wint_t fputwc (wchar_t __wc, __FILE *__stream); 5209: extern wint_t putwc (wchar_t __wc, __FILE *__stream); 5209: 5209: 5209: 5209: 5209: 5209: extern wint_t putwchar (wchar_t __wc); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern wchar_t *fgetws (wchar_t *__restrict __ws, int __n, 5209: __FILE *__restrict __stream); 5209: 5209: 5209: 5209: 5209: 5209: extern int fputws (const wchar_t *__restrict __ws, 5209: __FILE *__restrict __stream); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern wint_t ungetwc (wint_t __wc, __FILE *__stream); 5209: # 780 "/usr/include/wchar.h" 3 4 5209: extern wint_t getwc_unlocked (__FILE *__stream); 5209: extern wint_t getwchar_unlocked (void); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern wint_t fgetwc_unlocked (__FILE *__stream); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern wint_t fputwc_unlocked (wchar_t __wc, __FILE *__stream); 5209: # 806 "/usr/include/wchar.h" 3 4 5209: extern wint_t putwc_unlocked (wchar_t __wc, __FILE *__stream); 5209: extern wint_t putwchar_unlocked (wchar_t __wc); 5209: # 816 "/usr/include/wchar.h" 3 4 5209: extern wchar_t *fgetws_unlocked (wchar_t *__restrict __ws, int __n, 5209: __FILE *__restrict __stream); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern int fputws_unlocked (const wchar_t *__restrict __ws, 5209: __FILE *__restrict __stream); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern size_t wcsftime (wchar_t *__restrict __s, size_t __maxsize, 5209: const wchar_t *__restrict __format, 5209: const struct tm *__restrict __tp) throw (); 5209: 5209: 5209: 5209: 5209: extern size_t wcsftime_l (wchar_t *__restrict __s, size_t __maxsize, 5209: const wchar_t *__restrict __format, 5209: const struct tm *__restrict __tp, 5209: locale_t __loc) throw (); 5209: 5209: 5209: 5209: 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/wchar2.h" 1 3 4 5209: # 24 "/usr/include/aarch64-linux-gnu/bits/wchar2.h" 3 4 5209: extern wchar_t *__wmemcpy_chk (wchar_t *__restrict __s1, 5209: const wchar_t *__restrict __s2, size_t __n, 5209: size_t __ns1) throw (); 5209: extern wchar_t *__wmemcpy_alias (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n) throw () __asm__ ("" "wmemcpy") 5209: 5209: 5209: ; 5209: extern wchar_t *__wmemcpy_chk_warn (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n, size_t __ns1) throw () __asm__ ("" "__wmemcpy_chk") 5209: 5209: 5209: 5209: __attribute__((__warning__ ("wmemcpy called with length bigger than size of destination " "buffer"))) 5209: ; 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 5209: __attribute__ ((__leaf__)) wmemcpy (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n) throw () 5209: 5209: { 5209: if (__builtin_object_size (__s1, 0) != (size_t) -1) 5209: { 5209: if (!__builtin_constant_p (__n)) 5209: return __wmemcpy_chk (__s1, __s2, __n, 5209: __builtin_object_size (__s1, 0) / sizeof (wchar_t)); 5209: 5209: if (__n > __builtin_object_size (__s1, 0) / sizeof (wchar_t)) 5209: return __wmemcpy_chk_warn (__s1, __s2, __n, 5209: __builtin_object_size (__s1, 0) / sizeof (wchar_t)); 5209: } 5209: return __wmemcpy_alias (__s1, __s2, __n); 5209: } 5209: 5209: 5209: extern wchar_t *__wmemmove_chk (wchar_t *__s1, const wchar_t *__s2, 5209: size_t __n, size_t __ns1) throw (); 5209: extern wchar_t *__wmemmove_alias (wchar_t *__s1, const wchar_t *__s2, size_t __n) throw () __asm__ ("" "wmemmove") 5209: 5209: ; 5209: extern wchar_t *__wmemmove_chk_warn (wchar_t *__s1, const wchar_t *__s2, size_t __n, size_t __ns1) throw () __asm__ ("" "__wmemmove_chk") 5209: 5209: 5209: __attribute__((__warning__ ("wmemmove called with length bigger than size of destination " "buffer"))) 5209: ; 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 5209: __attribute__ ((__leaf__)) wmemmove (wchar_t *__s1, const wchar_t *__s2, size_t __n) throw () 5209: { 5209: if (__builtin_object_size (__s1, 0) != (size_t) -1) 5209: { 5209: if (!__builtin_constant_p (__n)) 5209: return __wmemmove_chk (__s1, __s2, __n, 5209: __builtin_object_size (__s1, 0) / sizeof (wchar_t)); 5209: 5209: if (__n > __builtin_object_size (__s1, 0) / sizeof (wchar_t)) 5209: return __wmemmove_chk_warn (__s1, __s2, __n, 5209: __builtin_object_size (__s1, 0) / sizeof (wchar_t)); 5209: } 5209: return __wmemmove_alias (__s1, __s2, __n); 5209: } 5209: 5209: 5209: 5209: extern wchar_t *__wmempcpy_chk (wchar_t *__restrict __s1, 5209: const wchar_t *__restrict __s2, size_t __n, 5209: size_t __ns1) throw (); 5209: extern wchar_t *__wmempcpy_alias (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n) throw () __asm__ ("" "wmempcpy") 5209: 5209: 5209: ; 5209: extern wchar_t *__wmempcpy_chk_warn (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n, size_t __ns1) throw () __asm__ ("" "__wmempcpy_chk") 5209: 5209: 5209: 5209: __attribute__((__warning__ ("wmempcpy called with length bigger than size of destination " "buffer"))) 5209: ; 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 5209: __attribute__ ((__leaf__)) wmempcpy (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n) throw () 5209: 5209: { 5209: if (__builtin_object_size (__s1, 0) != (size_t) -1) 5209: { 5209: if (!__builtin_constant_p (__n)) 5209: return __wmempcpy_chk (__s1, __s2, __n, 5209: __builtin_object_size (__s1, 0) / sizeof (wchar_t)); 5209: 5209: if (__n > __builtin_object_size (__s1, 0) / sizeof (wchar_t)) 5209: return __wmempcpy_chk_warn (__s1, __s2, __n, 5209: __builtin_object_size (__s1, 0) / sizeof (wchar_t)); 5209: } 5209: return __wmempcpy_alias (__s1, __s2, __n); 5209: } 5209: 5209: 5209: 5209: extern wchar_t *__wmemset_chk (wchar_t *__s, wchar_t __c, size_t __n, 5209: size_t __ns) throw (); 5209: extern wchar_t *__wmemset_alias (wchar_t *__s, wchar_t __c, size_t __n) throw () __asm__ ("" "wmemset") 5209: ; 5209: extern wchar_t *__wmemset_chk_warn (wchar_t *__s, wchar_t __c, size_t __n, size_t __ns) throw () __asm__ ("" "__wmemset_chk") 5209: 5209: 5209: __attribute__((__warning__ ("wmemset called with length bigger than size of destination " "buffer"))) 5209: ; 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 5209: __attribute__ ((__leaf__)) wmemset (wchar_t *__s, wchar_t __c, size_t __n) throw () 5209: { 5209: if (__builtin_object_size (__s, 0) != (size_t) -1) 5209: { 5209: if (!__builtin_constant_p (__n)) 5209: return __wmemset_chk (__s, __c, __n, __builtin_object_size (__s, 0) / sizeof (wchar_t)); 5209: 5209: if (__n > __builtin_object_size (__s, 0) / sizeof (wchar_t)) 5209: return __wmemset_chk_warn (__s, __c, __n, 5209: __builtin_object_size (__s, 0) / sizeof (wchar_t)); 5209: } 5209: return __wmemset_alias (__s, __c, __n); 5209: } 5209: 5209: 5209: extern wchar_t *__wcscpy_chk (wchar_t *__restrict __dest, 5209: const wchar_t *__restrict __src, 5209: size_t __n) throw (); 5209: extern wchar_t *__wcscpy_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src) throw () __asm__ ("" "wcscpy") 5209: 5209: ; 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 5209: __attribute__ ((__leaf__)) wcscpy (wchar_t *__restrict __dest, const wchar_t *__restrict __src) throw () 5209: { 5209: if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1) 5209: return __wcscpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)); 5209: return __wcscpy_alias (__dest, __src); 5209: } 5209: 5209: 5209: extern wchar_t *__wcpcpy_chk (wchar_t *__restrict __dest, 5209: const wchar_t *__restrict __src, 5209: size_t __destlen) throw (); 5209: extern wchar_t *__wcpcpy_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src) throw () __asm__ ("" "wcpcpy") 5209: 5209: ; 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 5209: __attribute__ ((__leaf__)) wcpcpy (wchar_t *__restrict __dest, const wchar_t *__restrict __src) throw () 5209: { 5209: if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1) 5209: return __wcpcpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)); 5209: return __wcpcpy_alias (__dest, __src); 5209: } 5209: 5209: 5209: extern wchar_t *__wcsncpy_chk (wchar_t *__restrict __dest, 5209: const wchar_t *__restrict __src, size_t __n, 5209: size_t __destlen) throw (); 5209: extern wchar_t *__wcsncpy_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) throw () __asm__ ("" "wcsncpy") 5209: 5209: 5209: ; 5209: extern wchar_t *__wcsncpy_chk_warn (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n, size_t __destlen) throw () __asm__ ("" "__wcsncpy_chk") 5209: 5209: 5209: 5209: __attribute__((__warning__ ("wcsncpy called with length bigger than size of destination " "buffer"))) 5209: ; 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 5209: __attribute__ ((__leaf__)) wcsncpy (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) throw () 5209: 5209: { 5209: if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1) 5209: { 5209: if (!__builtin_constant_p (__n)) 5209: return __wcsncpy_chk (__dest, __src, __n, 5209: __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)); 5209: if (__n > __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)) 5209: return __wcsncpy_chk_warn (__dest, __src, __n, 5209: __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)); 5209: } 5209: return __wcsncpy_alias (__dest, __src, __n); 5209: } 5209: 5209: 5209: extern wchar_t *__wcpncpy_chk (wchar_t *__restrict __dest, 5209: const wchar_t *__restrict __src, size_t __n, 5209: size_t __destlen) throw (); 5209: extern wchar_t *__wcpncpy_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) throw () __asm__ ("" "wcpncpy") 5209: 5209: 5209: ; 5209: extern wchar_t *__wcpncpy_chk_warn (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n, size_t __destlen) throw () __asm__ ("" "__wcpncpy_chk") 5209: 5209: 5209: 5209: __attribute__((__warning__ ("wcpncpy called with length bigger than size of destination " "buffer"))) 5209: ; 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 5209: __attribute__ ((__leaf__)) wcpncpy (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) throw () 5209: 5209: { 5209: if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1) 5209: { 5209: if (!__builtin_constant_p (__n)) 5209: return __wcpncpy_chk (__dest, __src, __n, 5209: __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)); 5209: if (__n > __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)) 5209: return __wcpncpy_chk_warn (__dest, __src, __n, 5209: __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)); 5209: } 5209: return __wcpncpy_alias (__dest, __src, __n); 5209: } 5209: 5209: 5209: extern wchar_t *__wcscat_chk (wchar_t *__restrict __dest, 5209: const wchar_t *__restrict __src, 5209: size_t __destlen) throw (); 5209: extern wchar_t *__wcscat_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src) throw () __asm__ ("" "wcscat") 5209: 5209: ; 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 5209: __attribute__ ((__leaf__)) wcscat (wchar_t *__restrict __dest, const wchar_t *__restrict __src) throw () 5209: { 5209: if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1) 5209: return __wcscat_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)); 5209: return __wcscat_alias (__dest, __src); 5209: } 5209: 5209: 5209: extern wchar_t *__wcsncat_chk (wchar_t *__restrict __dest, 5209: const wchar_t *__restrict __src, 5209: size_t __n, size_t __destlen) throw (); 5209: extern wchar_t *__wcsncat_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) throw () __asm__ ("" "wcsncat") 5209: 5209: 5209: ; 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 5209: __attribute__ ((__leaf__)) wcsncat (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) throw () 5209: 5209: { 5209: if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1) 5209: return __wcsncat_chk (__dest, __src, __n, 5209: __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)); 5209: return __wcsncat_alias (__dest, __src, __n); 5209: } 5209: 5209: 5209: extern int __swprintf_chk (wchar_t *__restrict __s, size_t __n, 5209: int __flag, size_t __s_len, 5209: const wchar_t *__restrict __format, ...) 5209: throw () ; 5209: 5209: extern int __swprintf_alias (wchar_t *__restrict __s, size_t __n, const wchar_t *__restrict __fmt, ...) throw () __asm__ ("" "swprintf") 5209: 5209: 5209: ; 5209: 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 5209: __attribute__ ((__leaf__)) swprintf (wchar_t *__restrict __s, size_t __n, const wchar_t *__restrict __fmt, ...) throw () 5209: 5209: { 5209: if (__builtin_object_size (__s, 2 > 1) != (size_t) -1 || 2 > 1) 5209: return __swprintf_chk (__s, __n, 2 - 1, 5209: __builtin_object_size (__s, 2 > 1) / sizeof (wchar_t), 5209: __fmt, __builtin_va_arg_pack ()); 5209: return __swprintf_alias (__s, __n, __fmt, __builtin_va_arg_pack ()); 5209: } 5209: # 303 "/usr/include/aarch64-linux-gnu/bits/wchar2.h" 3 4 5209: extern int __vswprintf_chk (wchar_t *__restrict __s, size_t __n, 5209: int __flag, size_t __s_len, 5209: const wchar_t *__restrict __format, 5209: __gnuc_va_list __arg) 5209: throw () ; 5209: 5209: extern int __vswprintf_alias (wchar_t *__restrict __s, size_t __n, const wchar_t *__restrict __fmt, __gnuc_va_list __ap) throw () __asm__ ("" "vswprintf") 5209: 5209: 5209: ; 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 5209: __attribute__ ((__leaf__)) vswprintf (wchar_t *__restrict __s, size_t __n, const wchar_t *__restrict __fmt, __gnuc_va_list __ap) throw () 5209: 5209: { 5209: if (__builtin_object_size (__s, 2 > 1) != (size_t) -1 || 2 > 1) 5209: return __vswprintf_chk (__s, __n, 2 - 1, 5209: __builtin_object_size (__s, 2 > 1) / sizeof (wchar_t), __fmt, __ap); 5209: return __vswprintf_alias (__s, __n, __fmt, __ap); 5209: } 5209: 5209: 5209: 5209: 5209: extern int __fwprintf_chk (__FILE *__restrict __stream, int __flag, 5209: const wchar_t *__restrict __format, ...); 5209: extern int __wprintf_chk (int __flag, const wchar_t *__restrict __format, 5209: ...); 5209: extern int __vfwprintf_chk (__FILE *__restrict __stream, int __flag, 5209: const wchar_t *__restrict __format, 5209: __gnuc_va_list __ap); 5209: extern int __vwprintf_chk (int __flag, const wchar_t *__restrict __format, 5209: __gnuc_va_list __ap); 5209: 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 5209: wprintf (const wchar_t *__restrict __fmt, ...) 5209: { 5209: return __wprintf_chk (2 - 1, __fmt, __builtin_va_arg_pack ()); 5209: } 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 5209: fwprintf (__FILE *__restrict __stream, const wchar_t *__restrict __fmt, ...) 5209: { 5209: return __fwprintf_chk (__stream, 2 - 1, __fmt, 5209: __builtin_va_arg_pack ()); 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 5209: vwprintf (const wchar_t *__restrict __fmt, __gnuc_va_list __ap) 5209: { 5209: return __vwprintf_chk (2 - 1, __fmt, __ap); 5209: } 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 5209: vfwprintf (__FILE *__restrict __stream, 5209: const wchar_t *__restrict __fmt, __gnuc_va_list __ap) 5209: { 5209: return __vfwprintf_chk (__stream, 2 - 1, __fmt, __ap); 5209: } 5209: 5209: 5209: 5209: extern wchar_t *__fgetws_chk (wchar_t *__restrict __s, size_t __size, int __n, 5209: __FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 5209: extern wchar_t *__fgetws_alias (wchar_t *__restrict __s, int __n, __FILE *__restrict __stream) __asm__ ("" "fgetws") 5209: 5209: __attribute__ ((__warn_unused_result__)); 5209: extern wchar_t *__fgetws_chk_warn (wchar_t *__restrict __s, size_t __size, int __n, __FILE *__restrict __stream) __asm__ ("" "__fgetws_chk") 5209: 5209: 5209: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgetws called with bigger size than length " "of destination buffer"))) 5209: ; 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) wchar_t * 5209: fgetws (wchar_t *__restrict __s, int __n, __FILE *__restrict __stream) 5209: { 5209: if (__builtin_object_size (__s, 2 > 1) != (size_t) -1) 5209: { 5209: if (!__builtin_constant_p (__n) || __n <= 0) 5209: return __fgetws_chk (__s, __builtin_object_size (__s, 2 > 1) / sizeof (wchar_t), 5209: __n, __stream); 5209: 5209: if ((size_t) __n > __builtin_object_size (__s, 2 > 1) / sizeof (wchar_t)) 5209: return __fgetws_chk_warn (__s, __builtin_object_size (__s, 2 > 1) / sizeof (wchar_t), 5209: __n, __stream); 5209: } 5209: return __fgetws_alias (__s, __n, __stream); 5209: } 5209: 5209: 5209: extern wchar_t *__fgetws_unlocked_chk (wchar_t *__restrict __s, size_t __size, 5209: int __n, __FILE *__restrict __stream) 5209: __attribute__ ((__warn_unused_result__)); 5209: extern wchar_t *__fgetws_unlocked_alias (wchar_t *__restrict __s, int __n, __FILE *__restrict __stream) __asm__ ("" "fgetws_unlocked") 5209: 5209: 5209: __attribute__ ((__warn_unused_result__)); 5209: extern wchar_t *__fgetws_unlocked_chk_warn (wchar_t *__restrict __s, size_t __size, int __n, __FILE *__restrict __stream) __asm__ ("" "__fgetws_unlocked_chk") 5209: 5209: 5209: 5209: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgetws_unlocked called with bigger size than length " "of destination buffer"))) 5209: ; 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) wchar_t * 5209: fgetws_unlocked (wchar_t *__restrict __s, int __n, __FILE *__restrict __stream) 5209: { 5209: if (__builtin_object_size (__s, 2 > 1) != (size_t) -1) 5209: { 5209: if (!__builtin_constant_p (__n) || __n <= 0) 5209: return __fgetws_unlocked_chk (__s, __builtin_object_size (__s, 2 > 1) / sizeof (wchar_t), 5209: __n, __stream); 5209: 5209: if ((size_t) __n > __builtin_object_size (__s, 2 > 1) / sizeof (wchar_t)) 5209: return __fgetws_unlocked_chk_warn (__s, __builtin_object_size (__s, 2 > 1) / sizeof (wchar_t), 5209: __n, __stream); 5209: } 5209: return __fgetws_unlocked_alias (__s, __n, __stream); 5209: } 5209: 5209: 5209: 5209: extern size_t __wcrtomb_chk (char *__restrict __s, wchar_t __wchar, 5209: mbstate_t *__restrict __p, 5209: size_t __buflen) throw () __attribute__ ((__warn_unused_result__)); 5209: extern size_t __wcrtomb_alias (char *__restrict __s, wchar_t __wchar, mbstate_t *__restrict __ps) throw () __asm__ ("" "wcrtomb") 5209: 5209: __attribute__ ((__warn_unused_result__)); 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) size_t 5209: __attribute__ ((__leaf__)) wcrtomb (char *__restrict __s, wchar_t __wchar, mbstate_t *__restrict __ps) throw () 5209: 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: if (__builtin_object_size (__s, 2 > 1) != (size_t) -1 && 16 > __builtin_object_size (__s, 2 > 1)) 5209: return __wcrtomb_chk (__s, __wchar, __ps, __builtin_object_size (__s, 2 > 1)); 5209: return __wcrtomb_alias (__s, __wchar, __ps); 5209: } 5209: 5209: 5209: extern size_t __mbsrtowcs_chk (wchar_t *__restrict __dst, 5209: const char **__restrict __src, 5209: size_t __len, mbstate_t *__restrict __ps, 5209: size_t __dstlen) throw (); 5209: extern size_t __mbsrtowcs_alias (wchar_t *__restrict __dst, const char **__restrict __src, size_t __len, mbstate_t *__restrict __ps) throw () __asm__ ("" "mbsrtowcs") 5209: 5209: 5209: 5209: ; 5209: extern size_t __mbsrtowcs_chk_warn (wchar_t *__restrict __dst, const char **__restrict __src, size_t __len, mbstate_t *__restrict __ps, size_t __dstlen) throw () __asm__ ("" "__mbsrtowcs_chk") 5209: 5209: 5209: 5209: 5209: __attribute__((__warning__ ("mbsrtowcs called with dst buffer smaller than len " "* sizeof (wchar_t)"))) 5209: ; 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 5209: __attribute__ ((__leaf__)) mbsrtowcs (wchar_t *__restrict __dst, const char **__restrict __src, size_t __len, mbstate_t *__restrict __ps) throw () 5209: 5209: { 5209: if (__builtin_object_size (__dst, 2 > 1) != (size_t) -1) 5209: { 5209: if (!__builtin_constant_p (__len)) 5209: return __mbsrtowcs_chk (__dst, __src, __len, __ps, 5209: __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t)); 5209: 5209: if (__len > __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t)) 5209: return __mbsrtowcs_chk_warn (__dst, __src, __len, __ps, 5209: __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t)); 5209: } 5209: return __mbsrtowcs_alias (__dst, __src, __len, __ps); 5209: } 5209: 5209: 5209: extern size_t __wcsrtombs_chk (char *__restrict __dst, 5209: const wchar_t **__restrict __src, 5209: size_t __len, mbstate_t *__restrict __ps, 5209: size_t __dstlen) throw (); 5209: extern size_t __wcsrtombs_alias (char *__restrict __dst, const wchar_t **__restrict __src, size_t __len, mbstate_t *__restrict __ps) throw () __asm__ ("" "wcsrtombs") 5209: 5209: 5209: 5209: ; 5209: extern size_t __wcsrtombs_chk_warn (char *__restrict __dst, const wchar_t **__restrict __src, size_t __len, mbstate_t *__restrict __ps, size_t __dstlen) throw () __asm__ ("" "__wcsrtombs_chk") 5209: 5209: 5209: 5209: 5209: __attribute__((__warning__ ("wcsrtombs called with dst buffer smaller than len"))); 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 5209: __attribute__ ((__leaf__)) wcsrtombs (char *__restrict __dst, const wchar_t **__restrict __src, size_t __len, mbstate_t *__restrict __ps) throw () 5209: 5209: { 5209: if (__builtin_object_size (__dst, 2 > 1) != (size_t) -1) 5209: { 5209: if (!__builtin_constant_p (__len)) 5209: return __wcsrtombs_chk (__dst, __src, __len, __ps, __builtin_object_size (__dst, 2 > 1)); 5209: 5209: if (__len > __builtin_object_size (__dst, 2 > 1)) 5209: return __wcsrtombs_chk_warn (__dst, __src, __len, __ps, __builtin_object_size (__dst, 2 > 1)); 5209: } 5209: return __wcsrtombs_alias (__dst, __src, __len, __ps); 5209: } 5209: 5209: 5209: 5209: extern size_t __mbsnrtowcs_chk (wchar_t *__restrict __dst, 5209: const char **__restrict __src, size_t __nmc, 5209: size_t __len, mbstate_t *__restrict __ps, 5209: size_t __dstlen) throw (); 5209: extern size_t __mbsnrtowcs_alias (wchar_t *__restrict __dst, const char **__restrict __src, size_t __nmc, size_t __len, mbstate_t *__restrict __ps) throw () __asm__ ("" "mbsnrtowcs") 5209: 5209: 5209: 5209: ; 5209: extern size_t __mbsnrtowcs_chk_warn (wchar_t *__restrict __dst, const char **__restrict __src, size_t __nmc, size_t __len, mbstate_t *__restrict __ps, size_t __dstlen) throw () __asm__ ("" "__mbsnrtowcs_chk") 5209: 5209: 5209: 5209: 5209: __attribute__((__warning__ ("mbsnrtowcs called with dst buffer smaller than len " "* sizeof (wchar_t)"))) 5209: ; 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 5209: __attribute__ ((__leaf__)) mbsnrtowcs (wchar_t *__restrict __dst, const char **__restrict __src, size_t __nmc, size_t __len, mbstate_t *__restrict __ps) throw () 5209: 5209: { 5209: if (__builtin_object_size (__dst, 2 > 1) != (size_t) -1) 5209: { 5209: if (!__builtin_constant_p (__len)) 5209: return __mbsnrtowcs_chk (__dst, __src, __nmc, __len, __ps, 5209: __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t)); 5209: 5209: if (__len > __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t)) 5209: return __mbsnrtowcs_chk_warn (__dst, __src, __nmc, __len, __ps, 5209: __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t)); 5209: } 5209: return __mbsnrtowcs_alias (__dst, __src, __nmc, __len, __ps); 5209: } 5209: 5209: 5209: extern size_t __wcsnrtombs_chk (char *__restrict __dst, 5209: const wchar_t **__restrict __src, 5209: size_t __nwc, size_t __len, 5209: mbstate_t *__restrict __ps, size_t __dstlen) 5209: throw (); 5209: extern size_t __wcsnrtombs_alias (char *__restrict __dst, const wchar_t **__restrict __src, size_t __nwc, size_t __len, mbstate_t *__restrict __ps) throw () __asm__ ("" "wcsnrtombs") 5209: 5209: 5209: 5209: ; 5209: extern size_t __wcsnrtombs_chk_warn (char *__restrict __dst, const wchar_t **__restrict __src, size_t __nwc, size_t __len, mbstate_t *__restrict __ps, size_t __dstlen) throw () __asm__ ("" "__wcsnrtombs_chk") 5209: 5209: 5209: 5209: 5209: 5209: __attribute__((__warning__ ("wcsnrtombs called with dst buffer smaller than len"))); 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 5209: __attribute__ ((__leaf__)) wcsnrtombs (char *__restrict __dst, const wchar_t **__restrict __src, size_t __nwc, size_t __len, mbstate_t *__restrict __ps) throw () 5209: 5209: { 5209: if (__builtin_object_size (__dst, 2 > 1) != (size_t) -1) 5209: { 5209: if (!__builtin_constant_p (__len)) 5209: return __wcsnrtombs_chk (__dst, __src, __nwc, __len, __ps, 5209: __builtin_object_size (__dst, 2 > 1)); 5209: 5209: if (__len > __builtin_object_size (__dst, 2 > 1)) 5209: return __wcsnrtombs_chk_warn (__dst, __src, __nwc, __len, __ps, 5209: __builtin_object_size (__dst, 2 > 1)); 5209: } 5209: return __wcsnrtombs_alias (__dst, __src, __nwc, __len, __ps); 5209: } 5209: # 849 "/usr/include/wchar.h" 2 3 4 5209: 5209: 5209: 5209: 5209: 5209: 5209: } 5209: # 45 "/usr/include/c++/10/cwchar" 2 3 5209: # 62 "/usr/include/c++/10/cwchar" 3 5209: namespace std 5209: { 5209: using ::mbstate_t; 5209: } 5209: # 135 "/usr/include/c++/10/cwchar" 3 5209: extern "C++" 5209: { 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: using ::wint_t; 5209: 5209: using ::btowc; 5209: using ::fgetwc; 5209: using ::fgetws; 5209: using ::fputwc; 5209: using ::fputws; 5209: using ::fwide; 5209: using ::fwprintf; 5209: using ::fwscanf; 5209: using ::getwc; 5209: using ::getwchar; 5209: using ::mbrlen; 5209: using ::mbrtowc; 5209: using ::mbsinit; 5209: using ::mbsrtowcs; 5209: using ::putwc; 5209: using ::putwchar; 5209: 5209: using ::swprintf; 5209: 5209: using ::swscanf; 5209: using ::ungetwc; 5209: using ::vfwprintf; 5209: 5209: using ::vfwscanf; 5209: 5209: 5209: using ::vswprintf; 5209: 5209: 5209: using ::vswscanf; 5209: 5209: using ::vwprintf; 5209: 5209: using ::vwscanf; 5209: 5209: using ::wcrtomb; 5209: using ::wcscat; 5209: using ::wcscmp; 5209: using ::wcscoll; 5209: using ::wcscpy; 5209: using ::wcscspn; 5209: using ::wcsftime; 5209: using ::wcslen; 5209: using ::wcsncat; 5209: using ::wcsncmp; 5209: using ::wcsncpy; 5209: using ::wcsrtombs; 5209: using ::wcsspn; 5209: using ::wcstod; 5209: 5209: using ::wcstof; 5209: 5209: using ::wcstok; 5209: using ::wcstol; 5209: using ::wcstoul; 5209: using ::wcsxfrm; 5209: using ::wctob; 5209: using ::wmemcmp; 5209: using ::wmemcpy; 5209: using ::wmemmove; 5209: using ::wmemset; 5209: using ::wprintf; 5209: using ::wscanf; 5209: using ::wcschr; 5209: using ::wcspbrk; 5209: using ::wcsrchr; 5209: using ::wcsstr; 5209: using ::wmemchr; 5209: # 234 "/usr/include/c++/10/cwchar" 3 5209: 5209: } 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: namespace __gnu_cxx 5209: { 5209: 5209: 5209: 5209: 5209: 5209: using ::wcstold; 5209: # 260 "/usr/include/c++/10/cwchar" 3 5209: using ::wcstoll; 5209: using ::wcstoull; 5209: 5209: } 5209: 5209: namespace std 5209: { 5209: using ::__gnu_cxx::wcstold; 5209: using ::__gnu_cxx::wcstoll; 5209: using ::__gnu_cxx::wcstoull; 5209: } 5209: # 280 "/usr/include/c++/10/cwchar" 3 5209: namespace std 5209: { 5209: 5209: using std::wcstof; 5209: 5209: 5209: using std::vfwscanf; 5209: 5209: 5209: using std::vswscanf; 5209: 5209: 5209: using std::vwscanf; 5209: 5209: 5209: 5209: using std::wcstold; 5209: using std::wcstoll; 5209: using std::wcstoull; 5209: 5209: } 5209: # 41 "/usr/include/c++/10/bits/postypes.h" 2 3 5209: # 68 "/usr/include/c++/10/bits/postypes.h" 3 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: # 88 "/usr/include/c++/10/bits/postypes.h" 3 5209: typedef long streamoff; 5209: # 98 "/usr/include/c++/10/bits/postypes.h" 3 5209: typedef ptrdiff_t streamsize; 5209: # 111 "/usr/include/c++/10/bits/postypes.h" 3 5209: template 5209: class fpos 5209: { 5209: private: 5209: streamoff _M_off; 5209: _StateT _M_state; 5209: 5209: public: 5209: 5209: 5209: 5209: 5209: fpos() 5209: : _M_off(0), _M_state() { } 5209: # 133 "/usr/include/c++/10/bits/postypes.h" 3 5209: fpos(streamoff __off) 5209: : _M_off(__off), _M_state() { } 5209: 5209: 5209: fpos(const fpos&) = default; 5209: fpos& operator=(const fpos&) = default; 5209: ~fpos() = default; 5209: 5209: 5209: 5209: operator streamoff() const { return _M_off; } 5209: 5209: 5209: void 5209: state(_StateT __st) 5209: { _M_state = __st; } 5209: 5209: 5209: _StateT 5209: state() const 5209: { return _M_state; } 5209: 5209: 5209: 5209: 5209: 5209: fpos& 5209: operator+=(streamoff __off) 5209: { 5209: _M_off += __off; 5209: return *this; 5209: } 5209: 5209: 5209: 5209: 5209: 5209: fpos& 5209: operator-=(streamoff __off) 5209: { 5209: _M_off -= __off; 5209: return *this; 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: fpos 5209: operator+(streamoff __off) const 5209: { 5209: fpos __pos(*this); 5209: __pos += __off; 5209: return __pos; 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: fpos 5209: operator-(streamoff __off) const 5209: { 5209: fpos __pos(*this); 5209: __pos -= __off; 5209: return __pos; 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: streamoff 5209: operator-(const fpos& __other) const 5209: { return _M_off - __other._M_off; } 5209: }; 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: inline bool 5209: operator==(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs) 5209: { return streamoff(__lhs) == streamoff(__rhs); } 5209: 5209: template 5209: inline bool 5209: operator!=(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs) 5209: { return streamoff(__lhs) != streamoff(__rhs); } 5209: 5209: 5209: 5209: 5209: 5209: typedef fpos streampos; 5209: 5209: typedef fpos wstreampos; 5209: # 245 "/usr/include/c++/10/bits/postypes.h" 3 5209: typedef fpos u16streampos; 5209: 5209: typedef fpos u32streampos; 5209: 5209: 5209: 5209: } 5209: # 41 "/usr/include/c++/10/iosfwd" 2 3 5209: 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: # 74 "/usr/include/c++/10/iosfwd" 3 5209: class ios_base; 5209: 5209: template > 5209: class basic_ios; 5209: 5209: template > 5209: class basic_streambuf; 5209: 5209: template > 5209: class basic_istream; 5209: 5209: template > 5209: class basic_ostream; 5209: 5209: template > 5209: class basic_iostream; 5209: 5209: 5209: namespace __cxx11 { 5209: 5209: template, 5209: typename _Alloc = allocator<_CharT> > 5209: class basic_stringbuf; 5209: 5209: template, 5209: typename _Alloc = allocator<_CharT> > 5209: class basic_istringstream; 5209: 5209: template, 5209: typename _Alloc = allocator<_CharT> > 5209: class basic_ostringstream; 5209: 5209: template, 5209: typename _Alloc = allocator<_CharT> > 5209: class basic_stringstream; 5209: 5209: } 5209: 5209: template > 5209: class basic_filebuf; 5209: 5209: template > 5209: class basic_ifstream; 5209: 5209: template > 5209: class basic_ofstream; 5209: 5209: template > 5209: class basic_fstream; 5209: 5209: template > 5209: class istreambuf_iterator; 5209: 5209: template > 5209: class ostreambuf_iterator; 5209: 5209: 5209: 5209: typedef basic_ios ios; 5209: 5209: 5209: typedef basic_streambuf streambuf; 5209: 5209: 5209: typedef basic_istream istream; 5209: 5209: 5209: typedef basic_ostream ostream; 5209: 5209: 5209: typedef basic_iostream iostream; 5209: 5209: 5209: typedef basic_stringbuf stringbuf; 5209: 5209: 5209: typedef basic_istringstream istringstream; 5209: 5209: 5209: typedef basic_ostringstream ostringstream; 5209: 5209: 5209: typedef basic_stringstream stringstream; 5209: 5209: 5209: typedef basic_filebuf filebuf; 5209: 5209: 5209: typedef basic_ifstream ifstream; 5209: 5209: 5209: typedef basic_ofstream ofstream; 5209: 5209: 5209: typedef basic_fstream fstream; 5209: 5209: 5209: 5209: typedef basic_ios wios; 5209: 5209: 5209: typedef basic_streambuf wstreambuf; 5209: 5209: 5209: typedef basic_istream wistream; 5209: 5209: 5209: typedef basic_ostream wostream; 5209: 5209: 5209: typedef basic_iostream wiostream; 5209: 5209: 5209: typedef basic_stringbuf wstringbuf; 5209: 5209: 5209: typedef basic_istringstream wistringstream; 5209: 5209: 5209: typedef basic_ostringstream wostringstream; 5209: 5209: 5209: typedef basic_stringstream wstringstream; 5209: 5209: 5209: typedef basic_filebuf wfilebuf; 5209: 5209: 5209: typedef basic_ifstream wifstream; 5209: 5209: 5209: typedef basic_ofstream wofstream; 5209: 5209: 5209: typedef basic_fstream wfstream; 5209: 5209: 5209: 5209: 5209: } 5209: # 39 "/usr/include/c++/10/ios" 2 3 5209: # 1 "/usr/include/c++/10/exception" 1 3 5209: # 33 "/usr/include/c++/10/exception" 3 5209: 5209: # 34 "/usr/include/c++/10/exception" 3 5209: 5209: #pragma GCC visibility push(default) 5209: 5209: 5209: # 1 "/usr/include/c++/10/bits/exception.h" 1 3 5209: # 34 "/usr/include/c++/10/bits/exception.h" 3 5209: 5209: # 35 "/usr/include/c++/10/bits/exception.h" 3 5209: 5209: #pragma GCC visibility push(default) 5209: 5209: 5209: 5209: extern "C++" { 5209: 5209: namespace std 5209: { 5209: # 60 "/usr/include/c++/10/bits/exception.h" 3 5209: class exception 5209: { 5209: public: 5209: exception() noexcept { } 5209: virtual ~exception() noexcept; 5209: 5209: exception(const exception&) = default; 5209: exception& operator=(const exception&) = default; 5209: exception(exception&&) = default; 5209: exception& operator=(exception&&) = default; 5209: 5209: 5209: 5209: 5209: virtual const char* 5209: what() const noexcept; 5209: }; 5209: 5209: } 5209: 5209: } 5209: 5209: #pragma GCC visibility pop 5209: # 39 "/usr/include/c++/10/exception" 2 3 5209: 5209: extern "C++" { 5209: 5209: namespace std 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: class bad_exception : public exception 5209: { 5209: public: 5209: bad_exception() noexcept { } 5209: 5209: 5209: 5209: virtual ~bad_exception() noexcept; 5209: 5209: 5209: virtual const char* 5209: what() const noexcept; 5209: }; 5209: 5209: 5209: typedef void (*terminate_handler) (); 5209: 5209: 5209: typedef void (*unexpected_handler) (); 5209: 5209: 5209: terminate_handler set_terminate(terminate_handler) noexcept; 5209: 5209: 5209: 5209: terminate_handler get_terminate() noexcept; 5209: 5209: 5209: 5209: 5209: void terminate() noexcept __attribute__ ((__noreturn__)); 5209: 5209: 5209: unexpected_handler set_unexpected(unexpected_handler) noexcept; 5209: 5209: 5209: 5209: unexpected_handler get_unexpected() noexcept; 5209: 5209: 5209: 5209: 5209: void unexpected() __attribute__ ((__noreturn__)); 5209: # 105 "/usr/include/c++/10/exception" 3 5209: 5209: bool uncaught_exception() noexcept __attribute__ ((__pure__)); 5209: 5209: 5209: 5209: 5209: int uncaught_exceptions() noexcept __attribute__ ((__pure__)); 5209: 5209: 5209: 5209: } 5209: 5209: namespace __gnu_cxx 5209: { 5209: 5209: # 137 "/usr/include/c++/10/exception" 3 5209: void __verbose_terminate_handler(); 5209: 5209: 5209: } 5209: 5209: } 5209: 5209: #pragma GCC visibility pop 5209: 5209: 5209: # 1 "/usr/include/c++/10/bits/exception_ptr.h" 1 3 5209: # 34 "/usr/include/c++/10/bits/exception_ptr.h" 3 5209: #pragma GCC visibility push(default) 5209: 5209: 5209: # 1 "/usr/include/c++/10/bits/exception_defines.h" 1 3 5209: # 38 "/usr/include/c++/10/bits/exception_ptr.h" 2 3 5209: # 1 "/usr/include/c++/10/bits/cxxabi_init_exception.h" 1 3 5209: # 34 "/usr/include/c++/10/bits/cxxabi_init_exception.h" 3 5209: 5209: # 35 "/usr/include/c++/10/bits/cxxabi_init_exception.h" 3 5209: 5209: #pragma GCC visibility push(default) 5209: 5209: # 1 "/usr/lib/gcc/aarch64-linux-gnu/10/include/stddef.h" 1 3 4 5209: # 143 "/usr/lib/gcc/aarch64-linux-gnu/10/include/stddef.h" 3 4 5209: typedef long int ptrdiff_t; 5209: # 415 "/usr/lib/gcc/aarch64-linux-gnu/10/include/stddef.h" 3 4 5209: typedef struct { 5209: long long __max_align_ll __attribute__((__aligned__(__alignof__(long long)))); 5209: long double __max_align_ld __attribute__((__aligned__(__alignof__(long double)))); 5209: # 426 "/usr/lib/gcc/aarch64-linux-gnu/10/include/stddef.h" 3 4 5209: } max_align_t; 5209: 5209: 5209: 5209: 5209: 5209: 5209: typedef decltype(nullptr) nullptr_t; 5209: # 39 "/usr/include/c++/10/bits/cxxabi_init_exception.h" 2 3 5209: # 50 "/usr/include/c++/10/bits/cxxabi_init_exception.h" 3 5209: namespace std 5209: { 5209: class type_info; 5209: } 5209: 5209: namespace __cxxabiv1 5209: { 5209: struct __cxa_refcounted_exception; 5209: 5209: extern "C" 5209: { 5209: 5209: void* 5209: __cxa_allocate_exception(size_t) noexcept; 5209: 5209: void 5209: __cxa_free_exception(void*) noexcept; 5209: 5209: 5209: __cxa_refcounted_exception* 5209: __cxa_init_primary_exception(void *object, std::type_info *tinfo, 5209: void ( *dest) (void *)) noexcept; 5209: 5209: } 5209: } 5209: 5209: 5209: 5209: #pragma GCC visibility pop 5209: # 39 "/usr/include/c++/10/bits/exception_ptr.h" 2 3 5209: # 1 "/usr/include/c++/10/typeinfo" 1 3 5209: # 32 "/usr/include/c++/10/typeinfo" 3 5209: 5209: # 33 "/usr/include/c++/10/typeinfo" 3 5209: 5209: 5209: 5209: # 1 "/usr/include/c++/10/bits/hash_bytes.h" 1 3 5209: # 33 "/usr/include/c++/10/bits/hash_bytes.h" 3 5209: 5209: # 34 "/usr/include/c++/10/bits/hash_bytes.h" 3 5209: 5209: 5209: 5209: namespace std 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: size_t 5209: _Hash_bytes(const void* __ptr, size_t __len, size_t __seed); 5209: 5209: 5209: 5209: 5209: 5209: size_t 5209: _Fnv_hash_bytes(const void* __ptr, size_t __len, size_t __seed); 5209: 5209: 5209: } 5209: # 37 "/usr/include/c++/10/typeinfo" 2 3 5209: 5209: 5209: #pragma GCC visibility push(default) 5209: 5209: extern "C++" { 5209: 5209: namespace __cxxabiv1 5209: { 5209: class __class_type_info; 5209: } 5209: # 80 "/usr/include/c++/10/typeinfo" 3 5209: namespace std 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: class type_info 5209: { 5209: public: 5209: 5209: 5209: 5209: 5209: virtual ~type_info(); 5209: 5209: 5209: 5209: const char* name() const noexcept 5209: { return __name[0] == '*' ? __name + 1 : __name; } 5209: # 115 "/usr/include/c++/10/typeinfo" 3 5209: bool before(const type_info& __arg) const noexcept 5209: { return (__name[0] == '*' && __arg.__name[0] == '*') 5209: ? __name < __arg.__name 5209: : __builtin_strcmp (__name, __arg.__name) < 0; } 5209: 5209: bool operator==(const type_info& __arg) const noexcept 5209: { 5209: return ((__name == __arg.__name) 5209: || (__name[0] != '*' && 5209: __builtin_strcmp (__name, __arg.__name) == 0)); 5209: } 5209: # 136 "/usr/include/c++/10/typeinfo" 3 5209: bool operator!=(const type_info& __arg) const noexcept 5209: { return !operator==(__arg); } 5209: 5209: 5209: size_t hash_code() const noexcept 5209: { 5209: 5209: return _Hash_bytes(name(), __builtin_strlen(name()), 5209: static_cast(0xc70f6907UL)); 5209: 5209: 5209: 5209: } 5209: 5209: 5209: 5209: virtual bool __is_pointer_p() const; 5209: 5209: 5209: virtual bool __is_function_p() const; 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: virtual bool __do_catch(const type_info *__thr_type, void **__thr_obj, 5209: unsigned __outer) const; 5209: 5209: 5209: virtual bool __do_upcast(const __cxxabiv1::__class_type_info *__target, 5209: void **__obj_ptr) const; 5209: 5209: protected: 5209: const char *__name; 5209: 5209: explicit type_info(const char *__n): __name(__n) { } 5209: 5209: private: 5209: 5209: type_info& operator=(const type_info&); 5209: type_info(const type_info&); 5209: }; 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: class bad_cast : public exception 5209: { 5209: public: 5209: bad_cast() noexcept { } 5209: 5209: 5209: 5209: virtual ~bad_cast() noexcept; 5209: 5209: 5209: virtual const char* what() const noexcept; 5209: }; 5209: 5209: 5209: 5209: 5209: 5209: class bad_typeid : public exception 5209: { 5209: public: 5209: bad_typeid () noexcept { } 5209: 5209: 5209: 5209: virtual ~bad_typeid() noexcept; 5209: 5209: 5209: virtual const char* what() const noexcept; 5209: }; 5209: } 5209: 5209: } 5209: 5209: #pragma GCC visibility pop 5209: # 40 "/usr/include/c++/10/bits/exception_ptr.h" 2 3 5209: # 1 "/usr/include/c++/10/new" 1 3 5209: # 38 "/usr/include/c++/10/new" 3 5209: 5209: # 39 "/usr/include/c++/10/new" 3 5209: 5209: 5209: # 1 "/usr/include/c++/10/exception" 1 3 5209: # 42 "/usr/include/c++/10/new" 2 3 5209: 5209: #pragma GCC visibility push(default) 5209: 5209: extern "C++" { 5209: 5209: namespace std 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: class bad_alloc : public exception 5209: { 5209: public: 5209: bad_alloc() throw() { } 5209: 5209: 5209: bad_alloc(const bad_alloc&) = default; 5209: bad_alloc& operator=(const bad_alloc&) = default; 5209: 5209: 5209: 5209: 5209: virtual ~bad_alloc() throw(); 5209: 5209: 5209: virtual const char* what() const throw(); 5209: }; 5209: 5209: 5209: class bad_array_new_length : public bad_alloc 5209: { 5209: public: 5209: bad_array_new_length() throw() { } 5209: 5209: 5209: 5209: virtual ~bad_array_new_length() throw(); 5209: 5209: 5209: virtual const char* what() const throw(); 5209: }; 5209: 5209: 5209: 5209: 5209: 5209: 5209: struct nothrow_t 5209: { 5209: 5209: explicit nothrow_t() = default; 5209: 5209: }; 5209: 5209: extern const nothrow_t nothrow; 5209: 5209: 5209: 5209: typedef void (*new_handler)(); 5209: 5209: 5209: 5209: new_handler set_new_handler(new_handler) throw(); 5209: 5209: 5209: 5209: new_handler get_new_handler() noexcept; 5209: 5209: } 5209: # 126 "/usr/include/c++/10/new" 3 5209: void* operator new(std::size_t) 5209: __attribute__((__externally_visible__)); 5209: void* operator new[](std::size_t) 5209: __attribute__((__externally_visible__)); 5209: void operator delete(void*) noexcept 5209: __attribute__((__externally_visible__)); 5209: void operator delete[](void*) noexcept 5209: __attribute__((__externally_visible__)); 5209: 5209: 5209: 5209: 5209: 5209: 5209: void* operator new(std::size_t, const std::nothrow_t&) noexcept 5209: __attribute__((__externally_visible__, __malloc__)); 5209: void* operator new[](std::size_t, const std::nothrow_t&) noexcept 5209: __attribute__((__externally_visible__, __malloc__)); 5209: void operator delete(void*, const std::nothrow_t&) noexcept 5209: __attribute__((__externally_visible__)); 5209: void operator delete[](void*, const std::nothrow_t&) noexcept 5209: __attribute__((__externally_visible__)); 5209: # 174 "/usr/include/c++/10/new" 3 5209: inline void* operator new(std::size_t, void* __p) noexcept 5209: { return __p; } 5209: inline void* operator new[](std::size_t, void* __p) noexcept 5209: { return __p; } 5209: 5209: 5209: inline void operator delete (void*, void*) noexcept { } 5209: inline void operator delete[](void*, void*) noexcept { } 5209: 5209: } 5209: # 230 "/usr/include/c++/10/new" 3 5209: #pragma GCC visibility pop 5209: # 41 "/usr/include/c++/10/bits/exception_ptr.h" 2 3 5209: 5209: extern "C++" { 5209: 5209: namespace std 5209: { 5209: class type_info; 5209: 5209: 5209: 5209: 5209: 5209: 5209: namespace __exception_ptr 5209: { 5209: class exception_ptr; 5209: } 5209: 5209: using __exception_ptr::exception_ptr; 5209: 5209: 5209: 5209: 5209: 5209: exception_ptr current_exception() noexcept; 5209: 5209: template 5209: exception_ptr make_exception_ptr(_Ex) noexcept; 5209: 5209: 5209: void rethrow_exception(exception_ptr) __attribute__ ((__noreturn__)); 5209: 5209: namespace __exception_ptr 5209: { 5209: using std::rethrow_exception; 5209: 5209: 5209: 5209: 5209: 5209: class exception_ptr 5209: { 5209: void* _M_exception_object; 5209: 5209: explicit exception_ptr(void* __e) noexcept; 5209: 5209: void _M_addref() noexcept; 5209: void _M_release() noexcept; 5209: 5209: void *_M_get() const noexcept __attribute__ ((__pure__)); 5209: 5209: friend exception_ptr std::current_exception() noexcept; 5209: friend void std::rethrow_exception(exception_ptr); 5209: template 5209: friend exception_ptr std::make_exception_ptr(_Ex) noexcept; 5209: 5209: public: 5209: exception_ptr() noexcept; 5209: 5209: exception_ptr(const exception_ptr&) noexcept; 5209: 5209: 5209: exception_ptr(nullptr_t) noexcept 5209: : _M_exception_object(0) 5209: { } 5209: 5209: exception_ptr(exception_ptr&& __o) noexcept 5209: : _M_exception_object(__o._M_exception_object) 5209: { __o._M_exception_object = 0; } 5209: # 118 "/usr/include/c++/10/bits/exception_ptr.h" 3 5209: exception_ptr& 5209: operator=(const exception_ptr&) noexcept; 5209: 5209: 5209: exception_ptr& 5209: operator=(exception_ptr&& __o) noexcept 5209: { 5209: exception_ptr(static_cast(__o)).swap(*this); 5209: return *this; 5209: } 5209: 5209: 5209: ~exception_ptr() noexcept; 5209: 5209: void 5209: swap(exception_ptr&) noexcept; 5209: # 145 "/usr/include/c++/10/bits/exception_ptr.h" 3 5209: explicit operator bool() const 5209: { return _M_exception_object; } 5209: 5209: 5209: friend bool 5209: operator==(const exception_ptr&, const exception_ptr&) 5209: noexcept __attribute__ ((__pure__)); 5209: 5209: const class std::type_info* 5209: __cxa_exception_type() const noexcept 5209: __attribute__ ((__pure__)); 5209: }; 5209: 5209: 5209: 5209: bool 5209: operator==(const exception_ptr&, const exception_ptr&) 5209: noexcept __attribute__ ((__pure__)); 5209: 5209: bool 5209: operator!=(const exception_ptr&, const exception_ptr&) 5209: noexcept __attribute__ ((__pure__)); 5209: 5209: inline void 5209: swap(exception_ptr& __lhs, exception_ptr& __rhs) 5209: { __lhs.swap(__rhs); } 5209: 5209: 5209: 5209: 5209: template 5209: inline void 5209: __dest_thunk(void* __x) 5209: { static_cast<_Ex*>(__x)->~_Ex(); } 5209: 5209: 5209: } 5209: 5209: 5209: template 5209: exception_ptr 5209: make_exception_ptr(_Ex __ex) noexcept 5209: { 5209: 5209: void* __e = __cxxabiv1::__cxa_allocate_exception(sizeof(_Ex)); 5209: (void) __cxxabiv1::__cxa_init_primary_exception( 5209: __e, const_cast(&typeid(__ex)), 5209: __exception_ptr::__dest_thunk<_Ex>); 5209: try 5209: { 5209: ::new (__e) _Ex(__ex); 5209: return exception_ptr(__e); 5209: } 5209: catch(...) 5209: { 5209: __cxxabiv1::__cxa_free_exception(__e); 5209: return current_exception(); 5209: } 5209: # 215 "/usr/include/c++/10/bits/exception_ptr.h" 3 5209: } 5209: 5209: 5209: } 5209: 5209: } 5209: 5209: #pragma GCC visibility pop 5209: # 148 "/usr/include/c++/10/exception" 2 3 5209: # 1 "/usr/include/c++/10/bits/nested_exception.h" 1 3 5209: # 33 "/usr/include/c++/10/bits/nested_exception.h" 3 5209: #pragma GCC visibility push(default) 5209: 5209: 5209: 5209: 5209: 5209: 5209: # 1 "/usr/include/c++/10/bits/move.h" 1 3 5209: # 38 "/usr/include/c++/10/bits/move.h" 3 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: inline constexpr _Tp* 5209: __addressof(_Tp& __r) noexcept 5209: { return __builtin_addressof(__r); } 5209: 5209: 5209: 5209: 5209: } 5209: 5209: # 1 "/usr/include/c++/10/type_traits" 1 3 5209: # 32 "/usr/include/c++/10/type_traits" 3 5209: 5209: # 33 "/usr/include/c++/10/type_traits" 3 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: # 56 "/usr/include/c++/10/type_traits" 3 5209: template 5209: struct integral_constant 5209: { 5209: static constexpr _Tp value = __v; 5209: typedef _Tp value_type; 5209: typedef integral_constant<_Tp, __v> type; 5209: constexpr operator value_type() const noexcept { return value; } 5209: 5209: 5209: 5209: 5209: 5209: 5209: }; 5209: 5209: template 5209: constexpr _Tp integral_constant<_Tp, __v>::value; 5209: 5209: 5209: typedef integral_constant true_type; 5209: 5209: 5209: typedef integral_constant false_type; 5209: 5209: template 5209: using __bool_constant = integral_constant; 5209: # 91 "/usr/include/c++/10/type_traits" 3 5209: template 5209: struct conditional; 5209: 5209: template 5209: struct __type_identity 5209: { using type = _Type; }; 5209: 5209: template 5209: using __type_identity_t = typename __type_identity<_Tp>::type; 5209: 5209: template 5209: struct __or_; 5209: 5209: template<> 5209: struct __or_<> 5209: : public false_type 5209: { }; 5209: 5209: template 5209: struct __or_<_B1> 5209: : public _B1 5209: { }; 5209: 5209: template 5209: struct __or_<_B1, _B2> 5209: : public conditional<_B1::value, _B1, _B2>::type 5209: { }; 5209: 5209: template 5209: struct __or_<_B1, _B2, _B3, _Bn...> 5209: : public conditional<_B1::value, _B1, __or_<_B2, _B3, _Bn...>>::type 5209: { }; 5209: 5209: template 5209: struct __and_; 5209: 5209: template<> 5209: struct __and_<> 5209: : public true_type 5209: { }; 5209: 5209: template 5209: struct __and_<_B1> 5209: : public _B1 5209: { }; 5209: 5209: template 5209: struct __and_<_B1, _B2> 5209: : public conditional<_B1::value, _B2, _B1>::type 5209: { }; 5209: 5209: template 5209: struct __and_<_B1, _B2, _B3, _Bn...> 5209: : public conditional<_B1::value, __and_<_B2, _B3, _Bn...>, _B1>::type 5209: { }; 5209: 5209: template 5209: struct __not_ 5209: : public __bool_constant 5209: { }; 5209: # 188 "/usr/include/c++/10/type_traits" 3 5209: template 5209: struct is_reference; 5209: template 5209: struct is_function; 5209: template 5209: struct is_void; 5209: template 5209: struct __is_array_unknown_bounds; 5209: 5209: 5209: 5209: 5209: template 5209: constexpr true_type __is_complete_or_unbounded(__type_identity<_T>) 5209: { return {}; } 5209: 5209: template 5209: constexpr typename __or_< 5209: is_reference<_NestedType>, 5209: is_function<_NestedType>, 5209: is_void<_NestedType>, 5209: __is_array_unknown_bounds<_NestedType> 5209: >::type __is_complete_or_unbounded(_TypeIdentity) 5209: { return {}; } 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: struct __success_type 5209: { typedef _Tp type; }; 5209: 5209: struct __failure_type 5209: { }; 5209: 5209: template 5209: struct remove_cv; 5209: 5209: 5209: template 5209: using __remove_cv_t = typename remove_cv<_Tp>::type; 5209: 5209: template 5209: struct is_const; 5209: 5209: 5209: 5209: template 5209: struct __is_void_helper 5209: : public false_type { }; 5209: 5209: template<> 5209: struct __is_void_helper 5209: : public true_type { }; 5209: 5209: 5209: template 5209: struct is_void 5209: : public __is_void_helper<__remove_cv_t<_Tp>>::type 5209: { }; 5209: 5209: template 5209: struct __is_integral_helper 5209: : public false_type { }; 5209: 5209: template<> 5209: struct __is_integral_helper 5209: : public true_type { }; 5209: 5209: template<> 5209: struct __is_integral_helper 5209: : public true_type { }; 5209: 5209: template<> 5209: struct __is_integral_helper 5209: : public true_type { }; 5209: 5209: template<> 5209: struct __is_integral_helper 5209: : public true_type { }; 5209: 5209: 5209: template<> 5209: struct __is_integral_helper 5209: : public true_type { }; 5209: # 284 "/usr/include/c++/10/type_traits" 3 5209: template<> 5209: struct __is_integral_helper 5209: : public true_type { }; 5209: 5209: template<> 5209: struct __is_integral_helper 5209: : public true_type { }; 5209: 5209: template<> 5209: struct __is_integral_helper 5209: : public true_type { }; 5209: 5209: template<> 5209: struct __is_integral_helper 5209: : public true_type { }; 5209: 5209: template<> 5209: struct __is_integral_helper 5209: : public true_type { }; 5209: 5209: template<> 5209: struct __is_integral_helper 5209: : public true_type { }; 5209: 5209: template<> 5209: struct __is_integral_helper 5209: : public true_type { }; 5209: 5209: template<> 5209: struct __is_integral_helper 5209: : public true_type { }; 5209: 5209: template<> 5209: struct __is_integral_helper 5209: : public true_type { }; 5209: 5209: template<> 5209: struct __is_integral_helper 5209: : public true_type { }; 5209: 5209: 5209: 5209: 5209: template<> 5209: struct __is_integral_helper<__int128> 5209: : public true_type { }; 5209: 5209: template<> 5209: struct __is_integral_helper 5209: : public true_type { }; 5209: # 364 "/usr/include/c++/10/type_traits" 3 5209: template 5209: struct is_integral 5209: : public __is_integral_helper<__remove_cv_t<_Tp>>::type 5209: { }; 5209: 5209: template 5209: struct __is_floating_point_helper 5209: : public false_type { }; 5209: 5209: template<> 5209: struct __is_floating_point_helper 5209: : public true_type { }; 5209: 5209: template<> 5209: struct __is_floating_point_helper 5209: : public true_type { }; 5209: 5209: template<> 5209: struct __is_floating_point_helper 5209: : public true_type { }; 5209: # 392 "/usr/include/c++/10/type_traits" 3 5209: template 5209: struct is_floating_point 5209: : public __is_floating_point_helper<__remove_cv_t<_Tp>>::type 5209: { }; 5209: 5209: 5209: template 5209: struct is_array 5209: : public false_type { }; 5209: 5209: template 5209: struct is_array<_Tp[_Size]> 5209: : public true_type { }; 5209: 5209: template 5209: struct is_array<_Tp[]> 5209: : public true_type { }; 5209: 5209: template 5209: struct __is_pointer_helper 5209: : public false_type { }; 5209: 5209: template 5209: struct __is_pointer_helper<_Tp*> 5209: : public true_type { }; 5209: 5209: 5209: template 5209: struct is_pointer 5209: : public __is_pointer_helper<__remove_cv_t<_Tp>>::type 5209: { }; 5209: 5209: 5209: template 5209: struct is_lvalue_reference 5209: : public false_type { }; 5209: 5209: template 5209: struct is_lvalue_reference<_Tp&> 5209: : public true_type { }; 5209: 5209: 5209: template 5209: struct is_rvalue_reference 5209: : public false_type { }; 5209: 5209: template 5209: struct is_rvalue_reference<_Tp&&> 5209: : public true_type { }; 5209: 5209: template 5209: struct __is_member_object_pointer_helper 5209: : public false_type { }; 5209: 5209: template 5209: struct __is_member_object_pointer_helper<_Tp _Cp::*> 5209: : public __not_>::type { }; 5209: 5209: 5209: template 5209: struct is_member_object_pointer 5209: : public __is_member_object_pointer_helper<__remove_cv_t<_Tp>>::type 5209: { }; 5209: 5209: template 5209: struct __is_member_function_pointer_helper 5209: : public false_type { }; 5209: 5209: template 5209: struct __is_member_function_pointer_helper<_Tp _Cp::*> 5209: : public is_function<_Tp>::type { }; 5209: 5209: 5209: template 5209: struct is_member_function_pointer 5209: : public __is_member_function_pointer_helper<__remove_cv_t<_Tp>>::type 5209: { }; 5209: 5209: 5209: template 5209: struct is_enum 5209: : public integral_constant 5209: { }; 5209: 5209: 5209: template 5209: struct is_union 5209: : public integral_constant 5209: { }; 5209: 5209: 5209: template 5209: struct is_class 5209: : public integral_constant 5209: { }; 5209: 5209: 5209: template 5209: struct is_function 5209: : public __bool_constant::value> { }; 5209: 5209: template 5209: struct is_function<_Tp&> 5209: : public false_type { }; 5209: 5209: template 5209: struct is_function<_Tp&&> 5209: : public false_type { }; 5209: 5209: 5209: 5209: template 5209: struct __is_null_pointer_helper 5209: : public false_type { }; 5209: 5209: template<> 5209: struct __is_null_pointer_helper 5209: : public true_type { }; 5209: 5209: 5209: template 5209: struct is_null_pointer 5209: : public __is_null_pointer_helper<__remove_cv_t<_Tp>>::type 5209: { }; 5209: 5209: 5209: template 5209: struct __is_nullptr_t 5209: : public is_null_pointer<_Tp> 5209: { } __attribute__ ((__deprecated__)); 5209: 5209: 5209: 5209: 5209: template 5209: struct is_reference 5209: : public __or_, 5209: is_rvalue_reference<_Tp>>::type 5209: { }; 5209: 5209: 5209: template 5209: struct is_arithmetic 5209: : public __or_, is_floating_point<_Tp>>::type 5209: { }; 5209: 5209: 5209: template 5209: struct is_fundamental 5209: : public __or_, is_void<_Tp>, 5209: is_null_pointer<_Tp>>::type 5209: { }; 5209: 5209: 5209: template 5209: struct is_object 5209: : public __not_<__or_, is_reference<_Tp>, 5209: is_void<_Tp>>>::type 5209: { }; 5209: 5209: template 5209: struct is_member_pointer; 5209: 5209: 5209: template 5209: struct is_scalar 5209: : public __or_, is_enum<_Tp>, is_pointer<_Tp>, 5209: is_member_pointer<_Tp>, is_null_pointer<_Tp>>::type 5209: { }; 5209: 5209: 5209: template 5209: struct is_compound 5209: : public __not_>::type { }; 5209: 5209: template 5209: struct __is_member_pointer_helper 5209: : public false_type { }; 5209: 5209: template 5209: struct __is_member_pointer_helper<_Tp _Cp::*> 5209: : public true_type { }; 5209: 5209: 5209: template 5209: struct is_member_pointer 5209: : public __is_member_pointer_helper<__remove_cv_t<_Tp>>::type 5209: { }; 5209: 5209: template 5209: struct is_same; 5209: 5209: template 5209: using __is_one_of = __or_...>; 5209: 5209: 5209: template 5209: using __is_signed_integer = __is_one_of<__remove_cv_t<_Tp>, 5209: signed char, signed short, signed int, signed long, 5209: signed long long 5209: 5209: , signed __int128 5209: # 604 "/usr/include/c++/10/type_traits" 3 5209: >; 5209: 5209: 5209: template 5209: using __is_unsigned_integer = __is_one_of<__remove_cv_t<_Tp>, 5209: unsigned char, unsigned short, unsigned int, unsigned long, 5209: unsigned long long 5209: 5209: , unsigned __int128 5209: # 623 "/usr/include/c++/10/type_traits" 3 5209: >; 5209: 5209: 5209: 5209: template using __void_t = void; 5209: 5209: 5209: 5209: template 5209: struct __is_referenceable 5209: : public false_type 5209: { }; 5209: 5209: template 5209: struct __is_referenceable<_Tp, __void_t<_Tp&>> 5209: : public true_type 5209: { }; 5209: 5209: 5209: 5209: 5209: template 5209: struct is_const 5209: : public false_type { }; 5209: 5209: template 5209: struct is_const<_Tp const> 5209: : public true_type { }; 5209: 5209: 5209: template 5209: struct is_volatile 5209: : public false_type { }; 5209: 5209: template 5209: struct is_volatile<_Tp volatile> 5209: : public true_type { }; 5209: 5209: 5209: template 5209: struct is_trivial 5209: : public integral_constant 5209: { 5209: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 5209: "template argument must be a complete class or an unbounded array"); 5209: }; 5209: 5209: 5209: template 5209: struct is_trivially_copyable 5209: : public integral_constant 5209: { 5209: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 5209: "template argument must be a complete class or an unbounded array"); 5209: }; 5209: 5209: 5209: template 5209: struct is_standard_layout 5209: : public integral_constant 5209: { 5209: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 5209: "template argument must be a complete class or an unbounded array"); 5209: }; 5209: 5209: 5209: 5209: template 5209: struct is_pod 5209: : public integral_constant 5209: { 5209: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 5209: "template argument must be a complete class or an unbounded array"); 5209: }; 5209: 5209: 5209: template 5209: struct is_literal_type 5209: : public integral_constant 5209: { 5209: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 5209: "template argument must be a complete class or an unbounded array"); 5209: }; 5209: 5209: 5209: template 5209: struct is_empty 5209: : public integral_constant 5209: { }; 5209: 5209: 5209: template 5209: struct is_polymorphic 5209: : public integral_constant 5209: { }; 5209: # 729 "/usr/include/c++/10/type_traits" 3 5209: template 5209: struct is_abstract 5209: : public integral_constant 5209: { }; 5209: 5209: template::value> 5209: struct __is_signed_helper 5209: : public false_type { }; 5209: 5209: template 5209: struct __is_signed_helper<_Tp, true> 5209: : public integral_constant 5209: { }; 5209: 5209: 5209: template 5209: struct is_signed 5209: : public __is_signed_helper<_Tp>::type 5209: { }; 5209: 5209: 5209: template 5209: struct is_unsigned 5209: : public __and_, __not_>> 5209: { }; 5209: # 764 "/usr/include/c++/10/type_traits" 3 5209: template 5209: _Up 5209: __declval(int); 5209: 5209: template 5209: _Tp 5209: __declval(long); 5209: 5209: template 5209: auto declval() noexcept -> decltype(__declval<_Tp>(0)); 5209: 5209: template 5209: struct extent; 5209: 5209: template 5209: struct remove_all_extents; 5209: 5209: template 5209: struct __is_array_known_bounds 5209: : public integral_constant::value > 0)> 5209: { }; 5209: 5209: template 5209: struct __is_array_unknown_bounds 5209: : public __and_, __not_>> 5209: { }; 5209: 5209: 5209: 5209: 5209: 5209: 5209: struct __do_is_destructible_impl 5209: { 5209: template().~_Tp())> 5209: static true_type __test(int); 5209: 5209: template 5209: static false_type __test(...); 5209: }; 5209: 5209: template 5209: struct __is_destructible_impl 5209: : public __do_is_destructible_impl 5209: { 5209: typedef decltype(__test<_Tp>(0)) type; 5209: }; 5209: 5209: template, 5209: __is_array_unknown_bounds<_Tp>, 5209: is_function<_Tp>>::value, 5209: bool = __or_, is_scalar<_Tp>>::value> 5209: struct __is_destructible_safe; 5209: 5209: template 5209: struct __is_destructible_safe<_Tp, false, false> 5209: : public __is_destructible_impl::type>::type 5209: { }; 5209: 5209: template 5209: struct __is_destructible_safe<_Tp, true, false> 5209: : public false_type { }; 5209: 5209: template 5209: struct __is_destructible_safe<_Tp, false, true> 5209: : public true_type { }; 5209: 5209: 5209: template 5209: struct is_destructible 5209: : public __is_destructible_safe<_Tp>::type 5209: { 5209: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 5209: "template argument must be a complete class or an unbounded array"); 5209: }; 5209: 5209: 5209: 5209: 5209: 5209: struct __do_is_nt_destructible_impl 5209: { 5209: template 5209: static __bool_constant().~_Tp())> 5209: __test(int); 5209: 5209: template 5209: static false_type __test(...); 5209: }; 5209: 5209: template 5209: struct __is_nt_destructible_impl 5209: : public __do_is_nt_destructible_impl 5209: { 5209: typedef decltype(__test<_Tp>(0)) type; 5209: }; 5209: 5209: template, 5209: __is_array_unknown_bounds<_Tp>, 5209: is_function<_Tp>>::value, 5209: bool = __or_, is_scalar<_Tp>>::value> 5209: struct __is_nt_destructible_safe; 5209: 5209: template 5209: struct __is_nt_destructible_safe<_Tp, false, false> 5209: : public __is_nt_destructible_impl::type>::type 5209: { }; 5209: 5209: template 5209: struct __is_nt_destructible_safe<_Tp, true, false> 5209: : public false_type { }; 5209: 5209: template 5209: struct __is_nt_destructible_safe<_Tp, false, true> 5209: : public true_type { }; 5209: 5209: 5209: template 5209: struct is_nothrow_destructible 5209: : public __is_nt_destructible_safe<_Tp>::type 5209: { 5209: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 5209: "template argument must be a complete class or an unbounded array"); 5209: }; 5209: 5209: template 5209: struct __is_constructible_impl 5209: : public __bool_constant<__is_constructible(_Tp, _Args...)> 5209: { }; 5209: 5209: 5209: template 5209: struct is_constructible 5209: : public __is_constructible_impl<_Tp, _Args...> 5209: { 5209: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 5209: "template argument must be a complete class or an unbounded array"); 5209: }; 5209: 5209: 5209: template 5209: struct is_default_constructible 5209: : public __is_constructible_impl<_Tp>::type 5209: { 5209: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 5209: "template argument must be a complete class or an unbounded array"); 5209: }; 5209: 5209: template::value> 5209: struct __is_copy_constructible_impl; 5209: 5209: template 5209: struct __is_copy_constructible_impl<_Tp, false> 5209: : public false_type { }; 5209: 5209: template 5209: struct __is_copy_constructible_impl<_Tp, true> 5209: : public __is_constructible_impl<_Tp, const _Tp&> 5209: { }; 5209: 5209: 5209: template 5209: struct is_copy_constructible 5209: : public __is_copy_constructible_impl<_Tp> 5209: { 5209: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 5209: "template argument must be a complete class or an unbounded array"); 5209: }; 5209: 5209: template::value> 5209: struct __is_move_constructible_impl; 5209: 5209: template 5209: struct __is_move_constructible_impl<_Tp, false> 5209: : public false_type { }; 5209: 5209: template 5209: struct __is_move_constructible_impl<_Tp, true> 5209: : public __is_constructible_impl<_Tp, _Tp&&> 5209: { }; 5209: 5209: 5209: template 5209: struct is_move_constructible 5209: : public __is_move_constructible_impl<_Tp> 5209: { 5209: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 5209: "template argument must be a complete class or an unbounded array"); 5209: }; 5209: 5209: template 5209: struct __is_nt_default_constructible_atom 5209: : public integral_constant 5209: { }; 5209: 5209: template::value> 5209: struct __is_nt_default_constructible_impl; 5209: 5209: template 5209: struct __is_nt_default_constructible_impl<_Tp, true> 5209: : public __and_<__is_array_known_bounds<_Tp>, 5209: __is_nt_default_constructible_atom::type>> 5209: { }; 5209: 5209: template 5209: struct __is_nt_default_constructible_impl<_Tp, false> 5209: : public __is_nt_default_constructible_atom<_Tp> 5209: { }; 5209: 5209: template 5209: using __is_nothrow_default_constructible_impl 5209: = __and_<__is_constructible_impl<_Tp>, 5209: __is_nt_default_constructible_impl<_Tp>>; 5209: 5209: 5209: template 5209: struct is_nothrow_default_constructible 5209: : public __is_nothrow_default_constructible_impl<_Tp>::type 5209: { 5209: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 5209: "template argument must be a complete class or an unbounded array"); 5209: }; 5209: 5209: template 5209: struct __is_nt_constructible_impl 5209: : public integral_constant()...))> 5209: { }; 5209: 5209: template 5209: struct __is_nt_constructible_impl<_Tp, _Arg> 5209: : public integral_constant(declval<_Arg>()))> 5209: { }; 5209: 5209: template 5209: struct __is_nt_constructible_impl<_Tp> 5209: : public __is_nothrow_default_constructible_impl<_Tp> 5209: { }; 5209: 5209: template 5209: struct __is_nothrow_constructible_impl 5209: : public __and_<__is_constructible_impl<_Tp, _Args...>, 5209: __is_nt_constructible_impl<_Tp, _Args...>> 5209: { }; 5209: 5209: 5209: template 5209: struct is_nothrow_constructible 5209: : public __is_nothrow_constructible_impl<_Tp, _Args...>::type 5209: { 5209: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 5209: "template argument must be a complete class or an unbounded array"); 5209: }; 5209: 5209: template::value> 5209: struct __is_nothrow_copy_constructible_impl; 5209: 5209: template 5209: struct __is_nothrow_copy_constructible_impl<_Tp, false> 5209: : public false_type { }; 5209: 5209: template 5209: struct __is_nothrow_copy_constructible_impl<_Tp, true> 5209: : public __is_nothrow_constructible_impl<_Tp, const _Tp&> 5209: { }; 5209: 5209: 5209: template 5209: struct is_nothrow_copy_constructible 5209: : public __is_nothrow_copy_constructible_impl<_Tp>::type 5209: { 5209: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 5209: "template argument must be a complete class or an unbounded array"); 5209: }; 5209: 5209: template::value> 5209: struct __is_nothrow_move_constructible_impl; 5209: 5209: template 5209: struct __is_nothrow_move_constructible_impl<_Tp, false> 5209: : public false_type { }; 5209: 5209: template 5209: struct __is_nothrow_move_constructible_impl<_Tp, true> 5209: : public __is_nothrow_constructible_impl<_Tp, _Tp&&> 5209: { }; 5209: 5209: 5209: template 5209: struct is_nothrow_move_constructible 5209: : public __is_nothrow_move_constructible_impl<_Tp>::type 5209: { 5209: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 5209: "template argument must be a complete class or an unbounded array"); 5209: }; 5209: 5209: 5209: template 5209: struct is_assignable 5209: : public __bool_constant<__is_assignable(_Tp, _Up)> 5209: { 5209: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 5209: "template argument must be a complete class or an unbounded array"); 5209: }; 5209: 5209: template::value> 5209: struct __is_copy_assignable_impl; 5209: 5209: template 5209: struct __is_copy_assignable_impl<_Tp, false> 5209: : public false_type { }; 5209: 5209: template 5209: struct __is_copy_assignable_impl<_Tp, true> 5209: : public __bool_constant<__is_assignable(_Tp&, const _Tp&)> 5209: { }; 5209: 5209: 5209: template 5209: struct is_copy_assignable 5209: : public __is_copy_assignable_impl<_Tp>::type 5209: { 5209: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 5209: "template argument must be a complete class or an unbounded array"); 5209: }; 5209: 5209: template::value> 5209: struct __is_move_assignable_impl; 5209: 5209: template 5209: struct __is_move_assignable_impl<_Tp, false> 5209: : public false_type { }; 5209: 5209: template 5209: struct __is_move_assignable_impl<_Tp, true> 5209: : public __bool_constant<__is_assignable(_Tp&, _Tp&&)> 5209: { }; 5209: 5209: 5209: template 5209: struct is_move_assignable 5209: : public __is_move_assignable_impl<_Tp>::type 5209: { 5209: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 5209: "template argument must be a complete class or an unbounded array"); 5209: }; 5209: 5209: template 5209: struct __is_nt_assignable_impl 5209: : public integral_constant() = declval<_Up>())> 5209: { }; 5209: 5209: template 5209: struct __is_nothrow_assignable_impl 5209: : public __and_<__bool_constant<__is_assignable(_Tp, _Up)>, 5209: __is_nt_assignable_impl<_Tp, _Up>> 5209: { }; 5209: 5209: 5209: template 5209: struct is_nothrow_assignable 5209: : public __is_nothrow_assignable_impl<_Tp, _Up> 5209: { 5209: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 5209: "template argument must be a complete class or an unbounded array"); 5209: }; 5209: 5209: template::value> 5209: struct __is_nt_copy_assignable_impl; 5209: 5209: template 5209: struct __is_nt_copy_assignable_impl<_Tp, false> 5209: : public false_type { }; 5209: 5209: template 5209: struct __is_nt_copy_assignable_impl<_Tp, true> 5209: : public __is_nothrow_assignable_impl<_Tp&, const _Tp&> 5209: { }; 5209: 5209: 5209: template 5209: struct is_nothrow_copy_assignable 5209: : public __is_nt_copy_assignable_impl<_Tp> 5209: { 5209: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 5209: "template argument must be a complete class or an unbounded array"); 5209: }; 5209: 5209: template::value> 5209: struct __is_nt_move_assignable_impl; 5209: 5209: template 5209: struct __is_nt_move_assignable_impl<_Tp, false> 5209: : public false_type { }; 5209: 5209: template 5209: struct __is_nt_move_assignable_impl<_Tp, true> 5209: : public __is_nothrow_assignable_impl<_Tp&, _Tp&&> 5209: { }; 5209: 5209: 5209: template 5209: struct is_nothrow_move_assignable 5209: : public __is_nt_move_assignable_impl<_Tp> 5209: { 5209: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 5209: "template argument must be a complete class or an unbounded array"); 5209: }; 5209: 5209: 5209: template 5209: struct is_trivially_constructible 5209: : public __bool_constant<__is_trivially_constructible(_Tp, _Args...)> 5209: { 5209: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 5209: "template argument must be a complete class or an unbounded array"); 5209: }; 5209: 5209: 5209: template 5209: struct is_trivially_default_constructible 5209: : public __bool_constant<__is_trivially_constructible(_Tp)> 5209: { 5209: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 5209: "template argument must be a complete class or an unbounded array"); 5209: }; 5209: 5209: struct __do_is_implicitly_default_constructible_impl 5209: { 5209: template 5209: static void __helper(const _Tp&); 5209: 5209: template 5209: static true_type __test(const _Tp&, 5209: decltype(__helper({}))* = 0); 5209: 5209: static false_type __test(...); 5209: }; 5209: 5209: template 5209: struct __is_implicitly_default_constructible_impl 5209: : public __do_is_implicitly_default_constructible_impl 5209: { 5209: typedef decltype(__test(declval<_Tp>())) type; 5209: }; 5209: 5209: template 5209: struct __is_implicitly_default_constructible_safe 5209: : public __is_implicitly_default_constructible_impl<_Tp>::type 5209: { }; 5209: 5209: template 5209: struct __is_implicitly_default_constructible 5209: : public __and_<__is_constructible_impl<_Tp>, 5209: __is_implicitly_default_constructible_safe<_Tp>> 5209: { }; 5209: 5209: template::value> 5209: struct __is_trivially_copy_constructible_impl; 5209: 5209: template 5209: struct __is_trivially_copy_constructible_impl<_Tp, false> 5209: : public false_type { }; 5209: 5209: template 5209: struct __is_trivially_copy_constructible_impl<_Tp, true> 5209: : public __and_<__is_copy_constructible_impl<_Tp>, 5209: integral_constant> 5209: { }; 5209: 5209: 5209: template 5209: struct is_trivially_copy_constructible 5209: : public __is_trivially_copy_constructible_impl<_Tp> 5209: { 5209: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 5209: "template argument must be a complete class or an unbounded array"); 5209: }; 5209: 5209: template::value> 5209: struct __is_trivially_move_constructible_impl; 5209: 5209: template 5209: struct __is_trivially_move_constructible_impl<_Tp, false> 5209: : public false_type { }; 5209: 5209: template 5209: struct __is_trivially_move_constructible_impl<_Tp, true> 5209: : public __and_<__is_move_constructible_impl<_Tp>, 5209: integral_constant> 5209: { }; 5209: 5209: 5209: template 5209: struct is_trivially_move_constructible 5209: : public __is_trivially_move_constructible_impl<_Tp> 5209: { 5209: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 5209: "template argument must be a complete class or an unbounded array"); 5209: }; 5209: 5209: 5209: template 5209: struct is_trivially_assignable 5209: : public __bool_constant<__is_trivially_assignable(_Tp, _Up)> 5209: { 5209: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 5209: "template argument must be a complete class or an unbounded array"); 5209: }; 5209: 5209: template::value> 5209: struct __is_trivially_copy_assignable_impl; 5209: 5209: template 5209: struct __is_trivially_copy_assignable_impl<_Tp, false> 5209: : public false_type { }; 5209: 5209: template 5209: struct __is_trivially_copy_assignable_impl<_Tp, true> 5209: : public __bool_constant<__is_trivially_assignable(_Tp&, const _Tp&)> 5209: { }; 5209: 5209: 5209: template 5209: struct is_trivially_copy_assignable 5209: : public __is_trivially_copy_assignable_impl<_Tp> 5209: { 5209: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 5209: "template argument must be a complete class or an unbounded array"); 5209: }; 5209: 5209: template::value> 5209: struct __is_trivially_move_assignable_impl; 5209: 5209: template 5209: struct __is_trivially_move_assignable_impl<_Tp, false> 5209: : public false_type { }; 5209: 5209: template 5209: struct __is_trivially_move_assignable_impl<_Tp, true> 5209: : public __bool_constant<__is_trivially_assignable(_Tp&, _Tp&&)> 5209: { }; 5209: 5209: 5209: template 5209: struct is_trivially_move_assignable 5209: : public __is_trivially_move_assignable_impl<_Tp> 5209: { 5209: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 5209: "template argument must be a complete class or an unbounded array"); 5209: }; 5209: 5209: 5209: template 5209: struct is_trivially_destructible 5209: : public __and_<__is_destructible_safe<_Tp>, 5209: __bool_constant<__has_trivial_destructor(_Tp)>> 5209: { 5209: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 5209: "template argument must be a complete class or an unbounded array"); 5209: }; 5209: 5209: 5209: 5209: template 5209: struct has_virtual_destructor 5209: : public integral_constant 5209: { 5209: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 5209: "template argument must be a complete class or an unbounded array"); 5209: }; 5209: 5209: 5209: 5209: 5209: 5209: template 5209: struct alignment_of 5209: : public integral_constant 5209: { 5209: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 5209: "template argument must be a complete class or an unbounded array"); 5209: }; 5209: 5209: 5209: template 5209: struct rank 5209: : public integral_constant { }; 5209: 5209: template 5209: struct rank<_Tp[_Size]> 5209: : public integral_constant::value> { }; 5209: 5209: template 5209: struct rank<_Tp[]> 5209: : public integral_constant::value> { }; 5209: 5209: 5209: template 5209: struct extent 5209: : public integral_constant { }; 5209: 5209: template 5209: struct extent<_Tp[_Size], _Uint> 5209: : public integral_constant::value> 5209: { }; 5209: 5209: template 5209: struct extent<_Tp[], _Uint> 5209: : public integral_constant::value> 5209: { }; 5209: 5209: 5209: 5209: 5209: 5209: template 5209: struct is_same 5209: 5209: : public integral_constant 5209: 5209: 5209: 5209: { }; 5209: # 1408 "/usr/include/c++/10/type_traits" 3 5209: template 5209: struct is_base_of 5209: : public integral_constant 5209: { }; 5209: 5209: template, is_function<_To>, 5209: is_array<_To>>::value> 5209: struct __is_convertible_helper 5209: { 5209: typedef typename is_void<_To>::type type; 5209: }; 5209: 5209: #pragma GCC diagnostic push 5209: #pragma GCC diagnostic ignored "-Wctor-dtor-privacy" 5209: template 5209: class __is_convertible_helper<_From, _To, false> 5209: { 5209: template 5209: static void __test_aux(_To1) noexcept; 5209: 5209: template(std::declval<_From1>()))> 5209: static true_type 5209: __test(int); 5209: 5209: template 5209: static false_type 5209: __test(...); 5209: 5209: public: 5209: typedef decltype(__test<_From, _To>(0)) type; 5209: }; 5209: #pragma GCC diagnostic pop 5209: 5209: 5209: template 5209: struct is_convertible 5209: : public __is_convertible_helper<_From, _To>::type 5209: { }; 5209: 5209: template, is_function<_To>, 5209: is_array<_To>>::value> 5209: struct __is_nt_convertible_helper 5209: : is_void<_To> 5209: { }; 5209: 5209: #pragma GCC diagnostic push 5209: #pragma GCC diagnostic ignored "-Wctor-dtor-privacy" 5209: template 5209: class __is_nt_convertible_helper<_From, _To, false> 5209: { 5209: template 5209: static void __test_aux(_To1) noexcept; 5209: 5209: template 5209: static 5209: __bool_constant(std::declval<_From1>()))> 5209: __test(int); 5209: 5209: template 5209: static false_type 5209: __test(...); 5209: 5209: public: 5209: using type = decltype(__test<_From, _To>(0)); 5209: }; 5209: #pragma GCC diagnostic pop 5209: 5209: 5209: template 5209: using __is_array_convertible 5209: = is_convertible<_FromElementType(*)[], _ToElementType(*)[]>; 5209: 5209: 5209: template 5209: struct __is_nothrow_convertible 5209: : public __is_nt_convertible_helper<_From, _To>::type 5209: { }; 5209: # 1505 "/usr/include/c++/10/type_traits" 3 5209: template 5209: struct remove_const 5209: { typedef _Tp type; }; 5209: 5209: template 5209: struct remove_const<_Tp const> 5209: { typedef _Tp type; }; 5209: 5209: 5209: template 5209: struct remove_volatile 5209: { typedef _Tp type; }; 5209: 5209: template 5209: struct remove_volatile<_Tp volatile> 5209: { typedef _Tp type; }; 5209: 5209: 5209: template 5209: struct remove_cv 5209: { using type = _Tp; }; 5209: 5209: template 5209: struct remove_cv 5209: { using type = _Tp; }; 5209: 5209: template 5209: struct remove_cv 5209: { using type = _Tp; }; 5209: 5209: template 5209: struct remove_cv 5209: { using type = _Tp; }; 5209: 5209: 5209: template 5209: struct add_const 5209: { typedef _Tp const type; }; 5209: 5209: 5209: template 5209: struct add_volatile 5209: { typedef _Tp volatile type; }; 5209: 5209: 5209: template 5209: struct add_cv 5209: { 5209: typedef typename 5209: add_const::type>::type type; 5209: }; 5209: # 1589 "/usr/include/c++/10/type_traits" 3 5209: template 5209: struct remove_reference 5209: { typedef _Tp type; }; 5209: 5209: template 5209: struct remove_reference<_Tp&> 5209: { typedef _Tp type; }; 5209: 5209: template 5209: struct remove_reference<_Tp&&> 5209: { typedef _Tp type; }; 5209: 5209: template::value> 5209: struct __add_lvalue_reference_helper 5209: { typedef _Tp type; }; 5209: 5209: template 5209: struct __add_lvalue_reference_helper<_Tp, true> 5209: { typedef _Tp& type; }; 5209: 5209: 5209: template 5209: struct add_lvalue_reference 5209: : public __add_lvalue_reference_helper<_Tp> 5209: { }; 5209: 5209: template::value> 5209: struct __add_rvalue_reference_helper 5209: { typedef _Tp type; }; 5209: 5209: template 5209: struct __add_rvalue_reference_helper<_Tp, true> 5209: { typedef _Tp&& type; }; 5209: 5209: 5209: template 5209: struct add_rvalue_reference 5209: : public __add_rvalue_reference_helper<_Tp> 5209: { }; 5209: # 1646 "/usr/include/c++/10/type_traits" 3 5209: template 5209: struct __cv_selector; 5209: 5209: template 5209: struct __cv_selector<_Unqualified, false, false> 5209: { typedef _Unqualified __type; }; 5209: 5209: template 5209: struct __cv_selector<_Unqualified, false, true> 5209: { typedef volatile _Unqualified __type; }; 5209: 5209: template 5209: struct __cv_selector<_Unqualified, true, false> 5209: { typedef const _Unqualified __type; }; 5209: 5209: template 5209: struct __cv_selector<_Unqualified, true, true> 5209: { typedef const volatile _Unqualified __type; }; 5209: 5209: template::value, 5209: bool _IsVol = is_volatile<_Qualified>::value> 5209: class __match_cv_qualifiers 5209: { 5209: typedef __cv_selector<_Unqualified, _IsConst, _IsVol> __match; 5209: 5209: public: 5209: typedef typename __match::__type __type; 5209: }; 5209: 5209: 5209: template 5209: struct __make_unsigned 5209: { typedef _Tp __type; }; 5209: 5209: template<> 5209: struct __make_unsigned 5209: { typedef unsigned char __type; }; 5209: 5209: template<> 5209: struct __make_unsigned 5209: { typedef unsigned char __type; }; 5209: 5209: template<> 5209: struct __make_unsigned 5209: { typedef unsigned short __type; }; 5209: 5209: template<> 5209: struct __make_unsigned 5209: { typedef unsigned int __type; }; 5209: 5209: template<> 5209: struct __make_unsigned 5209: { typedef unsigned long __type; }; 5209: 5209: template<> 5209: struct __make_unsigned 5209: { typedef unsigned long long __type; }; 5209: 5209: 5209: template<> 5209: struct __make_unsigned<__int128> 5209: { typedef unsigned __int128 __type; }; 5209: # 1727 "/usr/include/c++/10/type_traits" 3 5209: template::value, 5209: bool _IsEnum = is_enum<_Tp>::value> 5209: class __make_unsigned_selector; 5209: 5209: template 5209: class __make_unsigned_selector<_Tp, true, false> 5209: { 5209: using __unsigned_type 5209: = typename __make_unsigned<__remove_cv_t<_Tp>>::__type; 5209: 5209: public: 5209: using __type 5209: = typename __match_cv_qualifiers<_Tp, __unsigned_type>::__type; 5209: }; 5209: 5209: class __make_unsigned_selector_base 5209: { 5209: protected: 5209: template struct _List { }; 5209: 5209: template 5209: struct _List<_Tp, _Up...> : _List<_Up...> 5209: { static constexpr size_t __size = sizeof(_Tp); }; 5209: 5209: template 5209: struct __select; 5209: 5209: template 5209: struct __select<_Sz, _List<_Uint, _UInts...>, true> 5209: { using __type = _Uint; }; 5209: 5209: template 5209: struct __select<_Sz, _List<_Uint, _UInts...>, false> 5209: : __select<_Sz, _List<_UInts...>> 5209: { }; 5209: }; 5209: 5209: 5209: template 5209: class __make_unsigned_selector<_Tp, false, true> 5209: : __make_unsigned_selector_base 5209: { 5209: 5209: using _UInts = _List; 5209: 5209: using __unsigned_type = typename __select::__type; 5209: 5209: public: 5209: using __type 5209: = typename __match_cv_qualifiers<_Tp, __unsigned_type>::__type; 5209: }; 5209: 5209: 5209: 5209: 5209: 5209: 5209: template<> 5209: struct __make_unsigned 5209: { 5209: using __type 5209: = typename __make_unsigned_selector::__type; 5209: }; 5209: # 1803 "/usr/include/c++/10/type_traits" 3 5209: template<> 5209: struct __make_unsigned 5209: { 5209: using __type 5209: = typename __make_unsigned_selector::__type; 5209: }; 5209: 5209: template<> 5209: struct __make_unsigned 5209: { 5209: using __type 5209: = typename __make_unsigned_selector::__type; 5209: }; 5209: 5209: 5209: 5209: 5209: 5209: template 5209: struct make_unsigned 5209: { typedef typename __make_unsigned_selector<_Tp>::__type type; }; 5209: 5209: 5209: template<> 5209: struct make_unsigned; 5209: 5209: 5209: 5209: template 5209: struct __make_signed 5209: { typedef _Tp __type; }; 5209: 5209: template<> 5209: struct __make_signed 5209: { typedef signed char __type; }; 5209: 5209: template<> 5209: struct __make_signed 5209: { typedef signed char __type; }; 5209: 5209: template<> 5209: struct __make_signed 5209: { typedef signed short __type; }; 5209: 5209: template<> 5209: struct __make_signed 5209: { typedef signed int __type; }; 5209: 5209: template<> 5209: struct __make_signed 5209: { typedef signed long __type; }; 5209: 5209: template<> 5209: struct __make_signed 5209: { typedef signed long long __type; }; 5209: 5209: 5209: template<> 5209: struct __make_signed 5209: { typedef __int128 __type; }; 5209: # 1881 "/usr/include/c++/10/type_traits" 3 5209: template::value, 5209: bool _IsEnum = is_enum<_Tp>::value> 5209: class __make_signed_selector; 5209: 5209: template 5209: class __make_signed_selector<_Tp, true, false> 5209: { 5209: using __signed_type 5209: = typename __make_signed<__remove_cv_t<_Tp>>::__type; 5209: 5209: public: 5209: using __type 5209: = typename __match_cv_qualifiers<_Tp, __signed_type>::__type; 5209: }; 5209: 5209: 5209: template 5209: class __make_signed_selector<_Tp, false, true> 5209: { 5209: typedef typename __make_unsigned_selector<_Tp>::__type __unsigned_type; 5209: 5209: public: 5209: typedef typename __make_signed_selector<__unsigned_type>::__type __type; 5209: }; 5209: 5209: 5209: 5209: 5209: 5209: 5209: template<> 5209: struct __make_signed 5209: { 5209: using __type 5209: = typename __make_signed_selector::__type; 5209: }; 5209: # 1929 "/usr/include/c++/10/type_traits" 3 5209: template<> 5209: struct __make_signed 5209: { 5209: using __type 5209: = typename __make_signed_selector::__type; 5209: }; 5209: 5209: template<> 5209: struct __make_signed 5209: { 5209: using __type 5209: = typename __make_signed_selector::__type; 5209: }; 5209: 5209: 5209: 5209: 5209: 5209: template 5209: struct make_signed 5209: { typedef typename __make_signed_selector<_Tp>::__type type; }; 5209: 5209: 5209: template<> 5209: struct make_signed; 5209: # 1968 "/usr/include/c++/10/type_traits" 3 5209: template 5209: struct remove_extent 5209: { typedef _Tp type; }; 5209: 5209: template 5209: struct remove_extent<_Tp[_Size]> 5209: { typedef _Tp type; }; 5209: 5209: template 5209: struct remove_extent<_Tp[]> 5209: { typedef _Tp type; }; 5209: 5209: 5209: template 5209: struct remove_all_extents 5209: { typedef _Tp type; }; 5209: 5209: template 5209: struct remove_all_extents<_Tp[_Size]> 5209: { typedef typename remove_all_extents<_Tp>::type type; }; 5209: 5209: template 5209: struct remove_all_extents<_Tp[]> 5209: { typedef typename remove_all_extents<_Tp>::type type; }; 5209: # 2005 "/usr/include/c++/10/type_traits" 3 5209: template 5209: struct __remove_pointer_helper 5209: { typedef _Tp type; }; 5209: 5209: template 5209: struct __remove_pointer_helper<_Tp, _Up*> 5209: { typedef _Up type; }; 5209: 5209: 5209: template 5209: struct remove_pointer 5209: : public __remove_pointer_helper<_Tp, __remove_cv_t<_Tp>> 5209: { }; 5209: 5209: 5209: template, 5209: is_void<_Tp>>::value> 5209: struct __add_pointer_helper 5209: { typedef _Tp type; }; 5209: 5209: template 5209: struct __add_pointer_helper<_Tp, true> 5209: { typedef typename remove_reference<_Tp>::type* type; }; 5209: 5209: template 5209: struct add_pointer 5209: : public __add_pointer_helper<_Tp> 5209: { }; 5209: # 2044 "/usr/include/c++/10/type_traits" 3 5209: template 5209: struct __aligned_storage_msa 5209: { 5209: union __type 5209: { 5209: unsigned char __data[_Len]; 5209: struct __attribute__((__aligned__)) { } __align; 5209: }; 5209: }; 5209: # 2064 "/usr/include/c++/10/type_traits" 3 5209: template::__type)> 5209: struct aligned_storage 5209: { 5209: union type 5209: { 5209: unsigned char __data[_Len]; 5209: struct __attribute__((__aligned__((_Align)))) { } __align; 5209: }; 5209: }; 5209: 5209: template 5209: struct __strictest_alignment 5209: { 5209: static const size_t _S_alignment = 0; 5209: static const size_t _S_size = 0; 5209: }; 5209: 5209: template 5209: struct __strictest_alignment<_Tp, _Types...> 5209: { 5209: static const size_t _S_alignment = 5209: alignof(_Tp) > __strictest_alignment<_Types...>::_S_alignment 5209: ? alignof(_Tp) : __strictest_alignment<_Types...>::_S_alignment; 5209: static const size_t _S_size = 5209: sizeof(_Tp) > __strictest_alignment<_Types...>::_S_size 5209: ? sizeof(_Tp) : __strictest_alignment<_Types...>::_S_size; 5209: }; 5209: # 2103 "/usr/include/c++/10/type_traits" 3 5209: template 5209: struct aligned_union 5209: { 5209: private: 5209: static_assert(sizeof...(_Types) != 0, "At least one type is required"); 5209: 5209: using __strictest = __strictest_alignment<_Types...>; 5209: static const size_t _S_len = _Len > __strictest::_S_size 5209: ? _Len : __strictest::_S_size; 5209: public: 5209: 5209: static const size_t alignment_value = __strictest::_S_alignment; 5209: 5209: typedef typename aligned_storage<_S_len, alignment_value>::type type; 5209: }; 5209: 5209: template 5209: const size_t aligned_union<_Len, _Types...>::alignment_value; 5209: 5209: 5209: 5209: template::value, 5209: bool _IsFunction = is_function<_Up>::value> 5209: struct __decay_selector; 5209: 5209: 5209: template 5209: struct __decay_selector<_Up, false, false> 5209: { typedef __remove_cv_t<_Up> __type; }; 5209: 5209: template 5209: struct __decay_selector<_Up, true, false> 5209: { typedef typename remove_extent<_Up>::type* __type; }; 5209: 5209: template 5209: struct __decay_selector<_Up, false, true> 5209: { typedef typename add_pointer<_Up>::type __type; }; 5209: 5209: 5209: template 5209: class decay 5209: { 5209: typedef typename remove_reference<_Tp>::type __remove_type; 5209: 5209: public: 5209: typedef typename __decay_selector<__remove_type>::__type type; 5209: }; 5209: 5209: 5209: template 5209: using __decay_t = typename decay<_Tp>::type; 5209: 5209: template 5209: class reference_wrapper; 5209: 5209: 5209: template 5209: struct __strip_reference_wrapper 5209: { 5209: typedef _Tp __type; 5209: }; 5209: 5209: template 5209: struct __strip_reference_wrapper > 5209: { 5209: typedef _Tp& __type; 5209: }; 5209: 5209: template 5209: using __decay_and_strip = __strip_reference_wrapper<__decay_t<_Tp>>; 5209: 5209: 5209: 5209: 5209: template 5209: struct enable_if 5209: { }; 5209: 5209: 5209: template 5209: struct enable_if 5209: { typedef _Tp type; }; 5209: 5209: 5209: template 5209: using __enable_if_t = typename enable_if<_Cond, _Tp>::type; 5209: 5209: template 5209: using _Require = __enable_if_t<__and_<_Cond...>::value>; 5209: 5209: 5209: 5209: template 5209: struct conditional 5209: { typedef _Iftrue type; }; 5209: 5209: 5209: template 5209: struct conditional 5209: { typedef _Iffalse type; }; 5209: 5209: 5209: template 5209: using __remove_cvref_t 5209: = typename remove_cv::type>::type; 5209: 5209: 5209: template 5209: struct common_type; 5209: 5209: 5209: 5209: struct __do_common_type_impl 5209: { 5209: template 5209: using __cond_t 5209: = decltype(true ? std::declval<_Tp>() : std::declval<_Up>()); 5209: 5209: 5209: 5209: template 5209: static __success_type<__decay_t<__cond_t<_Tp, _Up>>> 5209: _S_test(int); 5209: # 2236 "/usr/include/c++/10/type_traits" 3 5209: template 5209: static __failure_type 5209: _S_test_2(...); 5209: 5209: template 5209: static decltype(_S_test_2<_Tp, _Up>(0)) 5209: _S_test(...); 5209: }; 5209: 5209: 5209: template<> 5209: struct common_type<> 5209: { }; 5209: 5209: 5209: template 5209: struct common_type<_Tp0> 5209: : public common_type<_Tp0, _Tp0> 5209: { }; 5209: 5209: 5209: template, typename _Dp2 = __decay_t<_Tp2>> 5209: struct __common_type_impl 5209: { 5209: 5209: 5209: using type = common_type<_Dp1, _Dp2>; 5209: }; 5209: 5209: template 5209: struct __common_type_impl<_Tp1, _Tp2, _Tp1, _Tp2> 5209: : private __do_common_type_impl 5209: { 5209: 5209: 5209: using type = decltype(_S_test<_Tp1, _Tp2>(0)); 5209: }; 5209: 5209: 5209: template 5209: struct common_type<_Tp1, _Tp2> 5209: : public __common_type_impl<_Tp1, _Tp2>::type 5209: { }; 5209: 5209: template 5209: struct __common_type_pack 5209: { }; 5209: 5209: template 5209: struct __common_type_fold; 5209: 5209: 5209: template 5209: struct common_type<_Tp1, _Tp2, _Rp...> 5209: : public __common_type_fold, 5209: __common_type_pack<_Rp...>> 5209: { }; 5209: 5209: 5209: 5209: 5209: template 5209: struct __common_type_fold<_CTp, __common_type_pack<_Rp...>, 5209: __void_t> 5209: : public common_type 5209: { }; 5209: 5209: 5209: template 5209: struct __common_type_fold<_CTp, _Rp, void> 5209: { }; 5209: 5209: template::value> 5209: struct __underlying_type_impl 5209: { 5209: using type = __underlying_type(_Tp); 5209: }; 5209: 5209: template 5209: struct __underlying_type_impl<_Tp, false> 5209: { }; 5209: 5209: 5209: template 5209: struct underlying_type 5209: : public __underlying_type_impl<_Tp> 5209: { }; 5209: 5209: template 5209: struct __declval_protector 5209: { 5209: static const bool __stop = false; 5209: }; 5209: 5209: template 5209: auto declval() noexcept -> decltype(__declval<_Tp>(0)) 5209: { 5209: static_assert(__declval_protector<_Tp>::__stop, 5209: "declval() must not be used!"); 5209: return __declval<_Tp>(0); 5209: } 5209: 5209: 5209: template 5209: class result_of; 5209: 5209: 5209: 5209: 5209: 5209: struct __invoke_memfun_ref { }; 5209: struct __invoke_memfun_deref { }; 5209: struct __invoke_memobj_ref { }; 5209: struct __invoke_memobj_deref { }; 5209: struct __invoke_other { }; 5209: 5209: 5209: template 5209: struct __result_of_success : __success_type<_Tp> 5209: { using __invoke_type = _Tag; }; 5209: 5209: 5209: struct __result_of_memfun_ref_impl 5209: { 5209: template 5209: static __result_of_success().*std::declval<_Fp>())(std::declval<_Args>()...) 5209: ), __invoke_memfun_ref> _S_test(int); 5209: 5209: template 5209: static __failure_type _S_test(...); 5209: }; 5209: 5209: template 5209: struct __result_of_memfun_ref 5209: : private __result_of_memfun_ref_impl 5209: { 5209: typedef decltype(_S_test<_MemPtr, _Arg, _Args...>(0)) type; 5209: }; 5209: 5209: 5209: struct __result_of_memfun_deref_impl 5209: { 5209: template 5209: static __result_of_success()).*std::declval<_Fp>())(std::declval<_Args>()...) 5209: ), __invoke_memfun_deref> _S_test(int); 5209: 5209: template 5209: static __failure_type _S_test(...); 5209: }; 5209: 5209: template 5209: struct __result_of_memfun_deref 5209: : private __result_of_memfun_deref_impl 5209: { 5209: typedef decltype(_S_test<_MemPtr, _Arg, _Args...>(0)) type; 5209: }; 5209: 5209: 5209: struct __result_of_memobj_ref_impl 5209: { 5209: template 5209: static __result_of_success().*std::declval<_Fp>() 5209: ), __invoke_memobj_ref> _S_test(int); 5209: 5209: template 5209: static __failure_type _S_test(...); 5209: }; 5209: 5209: template 5209: struct __result_of_memobj_ref 5209: : private __result_of_memobj_ref_impl 5209: { 5209: typedef decltype(_S_test<_MemPtr, _Arg>(0)) type; 5209: }; 5209: 5209: 5209: struct __result_of_memobj_deref_impl 5209: { 5209: template 5209: static __result_of_success()).*std::declval<_Fp>() 5209: ), __invoke_memobj_deref> _S_test(int); 5209: 5209: template 5209: static __failure_type _S_test(...); 5209: }; 5209: 5209: template 5209: struct __result_of_memobj_deref 5209: : private __result_of_memobj_deref_impl 5209: { 5209: typedef decltype(_S_test<_MemPtr, _Arg>(0)) type; 5209: }; 5209: 5209: template 5209: struct __result_of_memobj; 5209: 5209: template 5209: struct __result_of_memobj<_Res _Class::*, _Arg> 5209: { 5209: typedef __remove_cvref_t<_Arg> _Argval; 5209: typedef _Res _Class::* _MemPtr; 5209: typedef typename conditional<__or_, 5209: is_base_of<_Class, _Argval>>::value, 5209: __result_of_memobj_ref<_MemPtr, _Arg>, 5209: __result_of_memobj_deref<_MemPtr, _Arg> 5209: >::type::type type; 5209: }; 5209: 5209: template 5209: struct __result_of_memfun; 5209: 5209: template 5209: struct __result_of_memfun<_Res _Class::*, _Arg, _Args...> 5209: { 5209: typedef typename remove_reference<_Arg>::type _Argval; 5209: typedef _Res _Class::* _MemPtr; 5209: typedef typename conditional::value, 5209: __result_of_memfun_ref<_MemPtr, _Arg, _Args...>, 5209: __result_of_memfun_deref<_MemPtr, _Arg, _Args...> 5209: >::type::type type; 5209: }; 5209: 5209: 5209: 5209: 5209: 5209: 5209: template> 5209: struct __inv_unwrap 5209: { 5209: using type = _Tp; 5209: }; 5209: 5209: template 5209: struct __inv_unwrap<_Tp, reference_wrapper<_Up>> 5209: { 5209: using type = _Up&; 5209: }; 5209: 5209: template 5209: struct __result_of_impl 5209: { 5209: typedef __failure_type type; 5209: }; 5209: 5209: template 5209: struct __result_of_impl 5209: : public __result_of_memobj<__decay_t<_MemPtr>, 5209: typename __inv_unwrap<_Arg>::type> 5209: { }; 5209: 5209: template 5209: struct __result_of_impl 5209: : public __result_of_memfun<__decay_t<_MemPtr>, 5209: typename __inv_unwrap<_Arg>::type, _Args...> 5209: { }; 5209: 5209: 5209: struct __result_of_other_impl 5209: { 5209: template 5209: static __result_of_success()(std::declval<_Args>()...) 5209: ), __invoke_other> _S_test(int); 5209: 5209: template 5209: static __failure_type _S_test(...); 5209: }; 5209: 5209: template 5209: struct __result_of_impl 5209: : private __result_of_other_impl 5209: { 5209: typedef decltype(_S_test<_Functor, _ArgTypes...>(0)) type; 5209: }; 5209: 5209: 5209: template 5209: struct __invoke_result 5209: : public __result_of_impl< 5209: is_member_object_pointer< 5209: typename remove_reference<_Functor>::type 5209: >::value, 5209: is_member_function_pointer< 5209: typename remove_reference<_Functor>::type 5209: >::value, 5209: _Functor, _ArgTypes... 5209: >::type 5209: { }; 5209: 5209: template 5209: struct result_of<_Functor(_ArgTypes...)> 5209: : public __invoke_result<_Functor, _ArgTypes...> 5209: { }; 5209: # 2573 "/usr/include/c++/10/type_traits" 3 5209: template using void_t = void; 5209: 5209: 5209: 5209: template class _Op, typename... _Args> 5209: struct __detector 5209: { 5209: using value_t = false_type; 5209: using type = _Default; 5209: }; 5209: 5209: 5209: template class _Op, 5209: typename... _Args> 5209: struct __detector<_Default, __void_t<_Op<_Args...>>, _Op, _Args...> 5209: { 5209: using value_t = true_type; 5209: using type = _Op<_Args...>; 5209: }; 5209: 5209: 5209: template class _Op, 5209: typename... _Args> 5209: using __detected_or = __detector<_Default, void, _Op, _Args...>; 5209: 5209: 5209: template class _Op, 5209: typename... _Args> 5209: using __detected_or_t 5209: = typename __detected_or<_Default, _Op, _Args...>::type; 5209: # 2621 "/usr/include/c++/10/type_traits" 3 5209: template 5209: struct __is_swappable; 5209: 5209: template 5209: struct __is_nothrow_swappable; 5209: 5209: template 5209: class tuple; 5209: 5209: template 5209: struct __is_tuple_like_impl : false_type 5209: { }; 5209: 5209: template 5209: struct __is_tuple_like_impl> : true_type 5209: { }; 5209: 5209: 5209: template 5209: struct __is_tuple_like 5209: : public __is_tuple_like_impl<__remove_cvref_t<_Tp>>::type 5209: { }; 5209: 5209: template 5209: 5209: inline 5209: _Require<__not_<__is_tuple_like<_Tp>>, 5209: is_move_constructible<_Tp>, 5209: is_move_assignable<_Tp>> 5209: swap(_Tp&, _Tp&) 5209: noexcept(__and_, 5209: is_nothrow_move_assignable<_Tp>>::value); 5209: 5209: template 5209: 5209: inline 5209: __enable_if_t<__is_swappable<_Tp>::value> 5209: swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm]) 5209: noexcept(__is_nothrow_swappable<_Tp>::value); 5209: 5209: namespace __swappable_details { 5209: using std::swap; 5209: 5209: struct __do_is_swappable_impl 5209: { 5209: template(), std::declval<_Tp&>()))> 5209: static true_type __test(int); 5209: 5209: template 5209: static false_type __test(...); 5209: }; 5209: 5209: struct __do_is_nothrow_swappable_impl 5209: { 5209: template 5209: static __bool_constant< 5209: noexcept(swap(std::declval<_Tp&>(), std::declval<_Tp&>())) 5209: > __test(int); 5209: 5209: template 5209: static false_type __test(...); 5209: }; 5209: 5209: } 5209: 5209: template 5209: struct __is_swappable_impl 5209: : public __swappable_details::__do_is_swappable_impl 5209: { 5209: typedef decltype(__test<_Tp>(0)) type; 5209: }; 5209: 5209: template 5209: struct __is_nothrow_swappable_impl 5209: : public __swappable_details::__do_is_nothrow_swappable_impl 5209: { 5209: typedef decltype(__test<_Tp>(0)) type; 5209: }; 5209: 5209: template 5209: struct __is_swappable 5209: : public __is_swappable_impl<_Tp>::type 5209: { }; 5209: 5209: template 5209: struct __is_nothrow_swappable 5209: : public __is_nothrow_swappable_impl<_Tp>::type 5209: { }; 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: struct is_swappable 5209: : public __is_swappable_impl<_Tp>::type 5209: { 5209: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 5209: "template argument must be a complete class or an unbounded array"); 5209: }; 5209: 5209: 5209: template 5209: struct is_nothrow_swappable 5209: : public __is_nothrow_swappable_impl<_Tp>::type 5209: { 5209: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 5209: "template argument must be a complete class or an unbounded array"); 5209: }; 5209: # 2745 "/usr/include/c++/10/type_traits" 3 5209: namespace __swappable_with_details { 5209: using std::swap; 5209: 5209: struct __do_is_swappable_with_impl 5209: { 5209: template(), std::declval<_Up>())), 5209: typename 5209: = decltype(swap(std::declval<_Up>(), std::declval<_Tp>()))> 5209: static true_type __test(int); 5209: 5209: template 5209: static false_type __test(...); 5209: }; 5209: 5209: struct __do_is_nothrow_swappable_with_impl 5209: { 5209: template 5209: static __bool_constant< 5209: noexcept(swap(std::declval<_Tp>(), std::declval<_Up>())) 5209: && 5209: noexcept(swap(std::declval<_Up>(), std::declval<_Tp>())) 5209: > __test(int); 5209: 5209: template 5209: static false_type __test(...); 5209: }; 5209: 5209: } 5209: 5209: template 5209: struct __is_swappable_with_impl 5209: : public __swappable_with_details::__do_is_swappable_with_impl 5209: { 5209: typedef decltype(__test<_Tp, _Up>(0)) type; 5209: }; 5209: 5209: 5209: template 5209: struct __is_swappable_with_impl<_Tp&, _Tp&> 5209: : public __swappable_details::__do_is_swappable_impl 5209: { 5209: typedef decltype(__test<_Tp&>(0)) type; 5209: }; 5209: 5209: template 5209: struct __is_nothrow_swappable_with_impl 5209: : public __swappable_with_details::__do_is_nothrow_swappable_with_impl 5209: { 5209: typedef decltype(__test<_Tp, _Up>(0)) type; 5209: }; 5209: 5209: 5209: template 5209: struct __is_nothrow_swappable_with_impl<_Tp&, _Tp&> 5209: : public __swappable_details::__do_is_nothrow_swappable_impl 5209: { 5209: typedef decltype(__test<_Tp&>(0)) type; 5209: }; 5209: 5209: 5209: template 5209: struct is_swappable_with 5209: : public __is_swappable_with_impl<_Tp, _Up>::type 5209: { }; 5209: 5209: 5209: template 5209: struct is_nothrow_swappable_with 5209: : public __is_nothrow_swappable_with_impl<_Tp, _Up>::type 5209: { }; 5209: # 2834 "/usr/include/c++/10/type_traits" 3 5209: template::value, typename = void> 5209: struct __is_invocable_impl : false_type { }; 5209: 5209: 5209: template 5209: struct __is_invocable_impl<_Result, _Ret, 5209: true, 5209: __void_t> 5209: : true_type 5209: { }; 5209: 5209: #pragma GCC diagnostic push 5209: #pragma GCC diagnostic ignored "-Wctor-dtor-privacy" 5209: 5209: template 5209: struct __is_invocable_impl<_Result, _Ret, 5209: false, 5209: __void_t> 5209: { 5209: private: 5209: 5209: 5209: static typename _Result::type _S_get(); 5209: 5209: template 5209: static void _S_conv(_Tp); 5209: 5209: 5209: template(_S_get()))> 5209: static true_type 5209: _S_test(int); 5209: 5209: template 5209: static false_type 5209: _S_test(...); 5209: 5209: public: 5209: using type = decltype(_S_test<_Ret>(1)); 5209: }; 5209: #pragma GCC diagnostic pop 5209: 5209: template 5209: struct __is_invocable 5209: : __is_invocable_impl<__invoke_result<_Fn, _ArgTypes...>, void>::type 5209: { }; 5209: 5209: template 5209: constexpr bool __call_is_nt(__invoke_memfun_ref) 5209: { 5209: using _Up = typename __inv_unwrap<_Tp>::type; 5209: return noexcept((std::declval<_Up>().*std::declval<_Fn>())( 5209: std::declval<_Args>()...)); 5209: } 5209: 5209: template 5209: constexpr bool __call_is_nt(__invoke_memfun_deref) 5209: { 5209: return noexcept(((*std::declval<_Tp>()).*std::declval<_Fn>())( 5209: std::declval<_Args>()...)); 5209: } 5209: 5209: template 5209: constexpr bool __call_is_nt(__invoke_memobj_ref) 5209: { 5209: using _Up = typename __inv_unwrap<_Tp>::type; 5209: return noexcept(std::declval<_Up>().*std::declval<_Fn>()); 5209: } 5209: 5209: template 5209: constexpr bool __call_is_nt(__invoke_memobj_deref) 5209: { 5209: return noexcept((*std::declval<_Tp>()).*std::declval<_Fn>()); 5209: } 5209: 5209: template 5209: constexpr bool __call_is_nt(__invoke_other) 5209: { 5209: return noexcept(std::declval<_Fn>()(std::declval<_Args>()...)); 5209: } 5209: 5209: template 5209: struct __call_is_nothrow 5209: : __bool_constant< 5209: std::__call_is_nt<_Fn, _Args...>(typename _Result::__invoke_type{}) 5209: > 5209: { }; 5209: 5209: template 5209: using __call_is_nothrow_ 5209: = __call_is_nothrow<__invoke_result<_Fn, _Args...>, _Fn, _Args...>; 5209: 5209: 5209: template 5209: struct __is_nothrow_invocable 5209: : __and_<__is_invocable<_Fn, _Args...>, 5209: __call_is_nothrow_<_Fn, _Args...>>::type 5209: { }; 5209: 5209: #pragma GCC diagnostic push 5209: #pragma GCC diagnostic ignored "-Wctor-dtor-privacy" 5209: struct __nonesuchbase {}; 5209: struct __nonesuch : private __nonesuchbase { 5209: ~__nonesuch() = delete; 5209: __nonesuch(__nonesuch const&) = delete; 5209: void operator=(__nonesuch const&) = delete; 5209: }; 5209: #pragma GCC diagnostic pop 5209: # 3443 "/usr/include/c++/10/type_traits" 3 5209: 5209: } 5209: # 58 "/usr/include/c++/10/bits/move.h" 2 3 5209: 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: # 74 "/usr/include/c++/10/bits/move.h" 3 5209: template 5209: constexpr _Tp&& 5209: forward(typename std::remove_reference<_Tp>::type& __t) noexcept 5209: { return static_cast<_Tp&&>(__t); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: constexpr _Tp&& 5209: forward(typename std::remove_reference<_Tp>::type&& __t) noexcept 5209: { 5209: static_assert(!std::is_lvalue_reference<_Tp>::value, "template argument" 5209: " substituting _Tp is an lvalue reference type"); 5209: return static_cast<_Tp&&>(__t); 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: constexpr typename std::remove_reference<_Tp>::type&& 5209: move(_Tp&& __t) noexcept 5209: { return static_cast::type&&>(__t); } 5209: 5209: 5209: template 5209: struct __move_if_noexcept_cond 5209: : public __and_<__not_>, 5209: is_copy_constructible<_Tp>>::type { }; 5209: # 118 "/usr/include/c++/10/bits/move.h" 3 5209: template 5209: constexpr typename 5209: conditional<__move_if_noexcept_cond<_Tp>::value, const _Tp&, _Tp&&>::type 5209: move_if_noexcept(_Tp& __x) noexcept 5209: { return std::move(__x); } 5209: # 138 "/usr/include/c++/10/bits/move.h" 3 5209: template 5209: inline _Tp* 5209: addressof(_Tp& __r) noexcept 5209: { return std::__addressof(__r); } 5209: 5209: 5209: 5209: template 5209: const _Tp* addressof(const _Tp&&) = delete; 5209: 5209: 5209: template 5209: 5209: inline _Tp 5209: __exchange(_Tp& __obj, _Up&& __new_val) 5209: { 5209: _Tp __old_val = std::move(__obj); 5209: __obj = std::forward<_Up>(__new_val); 5209: return __old_val; 5209: } 5209: # 179 "/usr/include/c++/10/bits/move.h" 3 5209: template 5209: 5209: inline 5209: 5209: typename enable_if<__and_<__not_<__is_tuple_like<_Tp>>, 5209: is_move_constructible<_Tp>, 5209: is_move_assignable<_Tp>>::value>::type 5209: 5209: 5209: 5209: swap(_Tp& __a, _Tp& __b) 5209: noexcept(__and_, is_nothrow_move_assignable<_Tp>>::value) 5209: 5209: { 5209: 5209: 5209: 5209: 5209: _Tp __tmp = std::move(__a); 5209: __a = std::move(__b); 5209: __b = std::move(__tmp); 5209: } 5209: 5209: 5209: 5209: 5209: template 5209: 5209: inline 5209: 5209: typename enable_if<__is_swappable<_Tp>::value>::type 5209: 5209: 5209: 5209: swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm]) 5209: noexcept(__is_nothrow_swappable<_Tp>::value) 5209: { 5209: for (size_t __n = 0; __n < _Nm; ++__n) 5209: swap(__a[__n], __b[__n]); 5209: } 5209: 5209: 5209: 5209: } 5209: # 41 "/usr/include/c++/10/bits/nested_exception.h" 2 3 5209: 5209: extern "C++" { 5209: 5209: namespace std 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: class nested_exception 5209: { 5209: exception_ptr _M_ptr; 5209: 5209: public: 5209: nested_exception() noexcept : _M_ptr(current_exception()) { } 5209: 5209: nested_exception(const nested_exception&) noexcept = default; 5209: 5209: nested_exception& operator=(const nested_exception&) noexcept = default; 5209: 5209: virtual ~nested_exception() noexcept; 5209: 5209: [[noreturn]] 5209: void 5209: rethrow_nested() const 5209: { 5209: if (_M_ptr) 5209: rethrow_exception(_M_ptr); 5209: std::terminate(); 5209: } 5209: 5209: exception_ptr 5209: nested_ptr() const noexcept 5209: { return _M_ptr; } 5209: }; 5209: 5209: 5209: 5209: template 5209: struct _Nested_exception : public _Except, public nested_exception 5209: { 5209: explicit _Nested_exception(const _Except& __ex) 5209: : _Except(__ex) 5209: { } 5209: 5209: explicit _Nested_exception(_Except&& __ex) 5209: : _Except(static_cast<_Except&&>(__ex)) 5209: { } 5209: }; 5209: 5209: 5209: 5209: 5209: template 5209: [[noreturn]] 5209: inline void 5209: __throw_with_nested_impl(_Tp&& __t, true_type) 5209: { 5209: using _Up = typename remove_reference<_Tp>::type; 5209: throw _Nested_exception<_Up>{std::forward<_Tp>(__t)}; 5209: } 5209: 5209: template 5209: [[noreturn]] 5209: inline void 5209: __throw_with_nested_impl(_Tp&& __t, false_type) 5209: { throw std::forward<_Tp>(__t); } 5209: 5209: 5209: 5209: 5209: 5209: template 5209: [[noreturn]] 5209: inline void 5209: throw_with_nested(_Tp&& __t) 5209: { 5209: using _Up = typename decay<_Tp>::type; 5209: using _CopyConstructible 5209: = __and_, is_move_constructible<_Up>>; 5209: static_assert(_CopyConstructible::value, 5209: "throw_with_nested argument must be CopyConstructible"); 5209: using __nest = __and_, __bool_constant, 5209: __not_>>; 5209: std::__throw_with_nested_impl(std::forward<_Tp>(__t), __nest{}); 5209: } 5209: 5209: 5209: 5209: 5209: template 5209: using __rethrow_if_nested_cond = typename enable_if< 5209: __and_, 5209: __or_<__not_>, 5209: is_convertible<_Tp*, nested_exception*>>>::value 5209: >::type; 5209: 5209: 5209: template 5209: inline __rethrow_if_nested_cond<_Ex> 5209: __rethrow_if_nested_impl(const _Ex* __ptr) 5209: { 5209: if (auto __ne_ptr = dynamic_cast(__ptr)) 5209: __ne_ptr->rethrow_nested(); 5209: } 5209: 5209: 5209: inline void 5209: __rethrow_if_nested_impl(const void*) 5209: { } 5209: 5209: 5209: 5209: 5209: template 5209: inline void 5209: rethrow_if_nested(const _Ex& __ex) 5209: { std::__rethrow_if_nested_impl(std::__addressof(__ex)); } 5209: 5209: 5209: } 5209: 5209: } 5209: 5209: 5209: 5209: #pragma GCC visibility pop 5209: # 149 "/usr/include/c++/10/exception" 2 3 5209: # 40 "/usr/include/c++/10/ios" 2 3 5209: # 1 "/usr/include/c++/10/bits/char_traits.h" 1 3 5209: # 37 "/usr/include/c++/10/bits/char_traits.h" 3 5209: 5209: # 38 "/usr/include/c++/10/bits/char_traits.h" 3 5209: 5209: # 1 "/usr/include/c++/10/bits/stl_algobase.h" 1 3 5209: # 60 "/usr/include/c++/10/bits/stl_algobase.h" 3 5209: # 1 "/usr/include/c++/10/bits/functexcept.h" 1 3 5209: # 42 "/usr/include/c++/10/bits/functexcept.h" 3 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: 5209: void 5209: __throw_bad_exception(void) __attribute__((__noreturn__)); 5209: 5209: 5209: void 5209: __throw_bad_alloc(void) __attribute__((__noreturn__)); 5209: 5209: 5209: void 5209: __throw_bad_cast(void) __attribute__((__noreturn__)); 5209: 5209: void 5209: __throw_bad_typeid(void) __attribute__((__noreturn__)); 5209: 5209: 5209: void 5209: __throw_logic_error(const char*) __attribute__((__noreturn__)); 5209: 5209: void 5209: __throw_domain_error(const char*) __attribute__((__noreturn__)); 5209: 5209: void 5209: __throw_invalid_argument(const char*) __attribute__((__noreturn__)); 5209: 5209: void 5209: __throw_length_error(const char*) __attribute__((__noreturn__)); 5209: 5209: void 5209: __throw_out_of_range(const char*) __attribute__((__noreturn__)); 5209: 5209: void 5209: __throw_out_of_range_fmt(const char*, ...) __attribute__((__noreturn__)) 5209: __attribute__((__format__(__gnu_printf__, 1, 2))); 5209: 5209: void 5209: __throw_runtime_error(const char*) __attribute__((__noreturn__)); 5209: 5209: void 5209: __throw_range_error(const char*) __attribute__((__noreturn__)); 5209: 5209: void 5209: __throw_overflow_error(const char*) __attribute__((__noreturn__)); 5209: 5209: void 5209: __throw_underflow_error(const char*) __attribute__((__noreturn__)); 5209: 5209: 5209: void 5209: __throw_ios_failure(const char*) __attribute__((__noreturn__)); 5209: 5209: void 5209: __throw_ios_failure(const char*, int) __attribute__((__noreturn__)); 5209: 5209: 5209: void 5209: __throw_system_error(int) __attribute__((__noreturn__)); 5209: 5209: 5209: void 5209: __throw_future_error(int) __attribute__((__noreturn__)); 5209: 5209: 5209: void 5209: __throw_bad_function_call() __attribute__((__noreturn__)); 5209: 5209: 5209: } 5209: # 61 "/usr/include/c++/10/bits/stl_algobase.h" 2 3 5209: # 1 "/usr/include/c++/10/bits/cpp_type_traits.h" 1 3 5209: # 35 "/usr/include/c++/10/bits/cpp_type_traits.h" 3 5209: 5209: # 36 "/usr/include/c++/10/bits/cpp_type_traits.h" 3 5209: # 67 "/usr/include/c++/10/bits/cpp_type_traits.h" 3 5209: extern "C++" { 5209: 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: struct __true_type { }; 5209: struct __false_type { }; 5209: 5209: template 5209: struct __truth_type 5209: { typedef __false_type __type; }; 5209: 5209: template<> 5209: struct __truth_type 5209: { typedef __true_type __type; }; 5209: 5209: 5209: 5209: template 5209: struct __traitor 5209: { 5209: enum { __value = bool(_Sp::__value) || bool(_Tp::__value) }; 5209: typedef typename __truth_type<__value>::__type __type; 5209: }; 5209: 5209: 5209: template 5209: struct __are_same 5209: { 5209: enum { __value = 0 }; 5209: typedef __false_type __type; 5209: }; 5209: 5209: template 5209: struct __are_same<_Tp, _Tp> 5209: { 5209: enum { __value = 1 }; 5209: typedef __true_type __type; 5209: }; 5209: 5209: 5209: template 5209: struct __is_void 5209: { 5209: enum { __value = 0 }; 5209: typedef __false_type __type; 5209: }; 5209: 5209: template<> 5209: struct __is_void 5209: { 5209: enum { __value = 1 }; 5209: typedef __true_type __type; 5209: }; 5209: 5209: 5209: 5209: 5209: template 5209: struct __is_integer 5209: { 5209: enum { __value = 0 }; 5209: typedef __false_type __type; 5209: }; 5209: 5209: 5209: 5209: 5209: 5209: template<> 5209: struct __is_integer 5209: { 5209: enum { __value = 1 }; 5209: typedef __true_type __type; 5209: }; 5209: 5209: template<> 5209: struct __is_integer 5209: { 5209: enum { __value = 1 }; 5209: typedef __true_type __type; 5209: }; 5209: 5209: template<> 5209: struct __is_integer 5209: { 5209: enum { __value = 1 }; 5209: typedef __true_type __type; 5209: }; 5209: 5209: template<> 5209: struct __is_integer 5209: { 5209: enum { __value = 1 }; 5209: typedef __true_type __type; 5209: }; 5209: 5209: 5209: template<> 5209: struct __is_integer 5209: { 5209: enum { __value = 1 }; 5209: typedef __true_type __type; 5209: }; 5209: # 184 "/usr/include/c++/10/bits/cpp_type_traits.h" 3 5209: template<> 5209: struct __is_integer 5209: { 5209: enum { __value = 1 }; 5209: typedef __true_type __type; 5209: }; 5209: 5209: template<> 5209: struct __is_integer 5209: { 5209: enum { __value = 1 }; 5209: typedef __true_type __type; 5209: }; 5209: 5209: 5209: template<> 5209: struct __is_integer 5209: { 5209: enum { __value = 1 }; 5209: typedef __true_type __type; 5209: }; 5209: 5209: template<> 5209: struct __is_integer 5209: { 5209: enum { __value = 1 }; 5209: typedef __true_type __type; 5209: }; 5209: 5209: template<> 5209: struct __is_integer 5209: { 5209: enum { __value = 1 }; 5209: typedef __true_type __type; 5209: }; 5209: 5209: template<> 5209: struct __is_integer 5209: { 5209: enum { __value = 1 }; 5209: typedef __true_type __type; 5209: }; 5209: 5209: template<> 5209: struct __is_integer 5209: { 5209: enum { __value = 1 }; 5209: typedef __true_type __type; 5209: }; 5209: 5209: template<> 5209: struct __is_integer 5209: { 5209: enum { __value = 1 }; 5209: typedef __true_type __type; 5209: }; 5209: 5209: template<> 5209: struct __is_integer 5209: { 5209: enum { __value = 1 }; 5209: typedef __true_type __type; 5209: }; 5209: 5209: template<> 5209: struct __is_integer 5209: { 5209: enum { __value = 1 }; 5209: typedef __true_type __type; 5209: }; 5209: # 270 "/usr/include/c++/10/bits/cpp_type_traits.h" 3 5209: template<> struct __is_integer<__int128> { enum { __value = 1 }; typedef __true_type __type; }; template<> struct __is_integer { enum { __value = 1 }; typedef __true_type __type; }; 5209: # 287 "/usr/include/c++/10/bits/cpp_type_traits.h" 3 5209: template 5209: struct __is_floating 5209: { 5209: enum { __value = 0 }; 5209: typedef __false_type __type; 5209: }; 5209: 5209: 5209: template<> 5209: struct __is_floating 5209: { 5209: enum { __value = 1 }; 5209: typedef __true_type __type; 5209: }; 5209: 5209: template<> 5209: struct __is_floating 5209: { 5209: enum { __value = 1 }; 5209: typedef __true_type __type; 5209: }; 5209: 5209: template<> 5209: struct __is_floating 5209: { 5209: enum { __value = 1 }; 5209: typedef __true_type __type; 5209: }; 5209: 5209: 5209: 5209: 5209: template 5209: struct __is_pointer 5209: { 5209: enum { __value = 0 }; 5209: typedef __false_type __type; 5209: }; 5209: 5209: template 5209: struct __is_pointer<_Tp*> 5209: { 5209: enum { __value = 1 }; 5209: typedef __true_type __type; 5209: }; 5209: 5209: 5209: 5209: 5209: template 5209: struct __is_arithmetic 5209: : public __traitor<__is_integer<_Tp>, __is_floating<_Tp> > 5209: { }; 5209: 5209: 5209: 5209: 5209: template 5209: struct __is_scalar 5209: : public __traitor<__is_arithmetic<_Tp>, __is_pointer<_Tp> > 5209: { }; 5209: 5209: 5209: 5209: 5209: template 5209: struct __is_char 5209: { 5209: enum { __value = 0 }; 5209: typedef __false_type __type; 5209: }; 5209: 5209: template<> 5209: struct __is_char 5209: { 5209: enum { __value = 1 }; 5209: typedef __true_type __type; 5209: }; 5209: 5209: 5209: template<> 5209: struct __is_char 5209: { 5209: enum { __value = 1 }; 5209: typedef __true_type __type; 5209: }; 5209: 5209: 5209: template 5209: struct __is_byte 5209: { 5209: enum { __value = 0 }; 5209: typedef __false_type __type; 5209: }; 5209: 5209: template<> 5209: struct __is_byte 5209: { 5209: enum { __value = 1 }; 5209: typedef __true_type __type; 5209: }; 5209: 5209: template<> 5209: struct __is_byte 5209: { 5209: enum { __value = 1 }; 5209: typedef __true_type __type; 5209: }; 5209: 5209: template<> 5209: struct __is_byte 5209: { 5209: enum { __value = 1 }; 5209: typedef __true_type __type; 5209: }; 5209: # 426 "/usr/include/c++/10/bits/cpp_type_traits.h" 3 5209: template 5209: struct __is_move_iterator 5209: { 5209: enum { __value = 0 }; 5209: typedef __false_type __type; 5209: }; 5209: 5209: 5209: 5209: template 5209: 5209: inline _Iterator 5209: __miter_base(_Iterator __it) 5209: { return __it; } 5209: 5209: 5209: } 5209: } 5209: # 62 "/usr/include/c++/10/bits/stl_algobase.h" 2 3 5209: # 1 "/usr/include/c++/10/ext/type_traits.h" 1 3 5209: # 32 "/usr/include/c++/10/ext/type_traits.h" 3 5209: 5209: # 33 "/usr/include/c++/10/ext/type_traits.h" 3 5209: 5209: 5209: 5209: 5209: extern "C++" { 5209: 5209: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: 5209: template 5209: struct __enable_if 5209: { }; 5209: 5209: template 5209: struct __enable_if 5209: { typedef _Tp __type; }; 5209: 5209: 5209: 5209: template 5209: struct __conditional_type 5209: { typedef _Iftrue __type; }; 5209: 5209: template 5209: struct __conditional_type 5209: { typedef _Iffalse __type; }; 5209: 5209: 5209: 5209: template 5209: struct __add_unsigned 5209: { 5209: private: 5209: typedef __enable_if::__value, _Tp> __if_type; 5209: 5209: public: 5209: typedef typename __if_type::__type __type; 5209: }; 5209: 5209: template<> 5209: struct __add_unsigned 5209: { typedef unsigned char __type; }; 5209: 5209: template<> 5209: struct __add_unsigned 5209: { typedef unsigned char __type; }; 5209: 5209: template<> 5209: struct __add_unsigned 5209: { typedef unsigned short __type; }; 5209: 5209: template<> 5209: struct __add_unsigned 5209: { typedef unsigned int __type; }; 5209: 5209: template<> 5209: struct __add_unsigned 5209: { typedef unsigned long __type; }; 5209: 5209: template<> 5209: struct __add_unsigned 5209: { typedef unsigned long long __type; }; 5209: 5209: 5209: template<> 5209: struct __add_unsigned; 5209: 5209: template<> 5209: struct __add_unsigned; 5209: 5209: 5209: 5209: template 5209: struct __remove_unsigned 5209: { 5209: private: 5209: typedef __enable_if::__value, _Tp> __if_type; 5209: 5209: public: 5209: typedef typename __if_type::__type __type; 5209: }; 5209: 5209: template<> 5209: struct __remove_unsigned 5209: { typedef signed char __type; }; 5209: 5209: template<> 5209: struct __remove_unsigned 5209: { typedef signed char __type; }; 5209: 5209: template<> 5209: struct __remove_unsigned 5209: { typedef short __type; }; 5209: 5209: template<> 5209: struct __remove_unsigned 5209: { typedef int __type; }; 5209: 5209: template<> 5209: struct __remove_unsigned 5209: { typedef long __type; }; 5209: 5209: template<> 5209: struct __remove_unsigned 5209: { typedef long long __type; }; 5209: 5209: 5209: template<> 5209: struct __remove_unsigned; 5209: 5209: template<> 5209: struct __remove_unsigned; 5209: 5209: 5209: 5209: template 5209: inline bool 5209: __is_null_pointer(_Type* __ptr) 5209: { return __ptr == 0; } 5209: 5209: template 5209: inline bool 5209: __is_null_pointer(_Type) 5209: { return false; } 5209: 5209: 5209: inline bool 5209: __is_null_pointer(std::nullptr_t) 5209: { return true; } 5209: 5209: 5209: 5209: template::__value> 5209: struct __promote 5209: { typedef double __type; }; 5209: 5209: 5209: 5209: 5209: template 5209: struct __promote<_Tp, false> 5209: { }; 5209: 5209: template<> 5209: struct __promote 5209: { typedef long double __type; }; 5209: 5209: template<> 5209: struct __promote 5209: { typedef double __type; }; 5209: 5209: template<> 5209: struct __promote 5209: { typedef float __type; }; 5209: 5209: template::__type, 5209: typename _Up2 = typename __promote<_Up>::__type> 5209: struct __promote_2 5209: { 5209: typedef __typeof__(_Tp2() + _Up2()) __type; 5209: }; 5209: 5209: template::__type, 5209: typename _Up2 = typename __promote<_Up>::__type, 5209: typename _Vp2 = typename __promote<_Vp>::__type> 5209: struct __promote_3 5209: { 5209: typedef __typeof__(_Tp2() + _Up2() + _Vp2()) __type; 5209: }; 5209: 5209: template::__type, 5209: typename _Up2 = typename __promote<_Up>::__type, 5209: typename _Vp2 = typename __promote<_Vp>::__type, 5209: typename _Wp2 = typename __promote<_Wp>::__type> 5209: struct __promote_4 5209: { 5209: typedef __typeof__(_Tp2() + _Up2() + _Vp2() + _Wp2()) __type; 5209: }; 5209: 5209: 5209: } 5209: } 5209: # 63 "/usr/include/c++/10/bits/stl_algobase.h" 2 3 5209: # 1 "/usr/include/c++/10/ext/numeric_traits.h" 1 3 5209: # 32 "/usr/include/c++/10/ext/numeric_traits.h" 3 5209: 5209: # 33 "/usr/include/c++/10/ext/numeric_traits.h" 3 5209: 5209: 5209: 5209: 5209: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: # 54 "/usr/include/c++/10/ext/numeric_traits.h" 3 5209: template 5209: struct __numeric_traits_integer 5209: { 5209: 5209: static const _Value __min = (((_Value)(-1) < 0) ? -(((_Value)(-1) < 0) ? (((((_Value)1 << ((sizeof(_Value) * 8 - ((_Value)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(_Value)0) - 1 : (_Value)0); 5209: static const _Value __max = (((_Value)(-1) < 0) ? (((((_Value)1 << ((sizeof(_Value) * 8 - ((_Value)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(_Value)0); 5209: 5209: 5209: 5209: static const bool __is_signed = ((_Value)(-1) < 0); 5209: static const int __digits = (sizeof(_Value) * 8 - ((_Value)(-1) < 0)); 5209: }; 5209: 5209: template 5209: const _Value __numeric_traits_integer<_Value>::__min; 5209: 5209: template 5209: const _Value __numeric_traits_integer<_Value>::__max; 5209: 5209: template 5209: const bool __numeric_traits_integer<_Value>::__is_signed; 5209: 5209: template 5209: const int __numeric_traits_integer<_Value>::__digits; 5209: # 99 "/usr/include/c++/10/ext/numeric_traits.h" 3 5209: template 5209: struct __numeric_traits_floating 5209: { 5209: 5209: static const int __max_digits10 = (2 + (std::__are_same<_Value, float>::__value ? 24 : std::__are_same<_Value, double>::__value ? 53 : 113) * 643L / 2136); 5209: 5209: 5209: static const bool __is_signed = true; 5209: static const int __digits10 = (std::__are_same<_Value, float>::__value ? 6 : std::__are_same<_Value, double>::__value ? 15 : 33); 5209: static const int __max_exponent10 = (std::__are_same<_Value, float>::__value ? 38 : std::__are_same<_Value, double>::__value ? 308 : 4932); 5209: }; 5209: 5209: template 5209: const int __numeric_traits_floating<_Value>::__max_digits10; 5209: 5209: template 5209: const bool __numeric_traits_floating<_Value>::__is_signed; 5209: 5209: template 5209: const int __numeric_traits_floating<_Value>::__digits10; 5209: 5209: template 5209: const int __numeric_traits_floating<_Value>::__max_exponent10; 5209: 5209: template 5209: struct __numeric_traits 5209: : public __conditional_type::__value, 5209: __numeric_traits_integer<_Value>, 5209: __numeric_traits_floating<_Value> >::__type 5209: { }; 5209: 5209: 5209: } 5209: # 64 "/usr/include/c++/10/bits/stl_algobase.h" 2 3 5209: # 1 "/usr/include/c++/10/bits/stl_pair.h" 1 3 5209: # 68 "/usr/include/c++/10/bits/stl_pair.h" 3 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: # 79 "/usr/include/c++/10/bits/stl_pair.h" 3 5209: struct piecewise_construct_t { explicit piecewise_construct_t() = default; }; 5209: 5209: 5209: constexpr piecewise_construct_t piecewise_construct = 5209: piecewise_construct_t(); 5209: 5209: 5209: 5209: 5209: template 5209: class tuple; 5209: 5209: template 5209: struct _Index_tuple; 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: struct _PCC 5209: { 5209: template 5209: static constexpr bool _ConstructiblePair() 5209: { 5209: return __and_, 5209: is_constructible<_T2, const _U2&>>::value; 5209: } 5209: 5209: template 5209: static constexpr bool _ImplicitlyConvertiblePair() 5209: { 5209: return __and_, 5209: is_convertible>::value; 5209: } 5209: 5209: template 5209: static constexpr bool _MoveConstructiblePair() 5209: { 5209: return __and_, 5209: is_constructible<_T2, _U2&&>>::value; 5209: } 5209: 5209: template 5209: static constexpr bool _ImplicitlyMoveConvertiblePair() 5209: { 5209: return __and_, 5209: is_convertible<_U2&&, _T2>>::value; 5209: } 5209: 5209: template 5209: static constexpr bool _CopyMovePair() 5209: { 5209: using __do_converts = __and_, 5209: is_convertible<_U2&&, _T2>>; 5209: using __converts = typename conditional<__implicit, 5209: __do_converts, 5209: __not_<__do_converts>>::type; 5209: return __and_, 5209: is_constructible<_T2, _U2&&>, 5209: __converts 5209: >::value; 5209: } 5209: 5209: template 5209: static constexpr bool _MoveCopyPair() 5209: { 5209: using __do_converts = __and_, 5209: is_convertible>; 5209: using __converts = typename conditional<__implicit, 5209: __do_converts, 5209: __not_<__do_converts>>::type; 5209: return __and_, 5209: is_constructible<_T2, const _U2&&>, 5209: __converts 5209: >::value; 5209: } 5209: }; 5209: 5209: template 5209: struct _PCC 5209: { 5209: template 5209: static constexpr bool _ConstructiblePair() 5209: { 5209: return false; 5209: } 5209: 5209: template 5209: static constexpr bool _ImplicitlyConvertiblePair() 5209: { 5209: return false; 5209: } 5209: 5209: template 5209: static constexpr bool _MoveConstructiblePair() 5209: { 5209: return false; 5209: } 5209: 5209: template 5209: static constexpr bool _ImplicitlyMoveConvertiblePair() 5209: { 5209: return false; 5209: } 5209: }; 5209: 5209: 5209: template class __pair_base 5209: { 5209: 5209: template friend struct pair; 5209: __pair_base() = default; 5209: ~__pair_base() = default; 5209: __pair_base(const __pair_base&) = default; 5209: __pair_base& operator=(const __pair_base&) = delete; 5209: 5209: }; 5209: # 209 "/usr/include/c++/10/bits/stl_pair.h" 3 5209: template 5209: struct pair 5209: : private __pair_base<_T1, _T2> 5209: { 5209: typedef _T1 first_type; 5209: typedef _T2 second_type; 5209: 5209: _T1 first; 5209: _T2 second; 5209: 5209: 5209: 5209: 5209: 5209: 5209: template , 5209: __is_implicitly_default_constructible<_U2>> 5209: ::value, bool>::type = true> 5209: 5209: constexpr pair() 5209: : first(), second() { } 5209: 5209: 5209: template , 5209: is_default_constructible<_U2>, 5209: __not_< 5209: __and_<__is_implicitly_default_constructible<_U1>, 5209: __is_implicitly_default_constructible<_U2>>>> 5209: ::value, bool>::type = false> 5209: explicit constexpr pair() 5209: : first(), second() { } 5209: # 255 "/usr/include/c++/10/bits/stl_pair.h" 3 5209: using _PCCP = _PCC; 5209: 5209: 5209: 5209: template() 5209: && _PCCP::template 5209: _ImplicitlyConvertiblePair<_U1, _U2>(), 5209: bool>::type=true> 5209: constexpr pair(const _T1& __a, const _T2& __b) 5209: : first(__a), second(__b) { } 5209: 5209: 5209: template() 5209: && !_PCCP::template 5209: _ImplicitlyConvertiblePair<_U1, _U2>(), 5209: bool>::type=false> 5209: explicit constexpr pair(const _T1& __a, const _T2& __b) 5209: : first(__a), second(__b) { } 5209: # 287 "/usr/include/c++/10/bits/stl_pair.h" 3 5209: template 5209: using _PCCFP = _PCC::value 5209: || !is_same<_T2, _U2>::value, 5209: _T1, _T2>; 5209: 5209: 5209: template::template 5209: _ConstructiblePair<_U1, _U2>() 5209: && _PCCFP<_U1, _U2>::template 5209: _ImplicitlyConvertiblePair<_U1, _U2>(), 5209: bool>::type=true> 5209: constexpr pair(const pair<_U1, _U2>& __p) 5209: : first(__p.first), second(__p.second) { } 5209: 5209: template::template 5209: _ConstructiblePair<_U1, _U2>() 5209: && !_PCCFP<_U1, _U2>::template 5209: _ImplicitlyConvertiblePair<_U1, _U2>(), 5209: bool>::type=false> 5209: explicit constexpr pair(const pair<_U1, _U2>& __p) 5209: : first(__p.first), second(__p.second) { } 5209: 5209: 5209: 5209: constexpr pair(const pair&) = default; 5209: constexpr pair(pair&&) = default; 5209: 5209: 5209: template(), 5209: bool>::type=true> 5209: constexpr pair(_U1&& __x, const _T2& __y) 5209: : first(std::forward<_U1>(__x)), second(__y) { } 5209: 5209: template(), 5209: bool>::type=false> 5209: explicit constexpr pair(_U1&& __x, const _T2& __y) 5209: : first(std::forward<_U1>(__x)), second(__y) { } 5209: 5209: template(), 5209: bool>::type=true> 5209: constexpr pair(const _T1& __x, _U2&& __y) 5209: : first(__x), second(std::forward<_U2>(__y)) { } 5209: 5209: template(), 5209: bool>::type=false> 5209: explicit pair(const _T1& __x, _U2&& __y) 5209: : first(__x), second(std::forward<_U2>(__y)) { } 5209: 5209: template() 5209: && _PCCP::template 5209: _ImplicitlyMoveConvertiblePair<_U1, _U2>(), 5209: bool>::type=true> 5209: constexpr pair(_U1&& __x, _U2&& __y) 5209: : first(std::forward<_U1>(__x)), second(std::forward<_U2>(__y)) { } 5209: 5209: template() 5209: && !_PCCP::template 5209: _ImplicitlyMoveConvertiblePair<_U1, _U2>(), 5209: bool>::type=false> 5209: explicit constexpr pair(_U1&& __x, _U2&& __y) 5209: : first(std::forward<_U1>(__x)), second(std::forward<_U2>(__y)) { } 5209: 5209: 5209: template::template 5209: _MoveConstructiblePair<_U1, _U2>() 5209: && _PCCFP<_U1, _U2>::template 5209: _ImplicitlyMoveConvertiblePair<_U1, _U2>(), 5209: bool>::type=true> 5209: constexpr pair(pair<_U1, _U2>&& __p) 5209: : first(std::forward<_U1>(__p.first)), 5209: second(std::forward<_U2>(__p.second)) { } 5209: 5209: template::template 5209: _MoveConstructiblePair<_U1, _U2>() 5209: && !_PCCFP<_U1, _U2>::template 5209: _ImplicitlyMoveConvertiblePair<_U1, _U2>(), 5209: bool>::type=false> 5209: explicit constexpr pair(pair<_U1, _U2>&& __p) 5209: : first(std::forward<_U1>(__p.first)), 5209: second(std::forward<_U2>(__p.second)) { } 5209: 5209: template 5209: 5209: pair(piecewise_construct_t, tuple<_Args1...>, tuple<_Args2...>); 5209: 5209: pair& 5209: operator=(typename conditional< 5209: __and_, 5209: is_copy_assignable<_T2>>::value, 5209: const pair&, const __nonesuch&>::type __p) 5209: { 5209: first = __p.first; 5209: second = __p.second; 5209: return *this; 5209: } 5209: 5209: pair& 5209: operator=(typename conditional< 5209: __and_, 5209: is_move_assignable<_T2>>::value, 5209: pair&&, __nonesuch&&>::type __p) 5209: noexcept(__and_, 5209: is_nothrow_move_assignable<_T2>>::value) 5209: { 5209: first = std::forward(__p.first); 5209: second = std::forward(__p.second); 5209: return *this; 5209: } 5209: 5209: template 5209: 5209: typename enable_if<__and_, 5209: is_assignable<_T2&, const _U2&>>::value, 5209: pair&>::type 5209: operator=(const pair<_U1, _U2>& __p) 5209: { 5209: first = __p.first; 5209: second = __p.second; 5209: return *this; 5209: } 5209: 5209: template 5209: 5209: typename enable_if<__and_, 5209: is_assignable<_T2&, _U2&&>>::value, 5209: pair&>::type 5209: operator=(pair<_U1, _U2>&& __p) 5209: { 5209: first = std::forward<_U1>(__p.first); 5209: second = std::forward<_U2>(__p.second); 5209: return *this; 5209: } 5209: 5209: 5209: void 5209: swap(pair& __p) 5209: noexcept(__and_<__is_nothrow_swappable<_T1>, 5209: __is_nothrow_swappable<_T2>>::value) 5209: { 5209: using std::swap; 5209: swap(first, __p.first); 5209: swap(second, __p.second); 5209: } 5209: 5209: private: 5209: template 5209: 5209: pair(tuple<_Args1...>&, tuple<_Args2...>&, 5209: _Index_tuple<_Indexes1...>, _Index_tuple<_Indexes2...>); 5209: 5209: }; 5209: # 463 "/usr/include/c++/10/bits/stl_pair.h" 3 5209: template 5209: inline constexpr bool 5209: operator==(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) 5209: { return __x.first == __y.first && __x.second == __y.second; } 5209: # 486 "/usr/include/c++/10/bits/stl_pair.h" 3 5209: template 5209: inline constexpr bool 5209: operator<(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) 5209: { return __x.first < __y.first 5209: || (!(__y.first < __x.first) && __x.second < __y.second); } 5209: 5209: 5209: template 5209: inline constexpr bool 5209: operator!=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) 5209: { return !(__x == __y); } 5209: 5209: 5209: template 5209: inline constexpr bool 5209: operator>(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) 5209: { return __y < __x; } 5209: 5209: 5209: template 5209: inline constexpr bool 5209: operator<=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) 5209: { return !(__y < __x); } 5209: 5209: 5209: template 5209: inline constexpr bool 5209: operator>=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) 5209: { return !(__x < __y); } 5209: # 523 "/usr/include/c++/10/bits/stl_pair.h" 3 5209: template 5209: inline 5209: 5209: 5209: typename enable_if<__and_<__is_swappable<_T1>, 5209: __is_swappable<_T2>>::value>::type 5209: 5209: 5209: 5209: swap(pair<_T1, _T2>& __x, pair<_T1, _T2>& __y) 5209: noexcept(noexcept(__x.swap(__y))) 5209: { __x.swap(__y); } 5209: 5209: 5209: template 5209: typename enable_if, 5209: __is_swappable<_T2>>::value>::type 5209: swap(pair<_T1, _T2>&, pair<_T1, _T2>&) = delete; 5209: # 563 "/usr/include/c++/10/bits/stl_pair.h" 3 5209: template 5209: constexpr pair::__type, 5209: typename __decay_and_strip<_T2>::__type> 5209: make_pair(_T1&& __x, _T2&& __y) 5209: { 5209: typedef typename __decay_and_strip<_T1>::__type __ds_type1; 5209: typedef typename __decay_and_strip<_T2>::__type __ds_type2; 5209: typedef pair<__ds_type1, __ds_type2> __pair_type; 5209: return __pair_type(std::forward<_T1>(__x), std::forward<_T2>(__y)); 5209: } 5209: # 582 "/usr/include/c++/10/bits/stl_pair.h" 3 5209: 5209: } 5209: # 65 "/usr/include/c++/10/bits/stl_algobase.h" 2 3 5209: # 1 "/usr/include/c++/10/bits/stl_iterator_base_types.h" 1 3 5209: # 62 "/usr/include/c++/10/bits/stl_iterator_base_types.h" 3 5209: 5209: # 63 "/usr/include/c++/10/bits/stl_iterator_base_types.h" 3 5209: # 74 "/usr/include/c++/10/bits/stl_iterator_base_types.h" 3 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: # 93 "/usr/include/c++/10/bits/stl_iterator_base_types.h" 3 5209: struct input_iterator_tag { }; 5209: 5209: 5209: struct output_iterator_tag { }; 5209: 5209: 5209: struct forward_iterator_tag : public input_iterator_tag { }; 5209: 5209: 5209: 5209: struct bidirectional_iterator_tag : public forward_iterator_tag { }; 5209: 5209: 5209: 5209: struct random_access_iterator_tag : public bidirectional_iterator_tag { }; 5209: # 125 "/usr/include/c++/10/bits/stl_iterator_base_types.h" 3 5209: template 5209: struct iterator 5209: { 5209: 5209: typedef _Category iterator_category; 5209: 5209: typedef _Tp value_type; 5209: 5209: typedef _Distance difference_type; 5209: 5209: typedef _Pointer pointer; 5209: 5209: typedef _Reference reference; 5209: }; 5209: # 149 "/usr/include/c++/10/bits/stl_iterator_base_types.h" 3 5209: template 5209: struct iterator_traits; 5209: 5209: 5209: 5209: 5209: template> 5209: struct __iterator_traits { }; 5209: 5209: 5209: 5209: template 5209: struct __iterator_traits<_Iterator, 5209: __void_t> 5209: { 5209: typedef typename _Iterator::iterator_category iterator_category; 5209: typedef typename _Iterator::value_type value_type; 5209: typedef typename _Iterator::difference_type difference_type; 5209: typedef typename _Iterator::pointer pointer; 5209: typedef typename _Iterator::reference reference; 5209: }; 5209: 5209: 5209: template 5209: struct iterator_traits 5209: : public __iterator_traits<_Iterator> { }; 5209: # 209 "/usr/include/c++/10/bits/stl_iterator_base_types.h" 3 5209: template 5209: struct iterator_traits<_Tp*> 5209: { 5209: typedef random_access_iterator_tag iterator_category; 5209: typedef _Tp value_type; 5209: typedef ptrdiff_t difference_type; 5209: typedef _Tp* pointer; 5209: typedef _Tp& reference; 5209: }; 5209: 5209: 5209: template 5209: struct iterator_traits 5209: { 5209: typedef random_access_iterator_tag iterator_category; 5209: typedef _Tp value_type; 5209: typedef ptrdiff_t difference_type; 5209: typedef const _Tp* pointer; 5209: typedef const _Tp& reference; 5209: }; 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: inline constexpr 5209: typename iterator_traits<_Iter>::iterator_category 5209: __iterator_category(const _Iter&) 5209: { return typename iterator_traits<_Iter>::iterator_category(); } 5209: 5209: 5209: 5209: 5209: template 5209: using __iterator_category_t 5209: = typename iterator_traits<_Iter>::iterator_category; 5209: 5209: template 5209: using _RequireInputIter = 5209: __enable_if_t, 5209: input_iterator_tag>::value>; 5209: 5209: template> 5209: struct __is_random_access_iter 5209: : is_base_of 5209: { 5209: typedef is_base_of _Base; 5209: enum { __value = _Base::value }; 5209: }; 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: } 5209: # 66 "/usr/include/c++/10/bits/stl_algobase.h" 2 3 5209: # 1 "/usr/include/c++/10/bits/stl_iterator_base_funcs.h" 1 3 5209: # 62 "/usr/include/c++/10/bits/stl_iterator_base_funcs.h" 3 5209: 5209: # 63 "/usr/include/c++/10/bits/stl_iterator_base_funcs.h" 3 5209: 5209: # 1 "/usr/include/c++/10/bits/concept_check.h" 1 3 5209: # 33 "/usr/include/c++/10/bits/concept_check.h" 3 5209: 5209: # 34 "/usr/include/c++/10/bits/concept_check.h" 3 5209: # 65 "/usr/include/c++/10/bits/stl_iterator_base_funcs.h" 2 3 5209: # 1 "/usr/include/c++/10/debug/assertions.h" 1 3 5209: # 66 "/usr/include/c++/10/bits/stl_iterator_base_funcs.h" 2 3 5209: 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: 5209: 5209: template struct _List_iterator; 5209: template struct _List_const_iterator; 5209: 5209: 5209: template 5209: inline 5209: typename iterator_traits<_InputIterator>::difference_type 5209: __distance(_InputIterator __first, _InputIterator __last, 5209: input_iterator_tag) 5209: { 5209: 5209: 5209: 5209: typename iterator_traits<_InputIterator>::difference_type __n = 0; 5209: while (__first != __last) 5209: { 5209: ++__first; 5209: ++__n; 5209: } 5209: return __n; 5209: } 5209: 5209: template 5209: inline 5209: typename iterator_traits<_RandomAccessIterator>::difference_type 5209: __distance(_RandomAccessIterator __first, _RandomAccessIterator __last, 5209: random_access_iterator_tag) 5209: { 5209: 5209: 5209: 5209: return __last - __first; 5209: } 5209: 5209: 5209: 5209: template 5209: ptrdiff_t 5209: __distance(std::_List_iterator<_Tp>, 5209: std::_List_iterator<_Tp>, 5209: input_iterator_tag); 5209: 5209: template 5209: ptrdiff_t 5209: __distance(std::_List_const_iterator<_Tp>, 5209: std::_List_const_iterator<_Tp>, 5209: input_iterator_tag); 5209: # 135 "/usr/include/c++/10/bits/stl_iterator_base_funcs.h" 3 5209: template 5209: inline 5209: typename iterator_traits<_InputIterator>::difference_type 5209: distance(_InputIterator __first, _InputIterator __last) 5209: { 5209: 5209: return std::__distance(__first, __last, 5209: std::__iterator_category(__first)); 5209: } 5209: 5209: template 5209: inline void 5209: __advance(_InputIterator& __i, _Distance __n, input_iterator_tag) 5209: { 5209: 5209: 5209: ; 5209: while (__n--) 5209: ++__i; 5209: } 5209: 5209: template 5209: inline void 5209: __advance(_BidirectionalIterator& __i, _Distance __n, 5209: bidirectional_iterator_tag) 5209: { 5209: 5209: 5209: 5209: if (__n > 0) 5209: while (__n--) 5209: ++__i; 5209: else 5209: while (__n++) 5209: --__i; 5209: } 5209: 5209: template 5209: inline void 5209: __advance(_RandomAccessIterator& __i, _Distance __n, 5209: random_access_iterator_tag) 5209: { 5209: 5209: 5209: 5209: if (__builtin_constant_p(__n) && __n == 1) 5209: ++__i; 5209: else if (__builtin_constant_p(__n) && __n == -1) 5209: --__i; 5209: else 5209: __i += __n; 5209: } 5209: # 200 "/usr/include/c++/10/bits/stl_iterator_base_funcs.h" 3 5209: template 5209: inline void 5209: advance(_InputIterator& __i, _Distance __n) 5209: { 5209: 5209: typename iterator_traits<_InputIterator>::difference_type __d = __n; 5209: std::__advance(__i, __d, std::__iterator_category(__i)); 5209: } 5209: 5209: 5209: 5209: template 5209: inline _InputIterator 5209: next(_InputIterator __x, typename 5209: iterator_traits<_InputIterator>::difference_type __n = 1) 5209: { 5209: 5209: 5209: std::advance(__x, __n); 5209: return __x; 5209: } 5209: 5209: template 5209: inline _BidirectionalIterator 5209: prev(_BidirectionalIterator __x, typename 5209: iterator_traits<_BidirectionalIterator>::difference_type __n = 1) 5209: { 5209: 5209: 5209: 5209: std::advance(__x, -__n); 5209: return __x; 5209: } 5209: 5209: 5209: 5209: 5209: } 5209: # 67 "/usr/include/c++/10/bits/stl_algobase.h" 2 3 5209: # 1 "/usr/include/c++/10/bits/stl_iterator.h" 1 3 5209: # 66 "/usr/include/c++/10/bits/stl_iterator.h" 3 5209: # 1 "/usr/include/c++/10/bits/ptr_traits.h" 1 3 5209: # 37 "/usr/include/c++/10/bits/ptr_traits.h" 3 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: class __undefined; 5209: 5209: 5209: template 5209: struct __get_first_arg 5209: { using type = __undefined; }; 5209: 5209: template class _Template, typename _Tp, 5209: typename... _Types> 5209: struct __get_first_arg<_Template<_Tp, _Types...>> 5209: { using type = _Tp; }; 5209: 5209: template 5209: using __get_first_arg_t = typename __get_first_arg<_Tp>::type; 5209: 5209: 5209: template 5209: struct __replace_first_arg 5209: { }; 5209: 5209: template class _Template, typename _Up, 5209: typename _Tp, typename... _Types> 5209: struct __replace_first_arg<_Template<_Tp, _Types...>, _Up> 5209: { using type = _Template<_Up, _Types...>; }; 5209: 5209: template 5209: using __replace_first_arg_t = typename __replace_first_arg<_Tp, _Up>::type; 5209: 5209: template 5209: using __make_not_void 5209: = typename conditional::value, __undefined, _Tp>::type; 5209: 5209: 5209: 5209: 5209: 5209: template 5209: struct pointer_traits 5209: { 5209: private: 5209: template 5209: using __element_type = typename _Tp::element_type; 5209: 5209: template 5209: using __difference_type = typename _Tp::difference_type; 5209: 5209: template 5209: struct __rebind : __replace_first_arg<_Tp, _Up> { }; 5209: 5209: template 5209: struct __rebind<_Tp, _Up, __void_t>> 5209: { using type = typename _Tp::template rebind<_Up>; }; 5209: 5209: public: 5209: 5209: using pointer = _Ptr; 5209: 5209: 5209: using element_type 5209: = __detected_or_t<__get_first_arg_t<_Ptr>, __element_type, _Ptr>; 5209: 5209: 5209: using difference_type 5209: = __detected_or_t; 5209: 5209: 5209: template 5209: using rebind = typename __rebind<_Ptr, _Up>::type; 5209: 5209: static _Ptr 5209: pointer_to(__make_not_void& __e) 5209: { return _Ptr::pointer_to(__e); } 5209: 5209: static_assert(!is_same::value, 5209: "pointer type defines element_type or is like SomePointer"); 5209: }; 5209: 5209: 5209: 5209: 5209: 5209: template 5209: struct pointer_traits<_Tp*> 5209: { 5209: 5209: typedef _Tp* pointer; 5209: 5209: typedef _Tp element_type; 5209: 5209: typedef ptrdiff_t difference_type; 5209: 5209: template 5209: using rebind = _Up*; 5209: 5209: 5209: 5209: 5209: 5209: 5209: static pointer 5209: pointer_to(__make_not_void& __r) noexcept 5209: { return std::addressof(__r); } 5209: }; 5209: 5209: 5209: template 5209: using __ptr_rebind = typename pointer_traits<_Ptr>::template rebind<_Tp>; 5209: 5209: template 5209: constexpr _Tp* 5209: __to_address(_Tp* __ptr) noexcept 5209: { 5209: static_assert(!std::is_function<_Tp>::value, "not a function pointer"); 5209: return __ptr; 5209: } 5209: 5209: 5209: template 5209: constexpr typename std::pointer_traits<_Ptr>::element_type* 5209: __to_address(const _Ptr& __ptr) 5209: { return std::__to_address(__ptr.operator->()); } 5209: # 198 "/usr/include/c++/10/bits/ptr_traits.h" 3 5209: 5209: } 5209: # 67 "/usr/include/c++/10/bits/stl_iterator.h" 2 3 5209: # 81 "/usr/include/c++/10/bits/stl_iterator.h" 3 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: # 109 "/usr/include/c++/10/bits/stl_iterator.h" 3 5209: template 5209: class reverse_iterator 5209: : public iterator::iterator_category, 5209: typename iterator_traits<_Iterator>::value_type, 5209: typename iterator_traits<_Iterator>::difference_type, 5209: typename iterator_traits<_Iterator>::pointer, 5209: typename iterator_traits<_Iterator>::reference> 5209: { 5209: protected: 5209: _Iterator current; 5209: 5209: typedef iterator_traits<_Iterator> __traits_type; 5209: 5209: public: 5209: typedef _Iterator iterator_type; 5209: typedef typename __traits_type::difference_type difference_type; 5209: typedef typename __traits_type::pointer pointer; 5209: typedef typename __traits_type::reference reference; 5209: # 135 "/usr/include/c++/10/bits/stl_iterator.h" 3 5209: 5209: reverse_iterator() : current() { } 5209: 5209: 5209: 5209: 5209: explicit 5209: reverse_iterator(iterator_type __x) : current(__x) { } 5209: 5209: 5209: 5209: 5209: 5209: reverse_iterator(const reverse_iterator& __x) 5209: : current(__x.current) { } 5209: 5209: 5209: reverse_iterator& operator=(const reverse_iterator&) = default; 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: 5209: reverse_iterator(const reverse_iterator<_Iter>& __x) 5209: : current(__x.base()) { } 5209: 5209: 5209: 5209: 5209: iterator_type 5209: base() const 5209: { return current; } 5209: # 181 "/usr/include/c++/10/bits/stl_iterator.h" 3 5209: reference 5209: operator*() const 5209: { 5209: _Iterator __tmp = current; 5209: return *--__tmp; 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: pointer 5209: operator->() const 5209: 5209: 5209: 5209: 5209: { 5209: 5209: 5209: _Iterator __tmp = current; 5209: --__tmp; 5209: return _S_to_pointer(__tmp); 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: reverse_iterator& 5209: operator++() 5209: { 5209: --current; 5209: return *this; 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: reverse_iterator 5209: operator++(int) 5209: { 5209: reverse_iterator __tmp = *this; 5209: --current; 5209: return __tmp; 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: reverse_iterator& 5209: operator--() 5209: { 5209: ++current; 5209: return *this; 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: reverse_iterator 5209: operator--(int) 5209: { 5209: reverse_iterator __tmp = *this; 5209: ++current; 5209: return __tmp; 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: reverse_iterator 5209: operator+(difference_type __n) const 5209: { return reverse_iterator(current - __n); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: reverse_iterator& 5209: operator+=(difference_type __n) 5209: { 5209: current -= __n; 5209: return *this; 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: reverse_iterator 5209: operator-(difference_type __n) const 5209: { return reverse_iterator(current + __n); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: reverse_iterator& 5209: operator-=(difference_type __n) 5209: { 5209: current += __n; 5209: return *this; 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: reference 5209: operator[](difference_type __n) const 5209: { return *(*this + __n); } 5209: 5209: private: 5209: template 5209: static _Tp* 5209: _S_to_pointer(_Tp* __p) 5209: { return __p; } 5209: 5209: template 5209: static pointer 5209: _S_to_pointer(_Tp __t) 5209: { return __t.operator->(); } 5209: }; 5209: # 332 "/usr/include/c++/10/bits/stl_iterator.h" 3 5209: template 5209: inline bool 5209: operator==(const reverse_iterator<_Iterator>& __x, 5209: const reverse_iterator<_Iterator>& __y) 5209: { return __x.base() == __y.base(); } 5209: 5209: template 5209: inline bool 5209: operator<(const reverse_iterator<_Iterator>& __x, 5209: const reverse_iterator<_Iterator>& __y) 5209: { return __y.base() < __x.base(); } 5209: 5209: template 5209: inline bool 5209: operator!=(const reverse_iterator<_Iterator>& __x, 5209: const reverse_iterator<_Iterator>& __y) 5209: { return !(__x == __y); } 5209: 5209: template 5209: inline bool 5209: operator>(const reverse_iterator<_Iterator>& __x, 5209: const reverse_iterator<_Iterator>& __y) 5209: { return __y < __x; } 5209: 5209: template 5209: inline bool 5209: operator<=(const reverse_iterator<_Iterator>& __x, 5209: const reverse_iterator<_Iterator>& __y) 5209: { return !(__y < __x); } 5209: 5209: template 5209: inline bool 5209: operator>=(const reverse_iterator<_Iterator>& __x, 5209: const reverse_iterator<_Iterator>& __y) 5209: { return !(__x < __y); } 5209: 5209: 5209: 5209: template 5209: inline bool 5209: operator==(const reverse_iterator<_IteratorL>& __x, 5209: const reverse_iterator<_IteratorR>& __y) 5209: { return __x.base() == __y.base(); } 5209: 5209: template 5209: inline bool 5209: operator<(const reverse_iterator<_IteratorL>& __x, 5209: const reverse_iterator<_IteratorR>& __y) 5209: { return __y.base() < __x.base(); } 5209: 5209: template 5209: inline bool 5209: operator!=(const reverse_iterator<_IteratorL>& __x, 5209: const reverse_iterator<_IteratorR>& __y) 5209: { return !(__x == __y); } 5209: 5209: template 5209: inline bool 5209: operator>(const reverse_iterator<_IteratorL>& __x, 5209: const reverse_iterator<_IteratorR>& __y) 5209: { return __y < __x; } 5209: 5209: template 5209: inline bool 5209: operator<=(const reverse_iterator<_IteratorL>& __x, 5209: const reverse_iterator<_IteratorR>& __y) 5209: { return !(__y < __x); } 5209: 5209: template 5209: inline bool 5209: operator>=(const reverse_iterator<_IteratorL>& __x, 5209: const reverse_iterator<_IteratorR>& __y) 5209: { return !(__x < __y); } 5209: # 422 "/usr/include/c++/10/bits/stl_iterator.h" 3 5209: template 5209: inline auto 5209: operator-(const reverse_iterator<_IteratorL>& __x, 5209: const reverse_iterator<_IteratorR>& __y) 5209: -> decltype(__y.base() - __x.base()) 5209: { return __y.base() - __x.base(); } 5209: 5209: 5209: template 5209: inline reverse_iterator<_Iterator> 5209: operator+(typename reverse_iterator<_Iterator>::difference_type __n, 5209: const reverse_iterator<_Iterator>& __x) 5209: { return reverse_iterator<_Iterator>(__x.base() - __n); } 5209: 5209: 5209: 5209: template 5209: inline reverse_iterator<_Iterator> 5209: __make_reverse_iterator(_Iterator __i) 5209: { return reverse_iterator<_Iterator>(__i); } 5209: # 463 "/usr/include/c++/10/bits/stl_iterator.h" 3 5209: template 5209: 5209: auto 5209: __niter_base(reverse_iterator<_Iterator> __it) 5209: -> decltype(__make_reverse_iterator(__niter_base(__it.base()))) 5209: { return __make_reverse_iterator(__niter_base(__it.base())); } 5209: 5209: template 5209: struct __is_move_iterator > 5209: : __is_move_iterator<_Iterator> 5209: { }; 5209: 5209: template 5209: 5209: auto 5209: __miter_base(reverse_iterator<_Iterator> __it) 5209: -> decltype(__make_reverse_iterator(__miter_base(__it.base()))) 5209: { return __make_reverse_iterator(__miter_base(__it.base())); } 5209: # 494 "/usr/include/c++/10/bits/stl_iterator.h" 3 5209: template 5209: class back_insert_iterator 5209: : public iterator 5209: { 5209: protected: 5209: _Container* container; 5209: 5209: public: 5209: 5209: typedef _Container container_type; 5209: 5209: 5209: explicit 5209: back_insert_iterator(_Container& __x) 5209: : container(std::__addressof(__x)) { } 5209: # 529 "/usr/include/c++/10/bits/stl_iterator.h" 3 5209: back_insert_iterator& 5209: operator=(const typename _Container::value_type& __value) 5209: { 5209: container->push_back(__value); 5209: return *this; 5209: } 5209: 5209: back_insert_iterator& 5209: operator=(typename _Container::value_type&& __value) 5209: { 5209: container->push_back(std::move(__value)); 5209: return *this; 5209: } 5209: 5209: 5209: 5209: back_insert_iterator& 5209: operator*() 5209: { return *this; } 5209: 5209: 5209: back_insert_iterator& 5209: operator++() 5209: { return *this; } 5209: 5209: 5209: back_insert_iterator 5209: operator++(int) 5209: { return *this; } 5209: }; 5209: # 571 "/usr/include/c++/10/bits/stl_iterator.h" 3 5209: template 5209: inline back_insert_iterator<_Container> 5209: back_inserter(_Container& __x) 5209: { return back_insert_iterator<_Container>(__x); } 5209: # 586 "/usr/include/c++/10/bits/stl_iterator.h" 3 5209: template 5209: class front_insert_iterator 5209: : public iterator 5209: { 5209: protected: 5209: _Container* container; 5209: 5209: public: 5209: 5209: typedef _Container container_type; 5209: 5209: 5209: explicit front_insert_iterator(_Container& __x) 5209: : container(std::__addressof(__x)) { } 5209: # 620 "/usr/include/c++/10/bits/stl_iterator.h" 3 5209: front_insert_iterator& 5209: operator=(const typename _Container::value_type& __value) 5209: { 5209: container->push_front(__value); 5209: return *this; 5209: } 5209: 5209: front_insert_iterator& 5209: operator=(typename _Container::value_type&& __value) 5209: { 5209: container->push_front(std::move(__value)); 5209: return *this; 5209: } 5209: 5209: 5209: 5209: front_insert_iterator& 5209: operator*() 5209: { return *this; } 5209: 5209: 5209: front_insert_iterator& 5209: operator++() 5209: { return *this; } 5209: 5209: 5209: front_insert_iterator 5209: operator++(int) 5209: { return *this; } 5209: }; 5209: # 662 "/usr/include/c++/10/bits/stl_iterator.h" 3 5209: template 5209: inline front_insert_iterator<_Container> 5209: front_inserter(_Container& __x) 5209: { return front_insert_iterator<_Container>(__x); } 5209: # 681 "/usr/include/c++/10/bits/stl_iterator.h" 3 5209: template 5209: class insert_iterator 5209: : public iterator 5209: { 5209: protected: 5209: _Container* container; 5209: typename _Container::iterator iter; 5209: 5209: public: 5209: 5209: typedef _Container container_type; 5209: 5209: 5209: 5209: 5209: 5209: insert_iterator(_Container& __x, typename _Container::iterator __i) 5209: : container(std::__addressof(__x)), iter(__i) {} 5209: # 732 "/usr/include/c++/10/bits/stl_iterator.h" 3 5209: insert_iterator& 5209: operator=(const typename _Container::value_type& __value) 5209: { 5209: iter = container->insert(iter, __value); 5209: ++iter; 5209: return *this; 5209: } 5209: 5209: insert_iterator& 5209: operator=(typename _Container::value_type&& __value) 5209: { 5209: iter = container->insert(iter, std::move(__value)); 5209: ++iter; 5209: return *this; 5209: } 5209: 5209: 5209: 5209: insert_iterator& 5209: operator*() 5209: { return *this; } 5209: 5209: 5209: insert_iterator& 5209: operator++() 5209: { return *this; } 5209: 5209: 5209: insert_iterator& 5209: operator++(int) 5209: { return *this; } 5209: }; 5209: # 777 "/usr/include/c++/10/bits/stl_iterator.h" 3 5209: template 5209: inline insert_iterator<_Container> 5209: inserter(_Container& __x, _Iterator __i) 5209: { 5209: return insert_iterator<_Container>(__x, 5209: typename _Container::iterator(__i)); 5209: } 5209: 5209: 5209: 5209: 5209: } 5209: 5209: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: # 801 "/usr/include/c++/10/bits/stl_iterator.h" 3 5209: template 5209: class __normal_iterator 5209: { 5209: protected: 5209: _Iterator _M_current; 5209: 5209: typedef std::iterator_traits<_Iterator> __traits_type; 5209: 5209: public: 5209: typedef _Iterator iterator_type; 5209: typedef typename __traits_type::iterator_category iterator_category; 5209: typedef typename __traits_type::value_type value_type; 5209: typedef typename __traits_type::difference_type difference_type; 5209: typedef typename __traits_type::reference reference; 5209: typedef typename __traits_type::pointer pointer; 5209: 5209: 5209: 5209: 5209: 5209: constexpr __normal_iterator() noexcept 5209: : _M_current(_Iterator()) { } 5209: 5209: explicit 5209: __normal_iterator(const _Iterator& __i) noexcept 5209: : _M_current(__i) { } 5209: 5209: 5209: template 5209: 5209: __normal_iterator(const __normal_iterator<_Iter, 5209: typename __enable_if< 5209: (std::__are_same<_Iter, typename _Container::pointer>::__value), 5209: _Container>::__type>& __i) noexcept 5209: : _M_current(__i.base()) { } 5209: 5209: 5209: 5209: reference 5209: operator*() const noexcept 5209: { return *_M_current; } 5209: 5209: 5209: pointer 5209: operator->() const noexcept 5209: { return _M_current; } 5209: 5209: 5209: __normal_iterator& 5209: operator++() noexcept 5209: { 5209: ++_M_current; 5209: return *this; 5209: } 5209: 5209: 5209: __normal_iterator 5209: operator++(int) noexcept 5209: { return __normal_iterator(_M_current++); } 5209: 5209: 5209: 5209: __normal_iterator& 5209: operator--() noexcept 5209: { 5209: --_M_current; 5209: return *this; 5209: } 5209: 5209: 5209: __normal_iterator 5209: operator--(int) noexcept 5209: { return __normal_iterator(_M_current--); } 5209: 5209: 5209: 5209: reference 5209: operator[](difference_type __n) const noexcept 5209: { return _M_current[__n]; } 5209: 5209: 5209: __normal_iterator& 5209: operator+=(difference_type __n) noexcept 5209: { _M_current += __n; return *this; } 5209: 5209: 5209: __normal_iterator 5209: operator+(difference_type __n) const noexcept 5209: { return __normal_iterator(_M_current + __n); } 5209: 5209: 5209: __normal_iterator& 5209: operator-=(difference_type __n) noexcept 5209: { _M_current -= __n; return *this; } 5209: 5209: 5209: __normal_iterator 5209: operator-(difference_type __n) const noexcept 5209: { return __normal_iterator(_M_current - __n); } 5209: 5209: 5209: const _Iterator& 5209: base() const noexcept 5209: { return _M_current; } 5209: }; 5209: # 916 "/usr/include/c++/10/bits/stl_iterator.h" 3 5209: template 5209: 5209: inline bool 5209: operator==(const __normal_iterator<_IteratorL, _Container>& __lhs, 5209: const __normal_iterator<_IteratorR, _Container>& __rhs) 5209: noexcept 5209: { return __lhs.base() == __rhs.base(); } 5209: 5209: template 5209: 5209: inline bool 5209: operator==(const __normal_iterator<_Iterator, _Container>& __lhs, 5209: const __normal_iterator<_Iterator, _Container>& __rhs) 5209: noexcept 5209: { return __lhs.base() == __rhs.base(); } 5209: 5209: template 5209: 5209: inline bool 5209: operator!=(const __normal_iterator<_IteratorL, _Container>& __lhs, 5209: const __normal_iterator<_IteratorR, _Container>& __rhs) 5209: noexcept 5209: { return __lhs.base() != __rhs.base(); } 5209: 5209: template 5209: 5209: inline bool 5209: operator!=(const __normal_iterator<_Iterator, _Container>& __lhs, 5209: const __normal_iterator<_Iterator, _Container>& __rhs) 5209: noexcept 5209: { return __lhs.base() != __rhs.base(); } 5209: 5209: 5209: template 5209: 5209: inline bool 5209: operator<(const __normal_iterator<_IteratorL, _Container>& __lhs, 5209: const __normal_iterator<_IteratorR, _Container>& __rhs) 5209: noexcept 5209: { return __lhs.base() < __rhs.base(); } 5209: 5209: template 5209: 5209: inline bool 5209: operator<(const __normal_iterator<_Iterator, _Container>& __lhs, 5209: const __normal_iterator<_Iterator, _Container>& __rhs) 5209: noexcept 5209: { return __lhs.base() < __rhs.base(); } 5209: 5209: template 5209: 5209: inline bool 5209: operator>(const __normal_iterator<_IteratorL, _Container>& __lhs, 5209: const __normal_iterator<_IteratorR, _Container>& __rhs) 5209: noexcept 5209: { return __lhs.base() > __rhs.base(); } 5209: 5209: template 5209: 5209: inline bool 5209: operator>(const __normal_iterator<_Iterator, _Container>& __lhs, 5209: const __normal_iterator<_Iterator, _Container>& __rhs) 5209: noexcept 5209: { return __lhs.base() > __rhs.base(); } 5209: 5209: template 5209: 5209: inline bool 5209: operator<=(const __normal_iterator<_IteratorL, _Container>& __lhs, 5209: const __normal_iterator<_IteratorR, _Container>& __rhs) 5209: noexcept 5209: { return __lhs.base() <= __rhs.base(); } 5209: 5209: template 5209: 5209: inline bool 5209: operator<=(const __normal_iterator<_Iterator, _Container>& __lhs, 5209: const __normal_iterator<_Iterator, _Container>& __rhs) 5209: noexcept 5209: { return __lhs.base() <= __rhs.base(); } 5209: 5209: template 5209: 5209: inline bool 5209: operator>=(const __normal_iterator<_IteratorL, _Container>& __lhs, 5209: const __normal_iterator<_IteratorR, _Container>& __rhs) 5209: noexcept 5209: { return __lhs.base() >= __rhs.base(); } 5209: 5209: template 5209: 5209: inline bool 5209: operator>=(const __normal_iterator<_Iterator, _Container>& __lhs, 5209: const __normal_iterator<_Iterator, _Container>& __rhs) 5209: noexcept 5209: { return __lhs.base() >= __rhs.base(); } 5209: 5209: 5209: 5209: 5209: 5209: template 5209: 5209: 5209: 5209: inline auto 5209: operator-(const __normal_iterator<_IteratorL, _Container>& __lhs, 5209: const __normal_iterator<_IteratorR, _Container>& __rhs) noexcept 5209: -> decltype(__lhs.base() - __rhs.base()) 5209: 5209: 5209: 5209: 5209: 5209: { return __lhs.base() - __rhs.base(); } 5209: 5209: template 5209: 5209: inline typename __normal_iterator<_Iterator, _Container>::difference_type 5209: operator-(const __normal_iterator<_Iterator, _Container>& __lhs, 5209: const __normal_iterator<_Iterator, _Container>& __rhs) 5209: noexcept 5209: { return __lhs.base() - __rhs.base(); } 5209: 5209: template 5209: 5209: inline __normal_iterator<_Iterator, _Container> 5209: operator+(typename __normal_iterator<_Iterator, _Container>::difference_type 5209: __n, const __normal_iterator<_Iterator, _Container>& __i) 5209: noexcept 5209: { return __normal_iterator<_Iterator, _Container>(__i.base() + __n); } 5209: 5209: 5209: } 5209: 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: template 5209: 5209: _Iterator 5209: __niter_base(__gnu_cxx::__normal_iterator<_Iterator, _Container> __it) 5209: noexcept(std::is_nothrow_copy_constructible<_Iterator>::value) 5209: { return __it.base(); } 5209: # 1127 "/usr/include/c++/10/bits/stl_iterator.h" 3 5209: template 5209: class move_iterator 5209: { 5209: _Iterator _M_current; 5209: 5209: using __traits_type = iterator_traits<_Iterator>; 5209: 5209: 5209: 5209: using __base_ref = typename __traits_type::reference; 5209: 5209: 5209: public: 5209: using iterator_type = _Iterator; 5209: # 1151 "/usr/include/c++/10/bits/stl_iterator.h" 3 5209: typedef typename __traits_type::iterator_category iterator_category; 5209: typedef typename __traits_type::value_type value_type; 5209: typedef typename __traits_type::difference_type difference_type; 5209: 5209: typedef _Iterator pointer; 5209: 5209: 5209: typedef typename conditional::value, 5209: typename remove_reference<__base_ref>::type&&, 5209: __base_ref>::type reference; 5209: 5209: 5209: 5209: move_iterator() 5209: : _M_current() { } 5209: 5209: explicit 5209: move_iterator(iterator_type __i) 5209: : _M_current(__i) { } 5209: 5209: template 5209: 5209: move_iterator(const move_iterator<_Iter>& __i) 5209: : _M_current(__i.base()) { } 5209: 5209: iterator_type 5209: base() const 5209: { return _M_current; } 5209: 5209: reference 5209: operator*() const 5209: { return static_cast(*_M_current); } 5209: 5209: pointer 5209: operator->() const 5209: { return _M_current; } 5209: 5209: move_iterator& 5209: operator++() 5209: { 5209: ++_M_current; 5209: return *this; 5209: } 5209: 5209: move_iterator 5209: operator++(int) 5209: { 5209: move_iterator __tmp = *this; 5209: ++_M_current; 5209: return __tmp; 5209: } 5209: 5209: move_iterator& 5209: operator--() 5209: { 5209: --_M_current; 5209: return *this; 5209: } 5209: 5209: move_iterator 5209: operator--(int) 5209: { 5209: move_iterator __tmp = *this; 5209: --_M_current; 5209: return __tmp; 5209: } 5209: 5209: move_iterator 5209: operator+(difference_type __n) const 5209: { return move_iterator(_M_current + __n); } 5209: 5209: move_iterator& 5209: operator+=(difference_type __n) 5209: { 5209: _M_current += __n; 5209: return *this; 5209: } 5209: 5209: move_iterator 5209: operator-(difference_type __n) const 5209: { return move_iterator(_M_current - __n); } 5209: 5209: move_iterator& 5209: operator-=(difference_type __n) 5209: { 5209: _M_current -= __n; 5209: return *this; 5209: } 5209: 5209: reference 5209: operator[](difference_type __n) const 5209: { return std::move(_M_current[__n]); } 5209: # 1271 "/usr/include/c++/10/bits/stl_iterator.h" 3 5209: }; 5209: 5209: 5209: 5209: 5209: template 5209: inline bool 5209: operator==(const move_iterator<_IteratorL>& __x, 5209: const move_iterator<_IteratorR>& __y) 5209: { return __x.base() == __y.base(); } 5209: 5209: template 5209: inline bool 5209: operator==(const move_iterator<_Iterator>& __x, 5209: const move_iterator<_Iterator>& __y) 5209: { return __x.base() == __y.base(); } 5209: 5209: template 5209: inline bool 5209: operator!=(const move_iterator<_IteratorL>& __x, 5209: const move_iterator<_IteratorR>& __y) 5209: { return !(__x == __y); } 5209: 5209: template 5209: inline bool 5209: operator!=(const move_iterator<_Iterator>& __x, 5209: const move_iterator<_Iterator>& __y) 5209: { return !(__x == __y); } 5209: 5209: template 5209: inline bool 5209: operator<(const move_iterator<_IteratorL>& __x, 5209: const move_iterator<_IteratorR>& __y) 5209: { return __x.base() < __y.base(); } 5209: 5209: template 5209: inline bool 5209: operator<(const move_iterator<_Iterator>& __x, 5209: const move_iterator<_Iterator>& __y) 5209: { return __x.base() < __y.base(); } 5209: 5209: template 5209: inline bool 5209: operator<=(const move_iterator<_IteratorL>& __x, 5209: const move_iterator<_IteratorR>& __y) 5209: { return !(__y < __x); } 5209: 5209: template 5209: inline bool 5209: operator<=(const move_iterator<_Iterator>& __x, 5209: const move_iterator<_Iterator>& __y) 5209: { return !(__y < __x); } 5209: 5209: template 5209: inline bool 5209: operator>(const move_iterator<_IteratorL>& __x, 5209: const move_iterator<_IteratorR>& __y) 5209: { return __y < __x; } 5209: 5209: template 5209: inline bool 5209: operator>(const move_iterator<_Iterator>& __x, 5209: const move_iterator<_Iterator>& __y) 5209: { return __y < __x; } 5209: 5209: template 5209: inline bool 5209: operator>=(const move_iterator<_IteratorL>& __x, 5209: const move_iterator<_IteratorR>& __y) 5209: { return !(__x < __y); } 5209: 5209: template 5209: inline bool 5209: operator>=(const move_iterator<_Iterator>& __x, 5209: const move_iterator<_Iterator>& __y) 5209: { return !(__x < __y); } 5209: 5209: 5209: template 5209: inline auto 5209: operator-(const move_iterator<_IteratorL>& __x, 5209: const move_iterator<_IteratorR>& __y) 5209: -> decltype(__x.base() - __y.base()) 5209: { return __x.base() - __y.base(); } 5209: 5209: template 5209: inline move_iterator<_Iterator> 5209: operator+(typename move_iterator<_Iterator>::difference_type __n, 5209: const move_iterator<_Iterator>& __x) 5209: { return __x + __n; } 5209: 5209: template 5209: inline move_iterator<_Iterator> 5209: make_move_iterator(_Iterator __i) 5209: { return move_iterator<_Iterator>(__i); } 5209: 5209: template::value_type>::value, 5209: _Iterator, move_iterator<_Iterator>>::type> 5209: inline _ReturnType 5209: __make_move_if_noexcept_iterator(_Iterator __i) 5209: { return _ReturnType(__i); } 5209: 5209: 5209: 5209: template::value, 5209: const _Tp*, move_iterator<_Tp*>>::type> 5209: inline _ReturnType 5209: __make_move_if_noexcept_iterator(_Tp* __i) 5209: { return _ReturnType(__i); } 5209: # 1972 "/usr/include/c++/10/bits/stl_iterator.h" 3 5209: template 5209: auto 5209: __niter_base(move_iterator<_Iterator> __it) 5209: -> decltype(make_move_iterator(__niter_base(__it.base()))) 5209: { return make_move_iterator(__niter_base(__it.base())); } 5209: 5209: template 5209: struct __is_move_iterator > 5209: { 5209: enum { __value = 1 }; 5209: typedef __true_type __type; 5209: }; 5209: 5209: template 5209: auto 5209: __miter_base(move_iterator<_Iterator> __it) 5209: -> decltype(__miter_base(__it.base())) 5209: { return __miter_base(__it.base()); } 5209: # 2019 "/usr/include/c++/10/bits/stl_iterator.h" 3 5209: 5209: } 5209: # 68 "/usr/include/c++/10/bits/stl_algobase.h" 2 3 5209: 5209: # 1 "/usr/include/c++/10/debug/debug.h" 1 3 5209: # 48 "/usr/include/c++/10/debug/debug.h" 3 5209: namespace std 5209: { 5209: namespace __debug { } 5209: } 5209: 5209: 5209: 5209: 5209: namespace __gnu_debug 5209: { 5209: using namespace std::__debug; 5209: 5209: template 5209: struct _Safe_iterator; 5209: } 5209: # 70 "/usr/include/c++/10/bits/stl_algobase.h" 2 3 5209: 5209: # 1 "/usr/include/c++/10/bits/predefined_ops.h" 1 3 5209: # 33 "/usr/include/c++/10/bits/predefined_ops.h" 3 5209: namespace __gnu_cxx 5209: { 5209: namespace __ops 5209: { 5209: struct _Iter_less_iter 5209: { 5209: template 5209: 5209: bool 5209: operator()(_Iterator1 __it1, _Iterator2 __it2) const 5209: { return *__it1 < *__it2; } 5209: }; 5209: 5209: 5209: inline _Iter_less_iter 5209: __iter_less_iter() 5209: { return _Iter_less_iter(); } 5209: 5209: struct _Iter_less_val 5209: { 5209: 5209: constexpr _Iter_less_val() = default; 5209: 5209: 5209: 5209: 5209: 5209: explicit 5209: _Iter_less_val(_Iter_less_iter) { } 5209: 5209: template 5209: 5209: bool 5209: operator()(_Iterator __it, _Value& __val) const 5209: { return *__it < __val; } 5209: }; 5209: 5209: 5209: inline _Iter_less_val 5209: __iter_less_val() 5209: { return _Iter_less_val(); } 5209: 5209: 5209: inline _Iter_less_val 5209: __iter_comp_val(_Iter_less_iter) 5209: { return _Iter_less_val(); } 5209: 5209: struct _Val_less_iter 5209: { 5209: 5209: constexpr _Val_less_iter() = default; 5209: 5209: 5209: 5209: 5209: 5209: explicit 5209: _Val_less_iter(_Iter_less_iter) { } 5209: 5209: template 5209: 5209: bool 5209: operator()(_Value& __val, _Iterator __it) const 5209: { return __val < *__it; } 5209: }; 5209: 5209: 5209: inline _Val_less_iter 5209: __val_less_iter() 5209: { return _Val_less_iter(); } 5209: 5209: 5209: inline _Val_less_iter 5209: __val_comp_iter(_Iter_less_iter) 5209: { return _Val_less_iter(); } 5209: 5209: struct _Iter_equal_to_iter 5209: { 5209: template 5209: 5209: bool 5209: operator()(_Iterator1 __it1, _Iterator2 __it2) const 5209: { return *__it1 == *__it2; } 5209: }; 5209: 5209: 5209: inline _Iter_equal_to_iter 5209: __iter_equal_to_iter() 5209: { return _Iter_equal_to_iter(); } 5209: 5209: struct _Iter_equal_to_val 5209: { 5209: template 5209: 5209: bool 5209: operator()(_Iterator __it, _Value& __val) const 5209: { return *__it == __val; } 5209: }; 5209: 5209: 5209: inline _Iter_equal_to_val 5209: __iter_equal_to_val() 5209: { return _Iter_equal_to_val(); } 5209: 5209: 5209: inline _Iter_equal_to_val 5209: __iter_comp_val(_Iter_equal_to_iter) 5209: { return _Iter_equal_to_val(); } 5209: 5209: template 5209: struct _Iter_comp_iter 5209: { 5209: _Compare _M_comp; 5209: 5209: explicit 5209: _Iter_comp_iter(_Compare __comp) 5209: : _M_comp(std::move(__comp)) 5209: { } 5209: 5209: template 5209: 5209: bool 5209: operator()(_Iterator1 __it1, _Iterator2 __it2) 5209: { return bool(_M_comp(*__it1, *__it2)); } 5209: }; 5209: 5209: template 5209: 5209: inline _Iter_comp_iter<_Compare> 5209: __iter_comp_iter(_Compare __comp) 5209: { return _Iter_comp_iter<_Compare>(std::move(__comp)); } 5209: 5209: template 5209: struct _Iter_comp_val 5209: { 5209: _Compare _M_comp; 5209: 5209: 5209: explicit 5209: _Iter_comp_val(_Compare __comp) 5209: : _M_comp(std::move(__comp)) 5209: { } 5209: 5209: 5209: explicit 5209: _Iter_comp_val(const _Iter_comp_iter<_Compare>& __comp) 5209: : _M_comp(__comp._M_comp) 5209: { } 5209: 5209: 5209: 5209: explicit 5209: _Iter_comp_val(_Iter_comp_iter<_Compare>&& __comp) 5209: : _M_comp(std::move(__comp._M_comp)) 5209: { } 5209: 5209: 5209: template 5209: 5209: bool 5209: operator()(_Iterator __it, _Value& __val) 5209: { return bool(_M_comp(*__it, __val)); } 5209: }; 5209: 5209: template 5209: 5209: inline _Iter_comp_val<_Compare> 5209: __iter_comp_val(_Compare __comp) 5209: { return _Iter_comp_val<_Compare>(std::move(__comp)); } 5209: 5209: template 5209: 5209: inline _Iter_comp_val<_Compare> 5209: __iter_comp_val(_Iter_comp_iter<_Compare> __comp) 5209: { return _Iter_comp_val<_Compare>(std::move(__comp)); } 5209: 5209: template 5209: struct _Val_comp_iter 5209: { 5209: _Compare _M_comp; 5209: 5209: 5209: explicit 5209: _Val_comp_iter(_Compare __comp) 5209: : _M_comp(std::move(__comp)) 5209: { } 5209: 5209: 5209: explicit 5209: _Val_comp_iter(const _Iter_comp_iter<_Compare>& __comp) 5209: : _M_comp(__comp._M_comp) 5209: { } 5209: 5209: 5209: 5209: explicit 5209: _Val_comp_iter(_Iter_comp_iter<_Compare>&& __comp) 5209: : _M_comp(std::move(__comp._M_comp)) 5209: { } 5209: 5209: 5209: template 5209: 5209: bool 5209: operator()(_Value& __val, _Iterator __it) 5209: { return bool(_M_comp(__val, *__it)); } 5209: }; 5209: 5209: template 5209: 5209: inline _Val_comp_iter<_Compare> 5209: __val_comp_iter(_Compare __comp) 5209: { return _Val_comp_iter<_Compare>(std::move(__comp)); } 5209: 5209: template 5209: 5209: inline _Val_comp_iter<_Compare> 5209: __val_comp_iter(_Iter_comp_iter<_Compare> __comp) 5209: { return _Val_comp_iter<_Compare>(std::move(__comp)); } 5209: 5209: template 5209: struct _Iter_equals_val 5209: { 5209: _Value& _M_value; 5209: 5209: 5209: explicit 5209: _Iter_equals_val(_Value& __value) 5209: : _M_value(__value) 5209: { } 5209: 5209: template 5209: 5209: bool 5209: operator()(_Iterator __it) 5209: { return *__it == _M_value; } 5209: }; 5209: 5209: template 5209: 5209: inline _Iter_equals_val<_Value> 5209: __iter_equals_val(_Value& __val) 5209: { return _Iter_equals_val<_Value>(__val); } 5209: 5209: template 5209: struct _Iter_equals_iter 5209: { 5209: _Iterator1 _M_it1; 5209: 5209: 5209: explicit 5209: _Iter_equals_iter(_Iterator1 __it1) 5209: : _M_it1(__it1) 5209: { } 5209: 5209: template 5209: 5209: bool 5209: operator()(_Iterator2 __it2) 5209: { return *__it2 == *_M_it1; } 5209: }; 5209: 5209: template 5209: 5209: inline _Iter_equals_iter<_Iterator> 5209: __iter_comp_iter(_Iter_equal_to_iter, _Iterator __it) 5209: { return _Iter_equals_iter<_Iterator>(__it); } 5209: 5209: template 5209: struct _Iter_pred 5209: { 5209: _Predicate _M_pred; 5209: 5209: 5209: explicit 5209: _Iter_pred(_Predicate __pred) 5209: : _M_pred(std::move(__pred)) 5209: { } 5209: 5209: template 5209: 5209: bool 5209: operator()(_Iterator __it) 5209: { return bool(_M_pred(*__it)); } 5209: }; 5209: 5209: template 5209: 5209: inline _Iter_pred<_Predicate> 5209: __pred_iter(_Predicate __pred) 5209: { return _Iter_pred<_Predicate>(std::move(__pred)); } 5209: 5209: template 5209: struct _Iter_comp_to_val 5209: { 5209: _Compare _M_comp; 5209: _Value& _M_value; 5209: 5209: 5209: _Iter_comp_to_val(_Compare __comp, _Value& __value) 5209: : _M_comp(std::move(__comp)), _M_value(__value) 5209: { } 5209: 5209: template 5209: 5209: bool 5209: operator()(_Iterator __it) 5209: { return bool(_M_comp(*__it, _M_value)); } 5209: }; 5209: 5209: template 5209: _Iter_comp_to_val<_Compare, _Value> 5209: 5209: __iter_comp_val(_Compare __comp, _Value &__val) 5209: { 5209: return _Iter_comp_to_val<_Compare, _Value>(std::move(__comp), __val); 5209: } 5209: 5209: template 5209: struct _Iter_comp_to_iter 5209: { 5209: _Compare _M_comp; 5209: _Iterator1 _M_it1; 5209: 5209: 5209: _Iter_comp_to_iter(_Compare __comp, _Iterator1 __it1) 5209: : _M_comp(std::move(__comp)), _M_it1(__it1) 5209: { } 5209: 5209: template 5209: 5209: bool 5209: operator()(_Iterator2 __it2) 5209: { return bool(_M_comp(*__it2, *_M_it1)); } 5209: }; 5209: 5209: template 5209: 5209: inline _Iter_comp_to_iter<_Compare, _Iterator> 5209: __iter_comp_iter(_Iter_comp_iter<_Compare> __comp, _Iterator __it) 5209: { 5209: return _Iter_comp_to_iter<_Compare, _Iterator>( 5209: std::move(__comp._M_comp), __it); 5209: } 5209: 5209: template 5209: struct _Iter_negate 5209: { 5209: _Predicate _M_pred; 5209: 5209: 5209: explicit 5209: _Iter_negate(_Predicate __pred) 5209: : _M_pred(std::move(__pred)) 5209: { } 5209: 5209: template 5209: 5209: bool 5209: operator()(_Iterator __it) 5209: { return !bool(_M_pred(*__it)); } 5209: }; 5209: 5209: template 5209: 5209: inline _Iter_negate<_Predicate> 5209: __negate(_Iter_pred<_Predicate> __pred) 5209: { return _Iter_negate<_Predicate>(std::move(__pred._M_pred)); } 5209: 5209: } 5209: } 5209: # 72 "/usr/include/c++/10/bits/stl_algobase.h" 2 3 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: 5209: inline void* 5209: __memmove(_Tp* __dst, const _Tp* __src, size_t __num) 5209: { 5209: # 108 "/usr/include/c++/10/bits/stl_algobase.h" 3 5209: return __builtin_memmove(__dst, __src, sizeof(_Tp) * __num); 5209: return __dst; 5209: } 5209: 5209: 5209: 5209: 5209: 5209: template 5209: 5209: inline int 5209: __memcmp(const _Tp* __first1, const _Tp* __first2, size_t __num) 5209: { 5209: # 131 "/usr/include/c++/10/bits/stl_algobase.h" 3 5209: return __builtin_memcmp(__first1, __first2, sizeof(_Tp) * __num); 5209: } 5209: # 177 "/usr/include/c++/10/bits/stl_algobase.h" 3 5209: template 5209: 5209: inline void 5209: iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b) 5209: { 5209: 5209: 5209: 5209: 5209: # 208 "/usr/include/c++/10/bits/stl_algobase.h" 3 5209: swap(*__a, *__b); 5209: 5209: } 5209: # 224 "/usr/include/c++/10/bits/stl_algobase.h" 3 5209: template 5209: 5209: _ForwardIterator2 5209: swap_ranges(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 5209: _ForwardIterator2 __first2) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: 5209: for (; __first1 != __last1; ++__first1, (void)++__first2) 5209: std::iter_swap(__first1, __first2); 5209: return __first2; 5209: } 5209: # 253 "/usr/include/c++/10/bits/stl_algobase.h" 3 5209: template 5209: 5209: inline const _Tp& 5209: min(const _Tp& __a, const _Tp& __b) 5209: { 5209: 5209: 5209: 5209: if (__b < __a) 5209: return __b; 5209: return __a; 5209: } 5209: # 277 "/usr/include/c++/10/bits/stl_algobase.h" 3 5209: template 5209: 5209: inline const _Tp& 5209: max(const _Tp& __a, const _Tp& __b) 5209: { 5209: 5209: 5209: 5209: if (__a < __b) 5209: return __b; 5209: return __a; 5209: } 5209: # 301 "/usr/include/c++/10/bits/stl_algobase.h" 3 5209: template 5209: 5209: inline const _Tp& 5209: min(const _Tp& __a, const _Tp& __b, _Compare __comp) 5209: { 5209: 5209: if (__comp(__b, __a)) 5209: return __b; 5209: return __a; 5209: } 5209: # 323 "/usr/include/c++/10/bits/stl_algobase.h" 3 5209: template 5209: 5209: inline const _Tp& 5209: max(const _Tp& __a, const _Tp& __b, _Compare __comp) 5209: { 5209: 5209: if (__comp(__a, __b)) 5209: return __b; 5209: return __a; 5209: } 5209: 5209: 5209: 5209: template 5209: 5209: inline _Iterator 5209: __niter_base(_Iterator __it) 5209: noexcept(std::is_nothrow_copy_constructible<_Iterator>::value) 5209: { return __it; } 5209: 5209: 5209: 5209: 5209: template 5209: 5209: inline _From 5209: __niter_wrap(_From __from, _To __res) 5209: { return __from + (__res - std::__niter_base(__from)); } 5209: 5209: 5209: template 5209: 5209: inline _Iterator 5209: __niter_wrap(const _Iterator&, _Iterator __res) 5209: { return __res; } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: struct __copy_move 5209: { 5209: template 5209: 5209: static _OI 5209: __copy_m(_II __first, _II __last, _OI __result) 5209: { 5209: for (; __first != __last; ++__result, (void)++__first) 5209: *__result = *__first; 5209: return __result; 5209: } 5209: }; 5209: 5209: 5209: template 5209: struct __copy_move 5209: { 5209: template 5209: 5209: static _OI 5209: __copy_m(_II __first, _II __last, _OI __result) 5209: { 5209: for (; __first != __last; ++__result, (void)++__first) 5209: *__result = std::move(*__first); 5209: return __result; 5209: } 5209: }; 5209: 5209: 5209: template<> 5209: struct __copy_move 5209: { 5209: template 5209: 5209: static _OI 5209: __copy_m(_II __first, _II __last, _OI __result) 5209: { 5209: typedef typename iterator_traits<_II>::difference_type _Distance; 5209: for(_Distance __n = __last - __first; __n > 0; --__n) 5209: { 5209: *__result = *__first; 5209: ++__first; 5209: ++__result; 5209: } 5209: return __result; 5209: } 5209: }; 5209: 5209: 5209: template<> 5209: struct __copy_move 5209: { 5209: template 5209: 5209: static _OI 5209: __copy_m(_II __first, _II __last, _OI __result) 5209: { 5209: typedef typename iterator_traits<_II>::difference_type _Distance; 5209: for(_Distance __n = __last - __first; __n > 0; --__n) 5209: { 5209: *__result = std::move(*__first); 5209: ++__first; 5209: ++__result; 5209: } 5209: return __result; 5209: } 5209: }; 5209: 5209: 5209: template 5209: struct __copy_move<_IsMove, true, random_access_iterator_tag> 5209: { 5209: template 5209: 5209: static _Tp* 5209: __copy_m(const _Tp* __first, const _Tp* __last, _Tp* __result) 5209: { 5209: 5209: using __assignable = conditional<_IsMove, 5209: is_move_assignable<_Tp>, 5209: is_copy_assignable<_Tp>>; 5209: 5209: static_assert( __assignable::type::value, "type is not assignable" ); 5209: 5209: const ptrdiff_t _Num = __last - __first; 5209: if (_Num) 5209: std::__memmove<_IsMove>(__result, __first, _Num); 5209: return __result + _Num; 5209: } 5209: }; 5209: 5209: 5209: 5209: template 5209: struct char_traits; 5209: 5209: template 5209: class istreambuf_iterator; 5209: 5209: template 5209: class ostreambuf_iterator; 5209: 5209: template 5209: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 5209: ostreambuf_iterator<_CharT, char_traits<_CharT> > >::__type 5209: __copy_move_a2(_CharT*, _CharT*, 5209: ostreambuf_iterator<_CharT, char_traits<_CharT> >); 5209: 5209: template 5209: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 5209: ostreambuf_iterator<_CharT, char_traits<_CharT> > >::__type 5209: __copy_move_a2(const _CharT*, const _CharT*, 5209: ostreambuf_iterator<_CharT, char_traits<_CharT> >); 5209: 5209: template 5209: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 5209: _CharT*>::__type 5209: __copy_move_a2(istreambuf_iterator<_CharT, char_traits<_CharT> >, 5209: istreambuf_iterator<_CharT, char_traits<_CharT> >, _CharT*); 5209: 5209: template 5209: 5209: inline _OI 5209: __copy_move_a2(_II __first, _II __last, _OI __result) 5209: { 5209: typedef typename iterator_traits<_II>::value_type _ValueTypeI; 5209: typedef typename iterator_traits<_OI>::value_type _ValueTypeO; 5209: typedef typename iterator_traits<_II>::iterator_category _Category; 5209: const bool __simple = (__is_trivially_copyable(_ValueTypeI) 5209: && __is_pointer<_II>::__value 5209: && __is_pointer<_OI>::__value 5209: && __are_same<_ValueTypeI, _ValueTypeO>::__value); 5209: return std::__copy_move<_IsMove, __simple, 5209: _Category>::__copy_m(__first, __last, __result); 5209: } 5209: 5209: 5209: 5209: template 5209: struct _Deque_iterator; 5209: 5209: 5209: 5209: template 5209: _OI 5209: __copy_move_a1(std::_Deque_iterator<_Tp, _Ref, _Ptr>, 5209: std::_Deque_iterator<_Tp, _Ref, _Ptr>, 5209: _OI); 5209: 5209: template 5209: std::_Deque_iterator<_OTp, _OTp&, _OTp*> 5209: __copy_move_a1(std::_Deque_iterator<_ITp, _IRef, _IPtr>, 5209: std::_Deque_iterator<_ITp, _IRef, _IPtr>, 5209: std::_Deque_iterator<_OTp, _OTp&, _OTp*>); 5209: 5209: template 5209: typename __gnu_cxx::__enable_if< 5209: __is_random_access_iter<_II>::__value, 5209: std::_Deque_iterator<_Tp, _Tp&, _Tp*> >::__type 5209: __copy_move_a1(_II, _II, std::_Deque_iterator<_Tp, _Tp&, _Tp*>); 5209: 5209: template 5209: 5209: inline _OI 5209: __copy_move_a1(_II __first, _II __last, _OI __result) 5209: { return std::__copy_move_a2<_IsMove>(__first, __last, __result); } 5209: 5209: template 5209: 5209: inline _OI 5209: __copy_move_a(_II __first, _II __last, _OI __result) 5209: { 5209: return std::__niter_wrap(__result, 5209: std::__copy_move_a1<_IsMove>(std::__niter_base(__first), 5209: std::__niter_base(__last), 5209: std::__niter_base(__result))); 5209: } 5209: 5209: template 5209: _OI 5209: __copy_move_a(const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&, 5209: const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&, 5209: _OI); 5209: 5209: template 5209: __gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat> 5209: __copy_move_a(_II, _II, 5209: const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&); 5209: 5209: template 5209: ::__gnu_debug::_Safe_iterator<_OIte, _OSeq, _OCat> 5209: __copy_move_a(const ::__gnu_debug::_Safe_iterator<_IIte, _ISeq, _ICat>&, 5209: const ::__gnu_debug::_Safe_iterator<_IIte, _ISeq, _ICat>&, 5209: const ::__gnu_debug::_Safe_iterator<_OIte, _OSeq, _OCat>&); 5209: # 584 "/usr/include/c++/10/bits/stl_algobase.h" 3 5209: template 5209: 5209: inline _OI 5209: copy(_II __first, _II __last, _OI __result) 5209: { 5209: 5209: 5209: 5209: 5209: ; 5209: 5209: return std::__copy_move_a<__is_move_iterator<_II>::__value> 5209: (std::__miter_base(__first), std::__miter_base(__last), __result); 5209: } 5209: # 617 "/usr/include/c++/10/bits/stl_algobase.h" 3 5209: template 5209: 5209: inline _OI 5209: move(_II __first, _II __last, _OI __result) 5209: { 5209: 5209: 5209: 5209: 5209: ; 5209: 5209: return std::__copy_move_a(std::__miter_base(__first), 5209: std::__miter_base(__last), __result); 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: struct __copy_move_backward 5209: { 5209: template 5209: 5209: static _BI2 5209: __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result) 5209: { 5209: while (__first != __last) 5209: *--__result = *--__last; 5209: return __result; 5209: } 5209: }; 5209: 5209: 5209: template 5209: struct __copy_move_backward 5209: { 5209: template 5209: 5209: static _BI2 5209: __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result) 5209: { 5209: while (__first != __last) 5209: *--__result = std::move(*--__last); 5209: return __result; 5209: } 5209: }; 5209: 5209: 5209: template<> 5209: struct __copy_move_backward 5209: { 5209: template 5209: 5209: static _BI2 5209: __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result) 5209: { 5209: typename iterator_traits<_BI1>::difference_type 5209: __n = __last - __first; 5209: for (; __n > 0; --__n) 5209: *--__result = *--__last; 5209: return __result; 5209: } 5209: }; 5209: 5209: 5209: template<> 5209: struct __copy_move_backward 5209: { 5209: template 5209: 5209: static _BI2 5209: __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result) 5209: { 5209: typename iterator_traits<_BI1>::difference_type 5209: __n = __last - __first; 5209: for (; __n > 0; --__n) 5209: *--__result = std::move(*--__last); 5209: return __result; 5209: } 5209: }; 5209: 5209: 5209: template 5209: struct __copy_move_backward<_IsMove, true, random_access_iterator_tag> 5209: { 5209: template 5209: 5209: static _Tp* 5209: __copy_move_b(const _Tp* __first, const _Tp* __last, _Tp* __result) 5209: { 5209: 5209: using __assignable = conditional<_IsMove, 5209: is_move_assignable<_Tp>, 5209: is_copy_assignable<_Tp>>; 5209: 5209: static_assert( __assignable::type::value, "type is not assignable" ); 5209: 5209: const ptrdiff_t _Num = __last - __first; 5209: if (_Num) 5209: std::__memmove<_IsMove>(__result - _Num, __first, _Num); 5209: return __result - _Num; 5209: } 5209: }; 5209: 5209: template 5209: 5209: inline _BI2 5209: __copy_move_backward_a2(_BI1 __first, _BI1 __last, _BI2 __result) 5209: { 5209: typedef typename iterator_traits<_BI1>::value_type _ValueType1; 5209: typedef typename iterator_traits<_BI2>::value_type _ValueType2; 5209: typedef typename iterator_traits<_BI1>::iterator_category _Category; 5209: const bool __simple = (__is_trivially_copyable(_ValueType1) 5209: && __is_pointer<_BI1>::__value 5209: && __is_pointer<_BI2>::__value 5209: && __are_same<_ValueType1, _ValueType2>::__value); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: return std::__copy_move_backward<_IsMove, __simple, 5209: _Category>::__copy_move_b(__first, 5209: __last, 5209: __result); 5209: } 5209: 5209: template 5209: 5209: inline _BI2 5209: __copy_move_backward_a1(_BI1 __first, _BI1 __last, _BI2 __result) 5209: { return std::__copy_move_backward_a2<_IsMove>(__first, __last, __result); } 5209: 5209: template 5209: _OI 5209: __copy_move_backward_a1(std::_Deque_iterator<_Tp, _Ref, _Ptr>, 5209: std::_Deque_iterator<_Tp, _Ref, _Ptr>, 5209: _OI); 5209: 5209: template 5209: std::_Deque_iterator<_OTp, _OTp&, _OTp*> 5209: __copy_move_backward_a1( 5209: std::_Deque_iterator<_ITp, _IRef, _IPtr>, 5209: std::_Deque_iterator<_ITp, _IRef, _IPtr>, 5209: std::_Deque_iterator<_OTp, _OTp&, _OTp*>); 5209: 5209: template 5209: typename __gnu_cxx::__enable_if< 5209: __is_random_access_iter<_II>::__value, 5209: std::_Deque_iterator<_Tp, _Tp&, _Tp*> >::__type 5209: __copy_move_backward_a1(_II, _II, 5209: std::_Deque_iterator<_Tp, _Tp&, _Tp*>); 5209: 5209: template 5209: 5209: inline _OI 5209: __copy_move_backward_a(_II __first, _II __last, _OI __result) 5209: { 5209: return std::__niter_wrap(__result, 5209: std::__copy_move_backward_a1<_IsMove> 5209: (std::__niter_base(__first), std::__niter_base(__last), 5209: std::__niter_base(__result))); 5209: } 5209: 5209: template 5209: _OI 5209: __copy_move_backward_a( 5209: const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&, 5209: const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&, 5209: _OI); 5209: 5209: template 5209: __gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat> 5209: __copy_move_backward_a(_II, _II, 5209: const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&); 5209: 5209: template 5209: ::__gnu_debug::_Safe_iterator<_OIte, _OSeq, _OCat> 5209: __copy_move_backward_a( 5209: const ::__gnu_debug::_Safe_iterator<_IIte, _ISeq, _ICat>&, 5209: const ::__gnu_debug::_Safe_iterator<_IIte, _ISeq, _ICat>&, 5209: const ::__gnu_debug::_Safe_iterator<_OIte, _OSeq, _OCat>&); 5209: # 828 "/usr/include/c++/10/bits/stl_algobase.h" 3 5209: template 5209: 5209: inline _BI2 5209: copy_backward(_BI1 __first, _BI1 __last, _BI2 __result) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: 5209: return std::__copy_move_backward_a<__is_move_iterator<_BI1>::__value> 5209: (std::__miter_base(__first), std::__miter_base(__last), __result); 5209: } 5209: # 864 "/usr/include/c++/10/bits/stl_algobase.h" 3 5209: template 5209: 5209: inline _BI2 5209: move_backward(_BI1 __first, _BI1 __last, _BI2 __result) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: 5209: return std::__copy_move_backward_a(std::__miter_base(__first), 5209: std::__miter_base(__last), 5209: __result); 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: 5209: inline typename 5209: __gnu_cxx::__enable_if::__value, void>::__type 5209: __fill_a1(_ForwardIterator __first, _ForwardIterator __last, 5209: const _Tp& __value) 5209: { 5209: for (; __first != __last; ++__first) 5209: *__first = __value; 5209: } 5209: 5209: template 5209: 5209: inline typename 5209: __gnu_cxx::__enable_if<__is_scalar<_Tp>::__value, void>::__type 5209: __fill_a1(_ForwardIterator __first, _ForwardIterator __last, 5209: const _Tp& __value) 5209: { 5209: const _Tp __tmp = __value; 5209: for (; __first != __last; ++__first) 5209: *__first = __tmp; 5209: } 5209: 5209: 5209: template 5209: inline typename 5209: __gnu_cxx::__enable_if<__is_byte<_Tp>::__value, void>::__type 5209: __fill_a1(_Tp* __first, _Tp* __last, const _Tp& __c) 5209: { 5209: const _Tp __tmp = __c; 5209: if (const size_t __len = __last - __first) 5209: __builtin_memset(__first, static_cast(__tmp), __len); 5209: } 5209: 5209: template 5209: 5209: inline void 5209: __fill_a1(::__gnu_cxx::__normal_iterator<_Ite, _Cont> __first, 5209: ::__gnu_cxx::__normal_iterator<_Ite, _Cont> __last, 5209: const _Tp& __value) 5209: { std::__fill_a1(__first.base(), __last.base(), __value); } 5209: 5209: template 5209: void 5209: __fill_a1(const std::_Deque_iterator<_Tp, _Tp&, _Tp*>&, 5209: const std::_Deque_iterator<_Tp, _Tp&, _Tp*>&, 5209: const _VTp&); 5209: 5209: template 5209: 5209: inline void 5209: __fill_a(_FIte __first, _FIte __last, const _Tp& __value) 5209: { std::__fill_a1(__first, __last, __value); } 5209: 5209: template 5209: void 5209: __fill_a(const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&, 5209: const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&, 5209: const _Tp&); 5209: # 959 "/usr/include/c++/10/bits/stl_algobase.h" 3 5209: template 5209: 5209: inline void 5209: fill(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value) 5209: { 5209: 5209: 5209: 5209: ; 5209: 5209: std::__fill_a(__first, __last, __value); 5209: } 5209: 5209: 5209: inline constexpr int 5209: __size_to_integer(int __n) { return __n; } 5209: inline constexpr unsigned 5209: __size_to_integer(unsigned __n) { return __n; } 5209: inline constexpr long 5209: __size_to_integer(long __n) { return __n; } 5209: inline constexpr unsigned long 5209: __size_to_integer(unsigned long __n) { return __n; } 5209: inline constexpr long long 5209: __size_to_integer(long long __n) { return __n; } 5209: inline constexpr unsigned long long 5209: __size_to_integer(unsigned long long __n) { return __n; } 5209: 5209: 5209: inline constexpr __int128 5209: __size_to_integer(__int128 __n) { return __n; } 5209: inline constexpr unsigned __int128 5209: __size_to_integer(unsigned __int128 __n) { return __n; } 5209: # 1011 "/usr/include/c++/10/bits/stl_algobase.h" 3 5209: inline constexpr long long 5209: __size_to_integer(float __n) { return __n; } 5209: inline constexpr long long 5209: __size_to_integer(double __n) { return __n; } 5209: inline constexpr long long 5209: __size_to_integer(long double __n) { return __n; } 5209: 5209: 5209: 5209: 5209: 5209: template 5209: 5209: inline typename 5209: __gnu_cxx::__enable_if::__value, _OutputIterator>::__type 5209: __fill_n_a1(_OutputIterator __first, _Size __n, const _Tp& __value) 5209: { 5209: for (; __n > 0; --__n, (void) ++__first) 5209: *__first = __value; 5209: return __first; 5209: } 5209: 5209: template 5209: 5209: inline typename 5209: __gnu_cxx::__enable_if<__is_scalar<_Tp>::__value, _OutputIterator>::__type 5209: __fill_n_a1(_OutputIterator __first, _Size __n, const _Tp& __value) 5209: { 5209: const _Tp __tmp = __value; 5209: for (; __n > 0; --__n, (void) ++__first) 5209: *__first = __tmp; 5209: return __first; 5209: } 5209: 5209: template 5209: ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat> 5209: __fill_n_a(const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>& __first, 5209: _Size __n, const _Tp& __value, 5209: std::input_iterator_tag); 5209: 5209: template 5209: 5209: inline _OutputIterator 5209: __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value, 5209: std::output_iterator_tag) 5209: { 5209: 5209: static_assert(is_integral<_Size>{}, "fill_n must pass integral size"); 5209: 5209: return __fill_n_a1(__first, __n, __value); 5209: } 5209: 5209: template 5209: 5209: inline _OutputIterator 5209: __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value, 5209: std::input_iterator_tag) 5209: { 5209: 5209: static_assert(is_integral<_Size>{}, "fill_n must pass integral size"); 5209: 5209: return __fill_n_a1(__first, __n, __value); 5209: } 5209: 5209: template 5209: 5209: inline _OutputIterator 5209: __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value, 5209: std::random_access_iterator_tag) 5209: { 5209: 5209: static_assert(is_integral<_Size>{}, "fill_n must pass integral size"); 5209: 5209: if (__n <= 0) 5209: return __first; 5209: 5209: ; 5209: 5209: std::__fill_a(__first, __first + __n, __value); 5209: return __first + __n; 5209: } 5209: # 1111 "/usr/include/c++/10/bits/stl_algobase.h" 3 5209: template 5209: 5209: inline _OI 5209: fill_n(_OI __first, _Size __n, const _Tp& __value) 5209: { 5209: 5209: 5209: 5209: return std::__fill_n_a(__first, std::__size_to_integer(__n), __value, 5209: std::__iterator_category(__first)); 5209: } 5209: 5209: template 5209: struct __equal 5209: { 5209: template 5209: 5209: static bool 5209: equal(_II1 __first1, _II1 __last1, _II2 __first2) 5209: { 5209: for (; __first1 != __last1; ++__first1, (void) ++__first2) 5209: if (!(*__first1 == *__first2)) 5209: return false; 5209: return true; 5209: } 5209: }; 5209: 5209: template<> 5209: struct __equal 5209: { 5209: template 5209: 5209: static bool 5209: equal(const _Tp* __first1, const _Tp* __last1, const _Tp* __first2) 5209: { 5209: if (const size_t __len = (__last1 - __first1)) 5209: return !std::__memcmp(__first1, __first2, __len); 5209: return true; 5209: } 5209: }; 5209: 5209: template 5209: typename __gnu_cxx::__enable_if< 5209: __is_random_access_iter<_II>::__value, bool>::__type 5209: __equal_aux1(std::_Deque_iterator<_Tp, _Ref, _Ptr>, 5209: std::_Deque_iterator<_Tp, _Ref, _Ptr>, 5209: _II); 5209: 5209: template 5209: bool 5209: __equal_aux1(std::_Deque_iterator<_Tp1, _Ref1, _Ptr1>, 5209: std::_Deque_iterator<_Tp1, _Ref1, _Ptr1>, 5209: std::_Deque_iterator<_Tp2, _Ref2, _Ptr2>); 5209: 5209: template 5209: typename __gnu_cxx::__enable_if< 5209: __is_random_access_iter<_II>::__value, bool>::__type 5209: __equal_aux1(_II, _II, 5209: std::_Deque_iterator<_Tp, _Ref, _Ptr>); 5209: 5209: template 5209: 5209: inline bool 5209: __equal_aux1(_II1 __first1, _II1 __last1, _II2 __first2) 5209: { 5209: typedef typename iterator_traits<_II1>::value_type _ValueType1; 5209: typedef typename iterator_traits<_II2>::value_type _ValueType2; 5209: const bool __simple = ((__is_integer<_ValueType1>::__value 5209: || __is_pointer<_ValueType1>::__value) 5209: && __is_pointer<_II1>::__value 5209: && __is_pointer<_II2>::__value 5209: && __are_same<_ValueType1, _ValueType2>::__value); 5209: 5209: return std::__equal<__simple>::equal(__first1, __last1, __first2); 5209: } 5209: 5209: template 5209: 5209: inline bool 5209: __equal_aux(_II1 __first1, _II1 __last1, _II2 __first2) 5209: { 5209: return std::__equal_aux1(std::__niter_base(__first1), 5209: std::__niter_base(__last1), 5209: std::__niter_base(__first2)); 5209: } 5209: 5209: template 5209: bool 5209: __equal_aux(const ::__gnu_debug::_Safe_iterator<_II1, _Seq1, _Cat1>&, 5209: const ::__gnu_debug::_Safe_iterator<_II1, _Seq1, _Cat1>&, 5209: _II2); 5209: 5209: template 5209: bool 5209: __equal_aux(_II1, _II1, 5209: const ::__gnu_debug::_Safe_iterator<_II2, _Seq2, _Cat2>&); 5209: 5209: template 5209: bool 5209: __equal_aux(const ::__gnu_debug::_Safe_iterator<_II1, _Seq1, _Cat1>&, 5209: const ::__gnu_debug::_Safe_iterator<_II1, _Seq1, _Cat1>&, 5209: const ::__gnu_debug::_Safe_iterator<_II2, _Seq2, _Cat2>&); 5209: 5209: template 5209: struct __lc_rai 5209: { 5209: template 5209: 5209: static _II1 5209: __newlast1(_II1, _II1 __last1, _II2, _II2) 5209: { return __last1; } 5209: 5209: template 5209: 5209: static bool 5209: __cnd2(_II __first, _II __last) 5209: { return __first != __last; } 5209: }; 5209: 5209: template<> 5209: struct __lc_rai 5209: { 5209: template 5209: 5209: static _RAI1 5209: __newlast1(_RAI1 __first1, _RAI1 __last1, 5209: _RAI2 __first2, _RAI2 __last2) 5209: { 5209: const typename iterator_traits<_RAI1>::difference_type 5209: __diff1 = __last1 - __first1; 5209: const typename iterator_traits<_RAI2>::difference_type 5209: __diff2 = __last2 - __first2; 5209: return __diff2 < __diff1 ? __first1 + __diff2 : __last1; 5209: } 5209: 5209: template 5209: static bool 5209: __cnd2(_RAI, _RAI) 5209: { return true; } 5209: }; 5209: 5209: template 5209: 5209: bool 5209: __lexicographical_compare_impl(_II1 __first1, _II1 __last1, 5209: _II2 __first2, _II2 __last2, 5209: _Compare __comp) 5209: { 5209: typedef typename iterator_traits<_II1>::iterator_category _Category1; 5209: typedef typename iterator_traits<_II2>::iterator_category _Category2; 5209: typedef std::__lc_rai<_Category1, _Category2> __rai_type; 5209: 5209: __last1 = __rai_type::__newlast1(__first1, __last1, __first2, __last2); 5209: for (; __first1 != __last1 && __rai_type::__cnd2(__first2, __last2); 5209: ++__first1, (void)++__first2) 5209: { 5209: if (__comp(__first1, __first2)) 5209: return true; 5209: if (__comp(__first2, __first1)) 5209: return false; 5209: } 5209: return __first1 == __last1 && __first2 != __last2; 5209: } 5209: 5209: template 5209: struct __lexicographical_compare 5209: { 5209: template 5209: 5209: static bool __lc(_II1, _II1, _II2, _II2); 5209: }; 5209: 5209: template 5209: template 5209: 5209: bool 5209: __lexicographical_compare<_BoolType>:: 5209: __lc(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2) 5209: { 5209: return std::__lexicographical_compare_impl(__first1, __last1, 5209: __first2, __last2, 5209: __gnu_cxx::__ops::__iter_less_iter()); 5209: } 5209: 5209: template<> 5209: struct __lexicographical_compare 5209: { 5209: template 5209: 5209: static bool 5209: __lc(const _Tp* __first1, const _Tp* __last1, 5209: const _Up* __first2, const _Up* __last2) 5209: { 5209: const size_t __len1 = __last1 - __first1; 5209: const size_t __len2 = __last2 - __first2; 5209: if (const size_t __len = std::min(__len1, __len2)) 5209: if (int __result = std::__memcmp(__first1, __first2, __len)) 5209: return __result < 0; 5209: return __len1 < __len2; 5209: } 5209: }; 5209: 5209: template 5209: 5209: inline bool 5209: __lexicographical_compare_aux(_II1 __first1, _II1 __last1, 5209: _II2 __first2, _II2 __last2) 5209: { 5209: typedef typename iterator_traits<_II1>::value_type _ValueType1; 5209: typedef typename iterator_traits<_II2>::value_type _ValueType2; 5209: const bool __simple = 5209: (__is_byte<_ValueType1>::__value && __is_byte<_ValueType2>::__value 5209: && !__gnu_cxx::__numeric_traits<_ValueType1>::__is_signed 5209: && !__gnu_cxx::__numeric_traits<_ValueType2>::__is_signed 5209: && __is_pointer<_II1>::__value 5209: && __is_pointer<_II2>::__value); 5209: 5209: return std::__lexicographical_compare<__simple>::__lc(__first1, __last1, 5209: __first2, __last2); 5209: } 5209: 5209: template 5209: 5209: _ForwardIterator 5209: __lower_bound(_ForwardIterator __first, _ForwardIterator __last, 5209: const _Tp& __val, _Compare __comp) 5209: { 5209: typedef typename iterator_traits<_ForwardIterator>::difference_type 5209: _DistanceType; 5209: 5209: _DistanceType __len = std::distance(__first, __last); 5209: 5209: while (__len > 0) 5209: { 5209: _DistanceType __half = __len >> 1; 5209: _ForwardIterator __middle = __first; 5209: std::advance(__middle, __half); 5209: if (__comp(__middle, __val)) 5209: { 5209: __first = __middle; 5209: ++__first; 5209: __len = __len - __half - 1; 5209: } 5209: else 5209: __len = __half; 5209: } 5209: return __first; 5209: } 5209: # 1373 "/usr/include/c++/10/bits/stl_algobase.h" 3 5209: template 5209: 5209: inline _ForwardIterator 5209: lower_bound(_ForwardIterator __first, _ForwardIterator __last, 5209: const _Tp& __val) 5209: { 5209: 5209: 5209: 5209: 5209: ; 5209: 5209: return std::__lower_bound(__first, __last, __val, 5209: __gnu_cxx::__ops::__iter_less_val()); 5209: } 5209: 5209: 5209: 5209: inline constexpr int 5209: __lg(int __n) 5209: { return (int)sizeof(int) * 8 - 1 - __builtin_clz(__n); } 5209: 5209: inline constexpr unsigned 5209: __lg(unsigned __n) 5209: { return (int)sizeof(int) * 8 - 1 - __builtin_clz(__n); } 5209: 5209: inline constexpr long 5209: __lg(long __n) 5209: { return (int)sizeof(long) * 8 - 1 - __builtin_clzl(__n); } 5209: 5209: inline constexpr unsigned long 5209: __lg(unsigned long __n) 5209: { return (int)sizeof(long) * 8 - 1 - __builtin_clzl(__n); } 5209: 5209: inline constexpr long long 5209: __lg(long long __n) 5209: { return (int)sizeof(long long) * 8 - 1 - __builtin_clzll(__n); } 5209: 5209: inline constexpr unsigned long long 5209: __lg(unsigned long long __n) 5209: { return (int)sizeof(long long) * 8 - 1 - __builtin_clzll(__n); } 5209: 5209: 5209: # 1429 "/usr/include/c++/10/bits/stl_algobase.h" 3 5209: template 5209: 5209: inline bool 5209: equal(_II1 __first1, _II1 __last1, _II2 __first2) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: 5209: return std::__equal_aux(__first1, __last1, __first2); 5209: } 5209: # 1460 "/usr/include/c++/10/bits/stl_algobase.h" 3 5209: template 5209: 5209: inline bool 5209: equal(_IIter1 __first1, _IIter1 __last1, 5209: _IIter2 __first2, _BinaryPredicate __binary_pred) 5209: { 5209: 5209: 5209: 5209: ; 5209: 5209: for (; __first1 != __last1; ++__first1, (void)++__first2) 5209: if (!bool(__binary_pred(*__first1, *__first2))) 5209: return false; 5209: return true; 5209: } 5209: 5209: 5209: 5209: template 5209: 5209: inline bool 5209: __equal4(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2) 5209: { 5209: using _RATag = random_access_iterator_tag; 5209: using _Cat1 = typename iterator_traits<_II1>::iterator_category; 5209: using _Cat2 = typename iterator_traits<_II2>::iterator_category; 5209: using _RAIters = __and_, is_same<_Cat2, _RATag>>; 5209: if (_RAIters()) 5209: { 5209: auto __d1 = std::distance(__first1, __last1); 5209: auto __d2 = std::distance(__first2, __last2); 5209: if (__d1 != __d2) 5209: return false; 5209: return std::equal(__first1, __last1, __first2); 5209: } 5209: 5209: for (; __first1 != __last1 && __first2 != __last2; 5209: ++__first1, (void)++__first2) 5209: if (!(*__first1 == *__first2)) 5209: return false; 5209: return __first1 == __last1 && __first2 == __last2; 5209: } 5209: 5209: 5209: template 5209: 5209: inline bool 5209: __equal4(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2, 5209: _BinaryPredicate __binary_pred) 5209: { 5209: using _RATag = random_access_iterator_tag; 5209: using _Cat1 = typename iterator_traits<_II1>::iterator_category; 5209: using _Cat2 = typename iterator_traits<_II2>::iterator_category; 5209: using _RAIters = __and_, is_same<_Cat2, _RATag>>; 5209: if (_RAIters()) 5209: { 5209: auto __d1 = std::distance(__first1, __last1); 5209: auto __d2 = std::distance(__first2, __last2); 5209: if (__d1 != __d2) 5209: return false; 5209: return std::equal(__first1, __last1, __first2, 5209: __binary_pred); 5209: } 5209: 5209: for (; __first1 != __last1 && __first2 != __last2; 5209: ++__first1, (void)++__first2) 5209: if (!bool(__binary_pred(*__first1, *__first2))) 5209: return false; 5209: return __first1 == __last1 && __first2 == __last2; 5209: } 5209: # 1615 "/usr/include/c++/10/bits/stl_algobase.h" 3 5209: template 5209: 5209: inline bool 5209: lexicographical_compare(_II1 __first1, _II1 __last1, 5209: _II2 __first2, _II2 __last2) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: ; 5209: 5209: return std::__lexicographical_compare_aux(std::__niter_base(__first1), 5209: std::__niter_base(__last1), 5209: std::__niter_base(__first2), 5209: std::__niter_base(__last2)); 5209: } 5209: # 1652 "/usr/include/c++/10/bits/stl_algobase.h" 3 5209: template 5209: 5209: inline bool 5209: lexicographical_compare(_II1 __first1, _II1 __last1, 5209: _II2 __first2, _II2 __last2, _Compare __comp) 5209: { 5209: 5209: 5209: 5209: ; 5209: ; 5209: 5209: return std::__lexicographical_compare_impl 5209: (__first1, __last1, __first2, __last2, 5209: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 5209: } 5209: # 1769 "/usr/include/c++/10/bits/stl_algobase.h" 3 5209: template 5209: 5209: pair<_InputIterator1, _InputIterator2> 5209: __mismatch(_InputIterator1 __first1, _InputIterator1 __last1, 5209: _InputIterator2 __first2, _BinaryPredicate __binary_pred) 5209: { 5209: while (__first1 != __last1 && __binary_pred(__first1, __first2)) 5209: { 5209: ++__first1; 5209: ++__first2; 5209: } 5209: return pair<_InputIterator1, _InputIterator2>(__first1, __first2); 5209: } 5209: # 1797 "/usr/include/c++/10/bits/stl_algobase.h" 3 5209: template 5209: 5209: inline pair<_InputIterator1, _InputIterator2> 5209: mismatch(_InputIterator1 __first1, _InputIterator1 __last1, 5209: _InputIterator2 __first2) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: 5209: return std::__mismatch(__first1, __last1, __first2, 5209: __gnu_cxx::__ops::__iter_equal_to_iter()); 5209: } 5209: # 1831 "/usr/include/c++/10/bits/stl_algobase.h" 3 5209: template 5209: 5209: inline pair<_InputIterator1, _InputIterator2> 5209: mismatch(_InputIterator1 __first1, _InputIterator1 __last1, 5209: _InputIterator2 __first2, _BinaryPredicate __binary_pred) 5209: { 5209: 5209: 5209: 5209: ; 5209: 5209: return std::__mismatch(__first1, __last1, __first2, 5209: __gnu_cxx::__ops::__iter_comp_iter(__binary_pred)); 5209: } 5209: # 1935 "/usr/include/c++/10/bits/stl_algobase.h" 3 5209: 5209: 5209: } 5209: # 40 "/usr/include/c++/10/bits/char_traits.h" 2 3 5209: 5209: # 1 "/usr/include/c++/10/cwchar" 1 3 5209: # 39 "/usr/include/c++/10/cwchar" 3 5209: 5209: # 40 "/usr/include/c++/10/cwchar" 3 5209: # 42 "/usr/include/c++/10/bits/char_traits.h" 2 3 5209: 5209: 5209: 5209: 5209: 5209: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: # 61 "/usr/include/c++/10/bits/char_traits.h" 3 5209: template 5209: struct _Char_types 5209: { 5209: typedef unsigned long int_type; 5209: typedef std::streampos pos_type; 5209: typedef std::streamoff off_type; 5209: typedef std::mbstate_t state_type; 5209: }; 5209: # 86 "/usr/include/c++/10/bits/char_traits.h" 3 5209: template 5209: struct char_traits 5209: { 5209: typedef _CharT char_type; 5209: typedef typename _Char_types<_CharT>::int_type int_type; 5209: typedef typename _Char_types<_CharT>::pos_type pos_type; 5209: typedef typename _Char_types<_CharT>::off_type off_type; 5209: typedef typename _Char_types<_CharT>::state_type state_type; 5209: 5209: static void 5209: assign(char_type& __c1, const char_type& __c2) 5209: { __c1 = __c2; } 5209: 5209: static constexpr bool 5209: eq(const char_type& __c1, const char_type& __c2) 5209: { return __c1 == __c2; } 5209: 5209: static constexpr bool 5209: lt(const char_type& __c1, const char_type& __c2) 5209: { return __c1 < __c2; } 5209: 5209: static int 5209: compare(const char_type* __s1, const char_type* __s2, std::size_t __n); 5209: 5209: static std::size_t 5209: length(const char_type* __s); 5209: 5209: static const char_type* 5209: find(const char_type* __s, std::size_t __n, const char_type& __a); 5209: 5209: static char_type* 5209: move(char_type* __s1, const char_type* __s2, std::size_t __n); 5209: 5209: static char_type* 5209: copy(char_type* __s1, const char_type* __s2, std::size_t __n); 5209: 5209: static char_type* 5209: assign(char_type* __s, std::size_t __n, char_type __a); 5209: 5209: static constexpr char_type 5209: to_char_type(const int_type& __c) 5209: { return static_cast(__c); } 5209: 5209: static constexpr int_type 5209: to_int_type(const char_type& __c) 5209: { return static_cast(__c); } 5209: 5209: static constexpr bool 5209: eq_int_type(const int_type& __c1, const int_type& __c2) 5209: { return __c1 == __c2; } 5209: 5209: static constexpr int_type 5209: eof() 5209: { return static_cast(-1); } 5209: 5209: static constexpr int_type 5209: not_eof(const int_type& __c) 5209: { return !eq_int_type(__c, eof()) ? __c : to_int_type(char_type()); } 5209: }; 5209: 5209: template 5209: int 5209: char_traits<_CharT>:: 5209: compare(const char_type* __s1, const char_type* __s2, std::size_t __n) 5209: { 5209: for (std::size_t __i = 0; __i < __n; ++__i) 5209: if (lt(__s1[__i], __s2[__i])) 5209: return -1; 5209: else if (lt(__s2[__i], __s1[__i])) 5209: return 1; 5209: return 0; 5209: } 5209: 5209: template 5209: std::size_t 5209: char_traits<_CharT>:: 5209: length(const char_type* __p) 5209: { 5209: std::size_t __i = 0; 5209: while (!eq(__p[__i], char_type())) 5209: ++__i; 5209: return __i; 5209: } 5209: 5209: template 5209: const typename char_traits<_CharT>::char_type* 5209: char_traits<_CharT>:: 5209: find(const char_type* __s, std::size_t __n, const char_type& __a) 5209: { 5209: for (std::size_t __i = 0; __i < __n; ++__i) 5209: if (eq(__s[__i], __a)) 5209: return __s + __i; 5209: return 0; 5209: } 5209: 5209: template 5209: typename char_traits<_CharT>::char_type* 5209: char_traits<_CharT>:: 5209: move(char_type* __s1, const char_type* __s2, std::size_t __n) 5209: { 5209: if (__n == 0) 5209: return __s1; 5209: return static_cast<_CharT*>(__builtin_memmove(__s1, __s2, 5209: __n * sizeof(char_type))); 5209: } 5209: 5209: template 5209: typename char_traits<_CharT>::char_type* 5209: char_traits<_CharT>:: 5209: copy(char_type* __s1, const char_type* __s2, std::size_t __n) 5209: { 5209: 5209: std::copy(__s2, __s2 + __n, __s1); 5209: return __s1; 5209: } 5209: 5209: template 5209: typename char_traits<_CharT>::char_type* 5209: char_traits<_CharT>:: 5209: assign(char_type* __s, std::size_t __n, char_type __a) 5209: { 5209: 5209: std::fill_n(__s, __n, __a); 5209: return __s; 5209: } 5209: 5209: 5209: } 5209: 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: # 283 "/usr/include/c++/10/bits/char_traits.h" 3 5209: template 5209: struct char_traits : public __gnu_cxx::char_traits<_CharT> 5209: { }; 5209: 5209: 5209: 5209: template<> 5209: struct char_traits 5209: { 5209: typedef char char_type; 5209: typedef int int_type; 5209: typedef streampos pos_type; 5209: typedef streamoff off_type; 5209: typedef mbstate_t state_type; 5209: 5209: static void 5209: assign(char_type& __c1, const char_type& __c2) noexcept 5209: { __c1 = __c2; } 5209: 5209: static constexpr bool 5209: eq(const char_type& __c1, const char_type& __c2) noexcept 5209: { return __c1 == __c2; } 5209: 5209: static constexpr bool 5209: lt(const char_type& __c1, const char_type& __c2) noexcept 5209: { 5209: 5209: return (static_cast(__c1) 5209: < static_cast(__c2)); 5209: } 5209: 5209: static int 5209: compare(const char_type* __s1, const char_type* __s2, size_t __n) 5209: { 5209: if (__n == 0) 5209: return 0; 5209: 5209: 5209: 5209: 5209: 5209: 5209: return __builtin_memcmp(__s1, __s2, __n); 5209: } 5209: 5209: static size_t 5209: length(const char_type* __s) 5209: { 5209: 5209: 5209: 5209: 5209: return __builtin_strlen(__s); 5209: } 5209: 5209: static const char_type* 5209: find(const char_type* __s, size_t __n, const char_type& __a) 5209: { 5209: if (__n == 0) 5209: return 0; 5209: 5209: 5209: 5209: 5209: 5209: 5209: return static_cast(__builtin_memchr(__s, __a, __n)); 5209: } 5209: 5209: static char_type* 5209: move(char_type* __s1, const char_type* __s2, size_t __n) 5209: { 5209: if (__n == 0) 5209: return __s1; 5209: return static_cast(__builtin_memmove(__s1, __s2, __n)); 5209: } 5209: 5209: static char_type* 5209: copy(char_type* __s1, const char_type* __s2, size_t __n) 5209: { 5209: if (__n == 0) 5209: return __s1; 5209: return static_cast(__builtin_memcpy(__s1, __s2, __n)); 5209: } 5209: 5209: static char_type* 5209: assign(char_type* __s, size_t __n, char_type __a) 5209: { 5209: if (__n == 0) 5209: return __s; 5209: return static_cast(__builtin_memset(__s, __a, __n)); 5209: } 5209: 5209: static constexpr char_type 5209: to_char_type(const int_type& __c) noexcept 5209: { return static_cast(__c); } 5209: 5209: 5209: 5209: static constexpr int_type 5209: to_int_type(const char_type& __c) noexcept 5209: { return static_cast(static_cast(__c)); } 5209: 5209: static constexpr bool 5209: eq_int_type(const int_type& __c1, const int_type& __c2) noexcept 5209: { return __c1 == __c2; } 5209: 5209: static constexpr int_type 5209: eof() noexcept 5209: { return static_cast(-1); } 5209: 5209: static constexpr int_type 5209: not_eof(const int_type& __c) noexcept 5209: { return (__c == eof()) ? 0 : __c; } 5209: }; 5209: 5209: 5209: 5209: 5209: template<> 5209: struct char_traits 5209: { 5209: typedef wchar_t char_type; 5209: typedef wint_t int_type; 5209: typedef streamoff off_type; 5209: typedef wstreampos pos_type; 5209: typedef mbstate_t state_type; 5209: 5209: static void 5209: assign(char_type& __c1, const char_type& __c2) noexcept 5209: { __c1 = __c2; } 5209: 5209: static constexpr bool 5209: eq(const char_type& __c1, const char_type& __c2) noexcept 5209: { return __c1 == __c2; } 5209: 5209: static constexpr bool 5209: lt(const char_type& __c1, const char_type& __c2) noexcept 5209: { return __c1 < __c2; } 5209: 5209: static int 5209: compare(const char_type* __s1, const char_type* __s2, size_t __n) 5209: { 5209: if (__n == 0) 5209: return 0; 5209: 5209: 5209: 5209: 5209: 5209: 5209: return wmemcmp(__s1, __s2, __n); 5209: } 5209: 5209: static size_t 5209: length(const char_type* __s) 5209: { 5209: 5209: 5209: 5209: 5209: return wcslen(__s); 5209: } 5209: 5209: static const char_type* 5209: find(const char_type* __s, size_t __n, const char_type& __a) 5209: { 5209: if (__n == 0) 5209: return 0; 5209: 5209: 5209: 5209: 5209: 5209: 5209: return wmemchr(__s, __a, __n); 5209: } 5209: 5209: static char_type* 5209: move(char_type* __s1, const char_type* __s2, size_t __n) 5209: { 5209: if (__n == 0) 5209: return __s1; 5209: return wmemmove(__s1, __s2, __n); 5209: } 5209: 5209: static char_type* 5209: copy(char_type* __s1, const char_type* __s2, size_t __n) 5209: { 5209: if (__n == 0) 5209: return __s1; 5209: return wmemcpy(__s1, __s2, __n); 5209: } 5209: 5209: static char_type* 5209: assign(char_type* __s, size_t __n, char_type __a) 5209: { 5209: if (__n == 0) 5209: return __s; 5209: return wmemset(__s, __a, __n); 5209: } 5209: 5209: static constexpr char_type 5209: to_char_type(const int_type& __c) noexcept 5209: { return char_type(__c); } 5209: 5209: static constexpr int_type 5209: to_int_type(const char_type& __c) noexcept 5209: { return int_type(__c); } 5209: 5209: static constexpr bool 5209: eq_int_type(const int_type& __c1, const int_type& __c2) noexcept 5209: { return __c1 == __c2; } 5209: 5209: static constexpr int_type 5209: eof() noexcept 5209: { return static_cast((0xffffffffu)); } 5209: 5209: static constexpr int_type 5209: not_eof(const int_type& __c) noexcept 5209: { return eq_int_type(__c, eof()) ? 0 : __c; } 5209: }; 5209: # 616 "/usr/include/c++/10/bits/char_traits.h" 3 5209: 5209: } 5209: 5209: 5209: 5209: # 1 "/usr/include/c++/10/cstdint" 1 3 5209: # 32 "/usr/include/c++/10/cstdint" 3 5209: 5209: # 33 "/usr/include/c++/10/cstdint" 3 5209: # 41 "/usr/include/c++/10/cstdint" 3 5209: # 1 "/usr/lib/gcc/aarch64-linux-gnu/10/include/stdint.h" 1 3 4 5209: # 9 "/usr/lib/gcc/aarch64-linux-gnu/10/include/stdint.h" 3 4 5209: # 1 "/usr/include/stdint.h" 1 3 4 5209: # 26 "/usr/include/stdint.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/libc-header-start.h" 1 3 4 5209: # 27 "/usr/include/stdint.h" 2 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/types.h" 1 3 4 5209: # 27 "/usr/include/aarch64-linux-gnu/bits/types.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/wordsize.h" 1 3 4 5209: # 28 "/usr/include/aarch64-linux-gnu/bits/types.h" 2 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/timesize.h" 1 3 4 5209: # 19 "/usr/include/aarch64-linux-gnu/bits/timesize.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/wordsize.h" 1 3 4 5209: # 20 "/usr/include/aarch64-linux-gnu/bits/timesize.h" 2 3 4 5209: # 29 "/usr/include/aarch64-linux-gnu/bits/types.h" 2 3 4 5209: 5209: 5209: typedef unsigned char __u_char; 5209: typedef unsigned short int __u_short; 5209: typedef unsigned int __u_int; 5209: typedef unsigned long int __u_long; 5209: 5209: 5209: typedef signed char __int8_t; 5209: typedef unsigned char __uint8_t; 5209: typedef signed short int __int16_t; 5209: typedef unsigned short int __uint16_t; 5209: typedef signed int __int32_t; 5209: typedef unsigned int __uint32_t; 5209: 5209: typedef signed long int __int64_t; 5209: typedef unsigned long int __uint64_t; 5209: 5209: 5209: 5209: 5209: 5209: 5209: typedef __int8_t __int_least8_t; 5209: typedef __uint8_t __uint_least8_t; 5209: typedef __int16_t __int_least16_t; 5209: typedef __uint16_t __uint_least16_t; 5209: typedef __int32_t __int_least32_t; 5209: typedef __uint32_t __uint_least32_t; 5209: typedef __int64_t __int_least64_t; 5209: typedef __uint64_t __uint_least64_t; 5209: 5209: 5209: 5209: typedef long int __quad_t; 5209: typedef unsigned long int __u_quad_t; 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: typedef long int __intmax_t; 5209: typedef unsigned long int __uintmax_t; 5209: # 141 "/usr/include/aarch64-linux-gnu/bits/types.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/typesizes.h" 1 3 4 5209: # 142 "/usr/include/aarch64-linux-gnu/bits/types.h" 2 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/time64.h" 1 3 4 5209: # 143 "/usr/include/aarch64-linux-gnu/bits/types.h" 2 3 4 5209: 5209: 5209: typedef unsigned long int __dev_t; 5209: typedef unsigned int __uid_t; 5209: typedef unsigned int __gid_t; 5209: typedef unsigned long int __ino_t; 5209: typedef unsigned long int __ino64_t; 5209: typedef unsigned int __mode_t; 5209: typedef unsigned int __nlink_t; 5209: typedef long int __off_t; 5209: typedef long int __off64_t; 5209: typedef int __pid_t; 5209: typedef struct { int __val[2]; } __fsid_t; 5209: typedef long int __clock_t; 5209: typedef unsigned long int __rlim_t; 5209: typedef unsigned long int __rlim64_t; 5209: typedef unsigned int __id_t; 5209: typedef long int __time_t; 5209: typedef unsigned int __useconds_t; 5209: typedef long int __suseconds_t; 5209: 5209: typedef int __daddr_t; 5209: typedef int __key_t; 5209: 5209: 5209: typedef int __clockid_t; 5209: 5209: 5209: typedef void * __timer_t; 5209: 5209: 5209: typedef int __blksize_t; 5209: 5209: 5209: 5209: 5209: typedef long int __blkcnt_t; 5209: typedef long int __blkcnt64_t; 5209: 5209: 5209: typedef unsigned long int __fsblkcnt_t; 5209: typedef unsigned long int __fsblkcnt64_t; 5209: 5209: 5209: typedef unsigned long int __fsfilcnt_t; 5209: typedef unsigned long int __fsfilcnt64_t; 5209: 5209: 5209: typedef long int __fsword_t; 5209: 5209: typedef long int __ssize_t; 5209: 5209: 5209: typedef long int __syscall_slong_t; 5209: 5209: typedef unsigned long int __syscall_ulong_t; 5209: 5209: 5209: 5209: typedef __off64_t __loff_t; 5209: typedef char *__caddr_t; 5209: 5209: 5209: typedef long int __intptr_t; 5209: 5209: 5209: typedef unsigned int __socklen_t; 5209: 5209: 5209: 5209: 5209: typedef int __sig_atomic_t; 5209: # 28 "/usr/include/stdint.h" 2 3 4 5209: 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/wordsize.h" 1 3 4 5209: # 30 "/usr/include/stdint.h" 2 3 4 5209: 5209: 5209: 5209: 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/stdint-intn.h" 1 3 4 5209: # 24 "/usr/include/aarch64-linux-gnu/bits/stdint-intn.h" 3 4 5209: typedef __int8_t int8_t; 5209: typedef __int16_t int16_t; 5209: typedef __int32_t int32_t; 5209: typedef __int64_t int64_t; 5209: # 35 "/usr/include/stdint.h" 2 3 4 5209: 5209: 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/stdint-uintn.h" 1 3 4 5209: # 24 "/usr/include/aarch64-linux-gnu/bits/stdint-uintn.h" 3 4 5209: typedef __uint8_t uint8_t; 5209: typedef __uint16_t uint16_t; 5209: typedef __uint32_t uint32_t; 5209: typedef __uint64_t uint64_t; 5209: # 38 "/usr/include/stdint.h" 2 3 4 5209: 5209: 5209: 5209: 5209: 5209: typedef __int_least8_t int_least8_t; 5209: typedef __int_least16_t int_least16_t; 5209: typedef __int_least32_t int_least32_t; 5209: typedef __int_least64_t int_least64_t; 5209: 5209: 5209: typedef __uint_least8_t uint_least8_t; 5209: typedef __uint_least16_t uint_least16_t; 5209: typedef __uint_least32_t uint_least32_t; 5209: typedef __uint_least64_t uint_least64_t; 5209: 5209: 5209: 5209: 5209: 5209: typedef signed char int_fast8_t; 5209: 5209: typedef long int int_fast16_t; 5209: typedef long int int_fast32_t; 5209: typedef long int int_fast64_t; 5209: # 71 "/usr/include/stdint.h" 3 4 5209: typedef unsigned char uint_fast8_t; 5209: 5209: typedef unsigned long int uint_fast16_t; 5209: typedef unsigned long int uint_fast32_t; 5209: typedef unsigned long int uint_fast64_t; 5209: # 87 "/usr/include/stdint.h" 3 4 5209: typedef long int intptr_t; 5209: 5209: 5209: typedef unsigned long int uintptr_t; 5209: # 101 "/usr/include/stdint.h" 3 4 5209: typedef __intmax_t intmax_t; 5209: typedef __uintmax_t uintmax_t; 5209: # 10 "/usr/lib/gcc/aarch64-linux-gnu/10/include/stdint.h" 2 3 4 5209: # 42 "/usr/include/c++/10/cstdint" 2 3 5209: 5209: 5209: namespace std 5209: { 5209: 5209: using ::int8_t; 5209: using ::int16_t; 5209: using ::int32_t; 5209: using ::int64_t; 5209: 5209: using ::int_fast8_t; 5209: using ::int_fast16_t; 5209: using ::int_fast32_t; 5209: using ::int_fast64_t; 5209: 5209: using ::int_least8_t; 5209: using ::int_least16_t; 5209: using ::int_least32_t; 5209: using ::int_least64_t; 5209: 5209: using ::intmax_t; 5209: using ::intptr_t; 5209: 5209: using ::uint8_t; 5209: using ::uint16_t; 5209: using ::uint32_t; 5209: using ::uint64_t; 5209: 5209: using ::uint_fast8_t; 5209: using ::uint_fast16_t; 5209: using ::uint_fast32_t; 5209: using ::uint_fast64_t; 5209: 5209: using ::uint_least8_t; 5209: using ::uint_least16_t; 5209: using ::uint_least32_t; 5209: using ::uint_least64_t; 5209: 5209: using ::uintmax_t; 5209: using ::uintptr_t; 5209: 5209: 5209: 5209: 5209: 5209: } 5209: # 622 "/usr/include/c++/10/bits/char_traits.h" 2 3 5209: 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: template<> 5209: struct char_traits 5209: { 5209: typedef char16_t char_type; 5209: 5209: typedef uint_least16_t int_type; 5209: 5209: 5209: 5209: 5209: 5209: typedef streamoff off_type; 5209: typedef u16streampos pos_type; 5209: typedef mbstate_t state_type; 5209: 5209: static void 5209: assign(char_type& __c1, const char_type& __c2) noexcept 5209: { __c1 = __c2; } 5209: 5209: static constexpr bool 5209: eq(const char_type& __c1, const char_type& __c2) noexcept 5209: { return __c1 == __c2; } 5209: 5209: static constexpr bool 5209: lt(const char_type& __c1, const char_type& __c2) noexcept 5209: { return __c1 < __c2; } 5209: 5209: static int 5209: compare(const char_type* __s1, const char_type* __s2, size_t __n) 5209: { 5209: for (size_t __i = 0; __i < __n; ++__i) 5209: if (lt(__s1[__i], __s2[__i])) 5209: return -1; 5209: else if (lt(__s2[__i], __s1[__i])) 5209: return 1; 5209: return 0; 5209: } 5209: 5209: static size_t 5209: length(const char_type* __s) 5209: { 5209: size_t __i = 0; 5209: while (!eq(__s[__i], char_type())) 5209: ++__i; 5209: return __i; 5209: } 5209: 5209: static const char_type* 5209: find(const char_type* __s, size_t __n, const char_type& __a) 5209: { 5209: for (size_t __i = 0; __i < __n; ++__i) 5209: if (eq(__s[__i], __a)) 5209: return __s + __i; 5209: return 0; 5209: } 5209: 5209: static char_type* 5209: move(char_type* __s1, const char_type* __s2, size_t __n) 5209: { 5209: if (__n == 0) 5209: return __s1; 5209: return (static_cast 5209: (__builtin_memmove(__s1, __s2, __n * sizeof(char_type)))); 5209: } 5209: 5209: static char_type* 5209: copy(char_type* __s1, const char_type* __s2, size_t __n) 5209: { 5209: if (__n == 0) 5209: return __s1; 5209: return (static_cast 5209: (__builtin_memcpy(__s1, __s2, __n * sizeof(char_type)))); 5209: } 5209: 5209: static char_type* 5209: assign(char_type* __s, size_t __n, char_type __a) 5209: { 5209: for (size_t __i = 0; __i < __n; ++__i) 5209: assign(__s[__i], __a); 5209: return __s; 5209: } 5209: 5209: static constexpr char_type 5209: to_char_type(const int_type& __c) noexcept 5209: { return char_type(__c); } 5209: 5209: static constexpr int_type 5209: to_int_type(const char_type& __c) noexcept 5209: { return __c == eof() ? int_type(0xfffd) : int_type(__c); } 5209: 5209: static constexpr bool 5209: eq_int_type(const int_type& __c1, const int_type& __c2) noexcept 5209: { return __c1 == __c2; } 5209: 5209: static constexpr int_type 5209: eof() noexcept 5209: { return static_cast(-1); } 5209: 5209: static constexpr int_type 5209: not_eof(const int_type& __c) noexcept 5209: { return eq_int_type(__c, eof()) ? 0 : __c; } 5209: }; 5209: 5209: template<> 5209: struct char_traits 5209: { 5209: typedef char32_t char_type; 5209: 5209: typedef uint_least32_t int_type; 5209: 5209: 5209: 5209: 5209: 5209: typedef streamoff off_type; 5209: typedef u32streampos pos_type; 5209: typedef mbstate_t state_type; 5209: 5209: static void 5209: assign(char_type& __c1, const char_type& __c2) noexcept 5209: { __c1 = __c2; } 5209: 5209: static constexpr bool 5209: eq(const char_type& __c1, const char_type& __c2) noexcept 5209: { return __c1 == __c2; } 5209: 5209: static constexpr bool 5209: lt(const char_type& __c1, const char_type& __c2) noexcept 5209: { return __c1 < __c2; } 5209: 5209: static int 5209: compare(const char_type* __s1, const char_type* __s2, size_t __n) 5209: { 5209: for (size_t __i = 0; __i < __n; ++__i) 5209: if (lt(__s1[__i], __s2[__i])) 5209: return -1; 5209: else if (lt(__s2[__i], __s1[__i])) 5209: return 1; 5209: return 0; 5209: } 5209: 5209: static size_t 5209: length(const char_type* __s) 5209: { 5209: size_t __i = 0; 5209: while (!eq(__s[__i], char_type())) 5209: ++__i; 5209: return __i; 5209: } 5209: 5209: static const char_type* 5209: find(const char_type* __s, size_t __n, const char_type& __a) 5209: { 5209: for (size_t __i = 0; __i < __n; ++__i) 5209: if (eq(__s[__i], __a)) 5209: return __s + __i; 5209: return 0; 5209: } 5209: 5209: static char_type* 5209: move(char_type* __s1, const char_type* __s2, size_t __n) 5209: { 5209: if (__n == 0) 5209: return __s1; 5209: return (static_cast 5209: (__builtin_memmove(__s1, __s2, __n * sizeof(char_type)))); 5209: } 5209: 5209: static char_type* 5209: copy(char_type* __s1, const char_type* __s2, size_t __n) 5209: { 5209: if (__n == 0) 5209: return __s1; 5209: return (static_cast 5209: (__builtin_memcpy(__s1, __s2, __n * sizeof(char_type)))); 5209: } 5209: 5209: static char_type* 5209: assign(char_type* __s, size_t __n, char_type __a) 5209: { 5209: for (size_t __i = 0; __i < __n; ++__i) 5209: assign(__s[__i], __a); 5209: return __s; 5209: } 5209: 5209: static constexpr char_type 5209: to_char_type(const int_type& __c) noexcept 5209: { return char_type(__c); } 5209: 5209: static constexpr int_type 5209: to_int_type(const char_type& __c) noexcept 5209: { return int_type(__c); } 5209: 5209: static constexpr bool 5209: eq_int_type(const int_type& __c1, const int_type& __c2) noexcept 5209: { return __c1 == __c2; } 5209: 5209: static constexpr int_type 5209: eof() noexcept 5209: { return static_cast(-1); } 5209: 5209: static constexpr int_type 5209: not_eof(const int_type& __c) noexcept 5209: { return eq_int_type(__c, eof()) ? 0 : __c; } 5209: }; 5209: 5209: 5209: } 5209: # 41 "/usr/include/c++/10/ios" 2 3 5209: # 1 "/usr/include/c++/10/bits/localefwd.h" 1 3 5209: # 37 "/usr/include/c++/10/bits/localefwd.h" 3 5209: 5209: # 38 "/usr/include/c++/10/bits/localefwd.h" 3 5209: 5209: 5209: # 1 "/usr/include/aarch64-linux-gnu/c++/10/bits/c++locale.h" 1 3 5209: # 39 "/usr/include/aarch64-linux-gnu/c++/10/bits/c++locale.h" 3 5209: 5209: # 40 "/usr/include/aarch64-linux-gnu/c++/10/bits/c++locale.h" 3 5209: 5209: # 1 "/usr/include/c++/10/clocale" 1 3 5209: # 39 "/usr/include/c++/10/clocale" 3 5209: 5209: # 40 "/usr/include/c++/10/clocale" 3 5209: 5209: 5209: # 1 "/usr/include/locale.h" 1 3 4 5209: # 28 "/usr/include/locale.h" 3 4 5209: # 1 "/usr/lib/gcc/aarch64-linux-gnu/10/include/stddef.h" 1 3 4 5209: # 29 "/usr/include/locale.h" 2 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/locale.h" 1 3 4 5209: # 30 "/usr/include/locale.h" 2 3 4 5209: 5209: extern "C" { 5209: # 51 "/usr/include/locale.h" 3 4 5209: struct lconv 5209: { 5209: 5209: 5209: char *decimal_point; 5209: char *thousands_sep; 5209: 5209: 5209: 5209: 5209: 5209: char *grouping; 5209: 5209: 5209: 5209: 5209: 5209: char *int_curr_symbol; 5209: char *currency_symbol; 5209: char *mon_decimal_point; 5209: char *mon_thousands_sep; 5209: char *mon_grouping; 5209: char *positive_sign; 5209: char *negative_sign; 5209: char int_frac_digits; 5209: char frac_digits; 5209: 5209: char p_cs_precedes; 5209: 5209: char p_sep_by_space; 5209: 5209: char n_cs_precedes; 5209: 5209: char n_sep_by_space; 5209: 5209: 5209: 5209: 5209: 5209: 5209: char p_sign_posn; 5209: char n_sign_posn; 5209: 5209: 5209: char int_p_cs_precedes; 5209: 5209: char int_p_sep_by_space; 5209: 5209: char int_n_cs_precedes; 5209: 5209: char int_n_sep_by_space; 5209: 5209: 5209: 5209: 5209: 5209: 5209: char int_p_sign_posn; 5209: char int_n_sign_posn; 5209: # 118 "/usr/include/locale.h" 3 4 5209: }; 5209: 5209: 5209: 5209: extern char *setlocale (int __category, const char *__locale) throw (); 5209: 5209: 5209: extern struct lconv *localeconv (void) throw (); 5209: # 141 "/usr/include/locale.h" 3 4 5209: extern locale_t newlocale (int __category_mask, const char *__locale, 5209: locale_t __base) throw (); 5209: # 176 "/usr/include/locale.h" 3 4 5209: extern locale_t duplocale (locale_t __dataset) throw (); 5209: 5209: 5209: 5209: extern void freelocale (locale_t __dataset) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern locale_t uselocale (locale_t __dataset) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: } 5209: # 43 "/usr/include/c++/10/clocale" 2 3 5209: # 51 "/usr/include/c++/10/clocale" 3 5209: namespace std 5209: { 5209: using ::lconv; 5209: using ::setlocale; 5209: using ::localeconv; 5209: } 5209: # 42 "/usr/include/aarch64-linux-gnu/c++/10/bits/c++locale.h" 2 3 5209: 5209: 5209: 5209: 5209: 5209: 5209: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: extern "C" __typeof(uselocale) __uselocale; 5209: 5209: 5209: } 5209: 5209: 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: typedef __locale_t __c_locale; 5209: 5209: 5209: 5209: 5209: 5209: inline int 5209: __convert_from_v(const __c_locale& __cloc __attribute__ ((__unused__)), 5209: char* __out, 5209: const int __size __attribute__ ((__unused__)), 5209: const char* __fmt, ...) 5209: { 5209: 5209: __c_locale __old = __gnu_cxx::__uselocale(__cloc); 5209: # 88 "/usr/include/aarch64-linux-gnu/c++/10/bits/c++locale.h" 3 5209: __builtin_va_list __args; 5209: __builtin_va_start(__args, __fmt); 5209: 5209: 5209: const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); 5209: 5209: 5209: 5209: 5209: __builtin_va_end(__args); 5209: 5209: 5209: __gnu_cxx::__uselocale(__old); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: return __ret; 5209: } 5209: 5209: 5209: } 5209: # 41 "/usr/include/c++/10/bits/localefwd.h" 2 3 5209: 5209: # 1 "/usr/include/c++/10/cctype" 1 3 5209: # 39 "/usr/include/c++/10/cctype" 3 5209: 5209: # 40 "/usr/include/c++/10/cctype" 3 5209: 5209: 5209: # 1 "/usr/include/ctype.h" 1 3 4 5209: # 28 "/usr/include/ctype.h" 3 4 5209: extern "C" { 5209: # 39 "/usr/include/ctype.h" 3 4 5209: # 1 "/usr/include/endian.h" 1 3 4 5209: # 36 "/usr/include/endian.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/endian.h" 1 3 4 5209: # 37 "/usr/include/endian.h" 2 3 4 5209: # 60 "/usr/include/endian.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/byteswap.h" 1 3 4 5209: # 33 "/usr/include/aarch64-linux-gnu/bits/byteswap.h" 3 4 5209: static __inline __uint16_t 5209: __bswap_16 (__uint16_t __bsx) 5209: { 5209: 5209: return __builtin_bswap16 (__bsx); 5209: 5209: 5209: 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: static __inline __uint32_t 5209: __bswap_32 (__uint32_t __bsx) 5209: { 5209: 5209: return __builtin_bswap32 (__bsx); 5209: 5209: 5209: 5209: } 5209: # 69 "/usr/include/aarch64-linux-gnu/bits/byteswap.h" 3 4 5209: __extension__ static __inline __uint64_t 5209: __bswap_64 (__uint64_t __bsx) 5209: { 5209: 5209: return __builtin_bswap64 (__bsx); 5209: 5209: 5209: 5209: } 5209: # 61 "/usr/include/endian.h" 2 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/uintn-identity.h" 1 3 4 5209: # 32 "/usr/include/aarch64-linux-gnu/bits/uintn-identity.h" 3 4 5209: static __inline __uint16_t 5209: __uint16_identity (__uint16_t __x) 5209: { 5209: return __x; 5209: } 5209: 5209: static __inline __uint32_t 5209: __uint32_identity (__uint32_t __x) 5209: { 5209: return __x; 5209: } 5209: 5209: static __inline __uint64_t 5209: __uint64_identity (__uint64_t __x) 5209: { 5209: return __x; 5209: } 5209: # 62 "/usr/include/endian.h" 2 3 4 5209: # 40 "/usr/include/ctype.h" 2 3 4 5209: 5209: 5209: 5209: 5209: 5209: 5209: enum 5209: { 5209: _ISupper = ((0) < 8 ? ((1 << (0)) << 8) : ((1 << (0)) >> 8)), 5209: _ISlower = ((1) < 8 ? ((1 << (1)) << 8) : ((1 << (1)) >> 8)), 5209: _ISalpha = ((2) < 8 ? ((1 << (2)) << 8) : ((1 << (2)) >> 8)), 5209: _ISdigit = ((3) < 8 ? ((1 << (3)) << 8) : ((1 << (3)) >> 8)), 5209: _ISxdigit = ((4) < 8 ? ((1 << (4)) << 8) : ((1 << (4)) >> 8)), 5209: _ISspace = ((5) < 8 ? ((1 << (5)) << 8) : ((1 << (5)) >> 8)), 5209: _ISprint = ((6) < 8 ? ((1 << (6)) << 8) : ((1 << (6)) >> 8)), 5209: _ISgraph = ((7) < 8 ? ((1 << (7)) << 8) : ((1 << (7)) >> 8)), 5209: _ISblank = ((8) < 8 ? ((1 << (8)) << 8) : ((1 << (8)) >> 8)), 5209: _IScntrl = ((9) < 8 ? ((1 << (9)) << 8) : ((1 << (9)) >> 8)), 5209: _ISpunct = ((10) < 8 ? ((1 << (10)) << 8) : ((1 << (10)) >> 8)), 5209: _ISalnum = ((11) < 8 ? ((1 << (11)) << 8) : ((1 << (11)) >> 8)) 5209: }; 5209: # 79 "/usr/include/ctype.h" 3 4 5209: extern const unsigned short int **__ctype_b_loc (void) 5209: throw () __attribute__ ((__const__)); 5209: extern const __int32_t **__ctype_tolower_loc (void) 5209: throw () __attribute__ ((__const__)); 5209: extern const __int32_t **__ctype_toupper_loc (void) 5209: throw () __attribute__ ((__const__)); 5209: # 108 "/usr/include/ctype.h" 3 4 5209: extern int isalnum (int) throw (); 5209: extern int isalpha (int) throw (); 5209: extern int iscntrl (int) throw (); 5209: extern int isdigit (int) throw (); 5209: extern int islower (int) throw (); 5209: extern int isgraph (int) throw (); 5209: extern int isprint (int) throw (); 5209: extern int ispunct (int) throw (); 5209: extern int isspace (int) throw (); 5209: extern int isupper (int) throw (); 5209: extern int isxdigit (int) throw (); 5209: 5209: 5209: 5209: extern int tolower (int __c) throw (); 5209: 5209: 5209: extern int toupper (int __c) throw (); 5209: 5209: 5209: 5209: 5209: extern int isblank (int) throw (); 5209: 5209: 5209: 5209: 5209: extern int isctype (int __c, int __mask) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern int isascii (int __c) throw (); 5209: 5209: 5209: 5209: extern int toascii (int __c) throw (); 5209: 5209: 5209: 5209: extern int _toupper (int) throw (); 5209: extern int _tolower (int) throw (); 5209: # 251 "/usr/include/ctype.h" 3 4 5209: extern int isalnum_l (int, locale_t) throw (); 5209: extern int isalpha_l (int, locale_t) throw (); 5209: extern int iscntrl_l (int, locale_t) throw (); 5209: extern int isdigit_l (int, locale_t) throw (); 5209: extern int islower_l (int, locale_t) throw (); 5209: extern int isgraph_l (int, locale_t) throw (); 5209: extern int isprint_l (int, locale_t) throw (); 5209: extern int ispunct_l (int, locale_t) throw (); 5209: extern int isspace_l (int, locale_t) throw (); 5209: extern int isupper_l (int, locale_t) throw (); 5209: extern int isxdigit_l (int, locale_t) throw (); 5209: 5209: extern int isblank_l (int, locale_t) throw (); 5209: 5209: 5209: 5209: extern int __tolower_l (int __c, locale_t __l) throw (); 5209: extern int tolower_l (int __c, locale_t __l) throw (); 5209: 5209: 5209: extern int __toupper_l (int __c, locale_t __l) throw (); 5209: extern int toupper_l (int __c, locale_t __l) throw (); 5209: # 327 "/usr/include/ctype.h" 3 4 5209: } 5209: # 43 "/usr/include/c++/10/cctype" 2 3 5209: # 62 "/usr/include/c++/10/cctype" 3 5209: namespace std 5209: { 5209: using ::isalnum; 5209: using ::isalpha; 5209: using ::iscntrl; 5209: using ::isdigit; 5209: using ::isgraph; 5209: using ::islower; 5209: using ::isprint; 5209: using ::ispunct; 5209: using ::isspace; 5209: using ::isupper; 5209: using ::isxdigit; 5209: using ::tolower; 5209: using ::toupper; 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: namespace std 5209: { 5209: using ::isblank; 5209: } 5209: # 43 "/usr/include/c++/10/bits/localefwd.h" 2 3 5209: 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: # 55 "/usr/include/c++/10/bits/localefwd.h" 3 5209: class locale; 5209: 5209: template 5209: bool 5209: has_facet(const locale&) throw(); 5209: 5209: template 5209: const _Facet& 5209: use_facet(const locale&); 5209: 5209: 5209: template 5209: bool 5209: isspace(_CharT, const locale&); 5209: 5209: template 5209: bool 5209: isprint(_CharT, const locale&); 5209: 5209: template 5209: bool 5209: iscntrl(_CharT, const locale&); 5209: 5209: template 5209: bool 5209: isupper(_CharT, const locale&); 5209: 5209: template 5209: bool 5209: islower(_CharT, const locale&); 5209: 5209: template 5209: bool 5209: isalpha(_CharT, const locale&); 5209: 5209: template 5209: bool 5209: isdigit(_CharT, const locale&); 5209: 5209: template 5209: bool 5209: ispunct(_CharT, const locale&); 5209: 5209: template 5209: bool 5209: isxdigit(_CharT, const locale&); 5209: 5209: template 5209: bool 5209: isalnum(_CharT, const locale&); 5209: 5209: template 5209: bool 5209: isgraph(_CharT, const locale&); 5209: 5209: 5209: template 5209: bool 5209: isblank(_CharT, const locale&); 5209: 5209: 5209: template 5209: _CharT 5209: toupper(_CharT, const locale&); 5209: 5209: template 5209: _CharT 5209: tolower(_CharT, const locale&); 5209: 5209: 5209: class ctype_base; 5209: template 5209: class ctype; 5209: template<> class ctype; 5209: 5209: template<> class ctype; 5209: 5209: template 5209: class ctype_byname; 5209: 5209: 5209: class codecvt_base; 5209: template 5209: class codecvt; 5209: template<> class codecvt; 5209: 5209: template<> class codecvt; 5209: 5209: 5209: template<> class codecvt; 5209: template<> class codecvt; 5209: 5209: 5209: 5209: 5209: 5209: template 5209: class codecvt_byname; 5209: 5209: 5209: 5209: template > 5209: class num_get; 5209: template > 5209: class num_put; 5209: 5209: namespace __cxx11 { 5209: template class numpunct; 5209: template class numpunct_byname; 5209: } 5209: 5209: namespace __cxx11 { 5209: 5209: template 5209: class collate; 5209: template 5209: class collate_byname; 5209: } 5209: 5209: 5209: class time_base; 5209: namespace __cxx11 { 5209: template > 5209: class time_get; 5209: template > 5209: class time_get_byname; 5209: } 5209: template > 5209: class time_put; 5209: template > 5209: class time_put_byname; 5209: 5209: 5209: class money_base; 5209: namespace __cxx11 { 5209: template > 5209: class money_get; 5209: template > 5209: class money_put; 5209: } 5209: namespace __cxx11 { 5209: template 5209: class moneypunct; 5209: template 5209: class moneypunct_byname; 5209: } 5209: 5209: 5209: class messages_base; 5209: namespace __cxx11 { 5209: template 5209: class messages; 5209: template 5209: class messages_byname; 5209: } 5209: 5209: 5209: } 5209: # 42 "/usr/include/c++/10/ios" 2 3 5209: # 1 "/usr/include/c++/10/bits/ios_base.h" 1 3 5209: # 37 "/usr/include/c++/10/bits/ios_base.h" 3 5209: 5209: # 38 "/usr/include/c++/10/bits/ios_base.h" 3 5209: 5209: # 1 "/usr/include/c++/10/ext/atomicity.h" 1 3 5209: # 32 "/usr/include/c++/10/ext/atomicity.h" 3 5209: 5209: # 33 "/usr/include/c++/10/ext/atomicity.h" 3 5209: 5209: 5209: # 1 "/usr/include/aarch64-linux-gnu/c++/10/bits/gthr.h" 1 3 5209: # 30 "/usr/include/aarch64-linux-gnu/c++/10/bits/gthr.h" 3 5209: #pragma GCC visibility push(default) 5209: # 148 "/usr/include/aarch64-linux-gnu/c++/10/bits/gthr.h" 3 5209: # 1 "/usr/include/aarch64-linux-gnu/c++/10/bits/gthr-default.h" 1 3 5209: # 35 "/usr/include/aarch64-linux-gnu/c++/10/bits/gthr-default.h" 3 5209: # 1 "/usr/include/pthread.h" 1 3 4 5209: # 23 "/usr/include/pthread.h" 3 4 5209: # 1 "/usr/include/sched.h" 1 3 4 5209: # 29 "/usr/include/sched.h" 3 4 5209: # 1 "/usr/lib/gcc/aarch64-linux-gnu/10/include/stddef.h" 1 3 4 5209: # 30 "/usr/include/sched.h" 2 3 4 5209: 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/types/time_t.h" 1 3 4 5209: 5209: 5209: 5209: 5209: 5209: 5209: typedef __time_t time_t; 5209: # 32 "/usr/include/sched.h" 2 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/types/struct_timespec.h" 1 3 4 5209: # 9 "/usr/include/aarch64-linux-gnu/bits/types/struct_timespec.h" 3 4 5209: struct timespec 5209: { 5209: __time_t tv_sec; 5209: __syscall_slong_t tv_nsec; 5209: }; 5209: # 33 "/usr/include/sched.h" 2 3 4 5209: 5209: 5209: 5209: 5209: 5209: typedef __pid_t pid_t; 5209: 5209: 5209: 5209: 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/sched.h" 1 3 4 5209: # 74 "/usr/include/aarch64-linux-gnu/bits/sched.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/types/struct_sched_param.h" 1 3 4 5209: # 23 "/usr/include/aarch64-linux-gnu/bits/types/struct_sched_param.h" 3 4 5209: struct sched_param 5209: { 5209: int sched_priority; 5209: }; 5209: # 75 "/usr/include/aarch64-linux-gnu/bits/sched.h" 2 3 4 5209: 5209: extern "C" { 5209: 5209: 5209: 5209: extern int clone (int (*__fn) (void *__arg), void *__child_stack, 5209: int __flags, void *__arg, ...) throw (); 5209: 5209: 5209: extern int unshare (int __flags) throw (); 5209: 5209: 5209: extern int sched_getcpu (void) throw (); 5209: 5209: 5209: extern int getcpu (unsigned int *, unsigned int *) throw (); 5209: 5209: 5209: extern int setns (int __fd, int __nstype) throw (); 5209: 5209: 5209: } 5209: # 44 "/usr/include/sched.h" 2 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/cpu-set.h" 1 3 4 5209: # 32 "/usr/include/aarch64-linux-gnu/bits/cpu-set.h" 3 4 5209: typedef unsigned long int __cpu_mask; 5209: 5209: 5209: 5209: 5209: 5209: 5209: typedef struct 5209: { 5209: __cpu_mask __bits[1024 / (8 * sizeof (__cpu_mask))]; 5209: } cpu_set_t; 5209: # 115 "/usr/include/aarch64-linux-gnu/bits/cpu-set.h" 3 4 5209: extern "C" { 5209: 5209: extern int __sched_cpucount (size_t __setsize, const cpu_set_t *__setp) 5209: throw (); 5209: extern cpu_set_t *__sched_cpualloc (size_t __count) throw () __attribute__ ((__warn_unused_result__)); 5209: extern void __sched_cpufree (cpu_set_t *__set) throw (); 5209: 5209: } 5209: # 45 "/usr/include/sched.h" 2 3 4 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern "C" { 5209: 5209: 5209: extern int sched_setparam (__pid_t __pid, const struct sched_param *__param) 5209: throw (); 5209: 5209: 5209: extern int sched_getparam (__pid_t __pid, struct sched_param *__param) throw (); 5209: 5209: 5209: extern int sched_setscheduler (__pid_t __pid, int __policy, 5209: const struct sched_param *__param) throw (); 5209: 5209: 5209: extern int sched_getscheduler (__pid_t __pid) throw (); 5209: 5209: 5209: extern int sched_yield (void) throw (); 5209: 5209: 5209: extern int sched_get_priority_max (int __algorithm) throw (); 5209: 5209: 5209: extern int sched_get_priority_min (int __algorithm) throw (); 5209: 5209: 5209: extern int sched_rr_get_interval (__pid_t __pid, struct timespec *__t) throw (); 5209: # 121 "/usr/include/sched.h" 3 4 5209: extern int sched_setaffinity (__pid_t __pid, size_t __cpusetsize, 5209: const cpu_set_t *__cpuset) throw (); 5209: 5209: 5209: extern int sched_getaffinity (__pid_t __pid, size_t __cpusetsize, 5209: cpu_set_t *__cpuset) throw (); 5209: 5209: 5209: } 5209: # 24 "/usr/include/pthread.h" 2 3 4 5209: # 1 "/usr/include/time.h" 1 3 4 5209: # 29 "/usr/include/time.h" 3 4 5209: # 1 "/usr/lib/gcc/aarch64-linux-gnu/10/include/stddef.h" 1 3 4 5209: # 30 "/usr/include/time.h" 2 3 4 5209: 5209: 5209: 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/time.h" 1 3 4 5209: # 73 "/usr/include/aarch64-linux-gnu/bits/time.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/timex.h" 1 3 4 5209: # 22 "/usr/include/aarch64-linux-gnu/bits/timex.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/types/struct_timeval.h" 1 3 4 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: struct timeval 5209: { 5209: __time_t tv_sec; 5209: __suseconds_t tv_usec; 5209: }; 5209: # 23 "/usr/include/aarch64-linux-gnu/bits/timex.h" 2 3 4 5209: 5209: 5209: 5209: struct timex 5209: { 5209: unsigned int modes; 5209: __syscall_slong_t offset; 5209: __syscall_slong_t freq; 5209: __syscall_slong_t maxerror; 5209: __syscall_slong_t esterror; 5209: int status; 5209: __syscall_slong_t constant; 5209: __syscall_slong_t precision; 5209: __syscall_slong_t tolerance; 5209: struct timeval time; 5209: __syscall_slong_t tick; 5209: __syscall_slong_t ppsfreq; 5209: __syscall_slong_t jitter; 5209: int shift; 5209: __syscall_slong_t stabil; 5209: __syscall_slong_t jitcnt; 5209: __syscall_slong_t calcnt; 5209: __syscall_slong_t errcnt; 5209: __syscall_slong_t stbcnt; 5209: 5209: int tai; 5209: 5209: 5209: int :32; int :32; int :32; int :32; 5209: int :32; int :32; int :32; int :32; 5209: int :32; int :32; int :32; 5209: }; 5209: # 74 "/usr/include/aarch64-linux-gnu/bits/time.h" 2 3 4 5209: 5209: extern "C" { 5209: 5209: 5209: extern int clock_adjtime (__clockid_t __clock_id, struct timex *__utx) throw (); 5209: 5209: } 5209: # 34 "/usr/include/time.h" 2 3 4 5209: 5209: 5209: 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/types/clock_t.h" 1 3 4 5209: 5209: 5209: 5209: 5209: 5209: 5209: typedef __clock_t clock_t; 5209: # 38 "/usr/include/time.h" 2 3 4 5209: 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/types/struct_tm.h" 1 3 4 5209: 5209: 5209: 5209: 5209: 5209: 5209: struct tm 5209: { 5209: int tm_sec; 5209: int tm_min; 5209: int tm_hour; 5209: int tm_mday; 5209: int tm_mon; 5209: int tm_year; 5209: int tm_wday; 5209: int tm_yday; 5209: int tm_isdst; 5209: 5209: 5209: long int tm_gmtoff; 5209: const char *tm_zone; 5209: 5209: 5209: 5209: 5209: }; 5209: # 40 "/usr/include/time.h" 2 3 4 5209: 5209: 5209: 5209: 5209: 5209: 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/types/clockid_t.h" 1 3 4 5209: 5209: 5209: 5209: 5209: 5209: 5209: typedef __clockid_t clockid_t; 5209: # 47 "/usr/include/time.h" 2 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/types/timer_t.h" 1 3 4 5209: 5209: 5209: 5209: 5209: 5209: 5209: typedef __timer_t timer_t; 5209: # 48 "/usr/include/time.h" 2 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/types/struct_itimerspec.h" 1 3 4 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: struct itimerspec 5209: { 5209: struct timespec it_interval; 5209: struct timespec it_value; 5209: }; 5209: # 49 "/usr/include/time.h" 2 3 4 5209: struct sigevent; 5209: # 68 "/usr/include/time.h" 3 4 5209: extern "C" { 5209: 5209: 5209: 5209: extern clock_t clock (void) throw (); 5209: 5209: 5209: extern time_t time (time_t *__timer) throw (); 5209: 5209: 5209: extern double difftime (time_t __time1, time_t __time0) 5209: throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern time_t mktime (struct tm *__tp) throw (); 5209: 5209: 5209: 5209: 5209: 5209: extern size_t strftime (char *__restrict __s, size_t __maxsize, 5209: const char *__restrict __format, 5209: const struct tm *__restrict __tp) throw (); 5209: 5209: 5209: 5209: 5209: extern char *strptime (const char *__restrict __s, 5209: const char *__restrict __fmt, struct tm *__tp) 5209: throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern size_t strftime_l (char *__restrict __s, size_t __maxsize, 5209: const char *__restrict __format, 5209: const struct tm *__restrict __tp, 5209: locale_t __loc) throw (); 5209: 5209: 5209: 5209: extern char *strptime_l (const char *__restrict __s, 5209: const char *__restrict __fmt, struct tm *__tp, 5209: locale_t __loc) throw (); 5209: 5209: 5209: 5209: 5209: 5209: extern struct tm *gmtime (const time_t *__timer) throw (); 5209: 5209: 5209: 5209: extern struct tm *localtime (const time_t *__timer) throw (); 5209: 5209: 5209: 5209: 5209: extern struct tm *gmtime_r (const time_t *__restrict __timer, 5209: struct tm *__restrict __tp) throw (); 5209: 5209: 5209: 5209: extern struct tm *localtime_r (const time_t *__restrict __timer, 5209: struct tm *__restrict __tp) throw (); 5209: 5209: 5209: 5209: 5209: extern char *asctime (const struct tm *__tp) throw (); 5209: 5209: 5209: extern char *ctime (const time_t *__timer) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern char *asctime_r (const struct tm *__restrict __tp, 5209: char *__restrict __buf) throw (); 5209: 5209: 5209: extern char *ctime_r (const time_t *__restrict __timer, 5209: char *__restrict __buf) throw (); 5209: 5209: 5209: 5209: 5209: extern char *__tzname[2]; 5209: extern int __daylight; 5209: extern long int __timezone; 5209: 5209: 5209: 5209: 5209: extern char *tzname[2]; 5209: 5209: 5209: 5209: extern void tzset (void) throw (); 5209: 5209: 5209: 5209: extern int daylight; 5209: extern long int timezone; 5209: 5209: 5209: 5209: 5209: 5209: extern int stime (const time_t *__when) throw (); 5209: # 196 "/usr/include/time.h" 3 4 5209: extern time_t timegm (struct tm *__tp) throw (); 5209: 5209: 5209: extern time_t timelocal (struct tm *__tp) throw (); 5209: 5209: 5209: extern int dysize (int __year) throw () __attribute__ ((__const__)); 5209: # 211 "/usr/include/time.h" 3 4 5209: extern int nanosleep (const struct timespec *__requested_time, 5209: struct timespec *__remaining); 5209: 5209: 5209: 5209: extern int clock_getres (clockid_t __clock_id, struct timespec *__res) throw (); 5209: 5209: 5209: extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) throw (); 5209: 5209: 5209: extern int clock_settime (clockid_t __clock_id, const struct timespec *__tp) 5209: throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern int clock_nanosleep (clockid_t __clock_id, int __flags, 5209: const struct timespec *__req, 5209: struct timespec *__rem); 5209: 5209: 5209: extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) throw (); 5209: 5209: 5209: 5209: 5209: extern int timer_create (clockid_t __clock_id, 5209: struct sigevent *__restrict __evp, 5209: timer_t *__restrict __timerid) throw (); 5209: 5209: 5209: extern int timer_delete (timer_t __timerid) throw (); 5209: 5209: 5209: extern int timer_settime (timer_t __timerid, int __flags, 5209: const struct itimerspec *__restrict __value, 5209: struct itimerspec *__restrict __ovalue) throw (); 5209: 5209: 5209: extern int timer_gettime (timer_t __timerid, struct itimerspec *__value) 5209: throw (); 5209: 5209: 5209: extern int timer_getoverrun (timer_t __timerid) throw (); 5209: 5209: 5209: 5209: 5209: 5209: extern int timespec_get (struct timespec *__ts, int __base) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: # 280 "/usr/include/time.h" 3 4 5209: extern int getdate_err; 5209: # 289 "/usr/include/time.h" 3 4 5209: extern struct tm *getdate (const char *__string); 5209: # 303 "/usr/include/time.h" 3 4 5209: extern int getdate_r (const char *__restrict __string, 5209: struct tm *__restrict __resbufp); 5209: 5209: 5209: } 5209: # 25 "/usr/include/pthread.h" 2 3 4 5209: 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/pthreadtypes.h" 1 3 4 5209: # 23 "/usr/include/aarch64-linux-gnu/bits/pthreadtypes.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/thread-shared-types.h" 1 3 4 5209: # 77 "/usr/include/aarch64-linux-gnu/bits/thread-shared-types.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/pthreadtypes-arch.h" 1 3 4 5209: # 54 "/usr/include/aarch64-linux-gnu/bits/pthreadtypes-arch.h" 3 4 5209: struct __pthread_rwlock_arch_t 5209: { 5209: unsigned int __readers; 5209: unsigned int __writers; 5209: unsigned int __wrphase_futex; 5209: unsigned int __writers_futex; 5209: unsigned int __pad3; 5209: unsigned int __pad4; 5209: int __cur_writer; 5209: int __shared; 5209: unsigned long int __pad1; 5209: unsigned long int __pad2; 5209: unsigned int __flags; 5209: }; 5209: # 78 "/usr/include/aarch64-linux-gnu/bits/thread-shared-types.h" 2 3 4 5209: 5209: 5209: 5209: 5209: typedef struct __pthread_internal_list 5209: { 5209: struct __pthread_internal_list *__prev; 5209: struct __pthread_internal_list *__next; 5209: } __pthread_list_t; 5209: # 118 "/usr/include/aarch64-linux-gnu/bits/thread-shared-types.h" 3 4 5209: struct __pthread_mutex_s 5209: { 5209: int __lock ; 5209: unsigned int __count; 5209: int __owner; 5209: 5209: unsigned int __nusers; 5209: # 148 "/usr/include/aarch64-linux-gnu/bits/thread-shared-types.h" 3 4 5209: int __kind; 5209: 5209: 5209: 5209: 5209: 5209: int __spins; 5209: __pthread_list_t __list; 5209: # 165 "/usr/include/aarch64-linux-gnu/bits/thread-shared-types.h" 3 4 5209: 5209: }; 5209: 5209: 5209: 5209: 5209: struct __pthread_cond_s 5209: { 5209: __extension__ union 5209: { 5209: __extension__ unsigned long long int __wseq; 5209: struct 5209: { 5209: unsigned int __low; 5209: unsigned int __high; 5209: } __wseq32; 5209: }; 5209: __extension__ union 5209: { 5209: __extension__ unsigned long long int __g1_start; 5209: struct 5209: { 5209: unsigned int __low; 5209: unsigned int __high; 5209: } __g1_start32; 5209: }; 5209: unsigned int __g_refs[2] ; 5209: unsigned int __g_size[2]; 5209: unsigned int __g1_orig_size; 5209: unsigned int __wrefs; 5209: unsigned int __g_signals[2]; 5209: }; 5209: # 24 "/usr/include/aarch64-linux-gnu/bits/pthreadtypes.h" 2 3 4 5209: 5209: 5209: 5209: typedef unsigned long int pthread_t; 5209: 5209: 5209: 5209: 5209: typedef union 5209: { 5209: char __size[8]; 5209: int __align; 5209: } pthread_mutexattr_t; 5209: 5209: 5209: 5209: 5209: typedef union 5209: { 5209: char __size[8]; 5209: int __align; 5209: } pthread_condattr_t; 5209: 5209: 5209: 5209: typedef unsigned int pthread_key_t; 5209: 5209: 5209: 5209: typedef int pthread_once_t; 5209: 5209: 5209: union pthread_attr_t 5209: { 5209: char __size[64]; 5209: long int __align; 5209: }; 5209: 5209: typedef union pthread_attr_t pthread_attr_t; 5209: 5209: 5209: 5209: 5209: typedef union 5209: { 5209: struct __pthread_mutex_s __data; 5209: char __size[48]; 5209: long int __align; 5209: } pthread_mutex_t; 5209: 5209: 5209: typedef union 5209: { 5209: struct __pthread_cond_s __data; 5209: char __size[48]; 5209: __extension__ long long int __align; 5209: } pthread_cond_t; 5209: 5209: 5209: 5209: 5209: 5209: typedef union 5209: { 5209: struct __pthread_rwlock_arch_t __data; 5209: char __size[56]; 5209: long int __align; 5209: } pthread_rwlock_t; 5209: 5209: typedef union 5209: { 5209: char __size[8]; 5209: long int __align; 5209: } pthread_rwlockattr_t; 5209: 5209: 5209: 5209: 5209: 5209: typedef volatile int pthread_spinlock_t; 5209: 5209: 5209: 5209: 5209: typedef union 5209: { 5209: char __size[32]; 5209: long int __align; 5209: } pthread_barrier_t; 5209: 5209: typedef union 5209: { 5209: char __size[8]; 5209: int __align; 5209: } pthread_barrierattr_t; 5209: # 27 "/usr/include/pthread.h" 2 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/setjmp.h" 1 3 4 5209: # 30 "/usr/include/aarch64-linux-gnu/bits/setjmp.h" 3 4 5209: __extension__ typedef unsigned long long __jmp_buf [22]; 5209: # 28 "/usr/include/pthread.h" 2 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/wordsize.h" 1 3 4 5209: # 29 "/usr/include/pthread.h" 2 3 4 5209: 5209: 5209: 5209: 5209: enum 5209: { 5209: PTHREAD_CREATE_JOINABLE, 5209: 5209: PTHREAD_CREATE_DETACHED 5209: 5209: }; 5209: 5209: 5209: 5209: enum 5209: { 5209: PTHREAD_MUTEX_TIMED_NP, 5209: PTHREAD_MUTEX_RECURSIVE_NP, 5209: PTHREAD_MUTEX_ERRORCHECK_NP, 5209: PTHREAD_MUTEX_ADAPTIVE_NP 5209: 5209: , 5209: PTHREAD_MUTEX_NORMAL = PTHREAD_MUTEX_TIMED_NP, 5209: PTHREAD_MUTEX_RECURSIVE = PTHREAD_MUTEX_RECURSIVE_NP, 5209: PTHREAD_MUTEX_ERRORCHECK = PTHREAD_MUTEX_ERRORCHECK_NP, 5209: PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX_NORMAL 5209: 5209: 5209: 5209: , PTHREAD_MUTEX_FAST_NP = PTHREAD_MUTEX_TIMED_NP 5209: 5209: }; 5209: 5209: 5209: 5209: 5209: enum 5209: { 5209: PTHREAD_MUTEX_STALLED, 5209: PTHREAD_MUTEX_STALLED_NP = PTHREAD_MUTEX_STALLED, 5209: PTHREAD_MUTEX_ROBUST, 5209: PTHREAD_MUTEX_ROBUST_NP = PTHREAD_MUTEX_ROBUST 5209: }; 5209: 5209: 5209: 5209: 5209: 5209: enum 5209: { 5209: PTHREAD_PRIO_NONE, 5209: PTHREAD_PRIO_INHERIT, 5209: PTHREAD_PRIO_PROTECT 5209: }; 5209: # 115 "/usr/include/pthread.h" 3 4 5209: enum 5209: { 5209: PTHREAD_RWLOCK_PREFER_READER_NP, 5209: PTHREAD_RWLOCK_PREFER_WRITER_NP, 5209: PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP, 5209: PTHREAD_RWLOCK_DEFAULT_NP = PTHREAD_RWLOCK_PREFER_READER_NP 5209: }; 5209: # 156 "/usr/include/pthread.h" 3 4 5209: enum 5209: { 5209: PTHREAD_INHERIT_SCHED, 5209: 5209: PTHREAD_EXPLICIT_SCHED 5209: 5209: }; 5209: 5209: 5209: 5209: enum 5209: { 5209: PTHREAD_SCOPE_SYSTEM, 5209: 5209: PTHREAD_SCOPE_PROCESS 5209: 5209: }; 5209: 5209: 5209: 5209: enum 5209: { 5209: PTHREAD_PROCESS_PRIVATE, 5209: 5209: PTHREAD_PROCESS_SHARED 5209: 5209: }; 5209: # 191 "/usr/include/pthread.h" 3 4 5209: struct _pthread_cleanup_buffer 5209: { 5209: void (*__routine) (void *); 5209: void *__arg; 5209: int __canceltype; 5209: struct _pthread_cleanup_buffer *__prev; 5209: }; 5209: 5209: 5209: enum 5209: { 5209: PTHREAD_CANCEL_ENABLE, 5209: 5209: PTHREAD_CANCEL_DISABLE 5209: 5209: }; 5209: enum 5209: { 5209: PTHREAD_CANCEL_DEFERRED, 5209: 5209: PTHREAD_CANCEL_ASYNCHRONOUS 5209: 5209: }; 5209: # 229 "/usr/include/pthread.h" 3 4 5209: extern "C" { 5209: 5209: 5209: 5209: 5209: extern int pthread_create (pthread_t *__restrict __newthread, 5209: const pthread_attr_t *__restrict __attr, 5209: void *(*__start_routine) (void *), 5209: void *__restrict __arg) throw () __attribute__ ((__nonnull__ (1, 3))); 5209: 5209: 5209: 5209: 5209: 5209: extern void pthread_exit (void *__retval) __attribute__ ((__noreturn__)); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern int pthread_join (pthread_t __th, void **__thread_return); 5209: 5209: 5209: 5209: 5209: extern int pthread_tryjoin_np (pthread_t __th, void **__thread_return) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern int pthread_timedjoin_np (pthread_t __th, void **__thread_return, 5209: const struct timespec *__abstime); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern int pthread_detach (pthread_t __th) throw (); 5209: 5209: 5209: 5209: extern pthread_t pthread_self (void) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern int pthread_equal (pthread_t __thread1, pthread_t __thread2) 5209: throw () __attribute__ ((__const__)); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern int pthread_attr_init (pthread_attr_t *__attr) throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: extern int pthread_attr_destroy (pthread_attr_t *__attr) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: extern int pthread_attr_getdetachstate (const pthread_attr_t *__attr, 5209: int *__detachstate) 5209: throw () __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: extern int pthread_attr_setdetachstate (pthread_attr_t *__attr, 5209: int __detachstate) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: 5209: extern int pthread_attr_getguardsize (const pthread_attr_t *__attr, 5209: size_t *__guardsize) 5209: throw () __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: extern int pthread_attr_setguardsize (pthread_attr_t *__attr, 5209: size_t __guardsize) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: 5209: extern int pthread_attr_getschedparam (const pthread_attr_t *__restrict __attr, 5209: struct sched_param *__restrict __param) 5209: throw () __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: extern int pthread_attr_setschedparam (pthread_attr_t *__restrict __attr, 5209: const struct sched_param *__restrict 5209: __param) throw () __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: extern int pthread_attr_getschedpolicy (const pthread_attr_t *__restrict 5209: __attr, int *__restrict __policy) 5209: throw () __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: extern int pthread_attr_setschedpolicy (pthread_attr_t *__attr, int __policy) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: extern int pthread_attr_getinheritsched (const pthread_attr_t *__restrict 5209: __attr, int *__restrict __inherit) 5209: throw () __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: extern int pthread_attr_setinheritsched (pthread_attr_t *__attr, 5209: int __inherit) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: 5209: extern int pthread_attr_getscope (const pthread_attr_t *__restrict __attr, 5209: int *__restrict __scope) 5209: throw () __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: extern int pthread_attr_setscope (pthread_attr_t *__attr, int __scope) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: extern int pthread_attr_getstackaddr (const pthread_attr_t *__restrict 5209: __attr, void **__restrict __stackaddr) 5209: throw () __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__deprecated__)); 5209: 5209: 5209: 5209: 5209: 5209: extern int pthread_attr_setstackaddr (pthread_attr_t *__attr, 5209: void *__stackaddr) 5209: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__)); 5209: 5209: 5209: extern int pthread_attr_getstacksize (const pthread_attr_t *__restrict 5209: __attr, size_t *__restrict __stacksize) 5209: throw () __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: 5209: 5209: extern int pthread_attr_setstacksize (pthread_attr_t *__attr, 5209: size_t __stacksize) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: 5209: extern int pthread_attr_getstack (const pthread_attr_t *__restrict __attr, 5209: void **__restrict __stackaddr, 5209: size_t *__restrict __stacksize) 5209: throw () __attribute__ ((__nonnull__ (1, 2, 3))); 5209: 5209: 5209: 5209: 5209: extern int pthread_attr_setstack (pthread_attr_t *__attr, void *__stackaddr, 5209: size_t __stacksize) throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: 5209: 5209: 5209: extern int pthread_attr_setaffinity_np (pthread_attr_t *__attr, 5209: size_t __cpusetsize, 5209: const cpu_set_t *__cpuset) 5209: throw () __attribute__ ((__nonnull__ (1, 3))); 5209: 5209: 5209: 5209: extern int pthread_attr_getaffinity_np (const pthread_attr_t *__attr, 5209: size_t __cpusetsize, 5209: cpu_set_t *__cpuset) 5209: throw () __attribute__ ((__nonnull__ (1, 3))); 5209: 5209: 5209: extern int pthread_getattr_default_np (pthread_attr_t *__attr) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: 5209: extern int pthread_setattr_default_np (const pthread_attr_t *__attr) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: 5209: 5209: extern int pthread_getattr_np (pthread_t __th, pthread_attr_t *__attr) 5209: throw () __attribute__ ((__nonnull__ (2))); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern int pthread_setschedparam (pthread_t __target_thread, int __policy, 5209: const struct sched_param *__param) 5209: throw () __attribute__ ((__nonnull__ (3))); 5209: 5209: 5209: extern int pthread_getschedparam (pthread_t __target_thread, 5209: int *__restrict __policy, 5209: struct sched_param *__restrict __param) 5209: throw () __attribute__ ((__nonnull__ (2, 3))); 5209: 5209: 5209: extern int pthread_setschedprio (pthread_t __target_thread, int __prio) 5209: throw (); 5209: 5209: 5209: 5209: 5209: extern int pthread_getname_np (pthread_t __target_thread, char *__buf, 5209: size_t __buflen) 5209: throw () __attribute__ ((__nonnull__ (2))); 5209: 5209: 5209: extern int pthread_setname_np (pthread_t __target_thread, const char *__name) 5209: throw () __attribute__ ((__nonnull__ (2))); 5209: 5209: 5209: 5209: 5209: 5209: extern int pthread_getconcurrency (void) throw (); 5209: 5209: 5209: extern int pthread_setconcurrency (int __level) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern int pthread_yield (void) throw (); 5209: 5209: 5209: 5209: 5209: extern int pthread_setaffinity_np (pthread_t __th, size_t __cpusetsize, 5209: const cpu_set_t *__cpuset) 5209: throw () __attribute__ ((__nonnull__ (3))); 5209: 5209: 5209: extern int pthread_getaffinity_np (pthread_t __th, size_t __cpusetsize, 5209: cpu_set_t *__cpuset) 5209: throw () __attribute__ ((__nonnull__ (3))); 5209: # 495 "/usr/include/pthread.h" 3 4 5209: extern int pthread_once (pthread_once_t *__once_control, 5209: void (*__init_routine) (void)) __attribute__ ((__nonnull__ (1, 2))); 5209: # 507 "/usr/include/pthread.h" 3 4 5209: extern int pthread_setcancelstate (int __state, int *__oldstate); 5209: 5209: 5209: 5209: extern int pthread_setcanceltype (int __type, int *__oldtype); 5209: 5209: 5209: extern int pthread_cancel (pthread_t __th); 5209: 5209: 5209: 5209: 5209: extern void pthread_testcancel (void); 5209: 5209: 5209: 5209: 5209: typedef struct 5209: { 5209: struct 5209: { 5209: __jmp_buf __cancel_jmp_buf; 5209: int __mask_was_saved; 5209: } __cancel_jmp_buf[1]; 5209: void *__pad[4]; 5209: } __pthread_unwind_buf_t __attribute__ ((__aligned__)); 5209: # 541 "/usr/include/pthread.h" 3 4 5209: struct __pthread_cleanup_frame 5209: { 5209: void (*__cancel_routine) (void *); 5209: void *__cancel_arg; 5209: int __do_it; 5209: int __cancel_type; 5209: }; 5209: 5209: 5209: 5209: 5209: class __pthread_cleanup_class 5209: { 5209: void (*__cancel_routine) (void *); 5209: void *__cancel_arg; 5209: int __do_it; 5209: int __cancel_type; 5209: 5209: public: 5209: __pthread_cleanup_class (void (*__fct) (void *), void *__arg) 5209: : __cancel_routine (__fct), __cancel_arg (__arg), __do_it (1) { } 5209: ~__pthread_cleanup_class () { if (__do_it) __cancel_routine (__cancel_arg); } 5209: void __setdoit (int __newval) { __do_it = __newval; } 5209: void __defer () { pthread_setcanceltype (PTHREAD_CANCEL_DEFERRED, 5209: &__cancel_type); } 5209: void __restore () const { pthread_setcanceltype (__cancel_type, 0); } 5209: }; 5209: # 743 "/usr/include/pthread.h" 3 4 5209: struct __jmp_buf_tag; 5209: extern int __sigsetjmp (struct __jmp_buf_tag *__env, int __savemask) throw (); 5209: 5209: 5209: 5209: 5209: 5209: extern int pthread_mutex_init (pthread_mutex_t *__mutex, 5209: const pthread_mutexattr_t *__mutexattr) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: extern int pthread_mutex_destroy (pthread_mutex_t *__mutex) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: extern int pthread_mutex_trylock (pthread_mutex_t *__mutex) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: extern int pthread_mutex_lock (pthread_mutex_t *__mutex) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: 5209: extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex, 5209: const struct timespec *__restrict 5209: __abstime) throw () __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: 5209: extern int pthread_mutex_clocklock (pthread_mutex_t *__restrict __mutex, 5209: clockid_t __clockid, 5209: const struct timespec *__restrict 5209: __abstime) throw () __attribute__ ((__nonnull__ (1, 3))); 5209: 5209: 5209: 5209: extern int pthread_mutex_unlock (pthread_mutex_t *__mutex) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: 5209: extern int pthread_mutex_getprioceiling (const pthread_mutex_t * 5209: __restrict __mutex, 5209: int *__restrict __prioceiling) 5209: throw () __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: 5209: extern int pthread_mutex_setprioceiling (pthread_mutex_t *__restrict __mutex, 5209: int __prioceiling, 5209: int *__restrict __old_ceiling) 5209: throw () __attribute__ ((__nonnull__ (1, 3))); 5209: 5209: 5209: 5209: 5209: extern int pthread_mutex_consistent (pthread_mutex_t *__mutex) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: extern int pthread_mutex_consistent_np (pthread_mutex_t *__mutex) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: # 814 "/usr/include/pthread.h" 3 4 5209: extern int pthread_mutexattr_init (pthread_mutexattr_t *__attr) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: extern int pthread_mutexattr_destroy (pthread_mutexattr_t *__attr) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: extern int pthread_mutexattr_getpshared (const pthread_mutexattr_t * 5209: __restrict __attr, 5209: int *__restrict __pshared) 5209: throw () __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: extern int pthread_mutexattr_setpshared (pthread_mutexattr_t *__attr, 5209: int __pshared) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: 5209: extern int pthread_mutexattr_gettype (const pthread_mutexattr_t *__restrict 5209: __attr, int *__restrict __kind) 5209: throw () __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: 5209: 5209: extern int pthread_mutexattr_settype (pthread_mutexattr_t *__attr, int __kind) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: 5209: extern int pthread_mutexattr_getprotocol (const pthread_mutexattr_t * 5209: __restrict __attr, 5209: int *__restrict __protocol) 5209: throw () __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: 5209: extern int pthread_mutexattr_setprotocol (pthread_mutexattr_t *__attr, 5209: int __protocol) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: extern int pthread_mutexattr_getprioceiling (const pthread_mutexattr_t * 5209: __restrict __attr, 5209: int *__restrict __prioceiling) 5209: throw () __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: extern int pthread_mutexattr_setprioceiling (pthread_mutexattr_t *__attr, 5209: int __prioceiling) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: 5209: extern int pthread_mutexattr_getrobust (const pthread_mutexattr_t *__attr, 5209: int *__robustness) 5209: throw () __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: extern int pthread_mutexattr_getrobust_np (const pthread_mutexattr_t *__attr, 5209: int *__robustness) 5209: throw () __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: 5209: extern int pthread_mutexattr_setrobust (pthread_mutexattr_t *__attr, 5209: int __robustness) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: extern int pthread_mutexattr_setrobust_np (pthread_mutexattr_t *__attr, 5209: int __robustness) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: # 896 "/usr/include/pthread.h" 3 4 5209: extern int pthread_rwlock_init (pthread_rwlock_t *__restrict __rwlock, 5209: const pthread_rwlockattr_t *__restrict 5209: __attr) throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: extern int pthread_rwlock_destroy (pthread_rwlock_t *__rwlock) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: extern int pthread_rwlock_rdlock (pthread_rwlock_t *__rwlock) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: extern int pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: 5209: extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock, 5209: const struct timespec *__restrict 5209: __abstime) throw () __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: 5209: extern int pthread_rwlock_clockrdlock (pthread_rwlock_t *__restrict __rwlock, 5209: clockid_t __clockid, 5209: const struct timespec *__restrict 5209: __abstime) throw () __attribute__ ((__nonnull__ (1, 3))); 5209: 5209: 5209: 5209: extern int pthread_rwlock_wrlock (pthread_rwlock_t *__rwlock) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: extern int pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: 5209: extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock, 5209: const struct timespec *__restrict 5209: __abstime) throw () __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: 5209: extern int pthread_rwlock_clockwrlock (pthread_rwlock_t *__restrict __rwlock, 5209: clockid_t __clockid, 5209: const struct timespec *__restrict 5209: __abstime) throw () __attribute__ ((__nonnull__ (1, 3))); 5209: 5209: 5209: 5209: extern int pthread_rwlock_unlock (pthread_rwlock_t *__rwlock) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: 5209: 5209: 5209: extern int pthread_rwlockattr_init (pthread_rwlockattr_t *__attr) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: extern int pthread_rwlockattr_destroy (pthread_rwlockattr_t *__attr) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: extern int pthread_rwlockattr_getpshared (const pthread_rwlockattr_t * 5209: __restrict __attr, 5209: int *__restrict __pshared) 5209: throw () __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: extern int pthread_rwlockattr_setpshared (pthread_rwlockattr_t *__attr, 5209: int __pshared) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: extern int pthread_rwlockattr_getkind_np (const pthread_rwlockattr_t * 5209: __restrict __attr, 5209: int *__restrict __pref) 5209: throw () __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: extern int pthread_rwlockattr_setkind_np (pthread_rwlockattr_t *__attr, 5209: int __pref) throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern int pthread_cond_init (pthread_cond_t *__restrict __cond, 5209: const pthread_condattr_t *__restrict __cond_attr) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: extern int pthread_cond_destroy (pthread_cond_t *__cond) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: extern int pthread_cond_signal (pthread_cond_t *__cond) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: extern int pthread_cond_broadcast (pthread_cond_t *__cond) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern int pthread_cond_wait (pthread_cond_t *__restrict __cond, 5209: pthread_mutex_t *__restrict __mutex) 5209: __attribute__ ((__nonnull__ (1, 2))); 5209: # 1022 "/usr/include/pthread.h" 3 4 5209: extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond, 5209: pthread_mutex_t *__restrict __mutex, 5209: const struct timespec *__restrict __abstime) 5209: __attribute__ ((__nonnull__ (1, 2, 3))); 5209: # 1035 "/usr/include/pthread.h" 3 4 5209: extern int pthread_cond_clockwait (pthread_cond_t *__restrict __cond, 5209: pthread_mutex_t *__restrict __mutex, 5209: __clockid_t __clock_id, 5209: const struct timespec *__restrict __abstime) 5209: __attribute__ ((__nonnull__ (1, 2, 4))); 5209: 5209: 5209: 5209: 5209: 5209: extern int pthread_condattr_init (pthread_condattr_t *__attr) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: extern int pthread_condattr_destroy (pthread_condattr_t *__attr) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: extern int pthread_condattr_getpshared (const pthread_condattr_t * 5209: __restrict __attr, 5209: int *__restrict __pshared) 5209: throw () __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: extern int pthread_condattr_setpshared (pthread_condattr_t *__attr, 5209: int __pshared) throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: 5209: extern int pthread_condattr_getclock (const pthread_condattr_t * 5209: __restrict __attr, 5209: __clockid_t *__restrict __clock_id) 5209: throw () __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: extern int pthread_condattr_setclock (pthread_condattr_t *__attr, 5209: __clockid_t __clock_id) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: # 1081 "/usr/include/pthread.h" 3 4 5209: extern int pthread_spin_init (pthread_spinlock_t *__lock, int __pshared) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: extern int pthread_spin_destroy (pthread_spinlock_t *__lock) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: extern int pthread_spin_lock (pthread_spinlock_t *__lock) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: extern int pthread_spin_trylock (pthread_spinlock_t *__lock) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: extern int pthread_spin_unlock (pthread_spinlock_t *__lock) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern int pthread_barrier_init (pthread_barrier_t *__restrict __barrier, 5209: const pthread_barrierattr_t *__restrict 5209: __attr, unsigned int __count) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: extern int pthread_barrier_destroy (pthread_barrier_t *__barrier) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: extern int pthread_barrier_wait (pthread_barrier_t *__barrier) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: 5209: extern int pthread_barrierattr_init (pthread_barrierattr_t *__attr) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: extern int pthread_barrierattr_destroy (pthread_barrierattr_t *__attr) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: extern int pthread_barrierattr_getpshared (const pthread_barrierattr_t * 5209: __restrict __attr, 5209: int *__restrict __pshared) 5209: throw () __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: extern int pthread_barrierattr_setpshared (pthread_barrierattr_t *__attr, 5209: int __pshared) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: # 1148 "/usr/include/pthread.h" 3 4 5209: extern int pthread_key_create (pthread_key_t *__key, 5209: void (*__destr_function) (void *)) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: extern int pthread_key_delete (pthread_key_t __key) throw (); 5209: 5209: 5209: extern void *pthread_getspecific (pthread_key_t __key) throw (); 5209: 5209: 5209: extern int pthread_setspecific (pthread_key_t __key, 5209: const void *__pointer) throw () ; 5209: 5209: 5209: 5209: 5209: extern int pthread_getcpuclockid (pthread_t __thread_id, 5209: __clockid_t *__clock_id) 5209: throw () __attribute__ ((__nonnull__ (2))); 5209: # 1182 "/usr/include/pthread.h" 3 4 5209: extern int pthread_atfork (void (*__prepare) (void), 5209: void (*__parent) (void), 5209: void (*__child) (void)) throw (); 5209: 5209: 5209: 5209: 5209: extern __inline __attribute__ ((__gnu_inline__)) int 5209: __attribute__ ((__leaf__)) pthread_equal (pthread_t __thread1, pthread_t __thread2) throw () 5209: { 5209: return __thread1 == __thread2; 5209: } 5209: 5209: 5209: } 5209: # 36 "/usr/include/aarch64-linux-gnu/c++/10/bits/gthr-default.h" 2 3 5209: # 47 "/usr/include/aarch64-linux-gnu/c++/10/bits/gthr-default.h" 3 5209: typedef pthread_t __gthread_t; 5209: typedef pthread_key_t __gthread_key_t; 5209: typedef pthread_once_t __gthread_once_t; 5209: typedef pthread_mutex_t __gthread_mutex_t; 5209: typedef pthread_mutex_t __gthread_recursive_mutex_t; 5209: typedef pthread_cond_t __gthread_cond_t; 5209: typedef struct timespec __gthread_time_t; 5209: # 102 "/usr/include/aarch64-linux-gnu/c++/10/bits/gthr-default.h" 3 5209: static __typeof(pthread_once) __gthrw_pthread_once __attribute__ ((__weakref__("pthread_once"), __copy__ (pthread_once))); 5209: static __typeof(pthread_getspecific) __gthrw_pthread_getspecific __attribute__ ((__weakref__("pthread_getspecific"), __copy__ (pthread_getspecific))); 5209: static __typeof(pthread_setspecific) __gthrw_pthread_setspecific __attribute__ ((__weakref__("pthread_setspecific"), __copy__ (pthread_setspecific))); 5209: 5209: static __typeof(pthread_create) __gthrw_pthread_create __attribute__ ((__weakref__("pthread_create"), __copy__ (pthread_create))); 5209: static __typeof(pthread_join) __gthrw_pthread_join __attribute__ ((__weakref__("pthread_join"), __copy__ (pthread_join))); 5209: static __typeof(pthread_equal) __gthrw_pthread_equal __attribute__ ((__weakref__("pthread_equal"), __copy__ (pthread_equal))); 5209: static __typeof(pthread_self) __gthrw_pthread_self __attribute__ ((__weakref__("pthread_self"), __copy__ (pthread_self))); 5209: static __typeof(pthread_detach) __gthrw_pthread_detach __attribute__ ((__weakref__("pthread_detach"), __copy__ (pthread_detach))); 5209: 5209: static __typeof(pthread_cancel) __gthrw_pthread_cancel __attribute__ ((__weakref__("pthread_cancel"), __copy__ (pthread_cancel))); 5209: 5209: static __typeof(sched_yield) __gthrw_sched_yield __attribute__ ((__weakref__("sched_yield"), __copy__ (sched_yield))); 5209: 5209: static __typeof(pthread_mutex_lock) __gthrw_pthread_mutex_lock __attribute__ ((__weakref__("pthread_mutex_lock"), __copy__ (pthread_mutex_lock))); 5209: static __typeof(pthread_mutex_trylock) __gthrw_pthread_mutex_trylock __attribute__ ((__weakref__("pthread_mutex_trylock"), __copy__ (pthread_mutex_trylock))); 5209: 5209: static __typeof(pthread_mutex_timedlock) __gthrw_pthread_mutex_timedlock __attribute__ ((__weakref__("pthread_mutex_timedlock"), __copy__ (pthread_mutex_timedlock))); 5209: 5209: static __typeof(pthread_mutex_unlock) __gthrw_pthread_mutex_unlock __attribute__ ((__weakref__("pthread_mutex_unlock"), __copy__ (pthread_mutex_unlock))); 5209: static __typeof(pthread_mutex_init) __gthrw_pthread_mutex_init __attribute__ ((__weakref__("pthread_mutex_init"), __copy__ (pthread_mutex_init))); 5209: static __typeof(pthread_mutex_destroy) __gthrw_pthread_mutex_destroy __attribute__ ((__weakref__("pthread_mutex_destroy"), __copy__ (pthread_mutex_destroy))); 5209: 5209: static __typeof(pthread_cond_init) __gthrw_pthread_cond_init __attribute__ ((__weakref__("pthread_cond_init"), __copy__ (pthread_cond_init))); 5209: static __typeof(pthread_cond_broadcast) __gthrw_pthread_cond_broadcast __attribute__ ((__weakref__("pthread_cond_broadcast"), __copy__ (pthread_cond_broadcast))); 5209: static __typeof(pthread_cond_signal) __gthrw_pthread_cond_signal __attribute__ ((__weakref__("pthread_cond_signal"), __copy__ (pthread_cond_signal))); 5209: static __typeof(pthread_cond_wait) __gthrw_pthread_cond_wait __attribute__ ((__weakref__("pthread_cond_wait"), __copy__ (pthread_cond_wait))); 5209: static __typeof(pthread_cond_timedwait) __gthrw_pthread_cond_timedwait __attribute__ ((__weakref__("pthread_cond_timedwait"), __copy__ (pthread_cond_timedwait))); 5209: static __typeof(pthread_cond_destroy) __gthrw_pthread_cond_destroy __attribute__ ((__weakref__("pthread_cond_destroy"), __copy__ (pthread_cond_destroy))); 5209: 5209: static __typeof(pthread_key_create) __gthrw_pthread_key_create __attribute__ ((__weakref__("pthread_key_create"), __copy__ (pthread_key_create))); 5209: static __typeof(pthread_key_delete) __gthrw_pthread_key_delete __attribute__ ((__weakref__("pthread_key_delete"), __copy__ (pthread_key_delete))); 5209: static __typeof(pthread_mutexattr_init) __gthrw_pthread_mutexattr_init __attribute__ ((__weakref__("pthread_mutexattr_init"), __copy__ (pthread_mutexattr_init))); 5209: static __typeof(pthread_mutexattr_settype) __gthrw_pthread_mutexattr_settype __attribute__ ((__weakref__("pthread_mutexattr_settype"), __copy__ (pthread_mutexattr_settype))); 5209: static __typeof(pthread_mutexattr_destroy) __gthrw_pthread_mutexattr_destroy __attribute__ ((__weakref__("pthread_mutexattr_destroy"), __copy__ (pthread_mutexattr_destroy))); 5209: # 237 "/usr/include/aarch64-linux-gnu/c++/10/bits/gthr-default.h" 3 5209: static __typeof(pthread_key_create) __gthrw___pthread_key_create __attribute__ ((__weakref__("__pthread_key_create"), __copy__ (pthread_key_create))); 5209: # 247 "/usr/include/aarch64-linux-gnu/c++/10/bits/gthr-default.h" 3 5209: static inline int 5209: __gthread_active_p (void) 5209: { 5209: static void *const __gthread_active_ptr 5209: = __extension__ (void *) &__gthrw___pthread_key_create; 5209: return __gthread_active_ptr != 0; 5209: } 5209: # 659 "/usr/include/aarch64-linux-gnu/c++/10/bits/gthr-default.h" 3 5209: static inline int 5209: __gthread_create (__gthread_t *__threadid, void *(*__func) (void*), 5209: void *__args) 5209: { 5209: return __gthrw_pthread_create (__threadid, __null, __func, __args); 5209: } 5209: 5209: static inline int 5209: __gthread_join (__gthread_t __threadid, void **__value_ptr) 5209: { 5209: return __gthrw_pthread_join (__threadid, __value_ptr); 5209: } 5209: 5209: static inline int 5209: __gthread_detach (__gthread_t __threadid) 5209: { 5209: return __gthrw_pthread_detach (__threadid); 5209: } 5209: 5209: static inline int 5209: __gthread_equal (__gthread_t __t1, __gthread_t __t2) 5209: { 5209: return __gthrw_pthread_equal (__t1, __t2); 5209: } 5209: 5209: static inline __gthread_t 5209: __gthread_self (void) 5209: { 5209: return __gthrw_pthread_self (); 5209: } 5209: 5209: static inline int 5209: __gthread_yield (void) 5209: { 5209: return __gthrw_sched_yield (); 5209: } 5209: 5209: static inline int 5209: __gthread_once (__gthread_once_t *__once, void (*__func) (void)) 5209: { 5209: if (__gthread_active_p ()) 5209: return __gthrw_pthread_once (__once, __func); 5209: else 5209: return -1; 5209: } 5209: 5209: static inline int 5209: __gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) 5209: { 5209: return __gthrw_pthread_key_create (__key, __dtor); 5209: } 5209: 5209: static inline int 5209: __gthread_key_delete (__gthread_key_t __key) 5209: { 5209: return __gthrw_pthread_key_delete (__key); 5209: } 5209: 5209: static inline void * 5209: __gthread_getspecific (__gthread_key_t __key) 5209: { 5209: return __gthrw_pthread_getspecific (__key); 5209: } 5209: 5209: static inline int 5209: __gthread_setspecific (__gthread_key_t __key, const void *__ptr) 5209: { 5209: return __gthrw_pthread_setspecific (__key, __ptr); 5209: } 5209: 5209: static inline void 5209: __gthread_mutex_init_function (__gthread_mutex_t *__mutex) 5209: { 5209: if (__gthread_active_p ()) 5209: __gthrw_pthread_mutex_init (__mutex, __null); 5209: } 5209: 5209: static inline int 5209: __gthread_mutex_destroy (__gthread_mutex_t *__mutex) 5209: { 5209: if (__gthread_active_p ()) 5209: return __gthrw_pthread_mutex_destroy (__mutex); 5209: else 5209: return 0; 5209: } 5209: 5209: static inline int 5209: __gthread_mutex_lock (__gthread_mutex_t *__mutex) 5209: { 5209: if (__gthread_active_p ()) 5209: return __gthrw_pthread_mutex_lock (__mutex); 5209: else 5209: return 0; 5209: } 5209: 5209: static inline int 5209: __gthread_mutex_trylock (__gthread_mutex_t *__mutex) 5209: { 5209: if (__gthread_active_p ()) 5209: return __gthrw_pthread_mutex_trylock (__mutex); 5209: else 5209: return 0; 5209: } 5209: 5209: 5209: static inline int 5209: __gthread_mutex_timedlock (__gthread_mutex_t *__mutex, 5209: const __gthread_time_t *__abs_timeout) 5209: { 5209: if (__gthread_active_p ()) 5209: return __gthrw_pthread_mutex_timedlock (__mutex, __abs_timeout); 5209: else 5209: return 0; 5209: } 5209: 5209: 5209: static inline int 5209: __gthread_mutex_unlock (__gthread_mutex_t *__mutex) 5209: { 5209: if (__gthread_active_p ()) 5209: return __gthrw_pthread_mutex_unlock (__mutex); 5209: else 5209: return 0; 5209: } 5209: # 808 "/usr/include/aarch64-linux-gnu/c++/10/bits/gthr-default.h" 3 5209: static inline int 5209: __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) 5209: { 5209: return __gthread_mutex_lock (__mutex); 5209: } 5209: 5209: static inline int 5209: __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) 5209: { 5209: return __gthread_mutex_trylock (__mutex); 5209: } 5209: 5209: 5209: static inline int 5209: __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, 5209: const __gthread_time_t *__abs_timeout) 5209: { 5209: return __gthread_mutex_timedlock (__mutex, __abs_timeout); 5209: } 5209: 5209: 5209: static inline int 5209: __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) 5209: { 5209: return __gthread_mutex_unlock (__mutex); 5209: } 5209: 5209: static inline int 5209: __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) 5209: { 5209: return __gthread_mutex_destroy (__mutex); 5209: } 5209: # 850 "/usr/include/aarch64-linux-gnu/c++/10/bits/gthr-default.h" 3 5209: static inline int 5209: __gthread_cond_broadcast (__gthread_cond_t *__cond) 5209: { 5209: return __gthrw_pthread_cond_broadcast (__cond); 5209: } 5209: 5209: static inline int 5209: __gthread_cond_signal (__gthread_cond_t *__cond) 5209: { 5209: return __gthrw_pthread_cond_signal (__cond); 5209: } 5209: 5209: static inline int 5209: __gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) 5209: { 5209: return __gthrw_pthread_cond_wait (__cond, __mutex); 5209: } 5209: 5209: static inline int 5209: __gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, 5209: const __gthread_time_t *__abs_timeout) 5209: { 5209: return __gthrw_pthread_cond_timedwait (__cond, __mutex, __abs_timeout); 5209: } 5209: 5209: static inline int 5209: __gthread_cond_wait_recursive (__gthread_cond_t *__cond, 5209: __gthread_recursive_mutex_t *__mutex) 5209: { 5209: return __gthread_cond_wait (__cond, __mutex); 5209: } 5209: 5209: static inline int 5209: __gthread_cond_destroy (__gthread_cond_t* __cond) 5209: { 5209: return __gthrw_pthread_cond_destroy (__cond); 5209: } 5209: # 149 "/usr/include/aarch64-linux-gnu/c++/10/bits/gthr.h" 2 3 5209: 5209: 5209: #pragma GCC visibility pop 5209: # 36 "/usr/include/c++/10/ext/atomicity.h" 2 3 5209: # 1 "/usr/include/aarch64-linux-gnu/c++/10/bits/atomic_word.h" 1 3 5209: # 32 "/usr/include/aarch64-linux-gnu/c++/10/bits/atomic_word.h" 3 5209: typedef int _Atomic_word; 5209: # 37 "/usr/include/c++/10/ext/atomicity.h" 2 3 5209: 5209: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: inline _Atomic_word 5209: __attribute__((__always_inline__)) 5209: __exchange_and_add(volatile _Atomic_word* __mem, int __val) 5209: { return __atomic_fetch_add(__mem, __val, 4); } 5209: 5209: inline void 5209: __attribute__((__always_inline__)) 5209: __atomic_add(volatile _Atomic_word* __mem, int __val) 5209: { __atomic_fetch_add(__mem, __val, 4); } 5209: # 64 "/usr/include/c++/10/ext/atomicity.h" 3 5209: inline _Atomic_word 5209: __attribute__((__always_inline__)) 5209: __exchange_and_add_single(_Atomic_word* __mem, int __val) 5209: { 5209: _Atomic_word __result = *__mem; 5209: *__mem += __val; 5209: return __result; 5209: } 5209: 5209: inline void 5209: __attribute__((__always_inline__)) 5209: __atomic_add_single(_Atomic_word* __mem, int __val) 5209: { *__mem += __val; } 5209: 5209: inline _Atomic_word 5209: __attribute__ ((__always_inline__)) 5209: __exchange_and_add_dispatch(_Atomic_word* __mem, int __val) 5209: { 5209: 5209: if (__gthread_active_p()) 5209: return __exchange_and_add(__mem, __val); 5209: 5209: return __exchange_and_add_single(__mem, __val); 5209: } 5209: 5209: inline void 5209: __attribute__ ((__always_inline__)) 5209: __atomic_add_dispatch(_Atomic_word* __mem, int __val) 5209: { 5209: 5209: if (__gthread_active_p()) 5209: { 5209: __atomic_add(__mem, __val); 5209: return; 5209: } 5209: 5209: __atomic_add_single(__mem, __val); 5209: } 5209: 5209: 5209: } 5209: # 40 "/usr/include/c++/10/bits/ios_base.h" 2 3 5209: 5209: # 1 "/usr/include/c++/10/bits/locale_classes.h" 1 3 5209: # 37 "/usr/include/c++/10/bits/locale_classes.h" 3 5209: 5209: # 38 "/usr/include/c++/10/bits/locale_classes.h" 3 5209: 5209: 5209: # 1 "/usr/include/c++/10/string" 1 3 5209: # 36 "/usr/include/c++/10/string" 3 5209: 5209: # 37 "/usr/include/c++/10/string" 3 5209: 5209: 5209: 5209: 5209: # 1 "/usr/include/c++/10/bits/allocator.h" 1 3 5209: # 46 "/usr/include/c++/10/bits/allocator.h" 3 5209: # 1 "/usr/include/aarch64-linux-gnu/c++/10/bits/c++allocator.h" 1 3 5209: # 33 "/usr/include/aarch64-linux-gnu/c++/10/bits/c++allocator.h" 3 5209: # 1 "/usr/include/c++/10/ext/new_allocator.h" 1 3 5209: # 40 "/usr/include/c++/10/ext/new_allocator.h" 3 5209: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: # 54 "/usr/include/c++/10/ext/new_allocator.h" 3 5209: template 5209: class new_allocator 5209: { 5209: public: 5209: typedef _Tp value_type; 5209: typedef std::size_t size_type; 5209: typedef std::ptrdiff_t difference_type; 5209: 5209: typedef _Tp* pointer; 5209: typedef const _Tp* const_pointer; 5209: typedef _Tp& reference; 5209: typedef const _Tp& const_reference; 5209: 5209: template 5209: struct rebind 5209: { typedef new_allocator<_Tp1> other; }; 5209: 5209: 5209: 5209: 5209: 5209: typedef std::true_type propagate_on_container_move_assignment; 5209: 5209: 5209: 5209: new_allocator() noexcept { } 5209: 5209: 5209: new_allocator(const new_allocator&) noexcept { } 5209: 5209: template 5209: 5209: new_allocator(const new_allocator<_Tp1>&) noexcept { } 5209: 5209: 5209: ~new_allocator() noexcept { } 5209: 5209: pointer 5209: address(reference __x) const noexcept 5209: { return std::__addressof(__x); } 5209: 5209: const_pointer 5209: address(const_reference __x) const noexcept 5209: { return std::__addressof(__x); } 5209: 5209: 5209: 5209: 5209: _Tp* 5209: allocate(size_type __n, const void* = static_cast(0)) 5209: { 5209: if (__n > this->_M_max_size()) 5209: std::__throw_bad_alloc(); 5209: # 115 "/usr/include/c++/10/ext/new_allocator.h" 3 5209: return static_cast<_Tp*>(::operator new(__n * sizeof(_Tp))); 5209: } 5209: 5209: 5209: void 5209: deallocate(_Tp* __p, size_type __t) 5209: { 5209: # 133 "/usr/include/c++/10/ext/new_allocator.h" 3 5209: ::operator delete(__p 5209: 5209: 5209: 5209: ); 5209: } 5209: 5209: 5209: size_type 5209: max_size() const noexcept 5209: { return _M_max_size(); } 5209: 5209: 5209: template 5209: void 5209: construct(_Up* __p, _Args&&... __args) 5209: noexcept(noexcept(::new((void *)__p) 5209: _Up(std::forward<_Args>(__args)...))) 5209: { ::new((void *)__p) _Up(std::forward<_Args>(__args)...); } 5209: 5209: template 5209: void 5209: destroy(_Up* __p) 5209: noexcept(noexcept( __p->~_Up())) 5209: { __p->~_Up(); } 5209: # 170 "/usr/include/c++/10/ext/new_allocator.h" 3 5209: template 5209: friend bool 5209: operator==(const new_allocator&, const new_allocator<_Up>&) 5209: noexcept 5209: { return true; } 5209: 5209: template 5209: friend bool 5209: operator!=(const new_allocator&, const new_allocator<_Up>&) 5209: noexcept 5209: { return false; } 5209: 5209: private: 5209: constexpr size_type 5209: _M_max_size() const noexcept 5209: { 5209: 5209: return std::size_t(0x7fffffffffffffffL) / sizeof(_Tp); 5209: 5209: 5209: 5209: } 5209: }; 5209: 5209: 5209: } 5209: # 34 "/usr/include/aarch64-linux-gnu/c++/10/bits/c++allocator.h" 2 3 5209: 5209: 5209: namespace std 5209: { 5209: # 47 "/usr/include/aarch64-linux-gnu/c++/10/bits/c++allocator.h" 3 5209: template 5209: using __allocator_base = __gnu_cxx::new_allocator<_Tp>; 5209: } 5209: # 47 "/usr/include/c++/10/bits/allocator.h" 2 3 5209: # 57 "/usr/include/c++/10/bits/allocator.h" 3 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: template<> 5209: class allocator 5209: { 5209: public: 5209: typedef void value_type; 5209: typedef size_t size_type; 5209: typedef ptrdiff_t difference_type; 5209: 5209: typedef void* pointer; 5209: typedef const void* const_pointer; 5209: 5209: template 5209: struct rebind 5209: { typedef allocator<_Tp1> other; }; 5209: # 92 "/usr/include/c++/10/bits/allocator.h" 3 5209: typedef true_type propagate_on_container_move_assignment; 5209: 5209: typedef true_type is_always_equal; 5209: 5209: template 5209: void 5209: construct(_Up* __p, _Args&&... __args) 5209: noexcept(noexcept(::new((void *)__p) 5209: _Up(std::forward<_Args>(__args)...))) 5209: { ::new((void *)__p) _Up(std::forward<_Args>(__args)...); } 5209: 5209: template 5209: void 5209: destroy(_Up* __p) 5209: noexcept(noexcept(__p->~_Up())) 5209: { __p->~_Up(); } 5209: 5209: }; 5209: # 119 "/usr/include/c++/10/bits/allocator.h" 3 5209: template 5209: class allocator : public __allocator_base<_Tp> 5209: { 5209: public: 5209: typedef _Tp value_type; 5209: typedef size_t size_type; 5209: typedef ptrdiff_t difference_type; 5209: 5209: typedef _Tp* pointer; 5209: typedef const _Tp* const_pointer; 5209: typedef _Tp& reference; 5209: typedef const _Tp& const_reference; 5209: 5209: template 5209: struct rebind 5209: { typedef allocator<_Tp1> other; }; 5209: 5209: 5209: 5209: 5209: 5209: typedef true_type propagate_on_container_move_assignment; 5209: 5209: typedef true_type is_always_equal; 5209: 5209: 5209: 5209: 5209: 5209: allocator() noexcept { } 5209: 5209: 5209: allocator(const allocator& __a) noexcept 5209: : __allocator_base<_Tp>(__a) { } 5209: 5209: 5209: 5209: allocator& operator=(const allocator&) = default; 5209: 5209: 5209: template 5209: 5209: allocator(const allocator<_Tp1>&) noexcept { } 5209: 5209: 5209: 5209: 5209: ~allocator() noexcept { } 5209: # 195 "/usr/include/c++/10/bits/allocator.h" 3 5209: friend bool 5209: operator==(const allocator&, const allocator&) noexcept 5209: { return true; } 5209: 5209: friend bool 5209: operator!=(const allocator&, const allocator&) noexcept 5209: { return false; } 5209: 5209: 5209: }; 5209: 5209: template 5209: inline bool 5209: operator==(const allocator<_T1>&, const allocator<_T2>&) 5209: noexcept 5209: { return true; } 5209: 5209: template 5209: inline bool 5209: operator!=(const allocator<_T1>&, const allocator<_T2>&) 5209: noexcept 5209: { return false; } 5209: 5209: 5209: 5209: template 5209: class allocator 5209: { 5209: public: 5209: typedef _Tp value_type; 5209: template allocator(const allocator<_Up>&) { } 5209: }; 5209: 5209: template 5209: class allocator 5209: { 5209: public: 5209: typedef _Tp value_type; 5209: template allocator(const allocator<_Up>&) { } 5209: }; 5209: 5209: template 5209: class allocator 5209: { 5209: public: 5209: typedef _Tp value_type; 5209: template allocator(const allocator<_Up>&) { } 5209: }; 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern template class allocator; 5209: extern template class allocator; 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: struct __alloc_swap 5209: { static void _S_do_it(_Alloc&, _Alloc&) noexcept { } }; 5209: 5209: template 5209: struct __alloc_swap<_Alloc, false> 5209: { 5209: static void 5209: _S_do_it(_Alloc& __one, _Alloc& __two) noexcept 5209: { 5209: 5209: if (__one != __two) 5209: swap(__one, __two); 5209: } 5209: }; 5209: 5209: 5209: template 5209: struct __alloc_neq 5209: { 5209: static bool 5209: _S_do_it(const _Alloc&, const _Alloc&) 5209: { return false; } 5209: }; 5209: 5209: template 5209: struct __alloc_neq<_Alloc, false> 5209: { 5209: static bool 5209: _S_do_it(const _Alloc& __one, const _Alloc& __two) 5209: { return __one != __two; } 5209: }; 5209: 5209: 5209: template, 5209: is_nothrow_move_constructible>::value> 5209: struct __shrink_to_fit_aux 5209: { static bool _S_do_it(_Tp&) noexcept { return false; } }; 5209: 5209: template 5209: struct __shrink_to_fit_aux<_Tp, true> 5209: { 5209: static bool 5209: _S_do_it(_Tp& __c) noexcept 5209: { 5209: 5209: try 5209: { 5209: _Tp(__make_move_if_noexcept_iterator(__c.begin()), 5209: __make_move_if_noexcept_iterator(__c.end()), 5209: __c.get_allocator()).swap(__c); 5209: return true; 5209: } 5209: catch(...) 5209: { return false; } 5209: 5209: 5209: 5209: } 5209: }; 5209: 5209: 5209: 5209: } 5209: # 42 "/usr/include/c++/10/string" 2 3 5209: 5209: 5209: # 1 "/usr/include/c++/10/bits/ostream_insert.h" 1 3 5209: # 33 "/usr/include/c++/10/bits/ostream_insert.h" 3 5209: 5209: # 34 "/usr/include/c++/10/bits/ostream_insert.h" 3 5209: 5209: 5209: # 1 "/usr/include/c++/10/bits/cxxabi_forced.h" 1 3 5209: # 34 "/usr/include/c++/10/bits/cxxabi_forced.h" 3 5209: 5209: # 35 "/usr/include/c++/10/bits/cxxabi_forced.h" 3 5209: 5209: #pragma GCC visibility push(default) 5209: 5209: 5209: namespace __cxxabiv1 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: class __forced_unwind 5209: { 5209: virtual ~__forced_unwind() throw(); 5209: 5209: 5209: virtual void __pure_dummy() = 0; 5209: }; 5209: } 5209: 5209: 5209: #pragma GCC visibility pop 5209: # 37 "/usr/include/c++/10/bits/ostream_insert.h" 2 3 5209: 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: template 5209: inline void 5209: __ostream_write(basic_ostream<_CharT, _Traits>& __out, 5209: const _CharT* __s, streamsize __n) 5209: { 5209: typedef basic_ostream<_CharT, _Traits> __ostream_type; 5209: typedef typename __ostream_type::ios_base __ios_base; 5209: 5209: const streamsize __put = __out.rdbuf()->sputn(__s, __n); 5209: if (__put != __n) 5209: __out.setstate(__ios_base::badbit); 5209: } 5209: 5209: template 5209: inline void 5209: __ostream_fill(basic_ostream<_CharT, _Traits>& __out, streamsize __n) 5209: { 5209: typedef basic_ostream<_CharT, _Traits> __ostream_type; 5209: typedef typename __ostream_type::ios_base __ios_base; 5209: 5209: const _CharT __c = __out.fill(); 5209: for (; __n > 0; --__n) 5209: { 5209: const typename _Traits::int_type __put = __out.rdbuf()->sputc(__c); 5209: if (_Traits::eq_int_type(__put, _Traits::eof())) 5209: { 5209: __out.setstate(__ios_base::badbit); 5209: break; 5209: } 5209: } 5209: } 5209: 5209: template 5209: basic_ostream<_CharT, _Traits>& 5209: __ostream_insert(basic_ostream<_CharT, _Traits>& __out, 5209: const _CharT* __s, streamsize __n) 5209: { 5209: typedef basic_ostream<_CharT, _Traits> __ostream_type; 5209: typedef typename __ostream_type::ios_base __ios_base; 5209: 5209: typename __ostream_type::sentry __cerb(__out); 5209: if (__cerb) 5209: { 5209: try 5209: { 5209: const streamsize __w = __out.width(); 5209: if (__w > __n) 5209: { 5209: const bool __left = ((__out.flags() 5209: & __ios_base::adjustfield) 5209: == __ios_base::left); 5209: if (!__left) 5209: __ostream_fill(__out, __w - __n); 5209: if (__out.good()) 5209: __ostream_write(__out, __s, __n); 5209: if (__left && __out.good()) 5209: __ostream_fill(__out, __w - __n); 5209: } 5209: else 5209: __ostream_write(__out, __s, __n); 5209: __out.width(0); 5209: } 5209: catch(__cxxabiv1::__forced_unwind&) 5209: { 5209: __out._M_setstate(__ios_base::badbit); 5209: throw; 5209: } 5209: catch(...) 5209: { __out._M_setstate(__ios_base::badbit); } 5209: } 5209: return __out; 5209: } 5209: 5209: 5209: 5209: 5209: extern template ostream& __ostream_insert(ostream&, const char*, streamsize); 5209: 5209: 5209: extern template wostream& __ostream_insert(wostream&, const wchar_t*, 5209: streamsize); 5209: 5209: 5209: 5209: 5209: } 5209: # 45 "/usr/include/c++/10/string" 2 3 5209: 5209: 5209: 5209: # 1 "/usr/include/c++/10/bits/stl_function.h" 1 3 5209: # 63 "/usr/include/c++/10/bits/stl_function.h" 3 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: # 104 "/usr/include/c++/10/bits/stl_function.h" 3 5209: template 5209: struct unary_function 5209: { 5209: 5209: typedef _Arg argument_type; 5209: 5209: 5209: typedef _Result result_type; 5209: }; 5209: 5209: 5209: 5209: 5209: template 5209: struct binary_function 5209: { 5209: 5209: typedef _Arg1 first_argument_type; 5209: 5209: 5209: typedef _Arg2 second_argument_type; 5209: 5209: 5209: typedef _Result result_type; 5209: }; 5209: # 166 "/usr/include/c++/10/bits/stl_function.h" 3 5209: template 5209: struct plus : public binary_function<_Tp, _Tp, _Tp> 5209: { 5209: 5209: _Tp 5209: operator()(const _Tp& __x, const _Tp& __y) const 5209: { return __x + __y; } 5209: }; 5209: 5209: 5209: template 5209: struct minus : public binary_function<_Tp, _Tp, _Tp> 5209: { 5209: 5209: _Tp 5209: operator()(const _Tp& __x, const _Tp& __y) const 5209: { return __x - __y; } 5209: }; 5209: 5209: 5209: template 5209: struct multiplies : public binary_function<_Tp, _Tp, _Tp> 5209: { 5209: 5209: _Tp 5209: operator()(const _Tp& __x, const _Tp& __y) const 5209: { return __x * __y; } 5209: }; 5209: 5209: 5209: template 5209: struct divides : public binary_function<_Tp, _Tp, _Tp> 5209: { 5209: 5209: _Tp 5209: operator()(const _Tp& __x, const _Tp& __y) const 5209: { return __x / __y; } 5209: }; 5209: 5209: 5209: template 5209: struct modulus : public binary_function<_Tp, _Tp, _Tp> 5209: { 5209: 5209: _Tp 5209: operator()(const _Tp& __x, const _Tp& __y) const 5209: { return __x % __y; } 5209: }; 5209: 5209: 5209: template 5209: struct negate : public unary_function<_Tp, _Tp> 5209: { 5209: 5209: _Tp 5209: operator()(const _Tp& __x) const 5209: { return -__x; } 5209: }; 5209: # 350 "/usr/include/c++/10/bits/stl_function.h" 3 5209: template 5209: struct equal_to : public binary_function<_Tp, _Tp, bool> 5209: { 5209: 5209: bool 5209: operator()(const _Tp& __x, const _Tp& __y) const 5209: { return __x == __y; } 5209: }; 5209: 5209: 5209: template 5209: struct not_equal_to : public binary_function<_Tp, _Tp, bool> 5209: { 5209: 5209: bool 5209: operator()(const _Tp& __x, const _Tp& __y) const 5209: { return __x != __y; } 5209: }; 5209: 5209: 5209: template 5209: struct greater : public binary_function<_Tp, _Tp, bool> 5209: { 5209: 5209: bool 5209: operator()(const _Tp& __x, const _Tp& __y) const 5209: { return __x > __y; } 5209: }; 5209: 5209: 5209: template 5209: struct less : public binary_function<_Tp, _Tp, bool> 5209: { 5209: 5209: bool 5209: operator()(const _Tp& __x, const _Tp& __y) const 5209: { return __x < __y; } 5209: }; 5209: 5209: 5209: template 5209: struct greater_equal : public binary_function<_Tp, _Tp, bool> 5209: { 5209: 5209: bool 5209: operator()(const _Tp& __x, const _Tp& __y) const 5209: { return __x >= __y; } 5209: }; 5209: 5209: 5209: template 5209: struct less_equal : public binary_function<_Tp, _Tp, bool> 5209: { 5209: 5209: bool 5209: operator()(const _Tp& __x, const _Tp& __y) const 5209: { return __x <= __y; } 5209: }; 5209: 5209: 5209: template 5209: struct greater<_Tp*> : public binary_function<_Tp*, _Tp*, bool> 5209: { 5209: bool 5209: operator()(_Tp* __x, _Tp* __y) const noexcept 5209: { 5209: # 424 "/usr/include/c++/10/bits/stl_function.h" 3 5209: return (long unsigned int)__x > (long unsigned int)__y; 5209: } 5209: }; 5209: 5209: 5209: template 5209: struct less<_Tp*> : public binary_function<_Tp*, _Tp*, bool> 5209: { 5209: bool 5209: operator()(_Tp* __x, _Tp* __y) const noexcept 5209: { 5209: # 443 "/usr/include/c++/10/bits/stl_function.h" 3 5209: return (long unsigned int)__x < (long unsigned int)__y; 5209: } 5209: }; 5209: 5209: 5209: template 5209: struct greater_equal<_Tp*> : public binary_function<_Tp*, _Tp*, bool> 5209: { 5209: bool 5209: operator()(_Tp* __x, _Tp* __y) const noexcept 5209: { 5209: # 462 "/usr/include/c++/10/bits/stl_function.h" 3 5209: return (long unsigned int)__x >= (long unsigned int)__y; 5209: } 5209: }; 5209: 5209: 5209: template 5209: struct less_equal<_Tp*> : public binary_function<_Tp*, _Tp*, bool> 5209: { 5209: bool 5209: operator()(_Tp* __x, _Tp* __y) const noexcept 5209: { 5209: # 481 "/usr/include/c++/10/bits/stl_function.h" 3 5209: return (long unsigned int)__x <= (long unsigned int)__y; 5209: } 5209: }; 5209: # 785 "/usr/include/c++/10/bits/stl_function.h" 3 5209: template 5209: struct logical_and : public binary_function<_Tp, _Tp, bool> 5209: { 5209: 5209: bool 5209: operator()(const _Tp& __x, const _Tp& __y) const 5209: { return __x && __y; } 5209: }; 5209: 5209: 5209: template 5209: struct logical_or : public binary_function<_Tp, _Tp, bool> 5209: { 5209: 5209: bool 5209: operator()(const _Tp& __x, const _Tp& __y) const 5209: { return __x || __y; } 5209: }; 5209: 5209: 5209: template 5209: struct logical_not : public unary_function<_Tp, bool> 5209: { 5209: 5209: bool 5209: operator()(const _Tp& __x) const 5209: { return !__x; } 5209: }; 5209: # 878 "/usr/include/c++/10/bits/stl_function.h" 3 5209: template 5209: struct bit_and : public binary_function<_Tp, _Tp, _Tp> 5209: { 5209: 5209: _Tp 5209: operator()(const _Tp& __x, const _Tp& __y) const 5209: { return __x & __y; } 5209: }; 5209: 5209: template 5209: struct bit_or : public binary_function<_Tp, _Tp, _Tp> 5209: { 5209: 5209: _Tp 5209: operator()(const _Tp& __x, const _Tp& __y) const 5209: { return __x | __y; } 5209: }; 5209: 5209: template 5209: struct bit_xor : public binary_function<_Tp, _Tp, _Tp> 5209: { 5209: 5209: _Tp 5209: operator()(const _Tp& __x, const _Tp& __y) const 5209: { return __x ^ __y; } 5209: }; 5209: 5209: template 5209: struct bit_not : public unary_function<_Tp, _Tp> 5209: { 5209: 5209: _Tp 5209: operator()(const _Tp& __x) const 5209: { return ~__x; } 5209: }; 5209: # 1002 "/usr/include/c++/10/bits/stl_function.h" 3 5209: template 5209: class unary_negate 5209: : public unary_function 5209: { 5209: protected: 5209: _Predicate _M_pred; 5209: 5209: public: 5209: 5209: explicit 5209: unary_negate(const _Predicate& __x) : _M_pred(__x) { } 5209: 5209: 5209: bool 5209: operator()(const typename _Predicate::argument_type& __x) const 5209: { return !_M_pred(__x); } 5209: }; 5209: 5209: 5209: template 5209: 5209: inline unary_negate<_Predicate> 5209: not1(const _Predicate& __pred) 5209: { return unary_negate<_Predicate>(__pred); } 5209: 5209: 5209: template 5209: class binary_negate 5209: : public binary_function 5209: { 5209: protected: 5209: _Predicate _M_pred; 5209: 5209: public: 5209: 5209: explicit 5209: binary_negate(const _Predicate& __x) : _M_pred(__x) { } 5209: 5209: 5209: bool 5209: operator()(const typename _Predicate::first_argument_type& __x, 5209: const typename _Predicate::second_argument_type& __y) const 5209: { return !_M_pred(__x, __y); } 5209: }; 5209: 5209: 5209: template 5209: 5209: inline binary_negate<_Predicate> 5209: not2(const _Predicate& __pred) 5209: { return binary_negate<_Predicate>(__pred); } 5209: # 1079 "/usr/include/c++/10/bits/stl_function.h" 3 5209: template 5209: class pointer_to_unary_function : public unary_function<_Arg, _Result> 5209: { 5209: protected: 5209: _Result (*_M_ptr)(_Arg); 5209: 5209: public: 5209: pointer_to_unary_function() { } 5209: 5209: explicit 5209: pointer_to_unary_function(_Result (*__x)(_Arg)) 5209: : _M_ptr(__x) { } 5209: 5209: _Result 5209: operator()(_Arg __x) const 5209: { return _M_ptr(__x); } 5209: }; 5209: 5209: 5209: template 5209: inline pointer_to_unary_function<_Arg, _Result> 5209: ptr_fun(_Result (*__x)(_Arg)) 5209: { return pointer_to_unary_function<_Arg, _Result>(__x); } 5209: 5209: 5209: template 5209: class pointer_to_binary_function 5209: : public binary_function<_Arg1, _Arg2, _Result> 5209: { 5209: protected: 5209: _Result (*_M_ptr)(_Arg1, _Arg2); 5209: 5209: public: 5209: pointer_to_binary_function() { } 5209: 5209: explicit 5209: pointer_to_binary_function(_Result (*__x)(_Arg1, _Arg2)) 5209: : _M_ptr(__x) { } 5209: 5209: _Result 5209: operator()(_Arg1 __x, _Arg2 __y) const 5209: { return _M_ptr(__x, __y); } 5209: }; 5209: 5209: 5209: template 5209: inline pointer_to_binary_function<_Arg1, _Arg2, _Result> 5209: ptr_fun(_Result (*__x)(_Arg1, _Arg2)) 5209: { return pointer_to_binary_function<_Arg1, _Arg2, _Result>(__x); } 5209: 5209: 5209: template 5209: struct _Identity 5209: : public unary_function<_Tp, _Tp> 5209: { 5209: _Tp& 5209: operator()(_Tp& __x) const 5209: { return __x; } 5209: 5209: const _Tp& 5209: operator()(const _Tp& __x) const 5209: { return __x; } 5209: }; 5209: 5209: 5209: template struct _Identity : _Identity<_Tp> { }; 5209: 5209: template 5209: struct _Select1st 5209: : public unary_function<_Pair, typename _Pair::first_type> 5209: { 5209: typename _Pair::first_type& 5209: operator()(_Pair& __x) const 5209: { return __x.first; } 5209: 5209: const typename _Pair::first_type& 5209: operator()(const _Pair& __x) const 5209: { return __x.first; } 5209: 5209: 5209: template 5209: typename _Pair2::first_type& 5209: operator()(_Pair2& __x) const 5209: { return __x.first; } 5209: 5209: template 5209: const typename _Pair2::first_type& 5209: operator()(const _Pair2& __x) const 5209: { return __x.first; } 5209: 5209: }; 5209: 5209: template 5209: struct _Select2nd 5209: : public unary_function<_Pair, typename _Pair::second_type> 5209: { 5209: typename _Pair::second_type& 5209: operator()(_Pair& __x) const 5209: { return __x.second; } 5209: 5209: const typename _Pair::second_type& 5209: operator()(const _Pair& __x) const 5209: { return __x.second; } 5209: }; 5209: # 1202 "/usr/include/c++/10/bits/stl_function.h" 3 5209: template 5209: class mem_fun_t : public unary_function<_Tp*, _Ret> 5209: { 5209: public: 5209: explicit 5209: mem_fun_t(_Ret (_Tp::*__pf)()) 5209: : _M_f(__pf) { } 5209: 5209: _Ret 5209: operator()(_Tp* __p) const 5209: { return (__p->*_M_f)(); } 5209: 5209: private: 5209: _Ret (_Tp::*_M_f)(); 5209: }; 5209: 5209: 5209: 5209: template 5209: class const_mem_fun_t : public unary_function 5209: { 5209: public: 5209: explicit 5209: const_mem_fun_t(_Ret (_Tp::*__pf)() const) 5209: : _M_f(__pf) { } 5209: 5209: _Ret 5209: operator()(const _Tp* __p) const 5209: { return (__p->*_M_f)(); } 5209: 5209: private: 5209: _Ret (_Tp::*_M_f)() const; 5209: }; 5209: 5209: 5209: 5209: template 5209: class mem_fun_ref_t : public unary_function<_Tp, _Ret> 5209: { 5209: public: 5209: explicit 5209: mem_fun_ref_t(_Ret (_Tp::*__pf)()) 5209: : _M_f(__pf) { } 5209: 5209: _Ret 5209: operator()(_Tp& __r) const 5209: { return (__r.*_M_f)(); } 5209: 5209: private: 5209: _Ret (_Tp::*_M_f)(); 5209: }; 5209: 5209: 5209: 5209: template 5209: class const_mem_fun_ref_t : public unary_function<_Tp, _Ret> 5209: { 5209: public: 5209: explicit 5209: const_mem_fun_ref_t(_Ret (_Tp::*__pf)() const) 5209: : _M_f(__pf) { } 5209: 5209: _Ret 5209: operator()(const _Tp& __r) const 5209: { return (__r.*_M_f)(); } 5209: 5209: private: 5209: _Ret (_Tp::*_M_f)() const; 5209: }; 5209: 5209: 5209: 5209: template 5209: class mem_fun1_t : public binary_function<_Tp*, _Arg, _Ret> 5209: { 5209: public: 5209: explicit 5209: mem_fun1_t(_Ret (_Tp::*__pf)(_Arg)) 5209: : _M_f(__pf) { } 5209: 5209: _Ret 5209: operator()(_Tp* __p, _Arg __x) const 5209: { return (__p->*_M_f)(__x); } 5209: 5209: private: 5209: _Ret (_Tp::*_M_f)(_Arg); 5209: }; 5209: 5209: 5209: 5209: template 5209: class const_mem_fun1_t : public binary_function 5209: { 5209: public: 5209: explicit 5209: const_mem_fun1_t(_Ret (_Tp::*__pf)(_Arg) const) 5209: : _M_f(__pf) { } 5209: 5209: _Ret 5209: operator()(const _Tp* __p, _Arg __x) const 5209: { return (__p->*_M_f)(__x); } 5209: 5209: private: 5209: _Ret (_Tp::*_M_f)(_Arg) const; 5209: }; 5209: 5209: 5209: 5209: template 5209: class mem_fun1_ref_t : public binary_function<_Tp, _Arg, _Ret> 5209: { 5209: public: 5209: explicit 5209: mem_fun1_ref_t(_Ret (_Tp::*__pf)(_Arg)) 5209: : _M_f(__pf) { } 5209: 5209: _Ret 5209: operator()(_Tp& __r, _Arg __x) const 5209: { return (__r.*_M_f)(__x); } 5209: 5209: private: 5209: _Ret (_Tp::*_M_f)(_Arg); 5209: }; 5209: 5209: 5209: 5209: template 5209: class const_mem_fun1_ref_t : public binary_function<_Tp, _Arg, _Ret> 5209: { 5209: public: 5209: explicit 5209: const_mem_fun1_ref_t(_Ret (_Tp::*__pf)(_Arg) const) 5209: : _M_f(__pf) { } 5209: 5209: _Ret 5209: operator()(const _Tp& __r, _Arg __x) const 5209: { return (__r.*_M_f)(__x); } 5209: 5209: private: 5209: _Ret (_Tp::*_M_f)(_Arg) const; 5209: }; 5209: 5209: 5209: 5209: template 5209: inline mem_fun_t<_Ret, _Tp> 5209: mem_fun(_Ret (_Tp::*__f)()) 5209: { return mem_fun_t<_Ret, _Tp>(__f); } 5209: 5209: template 5209: inline const_mem_fun_t<_Ret, _Tp> 5209: mem_fun(_Ret (_Tp::*__f)() const) 5209: { return const_mem_fun_t<_Ret, _Tp>(__f); } 5209: 5209: template 5209: inline mem_fun_ref_t<_Ret, _Tp> 5209: mem_fun_ref(_Ret (_Tp::*__f)()) 5209: { return mem_fun_ref_t<_Ret, _Tp>(__f); } 5209: 5209: template 5209: inline const_mem_fun_ref_t<_Ret, _Tp> 5209: mem_fun_ref(_Ret (_Tp::*__f)() const) 5209: { return const_mem_fun_ref_t<_Ret, _Tp>(__f); } 5209: 5209: template 5209: inline mem_fun1_t<_Ret, _Tp, _Arg> 5209: mem_fun(_Ret (_Tp::*__f)(_Arg)) 5209: { return mem_fun1_t<_Ret, _Tp, _Arg>(__f); } 5209: 5209: template 5209: inline const_mem_fun1_t<_Ret, _Tp, _Arg> 5209: mem_fun(_Ret (_Tp::*__f)(_Arg) const) 5209: { return const_mem_fun1_t<_Ret, _Tp, _Arg>(__f); } 5209: 5209: template 5209: inline mem_fun1_ref_t<_Ret, _Tp, _Arg> 5209: mem_fun_ref(_Ret (_Tp::*__f)(_Arg)) 5209: { return mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); } 5209: 5209: template 5209: inline const_mem_fun1_ref_t<_Ret, _Tp, _Arg> 5209: mem_fun_ref(_Ret (_Tp::*__f)(_Arg) const) 5209: { return const_mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); } 5209: 5209: 5209: 5209: 5209: } 5209: 5209: 5209: # 1 "/usr/include/c++/10/backward/binders.h" 1 3 5209: # 60 "/usr/include/c++/10/backward/binders.h" 3 5209: #pragma GCC diagnostic push 5209: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 5209: 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: # 107 "/usr/include/c++/10/backward/binders.h" 3 5209: template 5209: class binder1st 5209: : public unary_function 5209: { 5209: protected: 5209: _Operation op; 5209: typename _Operation::first_argument_type value; 5209: 5209: public: 5209: binder1st(const _Operation& __x, 5209: const typename _Operation::first_argument_type& __y) 5209: : op(__x), value(__y) { } 5209: 5209: typename _Operation::result_type 5209: operator()(const typename _Operation::second_argument_type& __x) const 5209: { return op(value, __x); } 5209: 5209: 5209: 5209: typename _Operation::result_type 5209: operator()(typename _Operation::second_argument_type& __x) const 5209: { return op(value, __x); } 5209: } __attribute__ ((__deprecated__)); 5209: 5209: 5209: template 5209: inline binder1st<_Operation> 5209: bind1st(const _Operation& __fn, const _Tp& __x) 5209: { 5209: typedef typename _Operation::first_argument_type _Arg1_type; 5209: return binder1st<_Operation>(__fn, _Arg1_type(__x)); 5209: } 5209: 5209: 5209: template 5209: class binder2nd 5209: : public unary_function 5209: { 5209: protected: 5209: _Operation op; 5209: typename _Operation::second_argument_type value; 5209: 5209: public: 5209: binder2nd(const _Operation& __x, 5209: const typename _Operation::second_argument_type& __y) 5209: : op(__x), value(__y) { } 5209: 5209: typename _Operation::result_type 5209: operator()(const typename _Operation::first_argument_type& __x) const 5209: { return op(__x, value); } 5209: 5209: 5209: 5209: typename _Operation::result_type 5209: operator()(typename _Operation::first_argument_type& __x) const 5209: { return op(__x, value); } 5209: } __attribute__ ((__deprecated__)); 5209: 5209: 5209: template 5209: inline binder2nd<_Operation> 5209: bind2nd(const _Operation& __fn, const _Tp& __x) 5209: { 5209: typedef typename _Operation::second_argument_type _Arg2_type; 5209: return binder2nd<_Operation>(__fn, _Arg2_type(__x)); 5209: } 5209: 5209: 5209: 5209: } 5209: 5209: #pragma GCC diagnostic pop 5209: # 1393 "/usr/include/c++/10/bits/stl_function.h" 2 3 5209: # 49 "/usr/include/c++/10/string" 2 3 5209: 5209: 5209: 5209: 5209: 5209: # 1 "/usr/include/c++/10/bits/range_access.h" 1 3 5209: # 33 "/usr/include/c++/10/bits/range_access.h" 3 5209: 5209: # 34 "/usr/include/c++/10/bits/range_access.h" 3 5209: 5209: 5209: # 1 "/usr/include/c++/10/initializer_list" 1 3 5209: # 33 "/usr/include/c++/10/initializer_list" 3 5209: 5209: # 34 "/usr/include/c++/10/initializer_list" 3 5209: 5209: 5209: 5209: 5209: 5209: #pragma GCC visibility push(default) 5209: 5209: 5209: 5209: namespace std 5209: { 5209: 5209: template 5209: class initializer_list 5209: { 5209: public: 5209: typedef _E value_type; 5209: typedef const _E& reference; 5209: typedef const _E& const_reference; 5209: typedef size_t size_type; 5209: typedef const _E* iterator; 5209: typedef const _E* const_iterator; 5209: 5209: private: 5209: iterator _M_array; 5209: size_type _M_len; 5209: 5209: 5209: constexpr initializer_list(const_iterator __a, size_type __l) 5209: : _M_array(__a), _M_len(__l) { } 5209: 5209: public: 5209: constexpr initializer_list() noexcept 5209: : _M_array(0), _M_len(0) { } 5209: 5209: 5209: constexpr size_type 5209: size() const noexcept { return _M_len; } 5209: 5209: 5209: constexpr const_iterator 5209: begin() const noexcept { return _M_array; } 5209: 5209: 5209: constexpr const_iterator 5209: end() const noexcept { return begin() + size(); } 5209: }; 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: constexpr const _Tp* 5209: begin(initializer_list<_Tp> __ils) noexcept 5209: { return __ils.begin(); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: constexpr const _Tp* 5209: end(initializer_list<_Tp> __ils) noexcept 5209: { return __ils.end(); } 5209: } 5209: 5209: #pragma GCC visibility pop 5209: # 37 "/usr/include/c++/10/bits/range_access.h" 2 3 5209: # 1 "/usr/include/c++/10/bits/iterator_concepts.h" 1 3 5209: # 33 "/usr/include/c++/10/bits/iterator_concepts.h" 3 5209: 5209: # 34 "/usr/include/c++/10/bits/iterator_concepts.h" 3 5209: 5209: # 1 "/usr/include/c++/10/concepts" 1 3 5209: # 36 "/usr/include/c++/10/bits/iterator_concepts.h" 2 3 5209: 5209: # 1 "/usr/include/c++/10/bits/range_cmp.h" 1 3 5209: # 38 "/usr/include/c++/10/bits/iterator_concepts.h" 2 3 5209: # 38 "/usr/include/c++/10/bits/range_access.h" 2 3 5209: 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: inline auto 5209: begin(_Container& __cont) -> decltype(__cont.begin()) 5209: { return __cont.begin(); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: inline auto 5209: begin(const _Container& __cont) -> decltype(__cont.begin()) 5209: { return __cont.begin(); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: inline auto 5209: end(_Container& __cont) -> decltype(__cont.end()) 5209: { return __cont.end(); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: inline auto 5209: end(const _Container& __cont) -> decltype(__cont.end()) 5209: { return __cont.end(); } 5209: 5209: 5209: 5209: 5209: 5209: template 5209: inline _Tp* 5209: begin(_Tp (&__arr)[_Nm]) 5209: { return __arr; } 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: inline _Tp* 5209: end(_Tp (&__arr)[_Nm]) 5209: { return __arr + _Nm; } 5209: # 1128 "/usr/include/c++/10/bits/range_access.h" 3 5209: 5209: } 5209: # 55 "/usr/include/c++/10/string" 2 3 5209: # 1 "/usr/include/c++/10/bits/basic_string.h" 1 3 5209: # 37 "/usr/include/c++/10/bits/basic_string.h" 3 5209: 5209: # 38 "/usr/include/c++/10/bits/basic_string.h" 3 5209: 5209: 5209: # 1 "/usr/include/c++/10/ext/alloc_traits.h" 1 3 5209: # 32 "/usr/include/c++/10/ext/alloc_traits.h" 3 5209: 5209: # 33 "/usr/include/c++/10/ext/alloc_traits.h" 3 5209: 5209: # 1 "/usr/include/c++/10/bits/alloc_traits.h" 1 3 5209: # 33 "/usr/include/c++/10/bits/alloc_traits.h" 3 5209: # 1 "/usr/include/c++/10/bits/stl_construct.h" 1 3 5209: # 73 "/usr/include/c++/10/bits/stl_construct.h" 3 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: # 106 "/usr/include/c++/10/bits/stl_construct.h" 3 5209: template 5209: constexpr _Tp* 5209: _Construct(_Tp* __p, _Args&&... __args) 5209: { 5209: 5209: 5209: 5209: return ::new(static_cast(__p)) _Tp(std::forward<_Args>(__args)...); 5209: 5209: } 5209: # 127 "/usr/include/c++/10/bits/stl_construct.h" 3 5209: template 5209: inline void 5209: _Construct_novalue(_T1* __p) 5209: { ::new(static_cast(__p)) _T1; } 5209: 5209: template 5209: void 5209: _Destroy(_ForwardIterator __first, _ForwardIterator __last); 5209: 5209: 5209: 5209: 5209: template 5209: inline void 5209: _Destroy(_Tp* __pointer) 5209: { 5209: 5209: 5209: 5209: __pointer->~_Tp(); 5209: 5209: } 5209: 5209: template 5209: struct _Destroy_aux 5209: { 5209: template 5209: static void 5209: __destroy(_ForwardIterator __first, _ForwardIterator __last) 5209: { 5209: for (; __first != __last; ++__first) 5209: std::_Destroy(std::__addressof(*__first)); 5209: } 5209: }; 5209: 5209: template<> 5209: struct _Destroy_aux 5209: { 5209: template 5209: static void 5209: __destroy(_ForwardIterator, _ForwardIterator) { } 5209: }; 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: inline void 5209: _Destroy(_ForwardIterator __first, _ForwardIterator __last) 5209: { 5209: typedef typename iterator_traits<_ForwardIterator>::value_type 5209: _Value_type; 5209: 5209: 5209: static_assert(is_destructible<_Value_type>::value, 5209: "value type is destructible"); 5209: 5209: 5209: 5209: 5209: 5209: std::_Destroy_aux<__has_trivial_destructor(_Value_type)>:: 5209: __destroy(__first, __last); 5209: } 5209: 5209: template 5209: struct _Destroy_n_aux 5209: { 5209: template 5209: static _ForwardIterator 5209: __destroy_n(_ForwardIterator __first, _Size __count) 5209: { 5209: for (; __count > 0; (void)++__first, --__count) 5209: std::_Destroy(std::__addressof(*__first)); 5209: return __first; 5209: } 5209: }; 5209: 5209: template<> 5209: struct _Destroy_n_aux 5209: { 5209: template 5209: static _ForwardIterator 5209: __destroy_n(_ForwardIterator __first, _Size __count) 5209: { 5209: std::advance(__first, __count); 5209: return __first; 5209: } 5209: }; 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: inline _ForwardIterator 5209: _Destroy_n(_ForwardIterator __first, _Size __count) 5209: { 5209: typedef typename iterator_traits<_ForwardIterator>::value_type 5209: _Value_type; 5209: 5209: 5209: static_assert(is_destructible<_Value_type>::value, 5209: "value type is destructible"); 5209: 5209: 5209: 5209: 5209: 5209: return std::_Destroy_n_aux<__has_trivial_destructor(_Value_type)>:: 5209: __destroy_n(__first, __count); 5209: } 5209: # 259 "/usr/include/c++/10/bits/stl_construct.h" 3 5209: 5209: } 5209: # 34 "/usr/include/c++/10/bits/alloc_traits.h" 2 3 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: struct __allocator_traits_base 5209: { 5209: template 5209: struct __rebind : __replace_first_arg<_Tp, _Up> { }; 5209: 5209: template 5209: struct __rebind<_Tp, _Up, 5209: __void_t::other>> 5209: { using type = typename _Tp::template rebind<_Up>::other; }; 5209: 5209: protected: 5209: template 5209: using __pointer = typename _Tp::pointer; 5209: template 5209: using __c_pointer = typename _Tp::const_pointer; 5209: template 5209: using __v_pointer = typename _Tp::void_pointer; 5209: template 5209: using __cv_pointer = typename _Tp::const_void_pointer; 5209: template 5209: using __pocca = typename _Tp::propagate_on_container_copy_assignment; 5209: template 5209: using __pocma = typename _Tp::propagate_on_container_move_assignment; 5209: template 5209: using __pocs = typename _Tp::propagate_on_container_swap; 5209: template 5209: using __equal = typename _Tp::is_always_equal; 5209: }; 5209: 5209: template 5209: using __alloc_rebind 5209: = typename __allocator_traits_base::template __rebind<_Alloc, _Up>::type; 5209: 5209: 5209: 5209: 5209: 5209: template 5209: struct allocator_traits : __allocator_traits_base 5209: { 5209: 5209: typedef _Alloc allocator_type; 5209: 5209: typedef typename _Alloc::value_type value_type; 5209: 5209: 5209: 5209: 5209: 5209: 5209: using pointer = __detected_or_t; 5209: 5209: private: 5209: 5209: template class _Func, typename _Tp, typename = void> 5209: struct _Ptr 5209: { 5209: using type = typename pointer_traits::template rebind<_Tp>; 5209: }; 5209: 5209: template class _Func, typename _Tp> 5209: struct _Ptr<_Func, _Tp, __void_t<_Func<_Alloc>>> 5209: { 5209: using type = _Func<_Alloc>; 5209: }; 5209: 5209: 5209: template 5209: struct _Diff 5209: { using type = typename pointer_traits<_PtrT>::difference_type; }; 5209: 5209: template 5209: struct _Diff<_A2, _PtrT, __void_t> 5209: { using type = typename _A2::difference_type; }; 5209: 5209: 5209: template 5209: struct _Size : make_unsigned<_DiffT> { }; 5209: 5209: template 5209: struct _Size<_A2, _DiffT, __void_t> 5209: { using type = typename _A2::size_type; }; 5209: 5209: public: 5209: 5209: 5209: 5209: 5209: 5209: 5209: using const_pointer = typename _Ptr<__c_pointer, const value_type>::type; 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: using void_pointer = typename _Ptr<__v_pointer, void>::type; 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: using const_void_pointer = typename _Ptr<__cv_pointer, const void>::type; 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: using difference_type = typename _Diff<_Alloc, pointer>::type; 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: using size_type = typename _Size<_Alloc, difference_type>::type; 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: using propagate_on_container_copy_assignment 5209: = __detected_or_t; 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: using propagate_on_container_move_assignment 5209: = __detected_or_t; 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: using propagate_on_container_swap 5209: = __detected_or_t; 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: using is_always_equal 5209: = __detected_or_t::type, __equal, _Alloc>; 5209: 5209: template 5209: using rebind_alloc = __alloc_rebind<_Alloc, _Tp>; 5209: template 5209: using rebind_traits = allocator_traits>; 5209: 5209: private: 5209: template 5209: static constexpr auto 5209: _S_allocate(_Alloc2& __a, size_type __n, const_void_pointer __hint, int) 5209: -> decltype(__a.allocate(__n, __hint)) 5209: { return __a.allocate(__n, __hint); } 5209: 5209: template 5209: static constexpr pointer 5209: _S_allocate(_Alloc2& __a, size_type __n, const_void_pointer, ...) 5209: { return __a.allocate(__n); } 5209: 5209: template 5209: struct __construct_helper 5209: { 5209: template()->construct( 5209: std::declval<_Tp*>(), std::declval<_Args>()...))> 5209: static true_type __test(int); 5209: 5209: template 5209: static false_type __test(...); 5209: 5209: using type = decltype(__test<_Alloc>(0)); 5209: }; 5209: 5209: template 5209: using __has_construct 5209: = typename __construct_helper<_Tp, _Args...>::type; 5209: 5209: template 5209: static _Require<__has_construct<_Tp, _Args...>> 5209: _S_construct(_Alloc& __a, _Tp* __p, _Args&&... __args) 5209: noexcept(noexcept(__a.construct(__p, std::forward<_Args>(__args)...))) 5209: { __a.construct(__p, std::forward<_Args>(__args)...); } 5209: 5209: template 5209: static 5209: _Require<__and_<__not_<__has_construct<_Tp, _Args...>>, 5209: is_constructible<_Tp, _Args...>>> 5209: _S_construct(_Alloc&, _Tp* __p, _Args&&... __args) 5209: noexcept(noexcept(::new((void*)__p) 5209: _Tp(std::forward<_Args>(__args)...))) 5209: { std::_Construct(__p, std::forward<_Args>(__args)...); } 5209: 5209: template 5209: static auto 5209: _S_destroy(_Alloc2& __a, _Tp* __p, int) 5209: noexcept(noexcept(__a.destroy(__p))) 5209: -> decltype(__a.destroy(__p)) 5209: { __a.destroy(__p); } 5209: 5209: template 5209: static void 5209: _S_destroy(_Alloc2&, _Tp* __p, ...) 5209: noexcept(noexcept(__p->~_Tp())) 5209: { std::_Destroy(__p); } 5209: 5209: template 5209: static constexpr auto 5209: _S_max_size(_Alloc2& __a, int) 5209: -> decltype(__a.max_size()) 5209: { return __a.max_size(); } 5209: 5209: template 5209: static constexpr size_type 5209: _S_max_size(_Alloc2&, ...) 5209: { 5209: 5209: 5209: return __gnu_cxx::__numeric_traits::__max 5209: / sizeof(value_type); 5209: } 5209: 5209: template 5209: static constexpr auto 5209: _S_select(_Alloc2& __a, int) 5209: -> decltype(__a.select_on_container_copy_construction()) 5209: { return __a.select_on_container_copy_construction(); } 5209: 5209: template 5209: static constexpr _Alloc2 5209: _S_select(_Alloc2& __a, ...) 5209: { return __a; } 5209: 5209: public: 5209: # 307 "/usr/include/c++/10/bits/alloc_traits.h" 3 5209: static pointer 5209: allocate(_Alloc& __a, size_type __n) 5209: { return __a.allocate(__n); } 5209: # 322 "/usr/include/c++/10/bits/alloc_traits.h" 3 5209: static pointer 5209: allocate(_Alloc& __a, size_type __n, const_void_pointer __hint) 5209: { return _S_allocate(__a, __n, __hint, 0); } 5209: # 334 "/usr/include/c++/10/bits/alloc_traits.h" 3 5209: static void 5209: deallocate(_Alloc& __a, pointer __p, size_type __n) 5209: { __a.deallocate(__p, __n); } 5209: # 349 "/usr/include/c++/10/bits/alloc_traits.h" 3 5209: template 5209: static auto 5209: construct(_Alloc& __a, _Tp* __p, _Args&&... __args) 5209: noexcept(noexcept(_S_construct(__a, __p, 5209: std::forward<_Args>(__args)...))) 5209: -> decltype(_S_construct(__a, __p, std::forward<_Args>(__args)...)) 5209: { _S_construct(__a, __p, std::forward<_Args>(__args)...); } 5209: # 365 "/usr/include/c++/10/bits/alloc_traits.h" 3 5209: template 5209: static void 5209: destroy(_Alloc& __a, _Tp* __p) 5209: noexcept(noexcept(_S_destroy(__a, __p, 0))) 5209: { _S_destroy(__a, __p, 0); } 5209: # 379 "/usr/include/c++/10/bits/alloc_traits.h" 3 5209: static size_type 5209: max_size(const _Alloc& __a) noexcept 5209: { return _S_max_size(__a, 0); } 5209: # 391 "/usr/include/c++/10/bits/alloc_traits.h" 3 5209: static _Alloc 5209: select_on_container_copy_construction(const _Alloc& __rhs) 5209: { return _S_select(__rhs, 0); } 5209: }; 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: struct allocator_traits> 5209: { 5209: 5209: using allocator_type = allocator<_Tp>; 5209: 5209: 5209: using value_type = _Tp; 5209: 5209: 5209: using pointer = _Tp*; 5209: 5209: 5209: using const_pointer = const _Tp*; 5209: 5209: 5209: using void_pointer = void*; 5209: 5209: 5209: using const_void_pointer = const void*; 5209: 5209: 5209: using difference_type = std::ptrdiff_t; 5209: 5209: 5209: using size_type = std::size_t; 5209: 5209: 5209: using propagate_on_container_copy_assignment = false_type; 5209: 5209: 5209: using propagate_on_container_move_assignment = true_type; 5209: 5209: 5209: using propagate_on_container_swap = false_type; 5209: 5209: 5209: using is_always_equal = true_type; 5209: 5209: template 5209: using rebind_alloc = allocator<_Up>; 5209: 5209: template 5209: using rebind_traits = allocator_traits>; 5209: # 453 "/usr/include/c++/10/bits/alloc_traits.h" 3 5209: static pointer 5209: allocate(allocator_type& __a, size_type __n) 5209: { return __a.allocate(__n); } 5209: # 467 "/usr/include/c++/10/bits/alloc_traits.h" 3 5209: static pointer 5209: allocate(allocator_type& __a, size_type __n, const_void_pointer __hint) 5209: { 5209: 5209: return __a.allocate(__n, __hint); 5209: 5209: 5209: 5209: } 5209: # 485 "/usr/include/c++/10/bits/alloc_traits.h" 3 5209: static void 5209: deallocate(allocator_type& __a, pointer __p, size_type __n) 5209: { __a.deallocate(__p, __n); } 5209: # 500 "/usr/include/c++/10/bits/alloc_traits.h" 3 5209: template 5209: static void 5209: construct(allocator_type& __a __attribute__((__unused__)), _Up* __p, 5209: _Args&&... __args) 5209: noexcept(noexcept(::new((void*)__p) _Up(std::declval<_Args>()...))) 5209: { 5209: 5209: __a.construct(__p, std::forward<_Args>(__args)...); 5209: 5209: 5209: 5209: } 5209: # 520 "/usr/include/c++/10/bits/alloc_traits.h" 3 5209: template 5209: static void 5209: destroy(allocator_type& __a __attribute__((__unused__)), _Up* __p) 5209: noexcept(is_nothrow_destructible<_Up>::value) 5209: { 5209: 5209: __a.destroy(__p); 5209: 5209: 5209: 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: static size_type 5209: max_size(const allocator_type& __a __attribute__((__unused__))) noexcept 5209: { 5209: 5209: return __a.max_size(); 5209: 5209: 5209: 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: static allocator_type 5209: select_on_container_copy_construction(const allocator_type& __rhs) 5209: { return __rhs; } 5209: }; 5209: 5209: 5209: template 5209: inline void 5209: __do_alloc_on_copy(_Alloc& __one, const _Alloc& __two, true_type) 5209: { __one = __two; } 5209: 5209: template 5209: inline void 5209: __do_alloc_on_copy(_Alloc&, const _Alloc&, false_type) 5209: { } 5209: 5209: 5209: template 5209: inline void 5209: __alloc_on_copy(_Alloc& __one, const _Alloc& __two) 5209: { 5209: typedef allocator_traits<_Alloc> __traits; 5209: typedef typename __traits::propagate_on_container_copy_assignment __pocca; 5209: 5209: 5209: 5209: 5209: __do_alloc_on_copy(__one, __two, __pocca()); 5209: 5209: } 5209: 5209: template 5209: constexpr _Alloc 5209: __alloc_on_copy(const _Alloc& __a) 5209: { 5209: typedef allocator_traits<_Alloc> __traits; 5209: return __traits::select_on_container_copy_construction(__a); 5209: } 5209: 5209: 5209: template 5209: inline void __do_alloc_on_move(_Alloc& __one, _Alloc& __two, true_type) 5209: { __one = std::move(__two); } 5209: 5209: template 5209: inline void __do_alloc_on_move(_Alloc&, _Alloc&, false_type) 5209: { } 5209: 5209: 5209: template 5209: inline void 5209: __alloc_on_move(_Alloc& __one, _Alloc& __two) 5209: { 5209: typedef allocator_traits<_Alloc> __traits; 5209: typedef typename __traits::propagate_on_container_move_assignment __pocma; 5209: 5209: 5209: 5209: 5209: __do_alloc_on_move(__one, __two, __pocma()); 5209: 5209: } 5209: 5209: 5209: template 5209: inline void __do_alloc_on_swap(_Alloc& __one, _Alloc& __two, true_type) 5209: { 5209: using std::swap; 5209: swap(__one, __two); 5209: } 5209: 5209: template 5209: inline void __do_alloc_on_swap(_Alloc&, _Alloc&, false_type) 5209: { } 5209: 5209: 5209: template 5209: inline void 5209: __alloc_on_swap(_Alloc& __one, _Alloc& __two) 5209: { 5209: typedef allocator_traits<_Alloc> __traits; 5209: typedef typename __traits::propagate_on_container_swap __pocs; 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: __do_alloc_on_swap(__one, __two, __pocs()); 5209: 5209: } 5209: 5209: template, 5209: typename = void> 5209: struct __is_alloc_insertable_impl 5209: : false_type 5209: { }; 5209: 5209: template 5209: struct __is_alloc_insertable_impl<_Alloc, _Tp, _ValueT, 5209: __void_t::construct( 5209: std::declval<_Alloc&>(), std::declval<_ValueT*>(), 5209: std::declval<_Tp>()))>> 5209: : true_type 5209: { }; 5209: 5209: 5209: 5209: 5209: template 5209: struct __is_copy_insertable 5209: : __is_alloc_insertable_impl<_Alloc, 5209: typename _Alloc::value_type const&>::type 5209: { }; 5209: 5209: 5209: template 5209: struct __is_copy_insertable> 5209: : is_copy_constructible<_Tp> 5209: { }; 5209: 5209: 5209: 5209: 5209: template 5209: struct __is_move_insertable 5209: : __is_alloc_insertable_impl<_Alloc, typename _Alloc::value_type>::type 5209: { }; 5209: 5209: 5209: template 5209: struct __is_move_insertable> 5209: : is_move_constructible<_Tp> 5209: { }; 5209: 5209: 5209: template 5209: struct __is_allocator : false_type { }; 5209: 5209: template 5209: struct __is_allocator<_Alloc, 5209: __void_t().allocate(size_t{}))>> 5209: : true_type { }; 5209: 5209: template 5209: using _RequireAllocator 5209: = typename enable_if<__is_allocator<_Alloc>::value, _Alloc>::type; 5209: 5209: template 5209: using _RequireNotAllocator 5209: = typename enable_if::value, _Alloc>::type; 5209: # 714 "/usr/include/c++/10/bits/alloc_traits.h" 3 5209: template 5209: void 5209: _Destroy(_ForwardIterator __first, _ForwardIterator __last, 5209: _Allocator& __alloc) 5209: { 5209: for (; __first != __last; ++__first) 5209: 5209: 5209: 5209: allocator_traits<_Allocator>::destroy(__alloc, 5209: std::__addressof(*__first)); 5209: 5209: } 5209: 5209: template 5209: inline void 5209: _Destroy(_ForwardIterator __first, _ForwardIterator __last, 5209: allocator<_Tp>&) 5209: { 5209: _Destroy(__first, __last); 5209: } 5209: 5209: 5209: } 5209: # 35 "/usr/include/c++/10/ext/alloc_traits.h" 2 3 5209: 5209: 5209: 5209: 5209: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: struct __alloc_traits 5209: 5209: : std::allocator_traits<_Alloc> 5209: 5209: { 5209: typedef _Alloc allocator_type; 5209: 5209: typedef std::allocator_traits<_Alloc> _Base_type; 5209: typedef typename _Base_type::value_type value_type; 5209: typedef typename _Base_type::pointer pointer; 5209: typedef typename _Base_type::const_pointer const_pointer; 5209: typedef typename _Base_type::size_type size_type; 5209: typedef typename _Base_type::difference_type difference_type; 5209: 5209: typedef value_type& reference; 5209: typedef const value_type& const_reference; 5209: using _Base_type::allocate; 5209: using _Base_type::deallocate; 5209: using _Base_type::construct; 5209: using _Base_type::destroy; 5209: using _Base_type::max_size; 5209: 5209: private: 5209: template 5209: using __is_custom_pointer 5209: = std::__and_, 5209: std::__not_>>; 5209: 5209: public: 5209: 5209: template 5209: static 5209: std::__enable_if_t<__is_custom_pointer<_Ptr>::value> 5209: construct(_Alloc& __a, _Ptr __p, _Args&&... __args) 5209: noexcept(noexcept(_Base_type::construct(__a, std::__to_address(__p), 5209: std::forward<_Args>(__args)...))) 5209: { 5209: _Base_type::construct(__a, std::__to_address(__p), 5209: std::forward<_Args>(__args)...); 5209: } 5209: 5209: 5209: template 5209: static 5209: std::__enable_if_t<__is_custom_pointer<_Ptr>::value> 5209: destroy(_Alloc& __a, _Ptr __p) 5209: noexcept(noexcept(_Base_type::destroy(__a, std::__to_address(__p)))) 5209: { _Base_type::destroy(__a, std::__to_address(__p)); } 5209: 5209: static constexpr _Alloc _S_select_on_copy(const _Alloc& __a) 5209: { return _Base_type::select_on_container_copy_construction(__a); } 5209: 5209: static void _S_on_swap(_Alloc& __a, _Alloc& __b) 5209: { std::__alloc_on_swap(__a, __b); } 5209: 5209: static constexpr bool _S_propagate_on_copy_assign() 5209: { return _Base_type::propagate_on_container_copy_assignment::value; } 5209: 5209: static constexpr bool _S_propagate_on_move_assign() 5209: { return _Base_type::propagate_on_container_move_assignment::value; } 5209: 5209: static constexpr bool _S_propagate_on_swap() 5209: { return _Base_type::propagate_on_container_swap::value; } 5209: 5209: static constexpr bool _S_always_equal() 5209: { return _Base_type::is_always_equal::value; } 5209: 5209: static constexpr bool _S_nothrow_move() 5209: { return _S_propagate_on_move_assign() || _S_always_equal(); } 5209: 5209: template 5209: struct rebind 5209: { typedef typename _Base_type::template rebind_alloc<_Tp> other; }; 5209: # 166 "/usr/include/c++/10/ext/alloc_traits.h" 3 5209: }; 5209: 5209: 5209: } 5209: # 41 "/usr/include/c++/10/bits/basic_string.h" 2 3 5209: # 52 "/usr/include/c++/10/bits/basic_string.h" 3 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: 5209: namespace __cxx11 { 5209: # 76 "/usr/include/c++/10/bits/basic_string.h" 3 5209: template 5209: class basic_string 5209: { 5209: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template 5209: rebind<_CharT>::other _Char_alloc_type; 5209: typedef __gnu_cxx::__alloc_traits<_Char_alloc_type> _Alloc_traits; 5209: 5209: 5209: public: 5209: typedef _Traits traits_type; 5209: typedef typename _Traits::char_type value_type; 5209: typedef _Char_alloc_type allocator_type; 5209: typedef typename _Alloc_traits::size_type size_type; 5209: typedef typename _Alloc_traits::difference_type difference_type; 5209: typedef typename _Alloc_traits::reference reference; 5209: typedef typename _Alloc_traits::const_reference const_reference; 5209: typedef typename _Alloc_traits::pointer pointer; 5209: typedef typename _Alloc_traits::const_pointer const_pointer; 5209: typedef __gnu_cxx::__normal_iterator iterator; 5209: typedef __gnu_cxx::__normal_iterator 5209: const_iterator; 5209: typedef std::reverse_iterator const_reverse_iterator; 5209: typedef std::reverse_iterator reverse_iterator; 5209: 5209: 5209: static const size_type npos = static_cast(-1); 5209: 5209: protected: 5209: 5209: 5209: 5209: 5209: typedef const_iterator __const_iterator; 5209: 5209: 5209: private: 5209: # 150 "/usr/include/c++/10/bits/basic_string.h" 3 5209: struct _Alloc_hider : allocator_type 5209: { 5209: 5209: 5209: 5209: 5209: _Alloc_hider(pointer __dat, const _Alloc& __a) 5209: : allocator_type(__a), _M_p(__dat) { } 5209: 5209: _Alloc_hider(pointer __dat, _Alloc&& __a = _Alloc()) 5209: : allocator_type(std::move(__a)), _M_p(__dat) { } 5209: 5209: 5209: pointer _M_p; 5209: }; 5209: 5209: _Alloc_hider _M_dataplus; 5209: size_type _M_string_length; 5209: 5209: enum { _S_local_capacity = 15 / sizeof(_CharT) }; 5209: 5209: union 5209: { 5209: _CharT _M_local_buf[_S_local_capacity + 1]; 5209: size_type _M_allocated_capacity; 5209: }; 5209: 5209: void 5209: _M_data(pointer __p) 5209: { _M_dataplus._M_p = __p; } 5209: 5209: void 5209: _M_length(size_type __length) 5209: { _M_string_length = __length; } 5209: 5209: pointer 5209: _M_data() const 5209: { return _M_dataplus._M_p; } 5209: 5209: pointer 5209: _M_local_data() 5209: { 5209: 5209: return std::pointer_traits::pointer_to(*_M_local_buf); 5209: 5209: 5209: 5209: } 5209: 5209: const_pointer 5209: _M_local_data() const 5209: { 5209: 5209: return std::pointer_traits::pointer_to(*_M_local_buf); 5209: 5209: 5209: 5209: } 5209: 5209: void 5209: _M_capacity(size_type __capacity) 5209: { _M_allocated_capacity = __capacity; } 5209: 5209: void 5209: _M_set_length(size_type __n) 5209: { 5209: _M_length(__n); 5209: traits_type::assign(_M_data()[__n], _CharT()); 5209: } 5209: 5209: bool 5209: _M_is_local() const 5209: { return _M_data() == _M_local_data(); } 5209: 5209: 5209: pointer 5209: _M_create(size_type&, size_type); 5209: 5209: void 5209: _M_dispose() 5209: { 5209: if (!_M_is_local()) 5209: _M_destroy(_M_allocated_capacity); 5209: } 5209: 5209: void 5209: _M_destroy(size_type __size) throw() 5209: { _Alloc_traits::deallocate(_M_get_allocator(), _M_data(), __size + 1); } 5209: 5209: 5209: 5209: template 5209: void 5209: _M_construct_aux(_InIterator __beg, _InIterator __end, 5209: std::__false_type) 5209: { 5209: typedef typename iterator_traits<_InIterator>::iterator_category _Tag; 5209: _M_construct(__beg, __end, _Tag()); 5209: } 5209: 5209: 5209: 5209: template 5209: void 5209: _M_construct_aux(_Integer __beg, _Integer __end, std::__true_type) 5209: { _M_construct_aux_2(static_cast(__beg), __end); } 5209: 5209: void 5209: _M_construct_aux_2(size_type __req, _CharT __c) 5209: { _M_construct(__req, __c); } 5209: 5209: template 5209: void 5209: _M_construct(_InIterator __beg, _InIterator __end) 5209: { 5209: typedef typename std::__is_integer<_InIterator>::__type _Integral; 5209: _M_construct_aux(__beg, __end, _Integral()); 5209: } 5209: 5209: 5209: template 5209: void 5209: _M_construct(_InIterator __beg, _InIterator __end, 5209: std::input_iterator_tag); 5209: 5209: 5209: 5209: template 5209: void 5209: _M_construct(_FwdIterator __beg, _FwdIterator __end, 5209: std::forward_iterator_tag); 5209: 5209: void 5209: _M_construct(size_type __req, _CharT __c); 5209: 5209: allocator_type& 5209: _M_get_allocator() 5209: { return _M_dataplus; } 5209: 5209: const allocator_type& 5209: _M_get_allocator() const 5209: { return _M_dataplus; } 5209: 5209: private: 5209: # 309 "/usr/include/c++/10/bits/basic_string.h" 3 5209: size_type 5209: _M_check(size_type __pos, const char* __s) const 5209: { 5209: if (__pos > this->size()) 5209: __throw_out_of_range_fmt(("%s: __pos (which is %zu) > " "this->size() (which is %zu)") 5209: , 5209: __s, __pos, this->size()); 5209: return __pos; 5209: } 5209: 5209: void 5209: _M_check_length(size_type __n1, size_type __n2, const char* __s) const 5209: { 5209: if (this->max_size() - (this->size() - __n1) < __n2) 5209: __throw_length_error((__s)); 5209: } 5209: 5209: 5209: 5209: size_type 5209: _M_limit(size_type __pos, size_type __off) const noexcept 5209: { 5209: const bool __testoff = __off < this->size() - __pos; 5209: return __testoff ? __off : this->size() - __pos; 5209: } 5209: 5209: 5209: bool 5209: _M_disjunct(const _CharT* __s) const noexcept 5209: { 5209: return (less()(__s, _M_data()) 5209: || less()(_M_data() + this->size(), __s)); 5209: } 5209: 5209: 5209: 5209: static void 5209: _S_copy(_CharT* __d, const _CharT* __s, size_type __n) 5209: { 5209: if (__n == 1) 5209: traits_type::assign(*__d, *__s); 5209: else 5209: traits_type::copy(__d, __s, __n); 5209: } 5209: 5209: static void 5209: _S_move(_CharT* __d, const _CharT* __s, size_type __n) 5209: { 5209: if (__n == 1) 5209: traits_type::assign(*__d, *__s); 5209: else 5209: traits_type::move(__d, __s, __n); 5209: } 5209: 5209: static void 5209: _S_assign(_CharT* __d, size_type __n, _CharT __c) 5209: { 5209: if (__n == 1) 5209: traits_type::assign(*__d, __c); 5209: else 5209: traits_type::assign(__d, __n, __c); 5209: } 5209: 5209: 5209: 5209: template 5209: static void 5209: _S_copy_chars(_CharT* __p, _Iterator __k1, _Iterator __k2) 5209: { 5209: for (; __k1 != __k2; ++__k1, (void)++__p) 5209: traits_type::assign(*__p, *__k1); 5209: } 5209: 5209: static void 5209: _S_copy_chars(_CharT* __p, iterator __k1, iterator __k2) noexcept 5209: { _S_copy_chars(__p, __k1.base(), __k2.base()); } 5209: 5209: static void 5209: _S_copy_chars(_CharT* __p, const_iterator __k1, const_iterator __k2) 5209: noexcept 5209: { _S_copy_chars(__p, __k1.base(), __k2.base()); } 5209: 5209: static void 5209: _S_copy_chars(_CharT* __p, _CharT* __k1, _CharT* __k2) noexcept 5209: { _S_copy(__p, __k1, __k2 - __k1); } 5209: 5209: static void 5209: _S_copy_chars(_CharT* __p, const _CharT* __k1, const _CharT* __k2) 5209: noexcept 5209: { _S_copy(__p, __k1, __k2 - __k1); } 5209: 5209: static int 5209: _S_compare(size_type __n1, size_type __n2) noexcept 5209: { 5209: const difference_type __d = difference_type(__n1 - __n2); 5209: 5209: if (__d > __gnu_cxx::__numeric_traits::__max) 5209: return __gnu_cxx::__numeric_traits::__max; 5209: else if (__d < __gnu_cxx::__numeric_traits::__min) 5209: return __gnu_cxx::__numeric_traits::__min; 5209: else 5209: return int(__d); 5209: } 5209: 5209: void 5209: _M_assign(const basic_string&); 5209: 5209: void 5209: _M_mutate(size_type __pos, size_type __len1, const _CharT* __s, 5209: size_type __len2); 5209: 5209: void 5209: _M_erase(size_type __pos, size_type __n); 5209: 5209: public: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: basic_string() 5209: noexcept(is_nothrow_default_constructible<_Alloc>::value) 5209: : _M_dataplus(_M_local_data()) 5209: { _M_set_length(0); } 5209: 5209: 5209: 5209: 5209: explicit 5209: basic_string(const _Alloc& __a) noexcept 5209: : _M_dataplus(_M_local_data(), __a) 5209: { _M_set_length(0); } 5209: 5209: 5209: 5209: 5209: 5209: basic_string(const basic_string& __str) 5209: : _M_dataplus(_M_local_data(), 5209: _Alloc_traits::_S_select_on_copy(__str._M_get_allocator())) 5209: { _M_construct(__str._M_data(), __str._M_data() + __str.length()); } 5209: # 461 "/usr/include/c++/10/bits/basic_string.h" 3 5209: basic_string(const basic_string& __str, size_type __pos, 5209: const _Alloc& __a = _Alloc()) 5209: : _M_dataplus(_M_local_data(), __a) 5209: { 5209: const _CharT* __start = __str._M_data() 5209: + __str._M_check(__pos, "basic_string::basic_string"); 5209: _M_construct(__start, __start + __str._M_limit(__pos, npos)); 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: basic_string(const basic_string& __str, size_type __pos, 5209: size_type __n) 5209: : _M_dataplus(_M_local_data()) 5209: { 5209: const _CharT* __start = __str._M_data() 5209: + __str._M_check(__pos, "basic_string::basic_string"); 5209: _M_construct(__start, __start + __str._M_limit(__pos, __n)); 5209: } 5209: # 492 "/usr/include/c++/10/bits/basic_string.h" 3 5209: basic_string(const basic_string& __str, size_type __pos, 5209: size_type __n, const _Alloc& __a) 5209: : _M_dataplus(_M_local_data(), __a) 5209: { 5209: const _CharT* __start 5209: = __str._M_data() + __str._M_check(__pos, "string::string"); 5209: _M_construct(__start, __start + __str._M_limit(__pos, __n)); 5209: } 5209: # 510 "/usr/include/c++/10/bits/basic_string.h" 3 5209: basic_string(const _CharT* __s, size_type __n, 5209: const _Alloc& __a = _Alloc()) 5209: : _M_dataplus(_M_local_data(), __a) 5209: { _M_construct(__s, __s + __n); } 5209: # 525 "/usr/include/c++/10/bits/basic_string.h" 3 5209: basic_string(const _CharT* __s, const _Alloc& __a = _Alloc()) 5209: : _M_dataplus(_M_local_data(), __a) 5209: { _M_construct(__s, __s ? __s + traits_type::length(__s) : __s+npos); } 5209: # 540 "/usr/include/c++/10/bits/basic_string.h" 3 5209: basic_string(size_type __n, _CharT __c, const _Alloc& __a = _Alloc()) 5209: : _M_dataplus(_M_local_data(), __a) 5209: { _M_construct(__n, __c); } 5209: # 552 "/usr/include/c++/10/bits/basic_string.h" 3 5209: basic_string(basic_string&& __str) noexcept 5209: : _M_dataplus(_M_local_data(), std::move(__str._M_get_allocator())) 5209: { 5209: if (__str._M_is_local()) 5209: { 5209: traits_type::copy(_M_local_buf, __str._M_local_buf, 5209: _S_local_capacity + 1); 5209: } 5209: else 5209: { 5209: _M_data(__str._M_data()); 5209: _M_capacity(__str._M_allocated_capacity); 5209: } 5209: 5209: 5209: 5209: 5209: _M_length(__str.length()); 5209: __str._M_data(__str._M_local_data()); 5209: __str._M_set_length(0); 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: basic_string(initializer_list<_CharT> __l, const _Alloc& __a = _Alloc()) 5209: : _M_dataplus(_M_local_data(), __a) 5209: { _M_construct(__l.begin(), __l.end()); } 5209: 5209: basic_string(const basic_string& __str, const _Alloc& __a) 5209: : _M_dataplus(_M_local_data(), __a) 5209: { _M_construct(__str.begin(), __str.end()); } 5209: 5209: basic_string(basic_string&& __str, const _Alloc& __a) 5209: noexcept(_Alloc_traits::_S_always_equal()) 5209: : _M_dataplus(_M_local_data(), __a) 5209: { 5209: if (__str._M_is_local()) 5209: { 5209: traits_type::copy(_M_local_buf, __str._M_local_buf, 5209: _S_local_capacity + 1); 5209: _M_length(__str.length()); 5209: __str._M_set_length(0); 5209: } 5209: else if (_Alloc_traits::_S_always_equal() 5209: || __str.get_allocator() == __a) 5209: { 5209: _M_data(__str._M_data()); 5209: _M_length(__str.length()); 5209: _M_capacity(__str._M_allocated_capacity); 5209: __str._M_data(__str._M_local_buf); 5209: __str._M_set_length(0); 5209: } 5209: else 5209: _M_construct(__str.begin(), __str.end()); 5209: } 5209: # 620 "/usr/include/c++/10/bits/basic_string.h" 3 5209: template> 5209: 5209: 5209: 5209: basic_string(_InputIterator __beg, _InputIterator __end, 5209: const _Alloc& __a = _Alloc()) 5209: : _M_dataplus(_M_local_data(), __a) 5209: { _M_construct(__beg, __end); } 5209: # 657 "/usr/include/c++/10/bits/basic_string.h" 3 5209: ~basic_string() 5209: { _M_dispose(); } 5209: 5209: 5209: 5209: 5209: 5209: basic_string& 5209: operator=(const basic_string& __str) 5209: { 5209: return this->assign(__str); 5209: } 5209: 5209: 5209: 5209: 5209: 5209: basic_string& 5209: operator=(const _CharT* __s) 5209: { return this->assign(__s); } 5209: # 685 "/usr/include/c++/10/bits/basic_string.h" 3 5209: basic_string& 5209: operator=(_CharT __c) 5209: { 5209: this->assign(1, __c); 5209: return *this; 5209: } 5209: # 702 "/usr/include/c++/10/bits/basic_string.h" 3 5209: basic_string& 5209: operator=(basic_string&& __str) 5209: noexcept(_Alloc_traits::_S_nothrow_move()) 5209: { 5209: if (!_M_is_local() && _Alloc_traits::_S_propagate_on_move_assign() 5209: && !_Alloc_traits::_S_always_equal() 5209: && _M_get_allocator() != __str._M_get_allocator()) 5209: { 5209: 5209: _M_destroy(_M_allocated_capacity); 5209: _M_data(_M_local_data()); 5209: _M_set_length(0); 5209: } 5209: 5209: std::__alloc_on_move(_M_get_allocator(), __str._M_get_allocator()); 5209: 5209: if (__str._M_is_local()) 5209: { 5209: 5209: if (__str.size()) 5209: this->_S_copy(_M_data(), __str._M_data(), __str.size()); 5209: _M_set_length(__str.size()); 5209: } 5209: else if (_Alloc_traits::_S_propagate_on_move_assign() 5209: || _Alloc_traits::_S_always_equal() 5209: || _M_get_allocator() == __str._M_get_allocator()) 5209: { 5209: 5209: pointer __data = nullptr; 5209: size_type __capacity; 5209: if (!_M_is_local()) 5209: { 5209: if (_Alloc_traits::_S_always_equal()) 5209: { 5209: 5209: __data = _M_data(); 5209: __capacity = _M_allocated_capacity; 5209: } 5209: else 5209: _M_destroy(_M_allocated_capacity); 5209: } 5209: 5209: _M_data(__str._M_data()); 5209: _M_length(__str.length()); 5209: _M_capacity(__str._M_allocated_capacity); 5209: if (__data) 5209: { 5209: __str._M_data(__data); 5209: __str._M_capacity(__capacity); 5209: } 5209: else 5209: __str._M_data(__str._M_local_buf); 5209: } 5209: else 5209: assign(__str); 5209: __str.clear(); 5209: return *this; 5209: } 5209: 5209: 5209: 5209: 5209: 5209: basic_string& 5209: operator=(initializer_list<_CharT> __l) 5209: { 5209: this->assign(__l.begin(), __l.size()); 5209: return *this; 5209: } 5209: # 796 "/usr/include/c++/10/bits/basic_string.h" 3 5209: iterator 5209: begin() noexcept 5209: { return iterator(_M_data()); } 5209: 5209: 5209: 5209: 5209: 5209: const_iterator 5209: begin() const noexcept 5209: { return const_iterator(_M_data()); } 5209: 5209: 5209: 5209: 5209: 5209: iterator 5209: end() noexcept 5209: { return iterator(_M_data() + this->size()); } 5209: 5209: 5209: 5209: 5209: 5209: const_iterator 5209: end() const noexcept 5209: { return const_iterator(_M_data() + this->size()); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: reverse_iterator 5209: rbegin() noexcept 5209: { return reverse_iterator(this->end()); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: const_reverse_iterator 5209: rbegin() const noexcept 5209: { return const_reverse_iterator(this->end()); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: reverse_iterator 5209: rend() noexcept 5209: { return reverse_iterator(this->begin()); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: const_reverse_iterator 5209: rend() const noexcept 5209: { return const_reverse_iterator(this->begin()); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: const_iterator 5209: cbegin() const noexcept 5209: { return const_iterator(this->_M_data()); } 5209: 5209: 5209: 5209: 5209: 5209: const_iterator 5209: cend() const noexcept 5209: { return const_iterator(this->_M_data() + this->size()); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: const_reverse_iterator 5209: crbegin() const noexcept 5209: { return const_reverse_iterator(this->end()); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: const_reverse_iterator 5209: crend() const noexcept 5209: { return const_reverse_iterator(this->begin()); } 5209: 5209: 5209: public: 5209: 5209: 5209: 5209: size_type 5209: size() const noexcept 5209: { return _M_string_length; } 5209: 5209: 5209: 5209: size_type 5209: length() const noexcept 5209: { return _M_string_length; } 5209: 5209: 5209: size_type 5209: max_size() const noexcept 5209: { return (_Alloc_traits::max_size(_M_get_allocator()) - 1) / 2; } 5209: # 925 "/usr/include/c++/10/bits/basic_string.h" 3 5209: void 5209: resize(size_type __n, _CharT __c); 5209: # 938 "/usr/include/c++/10/bits/basic_string.h" 3 5209: void 5209: resize(size_type __n) 5209: { this->resize(__n, _CharT()); } 5209: 5209: 5209: 5209: void 5209: shrink_to_fit() noexcept 5209: { 5209: 5209: if (capacity() > size()) 5209: { 5209: try 5209: { reserve(0); } 5209: catch(...) 5209: { } 5209: } 5209: 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: size_type 5209: capacity() const noexcept 5209: { 5209: return _M_is_local() ? size_type(_S_local_capacity) 5209: : _M_allocated_capacity; 5209: } 5209: # 987 "/usr/include/c++/10/bits/basic_string.h" 3 5209: void 5209: reserve(size_type __res_arg = 0); 5209: 5209: 5209: 5209: 5209: void 5209: clear() noexcept 5209: { _M_set_length(0); } 5209: 5209: 5209: 5209: 5209: 5209: bool 5209: empty() const noexcept 5209: { return this->size() == 0; } 5209: # 1016 "/usr/include/c++/10/bits/basic_string.h" 3 5209: const_reference 5209: operator[] (size_type __pos) const noexcept 5209: { 5209: ; 5209: return _M_data()[__pos]; 5209: } 5209: # 1033 "/usr/include/c++/10/bits/basic_string.h" 3 5209: reference 5209: operator[](size_type __pos) 5209: { 5209: 5209: 5209: ; 5209: 5209: ; 5209: return _M_data()[__pos]; 5209: } 5209: # 1054 "/usr/include/c++/10/bits/basic_string.h" 3 5209: const_reference 5209: at(size_type __n) const 5209: { 5209: if (__n >= this->size()) 5209: __throw_out_of_range_fmt(("basic_string::at: __n " "(which is %zu) >= this->size() " "(which is %zu)") 5209: 5209: , 5209: __n, this->size()); 5209: return _M_data()[__n]; 5209: } 5209: # 1075 "/usr/include/c++/10/bits/basic_string.h" 3 5209: reference 5209: at(size_type __n) 5209: { 5209: if (__n >= size()) 5209: __throw_out_of_range_fmt(("basic_string::at: __n " "(which is %zu) >= this->size() " "(which is %zu)") 5209: 5209: , 5209: __n, this->size()); 5209: return _M_data()[__n]; 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: reference 5209: front() noexcept 5209: { 5209: ; 5209: return operator[](0); 5209: } 5209: 5209: 5209: 5209: 5209: 5209: const_reference 5209: front() const noexcept 5209: { 5209: ; 5209: return operator[](0); 5209: } 5209: 5209: 5209: 5209: 5209: 5209: reference 5209: back() noexcept 5209: { 5209: ; 5209: return operator[](this->size() - 1); 5209: } 5209: 5209: 5209: 5209: 5209: 5209: const_reference 5209: back() const noexcept 5209: { 5209: ; 5209: return operator[](this->size() - 1); 5209: } 5209: # 1138 "/usr/include/c++/10/bits/basic_string.h" 3 5209: basic_string& 5209: operator+=(const basic_string& __str) 5209: { return this->append(__str); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: basic_string& 5209: operator+=(const _CharT* __s) 5209: { return this->append(__s); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: basic_string& 5209: operator+=(_CharT __c) 5209: { 5209: this->push_back(__c); 5209: return *this; 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: basic_string& 5209: operator+=(initializer_list<_CharT> __l) 5209: { return this->append(__l.begin(), __l.size()); } 5209: # 1191 "/usr/include/c++/10/bits/basic_string.h" 3 5209: basic_string& 5209: append(const basic_string& __str) 5209: { return _M_append(__str._M_data(), __str.size()); } 5209: # 1208 "/usr/include/c++/10/bits/basic_string.h" 3 5209: basic_string& 5209: append(const basic_string& __str, size_type __pos, size_type __n = npos) 5209: { return _M_append(__str._M_data() 5209: + __str._M_check(__pos, "basic_string::append"), 5209: __str._M_limit(__pos, __n)); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: basic_string& 5209: append(const _CharT* __s, size_type __n) 5209: { 5209: ; 5209: _M_check_length(size_type(0), __n, "basic_string::append"); 5209: return _M_append(__s, __n); 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: basic_string& 5209: append(const _CharT* __s) 5209: { 5209: ; 5209: const size_type __n = traits_type::length(__s); 5209: _M_check_length(size_type(0), __n, "basic_string::append"); 5209: return _M_append(__s, __n); 5209: } 5209: # 1250 "/usr/include/c++/10/bits/basic_string.h" 3 5209: basic_string& 5209: append(size_type __n, _CharT __c) 5209: { return _M_replace_aux(this->size(), size_type(0), __n, __c); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: basic_string& 5209: append(initializer_list<_CharT> __l) 5209: { return this->append(__l.begin(), __l.size()); } 5209: # 1274 "/usr/include/c++/10/bits/basic_string.h" 3 5209: template> 5209: 5209: 5209: 5209: basic_string& 5209: append(_InputIterator __first, _InputIterator __last) 5209: { return this->replace(end(), end(), __first, __last); } 5209: # 1319 "/usr/include/c++/10/bits/basic_string.h" 3 5209: void 5209: push_back(_CharT __c) 5209: { 5209: const size_type __size = this->size(); 5209: if (__size + 1 > this->capacity()) 5209: this->_M_mutate(__size, size_type(0), 0, size_type(1)); 5209: traits_type::assign(this->_M_data()[__size], __c); 5209: this->_M_set_length(__size + 1); 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: basic_string& 5209: assign(const basic_string& __str) 5209: { 5209: 5209: if (_Alloc_traits::_S_propagate_on_copy_assign()) 5209: { 5209: if (!_Alloc_traits::_S_always_equal() && !_M_is_local() 5209: && _M_get_allocator() != __str._M_get_allocator()) 5209: { 5209: 5209: 5209: if (__str.size() <= _S_local_capacity) 5209: { 5209: _M_destroy(_M_allocated_capacity); 5209: _M_data(_M_local_data()); 5209: _M_set_length(0); 5209: } 5209: else 5209: { 5209: const auto __len = __str.size(); 5209: auto __alloc = __str._M_get_allocator(); 5209: 5209: auto __ptr = _Alloc_traits::allocate(__alloc, __len + 1); 5209: _M_destroy(_M_allocated_capacity); 5209: _M_data(__ptr); 5209: _M_capacity(__len); 5209: _M_set_length(__len); 5209: } 5209: } 5209: std::__alloc_on_copy(_M_get_allocator(), __str._M_get_allocator()); 5209: } 5209: 5209: this->_M_assign(__str); 5209: return *this; 5209: } 5209: # 1379 "/usr/include/c++/10/bits/basic_string.h" 3 5209: basic_string& 5209: assign(basic_string&& __str) 5209: noexcept(_Alloc_traits::_S_nothrow_move()) 5209: { 5209: 5209: 5209: return *this = std::move(__str); 5209: } 5209: # 1402 "/usr/include/c++/10/bits/basic_string.h" 3 5209: basic_string& 5209: assign(const basic_string& __str, size_type __pos, size_type __n = npos) 5209: { return _M_replace(size_type(0), this->size(), __str._M_data() 5209: + __str._M_check(__pos, "basic_string::assign"), 5209: __str._M_limit(__pos, __n)); } 5209: # 1418 "/usr/include/c++/10/bits/basic_string.h" 3 5209: basic_string& 5209: assign(const _CharT* __s, size_type __n) 5209: { 5209: ; 5209: return _M_replace(size_type(0), this->size(), __s, __n); 5209: } 5209: # 1434 "/usr/include/c++/10/bits/basic_string.h" 3 5209: basic_string& 5209: assign(const _CharT* __s) 5209: { 5209: ; 5209: return _M_replace(size_type(0), this->size(), __s, 5209: traits_type::length(__s)); 5209: } 5209: # 1451 "/usr/include/c++/10/bits/basic_string.h" 3 5209: basic_string& 5209: assign(size_type __n, _CharT __c) 5209: { return _M_replace_aux(size_type(0), this->size(), __n, __c); } 5209: # 1464 "/usr/include/c++/10/bits/basic_string.h" 3 5209: template> 5209: 5209: 5209: 5209: basic_string& 5209: assign(_InputIterator __first, _InputIterator __last) 5209: { return this->replace(begin(), end(), __first, __last); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: basic_string& 5209: assign(initializer_list<_CharT> __l) 5209: { return this->assign(__l.begin(), __l.size()); } 5209: # 1533 "/usr/include/c++/10/bits/basic_string.h" 3 5209: iterator 5209: insert(const_iterator __p, size_type __n, _CharT __c) 5209: { 5209: ; 5209: const size_type __pos = __p - begin(); 5209: this->replace(__p, __p, __n, __c); 5209: return iterator(this->_M_data() + __pos); 5209: } 5209: # 1575 "/usr/include/c++/10/bits/basic_string.h" 3 5209: template> 5209: iterator 5209: insert(const_iterator __p, _InputIterator __beg, _InputIterator __end) 5209: { 5209: ; 5209: const size_type __pos = __p - begin(); 5209: this->replace(__p, __p, __beg, __end); 5209: return iterator(this->_M_data() + __pos); 5209: } 5209: # 1611 "/usr/include/c++/10/bits/basic_string.h" 3 5209: iterator 5209: insert(const_iterator __p, initializer_list<_CharT> __l) 5209: { return this->insert(__p, __l.begin(), __l.end()); } 5209: # 1638 "/usr/include/c++/10/bits/basic_string.h" 3 5209: basic_string& 5209: insert(size_type __pos1, const basic_string& __str) 5209: { return this->replace(__pos1, size_type(0), 5209: __str._M_data(), __str.size()); } 5209: # 1661 "/usr/include/c++/10/bits/basic_string.h" 3 5209: basic_string& 5209: insert(size_type __pos1, const basic_string& __str, 5209: size_type __pos2, size_type __n = npos) 5209: { return this->replace(__pos1, size_type(0), __str._M_data() 5209: + __str._M_check(__pos2, "basic_string::insert"), 5209: __str._M_limit(__pos2, __n)); } 5209: # 1684 "/usr/include/c++/10/bits/basic_string.h" 3 5209: basic_string& 5209: insert(size_type __pos, const _CharT* __s, size_type __n) 5209: { return this->replace(__pos, size_type(0), __s, __n); } 5209: # 1703 "/usr/include/c++/10/bits/basic_string.h" 3 5209: basic_string& 5209: insert(size_type __pos, const _CharT* __s) 5209: { 5209: ; 5209: return this->replace(__pos, size_type(0), __s, 5209: traits_type::length(__s)); 5209: } 5209: # 1727 "/usr/include/c++/10/bits/basic_string.h" 3 5209: basic_string& 5209: insert(size_type __pos, size_type __n, _CharT __c) 5209: { return _M_replace_aux(_M_check(__pos, "basic_string::insert"), 5209: size_type(0), __n, __c); } 5209: # 1745 "/usr/include/c++/10/bits/basic_string.h" 3 5209: iterator 5209: insert(__const_iterator __p, _CharT __c) 5209: { 5209: ; 5209: const size_type __pos = __p - begin(); 5209: _M_replace_aux(__pos, size_type(0), size_type(1), __c); 5209: return iterator(_M_data() + __pos); 5209: } 5209: # 1805 "/usr/include/c++/10/bits/basic_string.h" 3 5209: basic_string& 5209: erase(size_type __pos = 0, size_type __n = npos) 5209: { 5209: _M_check(__pos, "basic_string::erase"); 5209: if (__n == npos) 5209: this->_M_set_length(__pos); 5209: else if (__n != 0) 5209: this->_M_erase(__pos, _M_limit(__pos, __n)); 5209: return *this; 5209: } 5209: # 1824 "/usr/include/c++/10/bits/basic_string.h" 3 5209: iterator 5209: erase(__const_iterator __position) 5209: { 5209: 5209: ; 5209: const size_type __pos = __position - begin(); 5209: this->_M_erase(__pos, size_type(1)); 5209: return iterator(_M_data() + __pos); 5209: } 5209: # 1843 "/usr/include/c++/10/bits/basic_string.h" 3 5209: iterator 5209: erase(__const_iterator __first, __const_iterator __last) 5209: { 5209: 5209: ; 5209: const size_type __pos = __first - begin(); 5209: if (__last == end()) 5209: this->_M_set_length(__pos); 5209: else 5209: this->_M_erase(__pos, __last - __first); 5209: return iterator(this->_M_data() + __pos); 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: void 5209: pop_back() noexcept 5209: { 5209: ; 5209: _M_erase(size() - 1, 1); 5209: } 5209: # 1887 "/usr/include/c++/10/bits/basic_string.h" 3 5209: basic_string& 5209: replace(size_type __pos, size_type __n, const basic_string& __str) 5209: { return this->replace(__pos, __n, __str._M_data(), __str.size()); } 5209: # 1909 "/usr/include/c++/10/bits/basic_string.h" 3 5209: basic_string& 5209: replace(size_type __pos1, size_type __n1, const basic_string& __str, 5209: size_type __pos2, size_type __n2 = npos) 5209: { return this->replace(__pos1, __n1, __str._M_data() 5209: + __str._M_check(__pos2, "basic_string::replace"), 5209: __str._M_limit(__pos2, __n2)); } 5209: # 1934 "/usr/include/c++/10/bits/basic_string.h" 3 5209: basic_string& 5209: replace(size_type __pos, size_type __n1, const _CharT* __s, 5209: size_type __n2) 5209: { 5209: ; 5209: return _M_replace(_M_check(__pos, "basic_string::replace"), 5209: _M_limit(__pos, __n1), __s, __n2); 5209: } 5209: # 1959 "/usr/include/c++/10/bits/basic_string.h" 3 5209: basic_string& 5209: replace(size_type __pos, size_type __n1, const _CharT* __s) 5209: { 5209: ; 5209: return this->replace(__pos, __n1, __s, traits_type::length(__s)); 5209: } 5209: # 1983 "/usr/include/c++/10/bits/basic_string.h" 3 5209: basic_string& 5209: replace(size_type __pos, size_type __n1, size_type __n2, _CharT __c) 5209: { return _M_replace_aux(_M_check(__pos, "basic_string::replace"), 5209: _M_limit(__pos, __n1), __n2, __c); } 5209: # 2001 "/usr/include/c++/10/bits/basic_string.h" 3 5209: basic_string& 5209: replace(__const_iterator __i1, __const_iterator __i2, 5209: const basic_string& __str) 5209: { return this->replace(__i1, __i2, __str._M_data(), __str.size()); } 5209: # 2021 "/usr/include/c++/10/bits/basic_string.h" 3 5209: basic_string& 5209: replace(__const_iterator __i1, __const_iterator __i2, 5209: const _CharT* __s, size_type __n) 5209: { 5209: 5209: ; 5209: return this->replace(__i1 - begin(), __i2 - __i1, __s, __n); 5209: } 5209: # 2043 "/usr/include/c++/10/bits/basic_string.h" 3 5209: basic_string& 5209: replace(__const_iterator __i1, __const_iterator __i2, const _CharT* __s) 5209: { 5209: ; 5209: return this->replace(__i1, __i2, __s, traits_type::length(__s)); 5209: } 5209: # 2064 "/usr/include/c++/10/bits/basic_string.h" 3 5209: basic_string& 5209: replace(__const_iterator __i1, __const_iterator __i2, size_type __n, 5209: _CharT __c) 5209: { 5209: 5209: ; 5209: return _M_replace_aux(__i1 - begin(), __i2 - __i1, __n, __c); 5209: } 5209: # 2089 "/usr/include/c++/10/bits/basic_string.h" 3 5209: template> 5209: basic_string& 5209: replace(const_iterator __i1, const_iterator __i2, 5209: _InputIterator __k1, _InputIterator __k2) 5209: { 5209: 5209: ; 5209: ; 5209: return this->_M_replace_dispatch(__i1, __i2, __k1, __k2, 5209: std::__false_type()); 5209: } 5209: # 2121 "/usr/include/c++/10/bits/basic_string.h" 3 5209: basic_string& 5209: replace(__const_iterator __i1, __const_iterator __i2, 5209: _CharT* __k1, _CharT* __k2) 5209: { 5209: 5209: ; 5209: ; 5209: return this->replace(__i1 - begin(), __i2 - __i1, 5209: __k1, __k2 - __k1); 5209: } 5209: 5209: basic_string& 5209: replace(__const_iterator __i1, __const_iterator __i2, 5209: const _CharT* __k1, const _CharT* __k2) 5209: { 5209: 5209: ; 5209: ; 5209: return this->replace(__i1 - begin(), __i2 - __i1, 5209: __k1, __k2 - __k1); 5209: } 5209: 5209: basic_string& 5209: replace(__const_iterator __i1, __const_iterator __i2, 5209: iterator __k1, iterator __k2) 5209: { 5209: 5209: ; 5209: ; 5209: return this->replace(__i1 - begin(), __i2 - __i1, 5209: __k1.base(), __k2 - __k1); 5209: } 5209: 5209: basic_string& 5209: replace(__const_iterator __i1, __const_iterator __i2, 5209: const_iterator __k1, const_iterator __k2) 5209: { 5209: 5209: ; 5209: ; 5209: return this->replace(__i1 - begin(), __i2 - __i1, 5209: __k1.base(), __k2 - __k1); 5209: } 5209: # 2180 "/usr/include/c++/10/bits/basic_string.h" 3 5209: basic_string& replace(const_iterator __i1, const_iterator __i2, 5209: initializer_list<_CharT> __l) 5209: { return this->replace(__i1, __i2, __l.begin(), __l.size()); } 5209: # 2240 "/usr/include/c++/10/bits/basic_string.h" 3 5209: private: 5209: template 5209: basic_string& 5209: _M_replace_dispatch(const_iterator __i1, const_iterator __i2, 5209: _Integer __n, _Integer __val, __true_type) 5209: { return _M_replace_aux(__i1 - begin(), __i2 - __i1, __n, __val); } 5209: 5209: template 5209: basic_string& 5209: _M_replace_dispatch(const_iterator __i1, const_iterator __i2, 5209: _InputIterator __k1, _InputIterator __k2, 5209: __false_type); 5209: 5209: basic_string& 5209: _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2, 5209: _CharT __c); 5209: 5209: basic_string& 5209: _M_replace(size_type __pos, size_type __len1, const _CharT* __s, 5209: const size_type __len2); 5209: 5209: basic_string& 5209: _M_append(const _CharT* __s, size_type __n); 5209: 5209: public: 5209: # 2278 "/usr/include/c++/10/bits/basic_string.h" 3 5209: size_type 5209: copy(_CharT* __s, size_type __n, size_type __pos = 0) const; 5209: # 2288 "/usr/include/c++/10/bits/basic_string.h" 3 5209: void 5209: swap(basic_string& __s) noexcept; 5209: # 2298 "/usr/include/c++/10/bits/basic_string.h" 3 5209: const _CharT* 5209: c_str() const noexcept 5209: { return _M_data(); } 5209: # 2310 "/usr/include/c++/10/bits/basic_string.h" 3 5209: const _CharT* 5209: data() const noexcept 5209: { return _M_data(); } 5209: # 2329 "/usr/include/c++/10/bits/basic_string.h" 3 5209: allocator_type 5209: get_allocator() const noexcept 5209: { return _M_get_allocator(); } 5209: # 2345 "/usr/include/c++/10/bits/basic_string.h" 3 5209: size_type 5209: find(const _CharT* __s, size_type __pos, size_type __n) const 5209: noexcept; 5209: # 2359 "/usr/include/c++/10/bits/basic_string.h" 3 5209: size_type 5209: find(const basic_string& __str, size_type __pos = 0) const 5209: noexcept 5209: { return this->find(__str.data(), __pos, __str.size()); } 5209: # 2391 "/usr/include/c++/10/bits/basic_string.h" 3 5209: size_type 5209: find(const _CharT* __s, size_type __pos = 0) const noexcept 5209: { 5209: ; 5209: return this->find(__s, __pos, traits_type::length(__s)); 5209: } 5209: # 2408 "/usr/include/c++/10/bits/basic_string.h" 3 5209: size_type 5209: find(_CharT __c, size_type __pos = 0) const noexcept; 5209: # 2421 "/usr/include/c++/10/bits/basic_string.h" 3 5209: size_type 5209: rfind(const basic_string& __str, size_type __pos = npos) const 5209: noexcept 5209: { return this->rfind(__str.data(), __pos, __str.size()); } 5209: # 2455 "/usr/include/c++/10/bits/basic_string.h" 3 5209: size_type 5209: rfind(const _CharT* __s, size_type __pos, size_type __n) const 5209: noexcept; 5209: # 2469 "/usr/include/c++/10/bits/basic_string.h" 3 5209: size_type 5209: rfind(const _CharT* __s, size_type __pos = npos) const 5209: { 5209: ; 5209: return this->rfind(__s, __pos, traits_type::length(__s)); 5209: } 5209: # 2486 "/usr/include/c++/10/bits/basic_string.h" 3 5209: size_type 5209: rfind(_CharT __c, size_type __pos = npos) const noexcept; 5209: # 2500 "/usr/include/c++/10/bits/basic_string.h" 3 5209: size_type 5209: find_first_of(const basic_string& __str, size_type __pos = 0) const 5209: noexcept 5209: { return this->find_first_of(__str.data(), __pos, __str.size()); } 5209: # 2535 "/usr/include/c++/10/bits/basic_string.h" 3 5209: size_type 5209: find_first_of(const _CharT* __s, size_type __pos, size_type __n) const 5209: noexcept; 5209: # 2549 "/usr/include/c++/10/bits/basic_string.h" 3 5209: size_type 5209: find_first_of(const _CharT* __s, size_type __pos = 0) const 5209: noexcept 5209: { 5209: ; 5209: return this->find_first_of(__s, __pos, traits_type::length(__s)); 5209: } 5209: # 2569 "/usr/include/c++/10/bits/basic_string.h" 3 5209: size_type 5209: find_first_of(_CharT __c, size_type __pos = 0) const noexcept 5209: { return this->find(__c, __pos); } 5209: # 2584 "/usr/include/c++/10/bits/basic_string.h" 3 5209: size_type 5209: find_last_of(const basic_string& __str, size_type __pos = npos) const 5209: noexcept 5209: { return this->find_last_of(__str.data(), __pos, __str.size()); } 5209: # 2619 "/usr/include/c++/10/bits/basic_string.h" 3 5209: size_type 5209: find_last_of(const _CharT* __s, size_type __pos, size_type __n) const 5209: noexcept; 5209: # 2633 "/usr/include/c++/10/bits/basic_string.h" 3 5209: size_type 5209: find_last_of(const _CharT* __s, size_type __pos = npos) const 5209: noexcept 5209: { 5209: ; 5209: return this->find_last_of(__s, __pos, traits_type::length(__s)); 5209: } 5209: # 2653 "/usr/include/c++/10/bits/basic_string.h" 3 5209: size_type 5209: find_last_of(_CharT __c, size_type __pos = npos) const noexcept 5209: { return this->rfind(__c, __pos); } 5209: # 2667 "/usr/include/c++/10/bits/basic_string.h" 3 5209: size_type 5209: find_first_not_of(const basic_string& __str, size_type __pos = 0) const 5209: noexcept 5209: { return this->find_first_not_of(__str.data(), __pos, __str.size()); } 5209: # 2702 "/usr/include/c++/10/bits/basic_string.h" 3 5209: size_type 5209: find_first_not_of(const _CharT* __s, size_type __pos, 5209: size_type __n) const noexcept; 5209: # 2716 "/usr/include/c++/10/bits/basic_string.h" 3 5209: size_type 5209: find_first_not_of(const _CharT* __s, size_type __pos = 0) const 5209: noexcept 5209: { 5209: ; 5209: return this->find_first_not_of(__s, __pos, traits_type::length(__s)); 5209: } 5209: # 2734 "/usr/include/c++/10/bits/basic_string.h" 3 5209: size_type 5209: find_first_not_of(_CharT __c, size_type __pos = 0) const 5209: noexcept; 5209: # 2749 "/usr/include/c++/10/bits/basic_string.h" 3 5209: size_type 5209: find_last_not_of(const basic_string& __str, size_type __pos = npos) const 5209: noexcept 5209: { return this->find_last_not_of(__str.data(), __pos, __str.size()); } 5209: # 2784 "/usr/include/c++/10/bits/basic_string.h" 3 5209: size_type 5209: find_last_not_of(const _CharT* __s, size_type __pos, 5209: size_type __n) const noexcept; 5209: # 2798 "/usr/include/c++/10/bits/basic_string.h" 3 5209: size_type 5209: find_last_not_of(const _CharT* __s, size_type __pos = npos) const 5209: noexcept 5209: { 5209: ; 5209: return this->find_last_not_of(__s, __pos, traits_type::length(__s)); 5209: } 5209: # 2816 "/usr/include/c++/10/bits/basic_string.h" 3 5209: size_type 5209: find_last_not_of(_CharT __c, size_type __pos = npos) const 5209: noexcept; 5209: # 2832 "/usr/include/c++/10/bits/basic_string.h" 3 5209: basic_string 5209: substr(size_type __pos = 0, size_type __n = npos) const 5209: { return basic_string(*this, 5209: _M_check(__pos, "basic_string::substr"), __n); } 5209: # 2851 "/usr/include/c++/10/bits/basic_string.h" 3 5209: int 5209: compare(const basic_string& __str) const 5209: { 5209: const size_type __size = this->size(); 5209: const size_type __osize = __str.size(); 5209: const size_type __len = std::min(__size, __osize); 5209: 5209: int __r = traits_type::compare(_M_data(), __str.data(), __len); 5209: if (!__r) 5209: __r = _S_compare(__size, __osize); 5209: return __r; 5209: } 5209: # 2944 "/usr/include/c++/10/bits/basic_string.h" 3 5209: int 5209: compare(size_type __pos, size_type __n, const basic_string& __str) const; 5209: # 2970 "/usr/include/c++/10/bits/basic_string.h" 3 5209: int 5209: compare(size_type __pos1, size_type __n1, const basic_string& __str, 5209: size_type __pos2, size_type __n2 = npos) const; 5209: # 2988 "/usr/include/c++/10/bits/basic_string.h" 3 5209: int 5209: compare(const _CharT* __s) const noexcept; 5209: # 3012 "/usr/include/c++/10/bits/basic_string.h" 3 5209: int 5209: compare(size_type __pos, size_type __n1, const _CharT* __s) const; 5209: # 3039 "/usr/include/c++/10/bits/basic_string.h" 3 5209: int 5209: compare(size_type __pos, size_type __n1, const _CharT* __s, 5209: size_type __n2) const; 5209: # 3070 "/usr/include/c++/10/bits/basic_string.h" 3 5209: template friend class basic_stringbuf; 5209: }; 5209: } 5209: # 6020 "/usr/include/c++/10/bits/basic_string.h" 3 5209: template 5209: basic_string<_CharT, _Traits, _Alloc> 5209: operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 5209: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 5209: { 5209: basic_string<_CharT, _Traits, _Alloc> __str(__lhs); 5209: __str.append(__rhs); 5209: return __str; 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: basic_string<_CharT,_Traits,_Alloc> 5209: operator+(const _CharT* __lhs, 5209: const basic_string<_CharT,_Traits,_Alloc>& __rhs); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: basic_string<_CharT,_Traits,_Alloc> 5209: operator+(_CharT __lhs, const basic_string<_CharT,_Traits,_Alloc>& __rhs); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: inline basic_string<_CharT, _Traits, _Alloc> 5209: operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 5209: const _CharT* __rhs) 5209: { 5209: basic_string<_CharT, _Traits, _Alloc> __str(__lhs); 5209: __str.append(__rhs); 5209: return __str; 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: inline basic_string<_CharT, _Traits, _Alloc> 5209: operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, _CharT __rhs) 5209: { 5209: typedef basic_string<_CharT, _Traits, _Alloc> __string_type; 5209: typedef typename __string_type::size_type __size_type; 5209: __string_type __str(__lhs); 5209: __str.append(__size_type(1), __rhs); 5209: return __str; 5209: } 5209: 5209: 5209: template 5209: inline basic_string<_CharT, _Traits, _Alloc> 5209: operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs, 5209: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 5209: { return std::move(__lhs.append(__rhs)); } 5209: 5209: template 5209: inline basic_string<_CharT, _Traits, _Alloc> 5209: operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 5209: basic_string<_CharT, _Traits, _Alloc>&& __rhs) 5209: { return std::move(__rhs.insert(0, __lhs)); } 5209: 5209: template 5209: inline basic_string<_CharT, _Traits, _Alloc> 5209: operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs, 5209: basic_string<_CharT, _Traits, _Alloc>&& __rhs) 5209: { 5209: 5209: using _Alloc_traits = allocator_traits<_Alloc>; 5209: bool __use_rhs = false; 5209: if (typename _Alloc_traits::is_always_equal{}) 5209: __use_rhs = true; 5209: else if (__lhs.get_allocator() == __rhs.get_allocator()) 5209: __use_rhs = true; 5209: if (__use_rhs) 5209: 5209: { 5209: const auto __size = __lhs.size() + __rhs.size(); 5209: if (__size > __lhs.capacity() && __size <= __rhs.capacity()) 5209: return std::move(__rhs.insert(0, __lhs)); 5209: } 5209: return std::move(__lhs.append(__rhs)); 5209: } 5209: 5209: template 5209: inline basic_string<_CharT, _Traits, _Alloc> 5209: operator+(const _CharT* __lhs, 5209: basic_string<_CharT, _Traits, _Alloc>&& __rhs) 5209: { return std::move(__rhs.insert(0, __lhs)); } 5209: 5209: template 5209: inline basic_string<_CharT, _Traits, _Alloc> 5209: operator+(_CharT __lhs, 5209: basic_string<_CharT, _Traits, _Alloc>&& __rhs) 5209: { return std::move(__rhs.insert(0, 1, __lhs)); } 5209: 5209: template 5209: inline basic_string<_CharT, _Traits, _Alloc> 5209: operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs, 5209: const _CharT* __rhs) 5209: { return std::move(__lhs.append(__rhs)); } 5209: 5209: template 5209: inline basic_string<_CharT, _Traits, _Alloc> 5209: operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs, 5209: _CharT __rhs) 5209: { return std::move(__lhs.append(1, __rhs)); } 5209: # 6151 "/usr/include/c++/10/bits/basic_string.h" 3 5209: template 5209: inline bool 5209: operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 5209: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 5209: noexcept 5209: { return __lhs.compare(__rhs) == 0; } 5209: 5209: template 5209: inline 5209: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, bool>::__type 5209: operator==(const basic_string<_CharT>& __lhs, 5209: const basic_string<_CharT>& __rhs) noexcept 5209: { return (__lhs.size() == __rhs.size() 5209: && !std::char_traits<_CharT>::compare(__lhs.data(), __rhs.data(), 5209: __lhs.size())); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: inline bool 5209: operator==(const _CharT* __lhs, 5209: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 5209: { return __rhs.compare(__lhs) == 0; } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: inline bool 5209: operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 5209: const _CharT* __rhs) 5209: { return __lhs.compare(__rhs) == 0; } 5209: # 6198 "/usr/include/c++/10/bits/basic_string.h" 3 5209: template 5209: inline bool 5209: operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 5209: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 5209: noexcept 5209: { return !(__lhs == __rhs); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: inline bool 5209: operator!=(const _CharT* __lhs, 5209: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 5209: { return !(__lhs == __rhs); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: inline bool 5209: operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 5209: const _CharT* __rhs) 5209: { return !(__lhs == __rhs); } 5209: # 6236 "/usr/include/c++/10/bits/basic_string.h" 3 5209: template 5209: inline bool 5209: operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 5209: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 5209: noexcept 5209: { return __lhs.compare(__rhs) < 0; } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: inline bool 5209: operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 5209: const _CharT* __rhs) 5209: { return __lhs.compare(__rhs) < 0; } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: inline bool 5209: operator<(const _CharT* __lhs, 5209: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 5209: { return __rhs.compare(__lhs) > 0; } 5209: # 6274 "/usr/include/c++/10/bits/basic_string.h" 3 5209: template 5209: inline bool 5209: operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 5209: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 5209: noexcept 5209: { return __lhs.compare(__rhs) > 0; } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: inline bool 5209: operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 5209: const _CharT* __rhs) 5209: { return __lhs.compare(__rhs) > 0; } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: inline bool 5209: operator>(const _CharT* __lhs, 5209: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 5209: { return __rhs.compare(__lhs) < 0; } 5209: # 6312 "/usr/include/c++/10/bits/basic_string.h" 3 5209: template 5209: inline bool 5209: operator<=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 5209: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 5209: noexcept 5209: { return __lhs.compare(__rhs) <= 0; } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: inline bool 5209: operator<=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 5209: const _CharT* __rhs) 5209: { return __lhs.compare(__rhs) <= 0; } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: inline bool 5209: operator<=(const _CharT* __lhs, 5209: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 5209: { return __rhs.compare(__lhs) >= 0; } 5209: # 6350 "/usr/include/c++/10/bits/basic_string.h" 3 5209: template 5209: inline bool 5209: operator>=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 5209: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 5209: noexcept 5209: { return __lhs.compare(__rhs) >= 0; } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: inline bool 5209: operator>=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 5209: const _CharT* __rhs) 5209: { return __lhs.compare(__rhs) >= 0; } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: inline bool 5209: operator>=(const _CharT* __lhs, 5209: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 5209: { return __rhs.compare(__lhs) <= 0; } 5209: # 6388 "/usr/include/c++/10/bits/basic_string.h" 3 5209: template 5209: inline void 5209: swap(basic_string<_CharT, _Traits, _Alloc>& __lhs, 5209: basic_string<_CharT, _Traits, _Alloc>& __rhs) 5209: noexcept(noexcept(__lhs.swap(__rhs))) 5209: { __lhs.swap(__rhs); } 5209: # 6408 "/usr/include/c++/10/bits/basic_string.h" 3 5209: template 5209: basic_istream<_CharT, _Traits>& 5209: operator>>(basic_istream<_CharT, _Traits>& __is, 5209: basic_string<_CharT, _Traits, _Alloc>& __str); 5209: 5209: template<> 5209: basic_istream& 5209: operator>>(basic_istream& __is, basic_string& __str); 5209: # 6426 "/usr/include/c++/10/bits/basic_string.h" 3 5209: template 5209: inline basic_ostream<_CharT, _Traits>& 5209: operator<<(basic_ostream<_CharT, _Traits>& __os, 5209: const basic_string<_CharT, _Traits, _Alloc>& __str) 5209: { 5209: 5209: 5209: return __ostream_insert(__os, __str.data(), __str.size()); 5209: } 5209: # 6449 "/usr/include/c++/10/bits/basic_string.h" 3 5209: template 5209: basic_istream<_CharT, _Traits>& 5209: getline(basic_istream<_CharT, _Traits>& __is, 5209: basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim); 5209: # 6466 "/usr/include/c++/10/bits/basic_string.h" 3 5209: template 5209: inline basic_istream<_CharT, _Traits>& 5209: getline(basic_istream<_CharT, _Traits>& __is, 5209: basic_string<_CharT, _Traits, _Alloc>& __str) 5209: { return std::getline(__is, __str, __is.widen('\n')); } 5209: 5209: 5209: 5209: template 5209: inline basic_istream<_CharT, _Traits>& 5209: getline(basic_istream<_CharT, _Traits>&& __is, 5209: basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim) 5209: { return std::getline(__is, __str, __delim); } 5209: 5209: 5209: template 5209: inline basic_istream<_CharT, _Traits>& 5209: getline(basic_istream<_CharT, _Traits>&& __is, 5209: basic_string<_CharT, _Traits, _Alloc>& __str) 5209: { return std::getline(__is, __str); } 5209: 5209: 5209: template<> 5209: basic_istream& 5209: getline(basic_istream& __in, basic_string& __str, 5209: char __delim); 5209: 5209: 5209: template<> 5209: basic_istream& 5209: getline(basic_istream& __in, basic_string& __str, 5209: wchar_t __delim); 5209: 5209: 5209: 5209: } 5209: 5209: 5209: 5209: # 1 "/usr/include/c++/10/ext/string_conversions.h" 1 3 5209: # 32 "/usr/include/c++/10/ext/string_conversions.h" 3 5209: 5209: # 33 "/usr/include/c++/10/ext/string_conversions.h" 3 5209: # 41 "/usr/include/c++/10/ext/string_conversions.h" 3 5209: # 1 "/usr/include/c++/10/cstdlib" 1 3 5209: # 39 "/usr/include/c++/10/cstdlib" 3 5209: 5209: # 40 "/usr/include/c++/10/cstdlib" 3 5209: # 75 "/usr/include/c++/10/cstdlib" 3 5209: # 1 "/usr/include/stdlib.h" 1 3 4 5209: # 25 "/usr/include/stdlib.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/libc-header-start.h" 1 3 4 5209: # 26 "/usr/include/stdlib.h" 2 3 4 5209: 5209: 5209: 5209: 5209: 5209: # 1 "/usr/lib/gcc/aarch64-linux-gnu/10/include/stddef.h" 1 3 4 5209: # 32 "/usr/include/stdlib.h" 2 3 4 5209: 5209: extern "C" { 5209: 5209: 5209: 5209: 5209: 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/waitflags.h" 1 3 4 5209: # 52 "/usr/include/aarch64-linux-gnu/bits/waitflags.h" 3 4 5209: typedef enum 5209: { 5209: P_ALL, 5209: P_PID, 5209: P_PGID 5209: } idtype_t; 5209: # 40 "/usr/include/stdlib.h" 2 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/waitstatus.h" 1 3 4 5209: # 41 "/usr/include/stdlib.h" 2 3 4 5209: # 58 "/usr/include/stdlib.h" 3 4 5209: typedef struct 5209: { 5209: int quot; 5209: int rem; 5209: } div_t; 5209: 5209: 5209: 5209: typedef struct 5209: { 5209: long int quot; 5209: long int rem; 5209: } ldiv_t; 5209: 5209: 5209: 5209: 5209: 5209: __extension__ typedef struct 5209: { 5209: long long int quot; 5209: long long int rem; 5209: } lldiv_t; 5209: # 97 "/usr/include/stdlib.h" 3 4 5209: extern size_t __ctype_get_mb_cur_max (void) throw () __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: extern double atof (const char *__nptr) 5209: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 5209: 5209: extern int atoi (const char *__nptr) 5209: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 5209: 5209: extern long int atol (const char *__nptr) 5209: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: __extension__ extern long long int atoll (const char *__nptr) 5209: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: extern double strtod (const char *__restrict __nptr, 5209: char **__restrict __endptr) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: 5209: extern float strtof (const char *__restrict __nptr, 5209: char **__restrict __endptr) throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: extern long double strtold (const char *__restrict __nptr, 5209: char **__restrict __endptr) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: # 140 "/usr/include/stdlib.h" 3 4 5209: extern _Float32 strtof32 (const char *__restrict __nptr, 5209: char **__restrict __endptr) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: 5209: extern _Float64 strtof64 (const char *__restrict __nptr, 5209: char **__restrict __endptr) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: 5209: extern _Float128 strtof128 (const char *__restrict __nptr, 5209: char **__restrict __endptr) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: 5209: extern _Float32x strtof32x (const char *__restrict __nptr, 5209: char **__restrict __endptr) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: 5209: extern _Float64x strtof64x (const char *__restrict __nptr, 5209: char **__restrict __endptr) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: # 176 "/usr/include/stdlib.h" 3 4 5209: extern long int strtol (const char *__restrict __nptr, 5209: char **__restrict __endptr, int __base) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: extern unsigned long int strtoul (const char *__restrict __nptr, 5209: char **__restrict __endptr, int __base) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: 5209: __extension__ 5209: extern long long int strtoq (const char *__restrict __nptr, 5209: char **__restrict __endptr, int __base) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: __extension__ 5209: extern unsigned long long int strtouq (const char *__restrict __nptr, 5209: char **__restrict __endptr, int __base) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: 5209: 5209: __extension__ 5209: extern long long int strtoll (const char *__restrict __nptr, 5209: char **__restrict __endptr, int __base) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: __extension__ 5209: extern unsigned long long int strtoull (const char *__restrict __nptr, 5209: char **__restrict __endptr, int __base) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: 5209: 5209: extern int strfromd (char *__dest, size_t __size, const char *__format, 5209: double __f) 5209: throw () __attribute__ ((__nonnull__ (3))); 5209: 5209: extern int strfromf (char *__dest, size_t __size, const char *__format, 5209: float __f) 5209: throw () __attribute__ ((__nonnull__ (3))); 5209: 5209: extern int strfroml (char *__dest, size_t __size, const char *__format, 5209: long double __f) 5209: throw () __attribute__ ((__nonnull__ (3))); 5209: # 232 "/usr/include/stdlib.h" 3 4 5209: extern int strfromf32 (char *__dest, size_t __size, const char * __format, 5209: _Float32 __f) 5209: throw () __attribute__ ((__nonnull__ (3))); 5209: 5209: 5209: 5209: extern int strfromf64 (char *__dest, size_t __size, const char * __format, 5209: _Float64 __f) 5209: throw () __attribute__ ((__nonnull__ (3))); 5209: 5209: 5209: 5209: extern int strfromf128 (char *__dest, size_t __size, const char * __format, 5209: _Float128 __f) 5209: throw () __attribute__ ((__nonnull__ (3))); 5209: 5209: 5209: 5209: extern int strfromf32x (char *__dest, size_t __size, const char * __format, 5209: _Float32x __f) 5209: throw () __attribute__ ((__nonnull__ (3))); 5209: 5209: 5209: 5209: extern int strfromf64x (char *__dest, size_t __size, const char * __format, 5209: _Float64x __f) 5209: throw () __attribute__ ((__nonnull__ (3))); 5209: # 274 "/usr/include/stdlib.h" 3 4 5209: extern long int strtol_l (const char *__restrict __nptr, 5209: char **__restrict __endptr, int __base, 5209: locale_t __loc) throw () __attribute__ ((__nonnull__ (1, 4))); 5209: 5209: extern unsigned long int strtoul_l (const char *__restrict __nptr, 5209: char **__restrict __endptr, 5209: int __base, locale_t __loc) 5209: throw () __attribute__ ((__nonnull__ (1, 4))); 5209: 5209: __extension__ 5209: extern long long int strtoll_l (const char *__restrict __nptr, 5209: char **__restrict __endptr, int __base, 5209: locale_t __loc) 5209: throw () __attribute__ ((__nonnull__ (1, 4))); 5209: 5209: __extension__ 5209: extern unsigned long long int strtoull_l (const char *__restrict __nptr, 5209: char **__restrict __endptr, 5209: int __base, locale_t __loc) 5209: throw () __attribute__ ((__nonnull__ (1, 4))); 5209: 5209: extern double strtod_l (const char *__restrict __nptr, 5209: char **__restrict __endptr, locale_t __loc) 5209: throw () __attribute__ ((__nonnull__ (1, 3))); 5209: 5209: extern float strtof_l (const char *__restrict __nptr, 5209: char **__restrict __endptr, locale_t __loc) 5209: throw () __attribute__ ((__nonnull__ (1, 3))); 5209: 5209: extern long double strtold_l (const char *__restrict __nptr, 5209: char **__restrict __endptr, 5209: locale_t __loc) 5209: throw () __attribute__ ((__nonnull__ (1, 3))); 5209: # 316 "/usr/include/stdlib.h" 3 4 5209: extern _Float32 strtof32_l (const char *__restrict __nptr, 5209: char **__restrict __endptr, 5209: locale_t __loc) 5209: throw () __attribute__ ((__nonnull__ (1, 3))); 5209: 5209: 5209: 5209: extern _Float64 strtof64_l (const char *__restrict __nptr, 5209: char **__restrict __endptr, 5209: locale_t __loc) 5209: throw () __attribute__ ((__nonnull__ (1, 3))); 5209: 5209: 5209: 5209: extern _Float128 strtof128_l (const char *__restrict __nptr, 5209: char **__restrict __endptr, 5209: locale_t __loc) 5209: throw () __attribute__ ((__nonnull__ (1, 3))); 5209: 5209: 5209: 5209: extern _Float32x strtof32x_l (const char *__restrict __nptr, 5209: char **__restrict __endptr, 5209: locale_t __loc) 5209: throw () __attribute__ ((__nonnull__ (1, 3))); 5209: 5209: 5209: 5209: extern _Float64x strtof64x_l (const char *__restrict __nptr, 5209: char **__restrict __endptr, 5209: locale_t __loc) 5209: throw () __attribute__ ((__nonnull__ (1, 3))); 5209: # 360 "/usr/include/stdlib.h" 3 4 5209: extern __inline __attribute__ ((__gnu_inline__)) int 5209: __attribute__ ((__leaf__)) atoi (const char *__nptr) throw () 5209: { 5209: return (int) strtol (__nptr, (char **) __null, 10); 5209: } 5209: extern __inline __attribute__ ((__gnu_inline__)) long int 5209: __attribute__ ((__leaf__)) atol (const char *__nptr) throw () 5209: { 5209: return strtol (__nptr, (char **) __null, 10); 5209: } 5209: 5209: 5209: __extension__ extern __inline __attribute__ ((__gnu_inline__)) long long int 5209: __attribute__ ((__leaf__)) atoll (const char *__nptr) throw () 5209: { 5209: return strtoll (__nptr, (char **) __null, 10); 5209: } 5209: # 385 "/usr/include/stdlib.h" 3 4 5209: extern char *l64a (long int __n) throw () __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: extern long int a64l (const char *__s) 5209: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: # 1 "/usr/include/aarch64-linux-gnu/sys/types.h" 1 3 4 5209: # 27 "/usr/include/aarch64-linux-gnu/sys/types.h" 3 4 5209: extern "C" { 5209: 5209: 5209: 5209: 5209: 5209: typedef __u_char u_char; 5209: typedef __u_short u_short; 5209: typedef __u_int u_int; 5209: typedef __u_long u_long; 5209: typedef __quad_t quad_t; 5209: typedef __u_quad_t u_quad_t; 5209: typedef __fsid_t fsid_t; 5209: 5209: 5209: typedef __loff_t loff_t; 5209: 5209: 5209: 5209: 5209: typedef __ino_t ino_t; 5209: 5209: 5209: 5209: 5209: 5209: 5209: typedef __ino64_t ino64_t; 5209: 5209: 5209: 5209: 5209: typedef __dev_t dev_t; 5209: 5209: 5209: 5209: 5209: typedef __gid_t gid_t; 5209: 5209: 5209: 5209: 5209: typedef __mode_t mode_t; 5209: 5209: 5209: 5209: 5209: typedef __nlink_t nlink_t; 5209: 5209: 5209: 5209: 5209: typedef __uid_t uid_t; 5209: 5209: 5209: 5209: 5209: 5209: typedef __off_t off_t; 5209: 5209: 5209: 5209: 5209: 5209: 5209: typedef __off64_t off64_t; 5209: # 103 "/usr/include/aarch64-linux-gnu/sys/types.h" 3 4 5209: typedef __id_t id_t; 5209: 5209: 5209: 5209: 5209: typedef __ssize_t ssize_t; 5209: 5209: 5209: 5209: 5209: 5209: typedef __daddr_t daddr_t; 5209: typedef __caddr_t caddr_t; 5209: 5209: 5209: 5209: 5209: 5209: typedef __key_t key_t; 5209: # 134 "/usr/include/aarch64-linux-gnu/sys/types.h" 3 4 5209: typedef __useconds_t useconds_t; 5209: 5209: 5209: 5209: typedef __suseconds_t suseconds_t; 5209: 5209: 5209: 5209: 5209: 5209: # 1 "/usr/lib/gcc/aarch64-linux-gnu/10/include/stddef.h" 1 3 4 5209: # 145 "/usr/include/aarch64-linux-gnu/sys/types.h" 2 3 4 5209: 5209: 5209: 5209: typedef unsigned long int ulong; 5209: typedef unsigned short int ushort; 5209: typedef unsigned int uint; 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: typedef __uint8_t u_int8_t; 5209: typedef __uint16_t u_int16_t; 5209: typedef __uint32_t u_int32_t; 5209: typedef __uint64_t u_int64_t; 5209: 5209: 5209: typedef int register_t __attribute__ ((__mode__ (__word__))); 5209: # 179 "/usr/include/aarch64-linux-gnu/sys/types.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/sys/select.h" 1 3 4 5209: # 30 "/usr/include/aarch64-linux-gnu/sys/select.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/select.h" 1 3 4 5209: # 31 "/usr/include/aarch64-linux-gnu/sys/select.h" 2 3 4 5209: 5209: 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/types/sigset_t.h" 1 3 4 5209: 5209: 5209: 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/types/__sigset_t.h" 1 3 4 5209: 5209: 5209: 5209: 5209: typedef struct 5209: { 5209: unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))]; 5209: } __sigset_t; 5209: # 5 "/usr/include/aarch64-linux-gnu/bits/types/sigset_t.h" 2 3 4 5209: 5209: 5209: typedef __sigset_t sigset_t; 5209: # 34 "/usr/include/aarch64-linux-gnu/sys/select.h" 2 3 4 5209: # 49 "/usr/include/aarch64-linux-gnu/sys/select.h" 3 4 5209: typedef long int __fd_mask; 5209: # 59 "/usr/include/aarch64-linux-gnu/sys/select.h" 3 4 5209: typedef struct 5209: { 5209: 5209: 5209: 5209: __fd_mask fds_bits[1024 / (8 * (int) sizeof (__fd_mask))]; 5209: 5209: 5209: 5209: 5209: 5209: } fd_set; 5209: 5209: 5209: 5209: 5209: 5209: 5209: typedef __fd_mask fd_mask; 5209: # 91 "/usr/include/aarch64-linux-gnu/sys/select.h" 3 4 5209: extern "C" { 5209: # 101 "/usr/include/aarch64-linux-gnu/sys/select.h" 3 4 5209: extern int select (int __nfds, fd_set *__restrict __readfds, 5209: fd_set *__restrict __writefds, 5209: fd_set *__restrict __exceptfds, 5209: struct timeval *__restrict __timeout); 5209: # 113 "/usr/include/aarch64-linux-gnu/sys/select.h" 3 4 5209: extern int pselect (int __nfds, fd_set *__restrict __readfds, 5209: fd_set *__restrict __writefds, 5209: fd_set *__restrict __exceptfds, 5209: const struct timespec *__restrict __timeout, 5209: const __sigset_t *__restrict __sigmask); 5209: 5209: 5209: 5209: 5209: 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/select2.h" 1 3 4 5209: # 24 "/usr/include/aarch64-linux-gnu/bits/select2.h" 3 4 5209: extern long int __fdelt_chk (long int __d); 5209: extern long int __fdelt_warn (long int __d) 5209: __attribute__((__warning__ ("bit outside of fd_set selected"))); 5209: # 124 "/usr/include/aarch64-linux-gnu/sys/select.h" 2 3 4 5209: 5209: 5209: } 5209: # 180 "/usr/include/aarch64-linux-gnu/sys/types.h" 2 3 4 5209: 5209: 5209: 5209: 5209: 5209: typedef __blksize_t blksize_t; 5209: 5209: 5209: 5209: 5209: 5209: 5209: typedef __blkcnt_t blkcnt_t; 5209: 5209: 5209: 5209: typedef __fsblkcnt_t fsblkcnt_t; 5209: 5209: 5209: 5209: typedef __fsfilcnt_t fsfilcnt_t; 5209: # 219 "/usr/include/aarch64-linux-gnu/sys/types.h" 3 4 5209: typedef __blkcnt64_t blkcnt64_t; 5209: typedef __fsblkcnt64_t fsblkcnt64_t; 5209: typedef __fsfilcnt64_t fsfilcnt64_t; 5209: # 230 "/usr/include/aarch64-linux-gnu/sys/types.h" 3 4 5209: } 5209: # 395 "/usr/include/stdlib.h" 2 3 4 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern long int random (void) throw (); 5209: 5209: 5209: extern void srandom (unsigned int __seed) throw (); 5209: 5209: 5209: 5209: 5209: 5209: extern char *initstate (unsigned int __seed, char *__statebuf, 5209: size_t __statelen) throw () __attribute__ ((__nonnull__ (2))); 5209: 5209: 5209: 5209: extern char *setstate (char *__statebuf) throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: struct random_data 5209: { 5209: int32_t *fptr; 5209: int32_t *rptr; 5209: int32_t *state; 5209: int rand_type; 5209: int rand_deg; 5209: int rand_sep; 5209: int32_t *end_ptr; 5209: }; 5209: 5209: extern int random_r (struct random_data *__restrict __buf, 5209: int32_t *__restrict __result) throw () __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: extern int srandom_r (unsigned int __seed, struct random_data *__buf) 5209: throw () __attribute__ ((__nonnull__ (2))); 5209: 5209: extern int initstate_r (unsigned int __seed, char *__restrict __statebuf, 5209: size_t __statelen, 5209: struct random_data *__restrict __buf) 5209: throw () __attribute__ ((__nonnull__ (2, 4))); 5209: 5209: extern int setstate_r (char *__restrict __statebuf, 5209: struct random_data *__restrict __buf) 5209: throw () __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: 5209: 5209: 5209: extern int rand (void) throw (); 5209: 5209: extern void srand (unsigned int __seed) throw (); 5209: 5209: 5209: 5209: extern int rand_r (unsigned int *__seed) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern double drand48 (void) throw (); 5209: extern double erand48 (unsigned short int __xsubi[3]) throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: extern long int lrand48 (void) throw (); 5209: extern long int nrand48 (unsigned short int __xsubi[3]) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: extern long int mrand48 (void) throw (); 5209: extern long int jrand48 (unsigned short int __xsubi[3]) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: extern void srand48 (long int __seedval) throw (); 5209: extern unsigned short int *seed48 (unsigned short int __seed16v[3]) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: extern void lcong48 (unsigned short int __param[7]) throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: 5209: 5209: 5209: struct drand48_data 5209: { 5209: unsigned short int __x[3]; 5209: unsigned short int __old_x[3]; 5209: unsigned short int __c; 5209: unsigned short int __init; 5209: __extension__ unsigned long long int __a; 5209: 5209: }; 5209: 5209: 5209: extern int drand48_r (struct drand48_data *__restrict __buffer, 5209: double *__restrict __result) throw () __attribute__ ((__nonnull__ (1, 2))); 5209: extern int erand48_r (unsigned short int __xsubi[3], 5209: struct drand48_data *__restrict __buffer, 5209: double *__restrict __result) throw () __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: extern int lrand48_r (struct drand48_data *__restrict __buffer, 5209: long int *__restrict __result) 5209: throw () __attribute__ ((__nonnull__ (1, 2))); 5209: extern int nrand48_r (unsigned short int __xsubi[3], 5209: struct drand48_data *__restrict __buffer, 5209: long int *__restrict __result) 5209: throw () __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: extern int mrand48_r (struct drand48_data *__restrict __buffer, 5209: long int *__restrict __result) 5209: throw () __attribute__ ((__nonnull__ (1, 2))); 5209: extern int jrand48_r (unsigned short int __xsubi[3], 5209: struct drand48_data *__restrict __buffer, 5209: long int *__restrict __result) 5209: throw () __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: extern int srand48_r (long int __seedval, struct drand48_data *__buffer) 5209: throw () __attribute__ ((__nonnull__ (2))); 5209: 5209: extern int seed48_r (unsigned short int __seed16v[3], 5209: struct drand48_data *__buffer) throw () __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: extern int lcong48_r (unsigned short int __param[7], 5209: struct drand48_data *__buffer) 5209: throw () __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: 5209: 5209: extern void *malloc (size_t __size) throw () __attribute__ ((__malloc__)) 5209: __attribute__ ((__alloc_size__ (1))) __attribute__ ((__warn_unused_result__)); 5209: 5209: extern void *calloc (size_t __nmemb, size_t __size) 5209: throw () __attribute__ ((__malloc__)) __attribute__ ((__alloc_size__ (1, 2))) __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern void *realloc (void *__ptr, size_t __size) 5209: throw () __attribute__ ((__warn_unused_result__)) __attribute__ ((__alloc_size__ (2))); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern void *reallocarray (void *__ptr, size_t __nmemb, size_t __size) 5209: throw () __attribute__ ((__warn_unused_result__)) 5209: __attribute__ ((__alloc_size__ (2, 3))); 5209: 5209: 5209: 5209: extern void free (void *__ptr) throw (); 5209: 5209: 5209: # 1 "/usr/include/alloca.h" 1 3 4 5209: # 24 "/usr/include/alloca.h" 3 4 5209: # 1 "/usr/lib/gcc/aarch64-linux-gnu/10/include/stddef.h" 1 3 4 5209: # 25 "/usr/include/alloca.h" 2 3 4 5209: 5209: extern "C" { 5209: 5209: 5209: 5209: 5209: 5209: extern void *alloca (size_t __size) throw (); 5209: 5209: 5209: 5209: 5209: 5209: } 5209: # 569 "/usr/include/stdlib.h" 2 3 4 5209: 5209: 5209: 5209: 5209: 5209: extern void *valloc (size_t __size) throw () __attribute__ ((__malloc__)) 5209: __attribute__ ((__alloc_size__ (1))) __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size) 5209: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: extern void *aligned_alloc (size_t __alignment, size_t __size) 5209: throw () __attribute__ ((__malloc__)) __attribute__ ((__alloc_size__ (2))) __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: extern void abort (void) throw () __attribute__ ((__noreturn__)); 5209: 5209: 5209: 5209: extern int atexit (void (*__func) (void)) throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: 5209: 5209: extern "C++" int at_quick_exit (void (*__func) (void)) 5209: throw () __asm ("at_quick_exit") __attribute__ ((__nonnull__ (1))); 5209: # 610 "/usr/include/stdlib.h" 3 4 5209: extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: 5209: 5209: 5209: extern void exit (int __status) throw () __attribute__ ((__noreturn__)); 5209: 5209: 5209: 5209: 5209: 5209: extern void quick_exit (int __status) throw () __attribute__ ((__noreturn__)); 5209: 5209: 5209: 5209: 5209: 5209: extern void _Exit (int __status) throw () __attribute__ ((__noreturn__)); 5209: 5209: 5209: 5209: 5209: extern char *getenv (const char *__name) throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: extern char *secure_getenv (const char *__name) 5209: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern int putenv (char *__string) throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: 5209: 5209: 5209: extern int setenv (const char *__name, const char *__value, int __replace) 5209: throw () __attribute__ ((__nonnull__ (2))); 5209: 5209: 5209: extern int unsetenv (const char *__name) throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern int clearenv (void) throw (); 5209: # 675 "/usr/include/stdlib.h" 3 4 5209: extern char *mktemp (char *__template) throw () __attribute__ ((__nonnull__ (1))); 5209: # 688 "/usr/include/stdlib.h" 3 4 5209: extern int mkstemp (char *__template) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 5209: # 698 "/usr/include/stdlib.h" 3 4 5209: extern int mkstemp64 (char *__template) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 5209: # 710 "/usr/include/stdlib.h" 3 4 5209: extern int mkstemps (char *__template, int __suffixlen) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 5209: # 720 "/usr/include/stdlib.h" 3 4 5209: extern int mkstemps64 (char *__template, int __suffixlen) 5209: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 5209: # 731 "/usr/include/stdlib.h" 3 4 5209: extern char *mkdtemp (char *__template) throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 5209: # 742 "/usr/include/stdlib.h" 3 4 5209: extern int mkostemp (char *__template, int __flags) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 5209: # 752 "/usr/include/stdlib.h" 3 4 5209: extern int mkostemp64 (char *__template, int __flags) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 5209: # 762 "/usr/include/stdlib.h" 3 4 5209: extern int mkostemps (char *__template, int __suffixlen, int __flags) 5209: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 5209: # 774 "/usr/include/stdlib.h" 3 4 5209: extern int mkostemps64 (char *__template, int __suffixlen, int __flags) 5209: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 5209: # 784 "/usr/include/stdlib.h" 3 4 5209: extern int system (const char *__command) __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: 5209: extern char *canonicalize_file_name (const char *__name) 5209: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 5209: # 800 "/usr/include/stdlib.h" 3 4 5209: extern char *realpath (const char *__restrict __name, 5209: char *__restrict __resolved) throw () __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: 5209: 5209: typedef int (*__compar_fn_t) (const void *, const void *); 5209: 5209: 5209: typedef __compar_fn_t comparison_fn_t; 5209: 5209: 5209: 5209: typedef int (*__compar_d_fn_t) (const void *, const void *, void *); 5209: 5209: 5209: 5209: 5209: extern void *bsearch (const void *__key, const void *__base, 5209: size_t __nmemb, size_t __size, __compar_fn_t __compar) 5209: __attribute__ ((__nonnull__ (1, 2, 5))) __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/stdlib-bsearch.h" 1 3 4 5209: # 19 "/usr/include/aarch64-linux-gnu/bits/stdlib-bsearch.h" 3 4 5209: extern __inline __attribute__ ((__gnu_inline__)) void * 5209: bsearch (const void *__key, const void *__base, size_t __nmemb, size_t __size, 5209: __compar_fn_t __compar) 5209: { 5209: size_t __l, __u, __idx; 5209: const void *__p; 5209: int __comparison; 5209: 5209: __l = 0; 5209: __u = __nmemb; 5209: while (__l < __u) 5209: { 5209: __idx = (__l + __u) / 2; 5209: __p = (void *) (((const char *) __base) + (__idx * __size)); 5209: __comparison = (*__compar) (__key, __p); 5209: if (__comparison < 0) 5209: __u = __idx; 5209: else if (__comparison > 0) 5209: __l = __idx + 1; 5209: else 5209: return (void *) __p; 5209: } 5209: 5209: return __null; 5209: } 5209: # 826 "/usr/include/stdlib.h" 2 3 4 5209: 5209: 5209: 5209: 5209: extern void qsort (void *__base, size_t __nmemb, size_t __size, 5209: __compar_fn_t __compar) __attribute__ ((__nonnull__ (1, 4))); 5209: 5209: extern void qsort_r (void *__base, size_t __nmemb, size_t __size, 5209: __compar_d_fn_t __compar, void *__arg) 5209: __attribute__ ((__nonnull__ (1, 4))); 5209: 5209: 5209: 5209: 5209: extern int abs (int __x) throw () __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); 5209: extern long int labs (long int __x) throw () __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: __extension__ extern long long int llabs (long long int __x) 5209: throw () __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern div_t div (int __numer, int __denom) 5209: throw () __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); 5209: extern ldiv_t ldiv (long int __numer, long int __denom) 5209: throw () __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: __extension__ extern lldiv_t lldiv (long long int __numer, 5209: long long int __denom) 5209: throw () __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); 5209: # 872 "/usr/include/stdlib.h" 3 4 5209: extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt, 5209: int *__restrict __sign) throw () __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt, 5209: int *__restrict __sign) throw () __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: extern char *gcvt (double __value, int __ndigit, char *__buf) 5209: throw () __attribute__ ((__nonnull__ (3))) __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: extern char *qecvt (long double __value, int __ndigit, 5209: int *__restrict __decpt, int *__restrict __sign) 5209: throw () __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); 5209: extern char *qfcvt (long double __value, int __ndigit, 5209: int *__restrict __decpt, int *__restrict __sign) 5209: throw () __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); 5209: extern char *qgcvt (long double __value, int __ndigit, char *__buf) 5209: throw () __attribute__ ((__nonnull__ (3))) __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt, 5209: int *__restrict __sign, char *__restrict __buf, 5209: size_t __len) throw () __attribute__ ((__nonnull__ (3, 4, 5))); 5209: extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt, 5209: int *__restrict __sign, char *__restrict __buf, 5209: size_t __len) throw () __attribute__ ((__nonnull__ (3, 4, 5))); 5209: 5209: extern int qecvt_r (long double __value, int __ndigit, 5209: int *__restrict __decpt, int *__restrict __sign, 5209: char *__restrict __buf, size_t __len) 5209: throw () __attribute__ ((__nonnull__ (3, 4, 5))); 5209: extern int qfcvt_r (long double __value, int __ndigit, 5209: int *__restrict __decpt, int *__restrict __sign, 5209: char *__restrict __buf, size_t __len) 5209: throw () __attribute__ ((__nonnull__ (3, 4, 5))); 5209: 5209: 5209: 5209: 5209: 5209: extern int mblen (const char *__s, size_t __n) throw (); 5209: 5209: 5209: extern int mbtowc (wchar_t *__restrict __pwc, 5209: const char *__restrict __s, size_t __n) throw (); 5209: 5209: 5209: extern int wctomb (char *__s, wchar_t __wchar) throw (); 5209: 5209: 5209: 5209: extern size_t mbstowcs (wchar_t *__restrict __pwcs, 5209: const char *__restrict __s, size_t __n) throw (); 5209: 5209: extern size_t wcstombs (char *__restrict __s, 5209: const wchar_t *__restrict __pwcs, size_t __n) 5209: throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern int rpmatch (const char *__response) throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 5209: # 957 "/usr/include/stdlib.h" 3 4 5209: extern int getsubopt (char **__restrict __optionp, 5209: char *const *__restrict __tokens, 5209: char **__restrict __valuep) 5209: throw () __attribute__ ((__nonnull__ (1, 2, 3))) __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern int posix_openpt (int __oflag) __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern int grantpt (int __fd) throw (); 5209: 5209: 5209: 5209: extern int unlockpt (int __fd) throw (); 5209: 5209: 5209: 5209: 5209: extern char *ptsname (int __fd) throw () __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern int ptsname_r (int __fd, char *__buf, size_t __buflen) 5209: throw () __attribute__ ((__nonnull__ (2))); 5209: 5209: 5209: extern int getpt (void); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern int getloadavg (double __loadavg[], int __nelem) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: # 1013 "/usr/include/stdlib.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/stdlib-float.h" 1 3 4 5209: # 24 "/usr/include/aarch64-linux-gnu/bits/stdlib-float.h" 3 4 5209: extern __inline __attribute__ ((__gnu_inline__)) double 5209: __attribute__ ((__leaf__)) atof (const char *__nptr) throw () 5209: { 5209: return strtod (__nptr, (char **) __null); 5209: } 5209: # 1014 "/usr/include/stdlib.h" 2 3 4 5209: 5209: 5209: 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/stdlib.h" 1 3 4 5209: # 23 "/usr/include/aarch64-linux-gnu/bits/stdlib.h" 3 4 5209: extern char *__realpath_chk (const char *__restrict __name, 5209: char *__restrict __resolved, 5209: size_t __resolvedlen) throw () __attribute__ ((__warn_unused_result__)); 5209: extern char *__realpath_alias (const char *__restrict __name, char *__restrict __resolved) throw () __asm__ ("" "realpath") 5209: 5209: __attribute__ ((__warn_unused_result__)); 5209: extern char *__realpath_chk_warn (const char *__restrict __name, char *__restrict __resolved, size_t __resolvedlen) throw () __asm__ ("" "__realpath_chk") 5209: 5209: 5209: __attribute__ ((__warn_unused_result__)) 5209: __attribute__((__warning__ ("second argument of realpath must be either NULL or at " "least PATH_MAX bytes long buffer"))) 5209: ; 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) char * 5209: __attribute__ ((__leaf__)) realpath (const char *__restrict __name, char *__restrict __resolved) throw () 5209: { 5209: if (__builtin_object_size (__resolved, 2 > 1) != (size_t) -1) 5209: { 5209: 5209: 5209: 5209: 5209: return __realpath_chk (__name, __resolved, __builtin_object_size (__resolved, 2 > 1)); 5209: } 5209: 5209: return __realpath_alias (__name, __resolved); 5209: } 5209: 5209: 5209: extern int __ptsname_r_chk (int __fd, char *__buf, size_t __buflen, 5209: size_t __nreal) throw () __attribute__ ((__nonnull__ (2))); 5209: extern int __ptsname_r_alias (int __fd, char *__buf, size_t __buflen) throw () __asm__ ("" "ptsname_r") 5209: 5209: __attribute__ ((__nonnull__ (2))); 5209: extern int __ptsname_r_chk_warn (int __fd, char *__buf, size_t __buflen, size_t __nreal) throw () __asm__ ("" "__ptsname_r_chk") 5209: 5209: 5209: __attribute__ ((__nonnull__ (2))) __attribute__((__warning__ ("ptsname_r called with buflen bigger than " "size of buf"))) 5209: ; 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 5209: __attribute__ ((__leaf__)) ptsname_r (int __fd, char *__buf, size_t __buflen) throw () 5209: { 5209: if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1) 5209: { 5209: if (!__builtin_constant_p (__buflen)) 5209: return __ptsname_r_chk (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1)); 5209: if (__buflen > __builtin_object_size (__buf, 2 > 1)) 5209: return __ptsname_r_chk_warn (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1)); 5209: } 5209: return __ptsname_r_alias (__fd, __buf, __buflen); 5209: } 5209: 5209: 5209: extern int __wctomb_chk (char *__s, wchar_t __wchar, size_t __buflen) 5209: throw () __attribute__ ((__warn_unused_result__)); 5209: extern int __wctomb_alias (char *__s, wchar_t __wchar) throw () __asm__ ("" "wctomb") 5209: __attribute__ ((__warn_unused_result__)); 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) int 5209: __attribute__ ((__leaf__)) wctomb (char *__s, wchar_t __wchar) throw () 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: if (__builtin_object_size (__s, 2 > 1) != (size_t) -1 && 16 > __builtin_object_size (__s, 2 > 1)) 5209: return __wctomb_chk (__s, __wchar, __builtin_object_size (__s, 2 > 1)); 5209: return __wctomb_alias (__s, __wchar); 5209: } 5209: 5209: 5209: extern size_t __mbstowcs_chk (wchar_t *__restrict __dst, 5209: const char *__restrict __src, 5209: size_t __len, size_t __dstlen) throw (); 5209: extern size_t __mbstowcs_alias (wchar_t *__restrict __dst, const char *__restrict __src, size_t __len) throw () __asm__ ("" "mbstowcs") 5209: 5209: 5209: ; 5209: extern size_t __mbstowcs_chk_warn (wchar_t *__restrict __dst, const char *__restrict __src, size_t __len, size_t __dstlen) throw () __asm__ ("" "__mbstowcs_chk") 5209: 5209: 5209: 5209: __attribute__((__warning__ ("mbstowcs called with dst buffer smaller than len " "* sizeof (wchar_t)"))) 5209: ; 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 5209: __attribute__ ((__leaf__)) mbstowcs (wchar_t *__restrict __dst, const char *__restrict __src, size_t __len) throw () 5209: 5209: { 5209: if (__builtin_object_size (__dst, 2 > 1) != (size_t) -1) 5209: { 5209: if (!__builtin_constant_p (__len)) 5209: return __mbstowcs_chk (__dst, __src, __len, 5209: __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t)); 5209: 5209: if (__len > __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t)) 5209: return __mbstowcs_chk_warn (__dst, __src, __len, 5209: __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t)); 5209: } 5209: return __mbstowcs_alias (__dst, __src, __len); 5209: } 5209: 5209: 5209: extern size_t __wcstombs_chk (char *__restrict __dst, 5209: const wchar_t *__restrict __src, 5209: size_t __len, size_t __dstlen) throw (); 5209: extern size_t __wcstombs_alias (char *__restrict __dst, const wchar_t *__restrict __src, size_t __len) throw () __asm__ ("" "wcstombs") 5209: 5209: 5209: ; 5209: extern size_t __wcstombs_chk_warn (char *__restrict __dst, const wchar_t *__restrict __src, size_t __len, size_t __dstlen) throw () __asm__ ("" "__wcstombs_chk") 5209: 5209: 5209: 5209: __attribute__((__warning__ ("wcstombs called with dst buffer smaller than len"))); 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 5209: __attribute__ ((__leaf__)) wcstombs (char *__restrict __dst, const wchar_t *__restrict __src, size_t __len) throw () 5209: 5209: { 5209: if (__builtin_object_size (__dst, 2 > 1) != (size_t) -1) 5209: { 5209: if (!__builtin_constant_p (__len)) 5209: return __wcstombs_chk (__dst, __src, __len, __builtin_object_size (__dst, 2 > 1)); 5209: if (__len > __builtin_object_size (__dst, 2 > 1)) 5209: return __wcstombs_chk_warn (__dst, __src, __len, __builtin_object_size (__dst, 2 > 1)); 5209: } 5209: return __wcstombs_alias (__dst, __src, __len); 5209: } 5209: # 1018 "/usr/include/stdlib.h" 2 3 4 5209: 5209: 5209: 5209: 5209: 5209: } 5209: # 76 "/usr/include/c++/10/cstdlib" 2 3 5209: 5209: # 1 "/usr/include/c++/10/bits/std_abs.h" 1 3 5209: # 33 "/usr/include/c++/10/bits/std_abs.h" 3 5209: 5209: # 34 "/usr/include/c++/10/bits/std_abs.h" 3 5209: # 46 "/usr/include/c++/10/bits/std_abs.h" 3 5209: extern "C++" 5209: { 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: using ::abs; 5209: 5209: 5209: inline long 5209: abs(long __i) { return __builtin_labs(__i); } 5209: 5209: 5209: 5209: inline long long 5209: abs(long long __x) { return __builtin_llabs (__x); } 5209: # 70 "/usr/include/c++/10/bits/std_abs.h" 3 5209: inline constexpr double 5209: abs(double __x) 5209: { return __builtin_fabs(__x); } 5209: 5209: inline constexpr float 5209: abs(float __x) 5209: { return __builtin_fabsf(__x); } 5209: 5209: inline constexpr long double 5209: abs(long double __x) 5209: { return __builtin_fabsl(__x); } 5209: 5209: 5209: 5209: inline constexpr __int128 5209: abs(__int128 __x) { return __x >= 0 ? __x : -__x; } 5209: # 107 "/usr/include/c++/10/bits/std_abs.h" 3 5209: 5209: } 5209: } 5209: # 78 "/usr/include/c++/10/cstdlib" 2 3 5209: # 121 "/usr/include/c++/10/cstdlib" 3 5209: extern "C++" 5209: { 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: using ::div_t; 5209: using ::ldiv_t; 5209: 5209: using ::abort; 5209: 5209: 5209: 5209: using ::atexit; 5209: 5209: 5209: using ::at_quick_exit; 5209: 5209: 5209: using ::atof; 5209: using ::atoi; 5209: using ::atol; 5209: using ::bsearch; 5209: using ::calloc; 5209: using ::div; 5209: using ::exit; 5209: using ::free; 5209: using ::getenv; 5209: using ::labs; 5209: using ::ldiv; 5209: using ::malloc; 5209: 5209: using ::mblen; 5209: using ::mbstowcs; 5209: using ::mbtowc; 5209: 5209: using ::qsort; 5209: 5209: 5209: using ::quick_exit; 5209: 5209: 5209: using ::rand; 5209: using ::realloc; 5209: using ::srand; 5209: using ::strtod; 5209: using ::strtol; 5209: using ::strtoul; 5209: using ::system; 5209: 5209: using ::wcstombs; 5209: using ::wctomb; 5209: 5209: 5209: 5209: inline ldiv_t 5209: div(long __i, long __j) { return ldiv(__i, __j); } 5209: 5209: 5209: 5209: 5209: } 5209: # 195 "/usr/include/c++/10/cstdlib" 3 5209: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: 5209: using ::lldiv_t; 5209: 5209: 5209: 5209: 5209: 5209: using ::_Exit; 5209: 5209: 5209: 5209: using ::llabs; 5209: 5209: inline lldiv_t 5209: div(long long __n, long long __d) 5209: { lldiv_t __q; __q.quot = __n / __d; __q.rem = __n % __d; return __q; } 5209: 5209: using ::lldiv; 5209: # 227 "/usr/include/c++/10/cstdlib" 3 5209: using ::atoll; 5209: using ::strtoll; 5209: using ::strtoull; 5209: 5209: using ::strtof; 5209: using ::strtold; 5209: 5209: 5209: } 5209: 5209: namespace std 5209: { 5209: 5209: using ::__gnu_cxx::lldiv_t; 5209: 5209: using ::__gnu_cxx::_Exit; 5209: 5209: using ::__gnu_cxx::llabs; 5209: using ::__gnu_cxx::div; 5209: using ::__gnu_cxx::lldiv; 5209: 5209: using ::__gnu_cxx::atoll; 5209: using ::__gnu_cxx::strtof; 5209: using ::__gnu_cxx::strtoll; 5209: using ::__gnu_cxx::strtoull; 5209: using ::__gnu_cxx::strtold; 5209: } 5209: 5209: 5209: 5209: } 5209: # 42 "/usr/include/c++/10/ext/string_conversions.h" 2 3 5209: # 1 "/usr/include/c++/10/cwchar" 1 3 5209: # 39 "/usr/include/c++/10/cwchar" 3 5209: 5209: # 40 "/usr/include/c++/10/cwchar" 3 5209: # 43 "/usr/include/c++/10/ext/string_conversions.h" 2 3 5209: # 1 "/usr/include/c++/10/cstdio" 1 3 5209: # 39 "/usr/include/c++/10/cstdio" 3 5209: 5209: # 40 "/usr/include/c++/10/cstdio" 3 5209: 5209: 5209: # 1 "/usr/include/stdio.h" 1 3 4 5209: # 27 "/usr/include/stdio.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/libc-header-start.h" 1 3 4 5209: # 28 "/usr/include/stdio.h" 2 3 4 5209: 5209: extern "C" { 5209: 5209: 5209: 5209: # 1 "/usr/lib/gcc/aarch64-linux-gnu/10/include/stddef.h" 1 3 4 5209: # 34 "/usr/include/stdio.h" 2 3 4 5209: 5209: 5209: # 1 "/usr/lib/gcc/aarch64-linux-gnu/10/include/stdarg.h" 1 3 4 5209: # 37 "/usr/include/stdio.h" 2 3 4 5209: 5209: 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/types/__fpos_t.h" 1 3 4 5209: # 10 "/usr/include/aarch64-linux-gnu/bits/types/__fpos_t.h" 3 4 5209: typedef struct _G_fpos_t 5209: { 5209: __off_t __pos; 5209: __mbstate_t __state; 5209: } __fpos_t; 5209: # 40 "/usr/include/stdio.h" 2 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/types/__fpos64_t.h" 1 3 4 5209: # 10 "/usr/include/aarch64-linux-gnu/bits/types/__fpos64_t.h" 3 4 5209: typedef struct _G_fpos64_t 5209: { 5209: __off64_t __pos; 5209: __mbstate_t __state; 5209: } __fpos64_t; 5209: # 41 "/usr/include/stdio.h" 2 3 4 5209: 5209: 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/types/struct_FILE.h" 1 3 4 5209: # 35 "/usr/include/aarch64-linux-gnu/bits/types/struct_FILE.h" 3 4 5209: struct _IO_FILE; 5209: struct _IO_marker; 5209: struct _IO_codecvt; 5209: struct _IO_wide_data; 5209: 5209: 5209: 5209: 5209: typedef void _IO_lock_t; 5209: 5209: 5209: 5209: 5209: 5209: struct _IO_FILE 5209: { 5209: int _flags; 5209: 5209: 5209: char *_IO_read_ptr; 5209: char *_IO_read_end; 5209: char *_IO_read_base; 5209: char *_IO_write_base; 5209: char *_IO_write_ptr; 5209: char *_IO_write_end; 5209: char *_IO_buf_base; 5209: char *_IO_buf_end; 5209: 5209: 5209: char *_IO_save_base; 5209: char *_IO_backup_base; 5209: char *_IO_save_end; 5209: 5209: struct _IO_marker *_markers; 5209: 5209: struct _IO_FILE *_chain; 5209: 5209: int _fileno; 5209: int _flags2; 5209: __off_t _old_offset; 5209: 5209: 5209: unsigned short _cur_column; 5209: signed char _vtable_offset; 5209: char _shortbuf[1]; 5209: 5209: _IO_lock_t *_lock; 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: __off64_t _offset; 5209: 5209: struct _IO_codecvt *_codecvt; 5209: struct _IO_wide_data *_wide_data; 5209: struct _IO_FILE *_freeres_list; 5209: void *_freeres_buf; 5209: size_t __pad5; 5209: int _mode; 5209: 5209: char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)]; 5209: }; 5209: # 44 "/usr/include/stdio.h" 2 3 4 5209: 5209: 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/types/cookie_io_functions_t.h" 1 3 4 5209: # 27 "/usr/include/aarch64-linux-gnu/bits/types/cookie_io_functions_t.h" 3 4 5209: typedef __ssize_t cookie_read_function_t (void *__cookie, char *__buf, 5209: size_t __nbytes); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: typedef __ssize_t cookie_write_function_t (void *__cookie, const char *__buf, 5209: size_t __nbytes); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: typedef int cookie_seek_function_t (void *__cookie, __off64_t *__pos, int __w); 5209: 5209: 5209: typedef int cookie_close_function_t (void *__cookie); 5209: 5209: 5209: 5209: 5209: 5209: 5209: typedef struct _IO_cookie_io_functions_t 5209: { 5209: cookie_read_function_t *read; 5209: cookie_write_function_t *write; 5209: cookie_seek_function_t *seek; 5209: cookie_close_function_t *close; 5209: } cookie_io_functions_t; 5209: # 47 "/usr/include/stdio.h" 2 3 4 5209: 5209: 5209: 5209: 5209: 5209: typedef __gnuc_va_list va_list; 5209: # 84 "/usr/include/stdio.h" 3 4 5209: typedef __fpos_t fpos_t; 5209: 5209: 5209: 5209: 5209: typedef __fpos64_t fpos64_t; 5209: # 133 "/usr/include/stdio.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/stdio_lim.h" 1 3 4 5209: # 134 "/usr/include/stdio.h" 2 3 4 5209: 5209: 5209: 5209: extern FILE *stdin; 5209: extern FILE *stdout; 5209: extern FILE *stderr; 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern int remove (const char *__filename) throw (); 5209: 5209: extern int rename (const char *__old, const char *__new) throw (); 5209: 5209: 5209: 5209: extern int renameat (int __oldfd, const char *__old, int __newfd, 5209: const char *__new) throw (); 5209: # 164 "/usr/include/stdio.h" 3 4 5209: extern int renameat2 (int __oldfd, const char *__old, int __newfd, 5209: const char *__new, unsigned int __flags) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern FILE *tmpfile (void) __attribute__ ((__warn_unused_result__)); 5209: # 183 "/usr/include/stdio.h" 3 4 5209: extern FILE *tmpfile64 (void) __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: extern char *tmpnam (char *__s) throw () __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: extern char *tmpnam_r (char *__s) throw () __attribute__ ((__warn_unused_result__)); 5209: # 204 "/usr/include/stdio.h" 3 4 5209: extern char *tempnam (const char *__dir, const char *__pfx) 5209: throw () __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern int fclose (FILE *__stream); 5209: 5209: 5209: 5209: 5209: extern int fflush (FILE *__stream); 5209: # 227 "/usr/include/stdio.h" 3 4 5209: extern int fflush_unlocked (FILE *__stream); 5209: # 237 "/usr/include/stdio.h" 3 4 5209: extern int fcloseall (void); 5209: # 246 "/usr/include/stdio.h" 3 4 5209: extern FILE *fopen (const char *__restrict __filename, 5209: const char *__restrict __modes) __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: extern FILE *freopen (const char *__restrict __filename, 5209: const char *__restrict __modes, 5209: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 5209: # 270 "/usr/include/stdio.h" 3 4 5209: extern FILE *fopen64 (const char *__restrict __filename, 5209: const char *__restrict __modes) __attribute__ ((__warn_unused_result__)); 5209: extern FILE *freopen64 (const char *__restrict __filename, 5209: const char *__restrict __modes, 5209: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: extern FILE *fdopen (int __fd, const char *__modes) throw () __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: 5209: extern FILE *fopencookie (void *__restrict __magic_cookie, 5209: const char *__restrict __modes, 5209: cookie_io_functions_t __io_funcs) throw () __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: extern FILE *fmemopen (void *__s, size_t __len, const char *__modes) 5209: throw () __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: extern FILE *open_memstream (char **__bufloc, size_t *__sizeloc) throw () __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: 5209: extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) throw (); 5209: 5209: 5209: 5209: extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf, 5209: int __modes, size_t __n) throw (); 5209: 5209: 5209: 5209: 5209: extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf, 5209: size_t __size) throw (); 5209: 5209: 5209: extern void setlinebuf (FILE *__stream) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern int fprintf (FILE *__restrict __stream, 5209: const char *__restrict __format, ...); 5209: 5209: 5209: 5209: 5209: extern int printf (const char *__restrict __format, ...); 5209: 5209: extern int sprintf (char *__restrict __s, 5209: const char *__restrict __format, ...) throw (); 5209: 5209: 5209: 5209: 5209: 5209: extern int vfprintf (FILE *__restrict __s, const char *__restrict __format, 5209: __gnuc_va_list __arg); 5209: 5209: 5209: 5209: 5209: extern int vprintf (const char *__restrict __format, __gnuc_va_list __arg); 5209: 5209: extern int vsprintf (char *__restrict __s, const char *__restrict __format, 5209: __gnuc_va_list __arg) throw (); 5209: 5209: 5209: 5209: extern int snprintf (char *__restrict __s, size_t __maxlen, 5209: const char *__restrict __format, ...) 5209: throw () __attribute__ ((__format__ (__printf__, 3, 4))); 5209: 5209: extern int vsnprintf (char *__restrict __s, size_t __maxlen, 5209: const char *__restrict __format, __gnuc_va_list __arg) 5209: throw () __attribute__ ((__format__ (__printf__, 3, 0))); 5209: 5209: 5209: 5209: 5209: 5209: extern int vasprintf (char **__restrict __ptr, const char *__restrict __f, 5209: __gnuc_va_list __arg) 5209: throw () __attribute__ ((__format__ (__printf__, 2, 0))) __attribute__ ((__warn_unused_result__)); 5209: extern int __asprintf (char **__restrict __ptr, 5209: const char *__restrict __fmt, ...) 5209: throw () __attribute__ ((__format__ (__printf__, 2, 3))) __attribute__ ((__warn_unused_result__)); 5209: extern int asprintf (char **__restrict __ptr, 5209: const char *__restrict __fmt, ...) 5209: throw () __attribute__ ((__format__ (__printf__, 2, 3))) __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: extern int vdprintf (int __fd, const char *__restrict __fmt, 5209: __gnuc_va_list __arg) 5209: __attribute__ ((__format__ (__printf__, 2, 0))); 5209: extern int dprintf (int __fd, const char *__restrict __fmt, ...) 5209: __attribute__ ((__format__ (__printf__, 2, 3))); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern int fscanf (FILE *__restrict __stream, 5209: const char *__restrict __format, ...) __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: extern int scanf (const char *__restrict __format, ...) __attribute__ ((__warn_unused_result__)); 5209: 5209: extern int sscanf (const char *__restrict __s, 5209: const char *__restrict __format, ...) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern int fscanf (FILE *__restrict __stream, const char *__restrict __format, ...) __asm__ ("" "__isoc99_fscanf") 5209: 5209: __attribute__ ((__warn_unused_result__)); 5209: extern int scanf (const char *__restrict __format, ...) __asm__ ("" "__isoc99_scanf") 5209: __attribute__ ((__warn_unused_result__)); 5209: extern int sscanf (const char *__restrict __s, const char *__restrict __format, ...) throw () __asm__ ("" "__isoc99_sscanf") 5209: 5209: ; 5209: # 432 "/usr/include/stdio.h" 3 4 5209: extern int vfscanf (FILE *__restrict __s, const char *__restrict __format, 5209: __gnuc_va_list __arg) 5209: __attribute__ ((__format__ (__scanf__, 2, 0))) __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: 5209: extern int vscanf (const char *__restrict __format, __gnuc_va_list __arg) 5209: __attribute__ ((__format__ (__scanf__, 1, 0))) __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: extern int vsscanf (const char *__restrict __s, 5209: const char *__restrict __format, __gnuc_va_list __arg) 5209: throw () __attribute__ ((__format__ (__scanf__, 2, 0))); 5209: 5209: 5209: 5209: 5209: extern int vfscanf (FILE *__restrict __s, const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc99_vfscanf") 5209: 5209: 5209: 5209: __attribute__ ((__format__ (__scanf__, 2, 0))) __attribute__ ((__warn_unused_result__)); 5209: extern int vscanf (const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc99_vscanf") 5209: 5209: __attribute__ ((__format__ (__scanf__, 1, 0))) __attribute__ ((__warn_unused_result__)); 5209: extern int vsscanf (const char *__restrict __s, const char *__restrict __format, __gnuc_va_list __arg) throw () __asm__ ("" "__isoc99_vsscanf") 5209: 5209: 5209: 5209: __attribute__ ((__format__ (__scanf__, 2, 0))); 5209: # 485 "/usr/include/stdio.h" 3 4 5209: extern int fgetc (FILE *__stream); 5209: extern int getc (FILE *__stream); 5209: 5209: 5209: 5209: 5209: 5209: extern int getchar (void); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern int getc_unlocked (FILE *__stream); 5209: extern int getchar_unlocked (void); 5209: # 510 "/usr/include/stdio.h" 3 4 5209: extern int fgetc_unlocked (FILE *__stream); 5209: # 521 "/usr/include/stdio.h" 3 4 5209: extern int fputc (int __c, FILE *__stream); 5209: extern int putc (int __c, FILE *__stream); 5209: 5209: 5209: 5209: 5209: 5209: extern int putchar (int __c); 5209: # 537 "/usr/include/stdio.h" 3 4 5209: extern int fputc_unlocked (int __c, FILE *__stream); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern int putc_unlocked (int __c, FILE *__stream); 5209: extern int putchar_unlocked (int __c); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern int getw (FILE *__stream); 5209: 5209: 5209: extern int putw (int __w, FILE *__stream); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream) 5209: __attribute__ ((__warn_unused_result__)); 5209: # 577 "/usr/include/stdio.h" 3 4 5209: extern char *gets (char *__s) __attribute__ ((__warn_unused_result__)) __attribute__ ((__deprecated__)); 5209: # 587 "/usr/include/stdio.h" 3 4 5209: extern char *fgets_unlocked (char *__restrict __s, int __n, 5209: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 5209: # 603 "/usr/include/stdio.h" 3 4 5209: extern __ssize_t __getdelim (char **__restrict __lineptr, 5209: size_t *__restrict __n, int __delimiter, 5209: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 5209: extern __ssize_t getdelim (char **__restrict __lineptr, 5209: size_t *__restrict __n, int __delimiter, 5209: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern __ssize_t getline (char **__restrict __lineptr, 5209: size_t *__restrict __n, 5209: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern int fputs (const char *__restrict __s, FILE *__restrict __stream); 5209: 5209: 5209: 5209: 5209: 5209: extern int puts (const char *__s); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern int ungetc (int __c, FILE *__stream); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern size_t fread (void *__restrict __ptr, size_t __size, 5209: size_t __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: extern size_t fwrite (const void *__restrict __ptr, size_t __size, 5209: size_t __n, FILE *__restrict __s); 5209: # 662 "/usr/include/stdio.h" 3 4 5209: extern int fputs_unlocked (const char *__restrict __s, 5209: FILE *__restrict __stream); 5209: # 673 "/usr/include/stdio.h" 3 4 5209: extern size_t fread_unlocked (void *__restrict __ptr, size_t __size, 5209: size_t __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 5209: extern size_t fwrite_unlocked (const void *__restrict __ptr, size_t __size, 5209: size_t __n, FILE *__restrict __stream); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern int fseek (FILE *__stream, long int __off, int __whence); 5209: 5209: 5209: 5209: 5209: extern long int ftell (FILE *__stream) __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: extern void rewind (FILE *__stream); 5209: # 707 "/usr/include/stdio.h" 3 4 5209: extern int fseeko (FILE *__stream, __off_t __off, int __whence); 5209: 5209: 5209: 5209: 5209: extern __off_t ftello (FILE *__stream) __attribute__ ((__warn_unused_result__)); 5209: # 731 "/usr/include/stdio.h" 3 4 5209: extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos); 5209: 5209: 5209: 5209: 5209: extern int fsetpos (FILE *__stream, const fpos_t *__pos); 5209: # 750 "/usr/include/stdio.h" 3 4 5209: extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence); 5209: extern __off64_t ftello64 (FILE *__stream) __attribute__ ((__warn_unused_result__)); 5209: extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos); 5209: extern int fsetpos64 (FILE *__stream, const fpos64_t *__pos); 5209: 5209: 5209: 5209: extern void clearerr (FILE *__stream) throw (); 5209: 5209: extern int feof (FILE *__stream) throw () __attribute__ ((__warn_unused_result__)); 5209: 5209: extern int ferror (FILE *__stream) throw () __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: extern void clearerr_unlocked (FILE *__stream) throw (); 5209: extern int feof_unlocked (FILE *__stream) throw () __attribute__ ((__warn_unused_result__)); 5209: extern int ferror_unlocked (FILE *__stream) throw () __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern void perror (const char *__s); 5209: 5209: 5209: 5209: 5209: 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/sys_errlist.h" 1 3 4 5209: # 26 "/usr/include/aarch64-linux-gnu/bits/sys_errlist.h" 3 4 5209: extern int sys_nerr; 5209: extern const char *const sys_errlist[]; 5209: 5209: 5209: extern int _sys_nerr; 5209: extern const char *const _sys_errlist[]; 5209: # 782 "/usr/include/stdio.h" 2 3 4 5209: 5209: 5209: 5209: 5209: extern int fileno (FILE *__stream) throw () __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: extern int fileno_unlocked (FILE *__stream) throw () __attribute__ ((__warn_unused_result__)); 5209: # 800 "/usr/include/stdio.h" 3 4 5209: extern FILE *popen (const char *__command, const char *__modes) __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: 5209: extern int pclose (FILE *__stream); 5209: 5209: 5209: 5209: 5209: 5209: extern char *ctermid (char *__s) throw (); 5209: 5209: 5209: 5209: 5209: 5209: extern char *cuserid (char *__s); 5209: 5209: 5209: 5209: 5209: struct obstack; 5209: 5209: 5209: extern int obstack_printf (struct obstack *__restrict __obstack, 5209: const char *__restrict __format, ...) 5209: throw () __attribute__ ((__format__ (__printf__, 2, 3))); 5209: extern int obstack_vprintf (struct obstack *__restrict __obstack, 5209: const char *__restrict __format, 5209: __gnuc_va_list __args) 5209: throw () __attribute__ ((__format__ (__printf__, 2, 0))); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern void flockfile (FILE *__stream) throw (); 5209: 5209: 5209: 5209: extern int ftrylockfile (FILE *__stream) throw () __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: extern void funlockfile (FILE *__stream) throw (); 5209: # 858 "/usr/include/stdio.h" 3 4 5209: extern int __uflow (FILE *); 5209: extern int __overflow (FILE *, int); 5209: 5209: 5209: 5209: 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/stdio.h" 1 3 4 5209: # 46 "/usr/include/aarch64-linux-gnu/bits/stdio.h" 3 4 5209: extern __inline __attribute__ ((__gnu_inline__)) int 5209: getchar (void) 5209: { 5209: return getc (stdin); 5209: } 5209: 5209: 5209: 5209: 5209: extern __inline __attribute__ ((__gnu_inline__)) int 5209: fgetc_unlocked (FILE *__fp) 5209: { 5209: return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++); 5209: } 5209: 5209: 5209: 5209: 5209: 5209: extern __inline __attribute__ ((__gnu_inline__)) int 5209: getc_unlocked (FILE *__fp) 5209: { 5209: return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++); 5209: } 5209: 5209: 5209: extern __inline __attribute__ ((__gnu_inline__)) int 5209: getchar_unlocked (void) 5209: { 5209: return (__builtin_expect (((stdin)->_IO_read_ptr >= (stdin)->_IO_read_end), 0) ? __uflow (stdin) : *(unsigned char *) (stdin)->_IO_read_ptr++); 5209: } 5209: 5209: 5209: 5209: 5209: extern __inline __attribute__ ((__gnu_inline__)) int 5209: putchar (int __c) 5209: { 5209: return putc (__c, stdout); 5209: } 5209: 5209: 5209: 5209: 5209: extern __inline __attribute__ ((__gnu_inline__)) int 5209: fputc_unlocked (int __c, FILE *__stream) 5209: { 5209: return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c))); 5209: } 5209: 5209: 5209: 5209: 5209: 5209: extern __inline __attribute__ ((__gnu_inline__)) int 5209: putc_unlocked (int __c, FILE *__stream) 5209: { 5209: return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c))); 5209: } 5209: 5209: 5209: extern __inline __attribute__ ((__gnu_inline__)) int 5209: putchar_unlocked (int __c) 5209: { 5209: return (__builtin_expect (((stdout)->_IO_write_ptr >= (stdout)->_IO_write_end), 0) ? __overflow (stdout, (unsigned char) (__c)) : (unsigned char) (*(stdout)->_IO_write_ptr++ = (__c))); 5209: } 5209: 5209: 5209: 5209: 5209: 5209: extern __inline __attribute__ ((__gnu_inline__)) __ssize_t 5209: getline (char **__lineptr, size_t *__n, FILE *__stream) 5209: { 5209: return __getdelim (__lineptr, __n, '\n', __stream); 5209: } 5209: 5209: 5209: 5209: 5209: 5209: extern __inline __attribute__ ((__gnu_inline__)) int 5209: __attribute__ ((__leaf__)) feof_unlocked (FILE *__stream) throw () 5209: { 5209: return (((__stream)->_flags & 0x0010) != 0); 5209: } 5209: 5209: 5209: extern __inline __attribute__ ((__gnu_inline__)) int 5209: __attribute__ ((__leaf__)) ferror_unlocked (FILE *__stream) throw () 5209: { 5209: return (((__stream)->_flags & 0x0020) != 0); 5209: } 5209: # 865 "/usr/include/stdio.h" 2 3 4 5209: 5209: 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/stdio2.h" 1 3 4 5209: # 26 "/usr/include/aarch64-linux-gnu/bits/stdio2.h" 3 4 5209: extern int __sprintf_chk (char *__restrict __s, int __flag, size_t __slen, 5209: const char *__restrict __format, ...) throw (); 5209: extern int __vsprintf_chk (char *__restrict __s, int __flag, size_t __slen, 5209: const char *__restrict __format, 5209: __gnuc_va_list __ap) throw (); 5209: 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 5209: __attribute__ ((__leaf__)) sprintf (char *__restrict __s, const char *__restrict __fmt, ...) throw () 5209: { 5209: return __builtin___sprintf_chk (__s, 2 - 1, 5209: __builtin_object_size (__s, 2 > 1), __fmt, __builtin_va_arg_pack ()); 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 5209: __attribute__ ((__leaf__)) vsprintf (char *__restrict __s, const char *__restrict __fmt, __gnuc_va_list __ap) throw () 5209: 5209: { 5209: return __builtin___vsprintf_chk (__s, 2 - 1, 5209: __builtin_object_size (__s, 2 > 1), __fmt, __ap); 5209: } 5209: 5209: 5209: 5209: extern int __snprintf_chk (char *__restrict __s, size_t __n, int __flag, 5209: size_t __slen, const char *__restrict __format, 5209: ...) throw (); 5209: extern int __vsnprintf_chk (char *__restrict __s, size_t __n, int __flag, 5209: size_t __slen, const char *__restrict __format, 5209: __gnuc_va_list __ap) throw (); 5209: 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 5209: __attribute__ ((__leaf__)) snprintf (char *__restrict __s, size_t __n, const char *__restrict __fmt, ...) throw () 5209: 5209: { 5209: return __builtin___snprintf_chk (__s, __n, 2 - 1, 5209: __builtin_object_size (__s, 2 > 1), __fmt, __builtin_va_arg_pack ()); 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 5209: __attribute__ ((__leaf__)) vsnprintf (char *__restrict __s, size_t __n, const char *__restrict __fmt, __gnuc_va_list __ap) throw () 5209: 5209: { 5209: return __builtin___vsnprintf_chk (__s, __n, 2 - 1, 5209: __builtin_object_size (__s, 2 > 1), __fmt, __ap); 5209: } 5209: 5209: 5209: 5209: 5209: 5209: extern int __fprintf_chk (FILE *__restrict __stream, int __flag, 5209: const char *__restrict __format, ...); 5209: extern int __printf_chk (int __flag, const char *__restrict __format, ...); 5209: extern int __vfprintf_chk (FILE *__restrict __stream, int __flag, 5209: const char *__restrict __format, __gnuc_va_list __ap); 5209: extern int __vprintf_chk (int __flag, const char *__restrict __format, 5209: __gnuc_va_list __ap); 5209: 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 5209: fprintf (FILE *__restrict __stream, const char *__restrict __fmt, ...) 5209: { 5209: return __fprintf_chk (__stream, 2 - 1, __fmt, 5209: __builtin_va_arg_pack ()); 5209: } 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 5209: printf (const char *__restrict __fmt, ...) 5209: { 5209: return __printf_chk (2 - 1, __fmt, __builtin_va_arg_pack ()); 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 5209: vprintf (const char *__restrict __fmt, __gnuc_va_list __ap) 5209: { 5209: 5209: return __vfprintf_chk (stdout, 2 - 1, __fmt, __ap); 5209: 5209: 5209: 5209: } 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 5209: vfprintf (FILE *__restrict __stream, 5209: const char *__restrict __fmt, __gnuc_va_list __ap) 5209: { 5209: return __vfprintf_chk (__stream, 2 - 1, __fmt, __ap); 5209: } 5209: 5209: 5209: extern int __dprintf_chk (int __fd, int __flag, const char *__restrict __fmt, 5209: ...) __attribute__ ((__format__ (__printf__, 3, 4))); 5209: extern int __vdprintf_chk (int __fd, int __flag, 5209: const char *__restrict __fmt, __gnuc_va_list __arg) 5209: __attribute__ ((__format__ (__printf__, 3, 0))); 5209: 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 5209: dprintf (int __fd, const char *__restrict __fmt, ...) 5209: { 5209: return __dprintf_chk (__fd, 2 - 1, __fmt, 5209: __builtin_va_arg_pack ()); 5209: } 5209: 5209: 5209: 5209: 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 5209: vdprintf (int __fd, const char *__restrict __fmt, __gnuc_va_list __ap) 5209: { 5209: return __vdprintf_chk (__fd, 2 - 1, __fmt, __ap); 5209: } 5209: 5209: 5209: 5209: 5209: extern int __asprintf_chk (char **__restrict __ptr, int __flag, 5209: const char *__restrict __fmt, ...) 5209: throw () __attribute__ ((__format__ (__printf__, 3, 4))) __attribute__ ((__warn_unused_result__)); 5209: extern int __vasprintf_chk (char **__restrict __ptr, int __flag, 5209: const char *__restrict __fmt, __gnuc_va_list __arg) 5209: throw () __attribute__ ((__format__ (__printf__, 3, 0))) __attribute__ ((__warn_unused_result__)); 5209: extern int __obstack_printf_chk (struct obstack *__restrict __obstack, 5209: int __flag, const char *__restrict __format, 5209: ...) 5209: throw () __attribute__ ((__format__ (__printf__, 3, 4))); 5209: extern int __obstack_vprintf_chk (struct obstack *__restrict __obstack, 5209: int __flag, 5209: const char *__restrict __format, 5209: __gnuc_va_list __args) 5209: throw () __attribute__ ((__format__ (__printf__, 3, 0))); 5209: 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 5209: __attribute__ ((__leaf__)) asprintf (char **__restrict __ptr, const char *__restrict __fmt, ...) throw () 5209: { 5209: return __asprintf_chk (__ptr, 2 - 1, __fmt, 5209: __builtin_va_arg_pack ()); 5209: } 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 5209: __attribute__ ((__leaf__)) __asprintf (char **__restrict __ptr, const char *__restrict __fmt, ...) throw () 5209: 5209: { 5209: return __asprintf_chk (__ptr, 2 - 1, __fmt, 5209: __builtin_va_arg_pack ()); 5209: } 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 5209: __attribute__ ((__leaf__)) obstack_printf (struct obstack *__restrict __obstack, const char *__restrict __fmt, ...) throw () 5209: 5209: { 5209: return __obstack_printf_chk (__obstack, 2 - 1, __fmt, 5209: __builtin_va_arg_pack ()); 5209: } 5209: # 209 "/usr/include/aarch64-linux-gnu/bits/stdio2.h" 3 4 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 5209: __attribute__ ((__leaf__)) vasprintf (char **__restrict __ptr, const char *__restrict __fmt, __gnuc_va_list __ap) throw () 5209: 5209: { 5209: return __vasprintf_chk (__ptr, 2 - 1, __fmt, __ap); 5209: } 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 5209: __attribute__ ((__leaf__)) obstack_vprintf (struct obstack *__restrict __obstack, const char *__restrict __fmt, __gnuc_va_list __ap) throw () 5209: 5209: { 5209: return __obstack_vprintf_chk (__obstack, 2 - 1, __fmt, 5209: __ap); 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern char *__gets_chk (char *__str, size_t) __attribute__ ((__warn_unused_result__)); 5209: extern char *__gets_warn (char *__str) __asm__ ("" "gets") 5209: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("please use fgets or getline instead, gets can't " "specify buffer size"))) 5209: ; 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) char * 5209: gets (char *__str) 5209: { 5209: if (__builtin_object_size (__str, 2 > 1) != (size_t) -1) 5209: return __gets_chk (__str, __builtin_object_size (__str, 2 > 1)); 5209: return __gets_warn (__str); 5209: } 5209: 5209: 5209: extern char *__fgets_chk (char *__restrict __s, size_t __size, int __n, 5209: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 5209: extern char *__fgets_alias (char *__restrict __s, int __n, FILE *__restrict __stream) __asm__ ("" "fgets") 5209: 5209: __attribute__ ((__warn_unused_result__)); 5209: extern char *__fgets_chk_warn (char *__restrict __s, size_t __size, int __n, FILE *__restrict __stream) __asm__ ("" "__fgets_chk") 5209: 5209: 5209: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgets called with bigger size than length " "of destination buffer"))) 5209: ; 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) char * 5209: fgets (char *__restrict __s, int __n, FILE *__restrict __stream) 5209: { 5209: if (__builtin_object_size (__s, 2 > 1) != (size_t) -1) 5209: { 5209: if (!__builtin_constant_p (__n) || __n <= 0) 5209: return __fgets_chk (__s, __builtin_object_size (__s, 2 > 1), __n, __stream); 5209: 5209: if ((size_t) __n > __builtin_object_size (__s, 2 > 1)) 5209: return __fgets_chk_warn (__s, __builtin_object_size (__s, 2 > 1), __n, __stream); 5209: } 5209: return __fgets_alias (__s, __n, __stream); 5209: } 5209: 5209: extern size_t __fread_chk (void *__restrict __ptr, size_t __ptrlen, 5209: size_t __size, size_t __n, 5209: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 5209: extern size_t __fread_alias (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "fread") 5209: 5209: 5209: __attribute__ ((__warn_unused_result__)); 5209: extern size_t __fread_chk_warn (void *__restrict __ptr, size_t __ptrlen, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "__fread_chk") 5209: 5209: 5209: 5209: 5209: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fread called with bigger size * nmemb than length " "of destination buffer"))) 5209: ; 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) size_t 5209: fread (void *__restrict __ptr, size_t __size, size_t __n, 5209: FILE *__restrict __stream) 5209: { 5209: if (__builtin_object_size (__ptr, 0) != (size_t) -1) 5209: { 5209: if (!__builtin_constant_p (__size) 5209: || !__builtin_constant_p (__n) 5209: || (__size | __n) >= (((size_t) 1) << (8 * sizeof (size_t) / 2))) 5209: return __fread_chk (__ptr, __builtin_object_size (__ptr, 0), __size, __n, __stream); 5209: 5209: if (__size * __n > __builtin_object_size (__ptr, 0)) 5209: return __fread_chk_warn (__ptr, __builtin_object_size (__ptr, 0), __size, __n, __stream); 5209: } 5209: return __fread_alias (__ptr, __size, __n, __stream); 5209: } 5209: 5209: 5209: extern char *__fgets_unlocked_chk (char *__restrict __s, size_t __size, 5209: int __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 5209: extern char *__fgets_unlocked_alias (char *__restrict __s, int __n, FILE *__restrict __stream) __asm__ ("" "fgets_unlocked") 5209: 5209: __attribute__ ((__warn_unused_result__)); 5209: extern char *__fgets_unlocked_chk_warn (char *__restrict __s, size_t __size, int __n, FILE *__restrict __stream) __asm__ ("" "__fgets_unlocked_chk") 5209: 5209: 5209: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgets_unlocked called with bigger size than length " "of destination buffer"))) 5209: ; 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) char * 5209: fgets_unlocked (char *__restrict __s, int __n, FILE *__restrict __stream) 5209: { 5209: if (__builtin_object_size (__s, 2 > 1) != (size_t) -1) 5209: { 5209: if (!__builtin_constant_p (__n) || __n <= 0) 5209: return __fgets_unlocked_chk (__s, __builtin_object_size (__s, 2 > 1), __n, __stream); 5209: 5209: if ((size_t) __n > __builtin_object_size (__s, 2 > 1)) 5209: return __fgets_unlocked_chk_warn (__s, __builtin_object_size (__s, 2 > 1), __n, __stream); 5209: } 5209: return __fgets_unlocked_alias (__s, __n, __stream); 5209: } 5209: 5209: 5209: 5209: 5209: extern size_t __fread_unlocked_chk (void *__restrict __ptr, size_t __ptrlen, 5209: size_t __size, size_t __n, 5209: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 5209: extern size_t __fread_unlocked_alias (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "fread_unlocked") 5209: 5209: 5209: __attribute__ ((__warn_unused_result__)); 5209: extern size_t __fread_unlocked_chk_warn (void *__restrict __ptr, size_t __ptrlen, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "__fread_unlocked_chk") 5209: 5209: 5209: 5209: 5209: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fread_unlocked called with bigger size * nmemb than " "length of destination buffer"))) 5209: ; 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) size_t 5209: fread_unlocked (void *__restrict __ptr, size_t __size, size_t __n, 5209: FILE *__restrict __stream) 5209: { 5209: if (__builtin_object_size (__ptr, 0) != (size_t) -1) 5209: { 5209: if (!__builtin_constant_p (__size) 5209: || !__builtin_constant_p (__n) 5209: || (__size | __n) >= (((size_t) 1) << (8 * sizeof (size_t) / 2))) 5209: return __fread_unlocked_chk (__ptr, __builtin_object_size (__ptr, 0), __size, __n, 5209: __stream); 5209: 5209: if (__size * __n > __builtin_object_size (__ptr, 0)) 5209: return __fread_unlocked_chk_warn (__ptr, __builtin_object_size (__ptr, 0), __size, __n, 5209: __stream); 5209: } 5209: 5209: 5209: if (__builtin_constant_p (__size) 5209: && __builtin_constant_p (__n) 5209: && (__size | __n) < (((size_t) 1) << (8 * sizeof (size_t) / 2)) 5209: && __size * __n <= 8) 5209: { 5209: size_t __cnt = __size * __n; 5209: char *__cptr = (char *) __ptr; 5209: if (__cnt == 0) 5209: return 0; 5209: 5209: for (; __cnt > 0; --__cnt) 5209: { 5209: int __c = getc_unlocked (__stream); 5209: if (__c == (-1)) 5209: break; 5209: *__cptr++ = __c; 5209: } 5209: return (__cptr - (char *) __ptr) / __size; 5209: } 5209: 5209: return __fread_unlocked_alias (__ptr, __size, __n, __stream); 5209: } 5209: # 868 "/usr/include/stdio.h" 2 3 4 5209: 5209: 5209: 5209: 5209: 5209: } 5209: # 43 "/usr/include/c++/10/cstdio" 2 3 5209: # 96 "/usr/include/c++/10/cstdio" 3 5209: namespace std 5209: { 5209: using ::FILE; 5209: using ::fpos_t; 5209: 5209: using ::clearerr; 5209: using ::fclose; 5209: using ::feof; 5209: using ::ferror; 5209: using ::fflush; 5209: using ::fgetc; 5209: using ::fgetpos; 5209: using ::fgets; 5209: using ::fopen; 5209: using ::fprintf; 5209: using ::fputc; 5209: using ::fputs; 5209: using ::fread; 5209: using ::freopen; 5209: using ::fscanf; 5209: using ::fseek; 5209: using ::fsetpos; 5209: using ::ftell; 5209: using ::fwrite; 5209: using ::getc; 5209: using ::getchar; 5209: 5209: 5209: using ::gets; 5209: 5209: using ::perror; 5209: using ::printf; 5209: using ::putc; 5209: using ::putchar; 5209: using ::puts; 5209: using ::remove; 5209: using ::rename; 5209: using ::rewind; 5209: using ::scanf; 5209: using ::setbuf; 5209: using ::setvbuf; 5209: using ::sprintf; 5209: using ::sscanf; 5209: using ::tmpfile; 5209: 5209: using ::tmpnam; 5209: 5209: using ::ungetc; 5209: using ::vfprintf; 5209: using ::vprintf; 5209: using ::vsprintf; 5209: } 5209: # 157 "/usr/include/c++/10/cstdio" 3 5209: namespace __gnu_cxx 5209: { 5209: # 175 "/usr/include/c++/10/cstdio" 3 5209: using ::snprintf; 5209: using ::vfscanf; 5209: using ::vscanf; 5209: using ::vsnprintf; 5209: using ::vsscanf; 5209: 5209: } 5209: 5209: namespace std 5209: { 5209: using ::__gnu_cxx::snprintf; 5209: using ::__gnu_cxx::vfscanf; 5209: using ::__gnu_cxx::vscanf; 5209: using ::__gnu_cxx::vsnprintf; 5209: using ::__gnu_cxx::vsscanf; 5209: } 5209: # 44 "/usr/include/c++/10/ext/string_conversions.h" 2 3 5209: # 1 "/usr/include/c++/10/cerrno" 1 3 5209: # 39 "/usr/include/c++/10/cerrno" 3 5209: 5209: # 40 "/usr/include/c++/10/cerrno" 3 5209: 5209: 5209: # 1 "/usr/include/errno.h" 1 3 4 5209: # 28 "/usr/include/errno.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/errno.h" 1 3 4 5209: # 26 "/usr/include/aarch64-linux-gnu/bits/errno.h" 3 4 5209: # 1 "/usr/include/linux/errno.h" 1 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/asm/errno.h" 1 3 4 5209: # 1 "/usr/include/asm-generic/errno.h" 1 3 4 5209: 5209: 5209: 5209: 5209: # 1 "/usr/include/asm-generic/errno-base.h" 1 3 4 5209: # 6 "/usr/include/asm-generic/errno.h" 2 3 4 5209: # 2 "/usr/include/aarch64-linux-gnu/asm/errno.h" 2 3 4 5209: # 2 "/usr/include/linux/errno.h" 2 3 4 5209: # 27 "/usr/include/aarch64-linux-gnu/bits/errno.h" 2 3 4 5209: # 29 "/usr/include/errno.h" 2 3 4 5209: 5209: 5209: 5209: 5209: 5209: extern "C" { 5209: 5209: 5209: extern int *__errno_location (void) throw () __attribute__ ((__const__)); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern char *program_invocation_name; 5209: extern char *program_invocation_short_name; 5209: 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/types/error_t.h" 1 3 4 5209: # 22 "/usr/include/aarch64-linux-gnu/bits/types/error_t.h" 3 4 5209: typedef int error_t; 5209: # 49 "/usr/include/errno.h" 2 3 4 5209: 5209: 5209: 5209: } 5209: # 43 "/usr/include/c++/10/cerrno" 2 3 5209: # 45 "/usr/include/c++/10/ext/string_conversions.h" 2 3 5209: 5209: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: 5209: template 5209: _Ret 5209: __stoa(_TRet (*__convf) (const _CharT*, _CharT**, _Base...), 5209: const char* __name, const _CharT* __str, std::size_t* __idx, 5209: _Base... __base) 5209: { 5209: _Ret __ret; 5209: 5209: _CharT* __endptr; 5209: 5209: struct _Save_errno { 5209: _Save_errno() : _M_errno((*__errno_location ())) { (*__errno_location ()) = 0; } 5209: ~_Save_errno() { if ((*__errno_location ()) == 0) (*__errno_location ()) = _M_errno; } 5209: int _M_errno; 5209: } const __save_errno; 5209: 5209: struct _Range_chk { 5209: static bool 5209: _S_chk(_TRet, std::false_type) { return false; } 5209: 5209: static bool 5209: _S_chk(_TRet __val, std::true_type) 5209: { 5209: return __val < _TRet(__numeric_traits::__min) 5209: || __val > _TRet(__numeric_traits::__max); 5209: } 5209: }; 5209: 5209: const _TRet __tmp = __convf(__str, &__endptr, __base...); 5209: 5209: if (__endptr == __str) 5209: std::__throw_invalid_argument(__name); 5209: else if ((*__errno_location ()) == 34 5209: || _Range_chk::_S_chk(__tmp, std::is_same<_Ret, int>{})) 5209: std::__throw_out_of_range(__name); 5209: else 5209: __ret = __tmp; 5209: 5209: if (__idx) 5209: *__idx = __endptr - __str; 5209: 5209: return __ret; 5209: } 5209: 5209: 5209: template 5209: _String 5209: __to_xstring(int (*__convf) (_CharT*, std::size_t, const _CharT*, 5209: __builtin_va_list), std::size_t __n, 5209: const _CharT* __fmt, ...) 5209: { 5209: 5209: 5209: _CharT* __s = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) 5209: * __n)); 5209: 5209: __builtin_va_list __args; 5209: __builtin_va_start(__args, __fmt); 5209: 5209: const int __len = __convf(__s, __n, __fmt, __args); 5209: 5209: __builtin_va_end(__args); 5209: 5209: return _String(__s, __s + __len); 5209: } 5209: 5209: 5209: } 5209: # 6506 "/usr/include/c++/10/bits/basic_string.h" 2 3 5209: # 1 "/usr/include/c++/10/bits/charconv.h" 1 3 5209: # 33 "/usr/include/c++/10/bits/charconv.h" 3 5209: 5209: # 34 "/usr/include/c++/10/bits/charconv.h" 3 5209: 5209: 5209: 5209: 5209: 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: namespace __detail 5209: { 5209: 5209: template 5209: unsigned 5209: __to_chars_len(_Tp __value, int __base = 10) noexcept 5209: { 5209: static_assert(is_integral<_Tp>::value, "implementation bug"); 5209: static_assert(is_unsigned<_Tp>::value, "implementation bug"); 5209: 5209: unsigned __n = 1; 5209: const unsigned __b2 = __base * __base; 5209: const unsigned __b3 = __b2 * __base; 5209: const unsigned long __b4 = __b3 * __base; 5209: for (;;) 5209: { 5209: if (__value < (unsigned)__base) return __n; 5209: if (__value < __b2) return __n + 1; 5209: if (__value < __b3) return __n + 2; 5209: if (__value < __b4) return __n + 3; 5209: __value /= __b4; 5209: __n += 4; 5209: } 5209: } 5209: 5209: 5209: 5209: 5209: template 5209: void 5209: __to_chars_10_impl(char* __first, unsigned __len, _Tp __val) noexcept 5209: { 5209: static_assert(is_integral<_Tp>::value, "implementation bug"); 5209: static_assert(is_unsigned<_Tp>::value, "implementation bug"); 5209: 5209: static constexpr char __digits[201] = 5209: "0001020304050607080910111213141516171819" 5209: "2021222324252627282930313233343536373839" 5209: "4041424344454647484950515253545556575859" 5209: "6061626364656667686970717273747576777879" 5209: "8081828384858687888990919293949596979899"; 5209: unsigned __pos = __len - 1; 5209: while (__val >= 100) 5209: { 5209: auto const __num = (__val % 100) * 2; 5209: __val /= 100; 5209: __first[__pos] = __digits[__num + 1]; 5209: __first[__pos - 1] = __digits[__num]; 5209: __pos -= 2; 5209: } 5209: if (__val >= 10) 5209: { 5209: auto const __num = __val * 2; 5209: __first[1] = __digits[__num + 1]; 5209: __first[0] = __digits[__num]; 5209: } 5209: else 5209: __first[0] = '0' + __val; 5209: } 5209: 5209: } 5209: 5209: } 5209: # 6507 "/usr/include/c++/10/bits/basic_string.h" 2 3 5209: 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: namespace __cxx11 { 5209: 5209: 5209: 5209: inline int 5209: stoi(const string& __str, size_t* __idx = 0, int __base = 10) 5209: { return __gnu_cxx::__stoa(&std::strtol, "stoi", __str.c_str(), 5209: __idx, __base); } 5209: 5209: inline long 5209: stol(const string& __str, size_t* __idx = 0, int __base = 10) 5209: { return __gnu_cxx::__stoa(&std::strtol, "stol", __str.c_str(), 5209: __idx, __base); } 5209: 5209: inline unsigned long 5209: stoul(const string& __str, size_t* __idx = 0, int __base = 10) 5209: { return __gnu_cxx::__stoa(&std::strtoul, "stoul", __str.c_str(), 5209: __idx, __base); } 5209: 5209: inline long long 5209: stoll(const string& __str, size_t* __idx = 0, int __base = 10) 5209: { return __gnu_cxx::__stoa(&std::strtoll, "stoll", __str.c_str(), 5209: __idx, __base); } 5209: 5209: inline unsigned long long 5209: stoull(const string& __str, size_t* __idx = 0, int __base = 10) 5209: { return __gnu_cxx::__stoa(&std::strtoull, "stoull", __str.c_str(), 5209: __idx, __base); } 5209: 5209: 5209: inline float 5209: stof(const string& __str, size_t* __idx = 0) 5209: { return __gnu_cxx::__stoa(&std::strtof, "stof", __str.c_str(), __idx); } 5209: 5209: inline double 5209: stod(const string& __str, size_t* __idx = 0) 5209: { return __gnu_cxx::__stoa(&std::strtod, "stod", __str.c_str(), __idx); } 5209: 5209: inline long double 5209: stold(const string& __str, size_t* __idx = 0) 5209: { return __gnu_cxx::__stoa(&std::strtold, "stold", __str.c_str(), __idx); } 5209: 5209: 5209: 5209: 5209: inline string 5209: to_string(int __val) 5209: { 5209: const bool __neg = __val < 0; 5209: const unsigned __uval = __neg ? (unsigned)~__val + 1u : __val; 5209: const auto __len = __detail::__to_chars_len(__uval); 5209: string __str(__neg + __len, '-'); 5209: __detail::__to_chars_10_impl(&__str[__neg], __len, __uval); 5209: return __str; 5209: } 5209: 5209: inline string 5209: to_string(unsigned __val) 5209: { 5209: string __str(__detail::__to_chars_len(__val), '\0'); 5209: __detail::__to_chars_10_impl(&__str[0], __str.size(), __val); 5209: return __str; 5209: } 5209: 5209: inline string 5209: to_string(long __val) 5209: { 5209: const bool __neg = __val < 0; 5209: const unsigned long __uval = __neg ? (unsigned long)~__val + 1ul : __val; 5209: const auto __len = __detail::__to_chars_len(__uval); 5209: string __str(__neg + __len, '-'); 5209: __detail::__to_chars_10_impl(&__str[__neg], __len, __uval); 5209: return __str; 5209: } 5209: 5209: inline string 5209: to_string(unsigned long __val) 5209: { 5209: string __str(__detail::__to_chars_len(__val), '\0'); 5209: __detail::__to_chars_10_impl(&__str[0], __str.size(), __val); 5209: return __str; 5209: } 5209: 5209: inline string 5209: to_string(long long __val) 5209: { 5209: const bool __neg = __val < 0; 5209: const unsigned long long __uval 5209: = __neg ? (unsigned long long)~__val + 1ull : __val; 5209: const auto __len = __detail::__to_chars_len(__uval); 5209: string __str(__neg + __len, '-'); 5209: __detail::__to_chars_10_impl(&__str[__neg], __len, __uval); 5209: return __str; 5209: } 5209: 5209: inline string 5209: to_string(unsigned long long __val) 5209: { 5209: string __str(__detail::__to_chars_len(__val), '\0'); 5209: __detail::__to_chars_10_impl(&__str[0], __str.size(), __val); 5209: return __str; 5209: } 5209: 5209: 5209: 5209: 5209: inline string 5209: to_string(float __val) 5209: { 5209: const int __n = 5209: __gnu_cxx::__numeric_traits::__max_exponent10 + 20; 5209: return __gnu_cxx::__to_xstring(&std::vsnprintf, __n, 5209: "%f", __val); 5209: } 5209: 5209: inline string 5209: to_string(double __val) 5209: { 5209: const int __n = 5209: __gnu_cxx::__numeric_traits::__max_exponent10 + 20; 5209: return __gnu_cxx::__to_xstring(&std::vsnprintf, __n, 5209: "%f", __val); 5209: } 5209: 5209: inline string 5209: to_string(long double __val) 5209: { 5209: const int __n = 5209: __gnu_cxx::__numeric_traits::__max_exponent10 + 20; 5209: return __gnu_cxx::__to_xstring(&std::vsnprintf, __n, 5209: "%Lf", __val); 5209: } 5209: 5209: 5209: 5209: inline int 5209: stoi(const wstring& __str, size_t* __idx = 0, int __base = 10) 5209: { return __gnu_cxx::__stoa(&std::wcstol, "stoi", __str.c_str(), 5209: __idx, __base); } 5209: 5209: inline long 5209: stol(const wstring& __str, size_t* __idx = 0, int __base = 10) 5209: { return __gnu_cxx::__stoa(&std::wcstol, "stol", __str.c_str(), 5209: __idx, __base); } 5209: 5209: inline unsigned long 5209: stoul(const wstring& __str, size_t* __idx = 0, int __base = 10) 5209: { return __gnu_cxx::__stoa(&std::wcstoul, "stoul", __str.c_str(), 5209: __idx, __base); } 5209: 5209: inline long long 5209: stoll(const wstring& __str, size_t* __idx = 0, int __base = 10) 5209: { return __gnu_cxx::__stoa(&std::wcstoll, "stoll", __str.c_str(), 5209: __idx, __base); } 5209: 5209: inline unsigned long long 5209: stoull(const wstring& __str, size_t* __idx = 0, int __base = 10) 5209: { return __gnu_cxx::__stoa(&std::wcstoull, "stoull", __str.c_str(), 5209: __idx, __base); } 5209: 5209: 5209: inline float 5209: stof(const wstring& __str, size_t* __idx = 0) 5209: { return __gnu_cxx::__stoa(&std::wcstof, "stof", __str.c_str(), __idx); } 5209: 5209: inline double 5209: stod(const wstring& __str, size_t* __idx = 0) 5209: { return __gnu_cxx::__stoa(&std::wcstod, "stod", __str.c_str(), __idx); } 5209: 5209: inline long double 5209: stold(const wstring& __str, size_t* __idx = 0) 5209: { return __gnu_cxx::__stoa(&std::wcstold, "stold", __str.c_str(), __idx); } 5209: 5209: 5209: 5209: inline wstring 5209: to_wstring(int __val) 5209: { return __gnu_cxx::__to_xstring(&std::vswprintf, 4 * sizeof(int), 5209: L"%d", __val); } 5209: 5209: inline wstring 5209: to_wstring(unsigned __val) 5209: { return __gnu_cxx::__to_xstring(&std::vswprintf, 5209: 4 * sizeof(unsigned), 5209: L"%u", __val); } 5209: 5209: inline wstring 5209: to_wstring(long __val) 5209: { return __gnu_cxx::__to_xstring(&std::vswprintf, 4 * sizeof(long), 5209: L"%ld", __val); } 5209: 5209: inline wstring 5209: to_wstring(unsigned long __val) 5209: { return __gnu_cxx::__to_xstring(&std::vswprintf, 5209: 4 * sizeof(unsigned long), 5209: L"%lu", __val); } 5209: 5209: inline wstring 5209: to_wstring(long long __val) 5209: { return __gnu_cxx::__to_xstring(&std::vswprintf, 5209: 4 * sizeof(long long), 5209: L"%lld", __val); } 5209: 5209: inline wstring 5209: to_wstring(unsigned long long __val) 5209: { return __gnu_cxx::__to_xstring(&std::vswprintf, 5209: 4 * sizeof(unsigned long long), 5209: L"%llu", __val); } 5209: 5209: inline wstring 5209: to_wstring(float __val) 5209: { 5209: const int __n = 5209: __gnu_cxx::__numeric_traits::__max_exponent10 + 20; 5209: return __gnu_cxx::__to_xstring(&std::vswprintf, __n, 5209: L"%f", __val); 5209: } 5209: 5209: inline wstring 5209: to_wstring(double __val) 5209: { 5209: const int __n = 5209: __gnu_cxx::__numeric_traits::__max_exponent10 + 20; 5209: return __gnu_cxx::__to_xstring(&std::vswprintf, __n, 5209: L"%f", __val); 5209: } 5209: 5209: inline wstring 5209: to_wstring(long double __val) 5209: { 5209: const int __n = 5209: __gnu_cxx::__numeric_traits::__max_exponent10 + 20; 5209: return __gnu_cxx::__to_xstring(&std::vswprintf, __n, 5209: L"%Lf", __val); 5209: } 5209: 5209: 5209: 5209: } 5209: 5209: } 5209: 5209: 5209: 5209: 5209: 5209: # 1 "/usr/include/c++/10/bits/functional_hash.h" 1 3 5209: # 33 "/usr/include/c++/10/bits/functional_hash.h" 3 5209: 5209: # 34 "/usr/include/c++/10/bits/functional_hash.h" 3 5209: 5209: 5209: 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: # 49 "/usr/include/c++/10/bits/functional_hash.h" 3 5209: template 5209: struct __hash_base 5209: { 5209: typedef _Result result_type ; 5209: typedef _Arg argument_type ; 5209: }; 5209: 5209: 5209: template 5209: struct hash; 5209: 5209: template 5209: struct __poison_hash 5209: { 5209: static constexpr bool __enable_hash_call = false; 5209: private: 5209: 5209: __poison_hash(__poison_hash&&); 5209: ~__poison_hash(); 5209: }; 5209: 5209: template 5209: struct __poison_hash<_Tp, __void_t()(declval<_Tp>()))>> 5209: { 5209: static constexpr bool __enable_hash_call = true; 5209: }; 5209: 5209: 5209: template::value> 5209: struct __hash_enum 5209: { 5209: private: 5209: 5209: __hash_enum(__hash_enum&&); 5209: ~__hash_enum(); 5209: }; 5209: 5209: 5209: template 5209: struct __hash_enum<_Tp, true> : public __hash_base 5209: { 5209: size_t 5209: operator()(_Tp __val) const noexcept 5209: { 5209: using __type = typename underlying_type<_Tp>::type; 5209: return hash<__type>{}(static_cast<__type>(__val)); 5209: } 5209: }; 5209: 5209: 5209: 5209: template 5209: struct hash : __hash_enum<_Tp> 5209: { }; 5209: 5209: 5209: template 5209: struct hash<_Tp*> : public __hash_base 5209: { 5209: size_t 5209: operator()(_Tp* __p) const noexcept 5209: { return reinterpret_cast(__p); } 5209: }; 5209: # 124 "/usr/include/c++/10/bits/functional_hash.h" 3 5209: template<> struct hash : public __hash_base { size_t operator()(bool __val) const noexcept { return static_cast(__val); } }; 5209: 5209: 5209: template<> struct hash : public __hash_base { size_t operator()(char __val) const noexcept { return static_cast(__val); } }; 5209: 5209: 5209: template<> struct hash : public __hash_base { size_t operator()(signed char __val) const noexcept { return static_cast(__val); } }; 5209: 5209: 5209: template<> struct hash : public __hash_base { size_t operator()(unsigned char __val) const noexcept { return static_cast(__val); } }; 5209: 5209: 5209: template<> struct hash : public __hash_base { size_t operator()(wchar_t __val) const noexcept { return static_cast(__val); } }; 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: template<> struct hash : public __hash_base { size_t operator()(char16_t __val) const noexcept { return static_cast(__val); } }; 5209: 5209: 5209: template<> struct hash : public __hash_base { size_t operator()(char32_t __val) const noexcept { return static_cast(__val); } }; 5209: 5209: 5209: template<> struct hash : public __hash_base { size_t operator()(short __val) const noexcept { return static_cast(__val); } }; 5209: 5209: 5209: template<> struct hash : public __hash_base { size_t operator()(int __val) const noexcept { return static_cast(__val); } }; 5209: 5209: 5209: template<> struct hash : public __hash_base { size_t operator()(long __val) const noexcept { return static_cast(__val); } }; 5209: 5209: 5209: template<> struct hash : public __hash_base { size_t operator()(long long __val) const noexcept { return static_cast(__val); } }; 5209: 5209: 5209: template<> struct hash : public __hash_base { size_t operator()(unsigned short __val) const noexcept { return static_cast(__val); } }; 5209: 5209: 5209: template<> struct hash : public __hash_base { size_t operator()(unsigned int __val) const noexcept { return static_cast(__val); } }; 5209: 5209: 5209: template<> struct hash : public __hash_base { size_t operator()(unsigned long __val) const noexcept { return static_cast(__val); } }; 5209: 5209: 5209: template<> struct hash : public __hash_base { size_t operator()(unsigned long long __val) const noexcept { return static_cast(__val); } }; 5209: 5209: 5209: template<> struct hash<__int128> : public __hash_base { size_t operator()(__int128 __val) const noexcept { return static_cast(__val); } }; 5209: template<> struct hash<__int128 unsigned> : public __hash_base { size_t operator()(__int128 unsigned __val) const noexcept { return static_cast(__val); } }; 5209: # 192 "/usr/include/c++/10/bits/functional_hash.h" 3 5209: struct _Hash_impl 5209: { 5209: static size_t 5209: hash(const void* __ptr, size_t __clength, 5209: size_t __seed = static_cast(0xc70f6907UL)) 5209: { return _Hash_bytes(__ptr, __clength, __seed); } 5209: 5209: template 5209: static size_t 5209: hash(const _Tp& __val) 5209: { return hash(&__val, sizeof(__val)); } 5209: 5209: template 5209: static size_t 5209: __hash_combine(const _Tp& __val, size_t __hash) 5209: { return hash(&__val, sizeof(__val), __hash); } 5209: }; 5209: 5209: 5209: struct _Fnv_hash_impl 5209: { 5209: static size_t 5209: hash(const void* __ptr, size_t __clength, 5209: size_t __seed = static_cast(2166136261UL)) 5209: { return _Fnv_hash_bytes(__ptr, __clength, __seed); } 5209: 5209: template 5209: static size_t 5209: hash(const _Tp& __val) 5209: { return hash(&__val, sizeof(__val)); } 5209: 5209: template 5209: static size_t 5209: __hash_combine(const _Tp& __val, size_t __hash) 5209: { return hash(&__val, sizeof(__val), __hash); } 5209: }; 5209: 5209: 5209: template<> 5209: struct hash : public __hash_base 5209: { 5209: size_t 5209: operator()(float __val) const noexcept 5209: { 5209: 5209: return __val != 0.0f ? std::_Hash_impl::hash(__val) : 0; 5209: } 5209: }; 5209: 5209: 5209: template<> 5209: struct hash : public __hash_base 5209: { 5209: size_t 5209: operator()(double __val) const noexcept 5209: { 5209: 5209: return __val != 0.0 ? std::_Hash_impl::hash(__val) : 0; 5209: } 5209: }; 5209: 5209: 5209: template<> 5209: struct hash 5209: : public __hash_base 5209: { 5209: __attribute__ ((__pure__)) size_t 5209: operator()(long double __val) const noexcept; 5209: }; 5209: # 278 "/usr/include/c++/10/bits/functional_hash.h" 3 5209: template 5209: struct __is_fast_hash : public std::true_type 5209: { }; 5209: 5209: template<> 5209: struct __is_fast_hash> : public std::false_type 5209: { }; 5209: 5209: 5209: } 5209: # 6758 "/usr/include/c++/10/bits/basic_string.h" 2 3 5209: 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: template<> 5209: struct hash 5209: : public __hash_base 5209: { 5209: size_t 5209: operator()(const string& __s) const noexcept 5209: { return std::_Hash_impl::hash(__s.data(), __s.length()); } 5209: }; 5209: 5209: template<> 5209: struct __is_fast_hash> : std::false_type 5209: { }; 5209: 5209: 5209: 5209: template<> 5209: struct hash 5209: : public __hash_base 5209: { 5209: size_t 5209: operator()(const wstring& __s) const noexcept 5209: { return std::_Hash_impl::hash(__s.data(), 5209: __s.length() * sizeof(wchar_t)); } 5209: }; 5209: 5209: template<> 5209: struct __is_fast_hash> : std::false_type 5209: { }; 5209: # 6816 "/usr/include/c++/10/bits/basic_string.h" 3 5209: template<> 5209: struct hash 5209: : public __hash_base 5209: { 5209: size_t 5209: operator()(const u16string& __s) const noexcept 5209: { return std::_Hash_impl::hash(__s.data(), 5209: __s.length() * sizeof(char16_t)); } 5209: }; 5209: 5209: template<> 5209: struct __is_fast_hash> : std::false_type 5209: { }; 5209: 5209: 5209: template<> 5209: struct hash 5209: : public __hash_base 5209: { 5209: size_t 5209: operator()(const u32string& __s) const noexcept 5209: { return std::_Hash_impl::hash(__s.data(), 5209: __s.length() * sizeof(char32_t)); } 5209: }; 5209: 5209: template<> 5209: struct __is_fast_hash> : std::false_type 5209: { }; 5209: # 6906 "/usr/include/c++/10/bits/basic_string.h" 3 5209: 5209: } 5209: # 56 "/usr/include/c++/10/string" 2 3 5209: # 1 "/usr/include/c++/10/bits/basic_string.tcc" 1 3 5209: # 42 "/usr/include/c++/10/bits/basic_string.tcc" 3 5209: 5209: # 43 "/usr/include/c++/10/bits/basic_string.tcc" 3 5209: 5209: 5209: 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: 5209: 5209: template 5209: const typename basic_string<_CharT, _Traits, _Alloc>::size_type 5209: basic_string<_CharT, _Traits, _Alloc>::npos; 5209: 5209: template 5209: void 5209: basic_string<_CharT, _Traits, _Alloc>:: 5209: swap(basic_string& __s) noexcept 5209: { 5209: if (this == &__s) 5209: return; 5209: 5209: _Alloc_traits::_S_on_swap(_M_get_allocator(), __s._M_get_allocator()); 5209: 5209: if (_M_is_local()) 5209: if (__s._M_is_local()) 5209: { 5209: if (length() && __s.length()) 5209: { 5209: _CharT __tmp_data[_S_local_capacity + 1]; 5209: traits_type::copy(__tmp_data, __s._M_local_buf, 5209: _S_local_capacity + 1); 5209: traits_type::copy(__s._M_local_buf, _M_local_buf, 5209: _S_local_capacity + 1); 5209: traits_type::copy(_M_local_buf, __tmp_data, 5209: _S_local_capacity + 1); 5209: } 5209: else if (__s.length()) 5209: { 5209: traits_type::copy(_M_local_buf, __s._M_local_buf, 5209: _S_local_capacity + 1); 5209: _M_length(__s.length()); 5209: __s._M_set_length(0); 5209: return; 5209: } 5209: else if (length()) 5209: { 5209: traits_type::copy(__s._M_local_buf, _M_local_buf, 5209: _S_local_capacity + 1); 5209: __s._M_length(length()); 5209: _M_set_length(0); 5209: return; 5209: } 5209: } 5209: else 5209: { 5209: const size_type __tmp_capacity = __s._M_allocated_capacity; 5209: traits_type::copy(__s._M_local_buf, _M_local_buf, 5209: _S_local_capacity + 1); 5209: _M_data(__s._M_data()); 5209: __s._M_data(__s._M_local_buf); 5209: _M_capacity(__tmp_capacity); 5209: } 5209: else 5209: { 5209: const size_type __tmp_capacity = _M_allocated_capacity; 5209: if (__s._M_is_local()) 5209: { 5209: traits_type::copy(_M_local_buf, __s._M_local_buf, 5209: _S_local_capacity + 1); 5209: __s._M_data(_M_data()); 5209: _M_data(_M_local_buf); 5209: } 5209: else 5209: { 5209: pointer __tmp_ptr = _M_data(); 5209: _M_data(__s._M_data()); 5209: __s._M_data(__tmp_ptr); 5209: _M_capacity(__s._M_allocated_capacity); 5209: } 5209: __s._M_capacity(__tmp_capacity); 5209: } 5209: 5209: const size_type __tmp_length = length(); 5209: _M_length(__s.length()); 5209: __s._M_length(__tmp_length); 5209: } 5209: 5209: template 5209: typename basic_string<_CharT, _Traits, _Alloc>::pointer 5209: basic_string<_CharT, _Traits, _Alloc>:: 5209: _M_create(size_type& __capacity, size_type __old_capacity) 5209: { 5209: 5209: 5209: if (__capacity > max_size()) 5209: std::__throw_length_error(("basic_string::_M_create")); 5209: 5209: 5209: 5209: 5209: if (__capacity > __old_capacity && __capacity < 2 * __old_capacity) 5209: { 5209: __capacity = 2 * __old_capacity; 5209: 5209: if (__capacity > max_size()) 5209: __capacity = max_size(); 5209: } 5209: 5209: 5209: 5209: return _Alloc_traits::allocate(_M_get_allocator(), __capacity + 1); 5209: } 5209: 5209: 5209: 5209: 5209: 5209: template 5209: template 5209: void 5209: basic_string<_CharT, _Traits, _Alloc>:: 5209: _M_construct(_InIterator __beg, _InIterator __end, 5209: std::input_iterator_tag) 5209: { 5209: size_type __len = 0; 5209: size_type __capacity = size_type(_S_local_capacity); 5209: 5209: while (__beg != __end && __len < __capacity) 5209: { 5209: _M_data()[__len++] = *__beg; 5209: ++__beg; 5209: } 5209: 5209: try 5209: { 5209: while (__beg != __end) 5209: { 5209: if (__len == __capacity) 5209: { 5209: 5209: __capacity = __len + 1; 5209: pointer __another = _M_create(__capacity, __len); 5209: this->_S_copy(__another, _M_data(), __len); 5209: _M_dispose(); 5209: _M_data(__another); 5209: _M_capacity(__capacity); 5209: } 5209: _M_data()[__len++] = *__beg; 5209: ++__beg; 5209: } 5209: } 5209: catch(...) 5209: { 5209: _M_dispose(); 5209: throw; 5209: } 5209: 5209: _M_set_length(__len); 5209: } 5209: 5209: template 5209: template 5209: void 5209: basic_string<_CharT, _Traits, _Alloc>:: 5209: _M_construct(_InIterator __beg, _InIterator __end, 5209: std::forward_iterator_tag) 5209: { 5209: 5209: if (__gnu_cxx::__is_null_pointer(__beg) && __beg != __end) 5209: std::__throw_logic_error(("basic_string::" "_M_construct null not valid") 5209: ); 5209: 5209: size_type __dnew = static_cast(std::distance(__beg, __end)); 5209: 5209: if (__dnew > size_type(_S_local_capacity)) 5209: { 5209: _M_data(_M_create(__dnew, size_type(0))); 5209: _M_capacity(__dnew); 5209: } 5209: 5209: 5209: try 5209: { this->_S_copy_chars(_M_data(), __beg, __end); } 5209: catch(...) 5209: { 5209: _M_dispose(); 5209: throw; 5209: } 5209: 5209: _M_set_length(__dnew); 5209: } 5209: 5209: template 5209: void 5209: basic_string<_CharT, _Traits, _Alloc>:: 5209: _M_construct(size_type __n, _CharT __c) 5209: { 5209: if (__n > size_type(_S_local_capacity)) 5209: { 5209: _M_data(_M_create(__n, size_type(0))); 5209: _M_capacity(__n); 5209: } 5209: 5209: if (__n) 5209: this->_S_assign(_M_data(), __n, __c); 5209: 5209: _M_set_length(__n); 5209: } 5209: 5209: template 5209: void 5209: basic_string<_CharT, _Traits, _Alloc>:: 5209: _M_assign(const basic_string& __str) 5209: { 5209: if (this != &__str) 5209: { 5209: const size_type __rsize = __str.length(); 5209: const size_type __capacity = capacity(); 5209: 5209: if (__rsize > __capacity) 5209: { 5209: size_type __new_capacity = __rsize; 5209: pointer __tmp = _M_create(__new_capacity, __capacity); 5209: _M_dispose(); 5209: _M_data(__tmp); 5209: _M_capacity(__new_capacity); 5209: } 5209: 5209: if (__rsize) 5209: this->_S_copy(_M_data(), __str._M_data(), __rsize); 5209: 5209: _M_set_length(__rsize); 5209: } 5209: } 5209: 5209: template 5209: void 5209: basic_string<_CharT, _Traits, _Alloc>:: 5209: reserve(size_type __res) 5209: { 5209: 5209: if (__res < length()) 5209: __res = length(); 5209: 5209: const size_type __capacity = capacity(); 5209: if (__res != __capacity) 5209: { 5209: if (__res > __capacity 5209: || __res > size_type(_S_local_capacity)) 5209: { 5209: pointer __tmp = _M_create(__res, __capacity); 5209: this->_S_copy(__tmp, _M_data(), length() + 1); 5209: _M_dispose(); 5209: _M_data(__tmp); 5209: _M_capacity(__res); 5209: } 5209: else if (!_M_is_local()) 5209: { 5209: this->_S_copy(_M_local_data(), _M_data(), length() + 1); 5209: _M_destroy(__capacity); 5209: _M_data(_M_local_data()); 5209: } 5209: } 5209: } 5209: 5209: template 5209: void 5209: basic_string<_CharT, _Traits, _Alloc>:: 5209: _M_mutate(size_type __pos, size_type __len1, const _CharT* __s, 5209: size_type __len2) 5209: { 5209: const size_type __how_much = length() - __pos - __len1; 5209: 5209: size_type __new_capacity = length() + __len2 - __len1; 5209: pointer __r = _M_create(__new_capacity, capacity()); 5209: 5209: if (__pos) 5209: this->_S_copy(__r, _M_data(), __pos); 5209: if (__s && __len2) 5209: this->_S_copy(__r + __pos, __s, __len2); 5209: if (__how_much) 5209: this->_S_copy(__r + __pos + __len2, 5209: _M_data() + __pos + __len1, __how_much); 5209: 5209: _M_dispose(); 5209: _M_data(__r); 5209: _M_capacity(__new_capacity); 5209: } 5209: 5209: template 5209: void 5209: basic_string<_CharT, _Traits, _Alloc>:: 5209: _M_erase(size_type __pos, size_type __n) 5209: { 5209: const size_type __how_much = length() - __pos - __n; 5209: 5209: if (__how_much && __n) 5209: this->_S_move(_M_data() + __pos, _M_data() + __pos + __n, __how_much); 5209: 5209: _M_set_length(length() - __n); 5209: } 5209: 5209: template 5209: void 5209: basic_string<_CharT, _Traits, _Alloc>:: 5209: resize(size_type __n, _CharT __c) 5209: { 5209: const size_type __size = this->size(); 5209: if (__size < __n) 5209: this->append(__n - __size, __c); 5209: else if (__n < __size) 5209: this->_M_set_length(__n); 5209: } 5209: 5209: template 5209: basic_string<_CharT, _Traits, _Alloc>& 5209: basic_string<_CharT, _Traits, _Alloc>:: 5209: _M_append(const _CharT* __s, size_type __n) 5209: { 5209: const size_type __len = __n + this->size(); 5209: 5209: if (__len <= this->capacity()) 5209: { 5209: if (__n) 5209: this->_S_copy(this->_M_data() + this->size(), __s, __n); 5209: } 5209: else 5209: this->_M_mutate(this->size(), size_type(0), __s, __n); 5209: 5209: this->_M_set_length(__len); 5209: return *this; 5209: } 5209: 5209: template 5209: template 5209: basic_string<_CharT, _Traits, _Alloc>& 5209: basic_string<_CharT, _Traits, _Alloc>:: 5209: _M_replace_dispatch(const_iterator __i1, const_iterator __i2, 5209: _InputIterator __k1, _InputIterator __k2, 5209: std::__false_type) 5209: { 5209: 5209: 5209: const basic_string __s(__k1, __k2, this->get_allocator()); 5209: const size_type __n1 = __i2 - __i1; 5209: return _M_replace(__i1 - begin(), __n1, __s._M_data(), 5209: __s.size()); 5209: } 5209: 5209: template 5209: basic_string<_CharT, _Traits, _Alloc>& 5209: basic_string<_CharT, _Traits, _Alloc>:: 5209: _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2, 5209: _CharT __c) 5209: { 5209: _M_check_length(__n1, __n2, "basic_string::_M_replace_aux"); 5209: 5209: const size_type __old_size = this->size(); 5209: const size_type __new_size = __old_size + __n2 - __n1; 5209: 5209: if (__new_size <= this->capacity()) 5209: { 5209: pointer __p = this->_M_data() + __pos1; 5209: 5209: const size_type __how_much = __old_size - __pos1 - __n1; 5209: if (__how_much && __n1 != __n2) 5209: this->_S_move(__p + __n2, __p + __n1, __how_much); 5209: } 5209: else 5209: this->_M_mutate(__pos1, __n1, 0, __n2); 5209: 5209: if (__n2) 5209: this->_S_assign(this->_M_data() + __pos1, __n2, __c); 5209: 5209: this->_M_set_length(__new_size); 5209: return *this; 5209: } 5209: 5209: template 5209: basic_string<_CharT, _Traits, _Alloc>& 5209: basic_string<_CharT, _Traits, _Alloc>:: 5209: _M_replace(size_type __pos, size_type __len1, const _CharT* __s, 5209: const size_type __len2) 5209: { 5209: _M_check_length(__len1, __len2, "basic_string::_M_replace"); 5209: 5209: const size_type __old_size = this->size(); 5209: const size_type __new_size = __old_size + __len2 - __len1; 5209: 5209: if (__new_size <= this->capacity()) 5209: { 5209: pointer __p = this->_M_data() + __pos; 5209: 5209: const size_type __how_much = __old_size - __pos - __len1; 5209: if (_M_disjunct(__s)) 5209: { 5209: if (__how_much && __len1 != __len2) 5209: this->_S_move(__p + __len2, __p + __len1, __how_much); 5209: if (__len2) 5209: this->_S_copy(__p, __s, __len2); 5209: } 5209: else 5209: { 5209: 5209: if (__len2 && __len2 <= __len1) 5209: this->_S_move(__p, __s, __len2); 5209: if (__how_much && __len1 != __len2) 5209: this->_S_move(__p + __len2, __p + __len1, __how_much); 5209: if (__len2 > __len1) 5209: { 5209: if (__s + __len2 <= __p + __len1) 5209: this->_S_move(__p, __s, __len2); 5209: else if (__s >= __p + __len1) 5209: this->_S_copy(__p, __s + __len2 - __len1, __len2); 5209: else 5209: { 5209: const size_type __nleft = (__p + __len1) - __s; 5209: this->_S_move(__p, __s, __nleft); 5209: this->_S_copy(__p + __nleft, __p + __len2, 5209: __len2 - __nleft); 5209: } 5209: } 5209: } 5209: } 5209: else 5209: this->_M_mutate(__pos, __len1, __s, __len2); 5209: 5209: this->_M_set_length(__new_size); 5209: return *this; 5209: } 5209: 5209: template 5209: typename basic_string<_CharT, _Traits, _Alloc>::size_type 5209: basic_string<_CharT, _Traits, _Alloc>:: 5209: copy(_CharT* __s, size_type __n, size_type __pos) const 5209: { 5209: _M_check(__pos, "basic_string::copy"); 5209: __n = _M_limit(__pos, __n); 5209: ; 5209: if (__n) 5209: _S_copy(__s, _M_data() + __pos, __n); 5209: 5209: return __n; 5209: } 5209: # 1158 "/usr/include/c++/10/bits/basic_string.tcc" 3 5209: template 5209: basic_string<_CharT, _Traits, _Alloc> 5209: operator+(const _CharT* __lhs, 5209: const basic_string<_CharT, _Traits, _Alloc>& __rhs) 5209: { 5209: ; 5209: typedef basic_string<_CharT, _Traits, _Alloc> __string_type; 5209: typedef typename __string_type::size_type __size_type; 5209: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template 5209: rebind<_CharT>::other _Char_alloc_type; 5209: typedef __gnu_cxx::__alloc_traits<_Char_alloc_type> _Alloc_traits; 5209: const __size_type __len = _Traits::length(__lhs); 5209: __string_type __str(_Alloc_traits::_S_select_on_copy( 5209: __rhs.get_allocator())); 5209: __str.reserve(__len + __rhs.size()); 5209: __str.append(__lhs, __len); 5209: __str.append(__rhs); 5209: return __str; 5209: } 5209: 5209: template 5209: basic_string<_CharT, _Traits, _Alloc> 5209: operator+(_CharT __lhs, const basic_string<_CharT, _Traits, _Alloc>& __rhs) 5209: { 5209: typedef basic_string<_CharT, _Traits, _Alloc> __string_type; 5209: typedef typename __string_type::size_type __size_type; 5209: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template 5209: rebind<_CharT>::other _Char_alloc_type; 5209: typedef __gnu_cxx::__alloc_traits<_Char_alloc_type> _Alloc_traits; 5209: __string_type __str(_Alloc_traits::_S_select_on_copy( 5209: __rhs.get_allocator())); 5209: const __size_type __len = __rhs.size(); 5209: __str.reserve(__len + 1); 5209: __str.append(__size_type(1), __lhs); 5209: __str.append(__rhs); 5209: return __str; 5209: } 5209: 5209: template 5209: typename basic_string<_CharT, _Traits, _Alloc>::size_type 5209: basic_string<_CharT, _Traits, _Alloc>:: 5209: find(const _CharT* __s, size_type __pos, size_type __n) const 5209: noexcept 5209: { 5209: ; 5209: const size_type __size = this->size(); 5209: 5209: if (__n == 0) 5209: return __pos <= __size ? __pos : npos; 5209: if (__pos >= __size) 5209: return npos; 5209: 5209: const _CharT __elem0 = __s[0]; 5209: const _CharT* const __data = data(); 5209: const _CharT* __first = __data + __pos; 5209: const _CharT* const __last = __data + __size; 5209: size_type __len = __size - __pos; 5209: 5209: while (__len >= __n) 5209: { 5209: 5209: __first = traits_type::find(__first, __len - __n + 1, __elem0); 5209: if (!__first) 5209: return npos; 5209: 5209: 5209: 5209: if (traits_type::compare(__first, __s, __n) == 0) 5209: return __first - __data; 5209: __len = __last - ++__first; 5209: } 5209: return npos; 5209: } 5209: 5209: template 5209: typename basic_string<_CharT, _Traits, _Alloc>::size_type 5209: basic_string<_CharT, _Traits, _Alloc>:: 5209: find(_CharT __c, size_type __pos) const noexcept 5209: { 5209: size_type __ret = npos; 5209: const size_type __size = this->size(); 5209: if (__pos < __size) 5209: { 5209: const _CharT* __data = _M_data(); 5209: const size_type __n = __size - __pos; 5209: const _CharT* __p = traits_type::find(__data + __pos, __n, __c); 5209: if (__p) 5209: __ret = __p - __data; 5209: } 5209: return __ret; 5209: } 5209: 5209: template 5209: typename basic_string<_CharT, _Traits, _Alloc>::size_type 5209: basic_string<_CharT, _Traits, _Alloc>:: 5209: rfind(const _CharT* __s, size_type __pos, size_type __n) const 5209: noexcept 5209: { 5209: ; 5209: const size_type __size = this->size(); 5209: if (__n <= __size) 5209: { 5209: __pos = std::min(size_type(__size - __n), __pos); 5209: const _CharT* __data = _M_data(); 5209: do 5209: { 5209: if (traits_type::compare(__data + __pos, __s, __n) == 0) 5209: return __pos; 5209: } 5209: while (__pos-- > 0); 5209: } 5209: return npos; 5209: } 5209: 5209: template 5209: typename basic_string<_CharT, _Traits, _Alloc>::size_type 5209: basic_string<_CharT, _Traits, _Alloc>:: 5209: rfind(_CharT __c, size_type __pos) const noexcept 5209: { 5209: size_type __size = this->size(); 5209: if (__size) 5209: { 5209: if (--__size > __pos) 5209: __size = __pos; 5209: for (++__size; __size-- > 0; ) 5209: if (traits_type::eq(_M_data()[__size], __c)) 5209: return __size; 5209: } 5209: return npos; 5209: } 5209: 5209: template 5209: typename basic_string<_CharT, _Traits, _Alloc>::size_type 5209: basic_string<_CharT, _Traits, _Alloc>:: 5209: find_first_of(const _CharT* __s, size_type __pos, size_type __n) const 5209: noexcept 5209: { 5209: ; 5209: for (; __n && __pos < this->size(); ++__pos) 5209: { 5209: const _CharT* __p = traits_type::find(__s, __n, _M_data()[__pos]); 5209: if (__p) 5209: return __pos; 5209: } 5209: return npos; 5209: } 5209: 5209: template 5209: typename basic_string<_CharT, _Traits, _Alloc>::size_type 5209: basic_string<_CharT, _Traits, _Alloc>:: 5209: find_last_of(const _CharT* __s, size_type __pos, size_type __n) const 5209: noexcept 5209: { 5209: ; 5209: size_type __size = this->size(); 5209: if (__size && __n) 5209: { 5209: if (--__size > __pos) 5209: __size = __pos; 5209: do 5209: { 5209: if (traits_type::find(__s, __n, _M_data()[__size])) 5209: return __size; 5209: } 5209: while (__size-- != 0); 5209: } 5209: return npos; 5209: } 5209: 5209: template 5209: typename basic_string<_CharT, _Traits, _Alloc>::size_type 5209: basic_string<_CharT, _Traits, _Alloc>:: 5209: find_first_not_of(const _CharT* __s, size_type __pos, size_type __n) const 5209: noexcept 5209: { 5209: ; 5209: for (; __pos < this->size(); ++__pos) 5209: if (!traits_type::find(__s, __n, _M_data()[__pos])) 5209: return __pos; 5209: return npos; 5209: } 5209: 5209: template 5209: typename basic_string<_CharT, _Traits, _Alloc>::size_type 5209: basic_string<_CharT, _Traits, _Alloc>:: 5209: find_first_not_of(_CharT __c, size_type __pos) const noexcept 5209: { 5209: for (; __pos < this->size(); ++__pos) 5209: if (!traits_type::eq(_M_data()[__pos], __c)) 5209: return __pos; 5209: return npos; 5209: } 5209: 5209: template 5209: typename basic_string<_CharT, _Traits, _Alloc>::size_type 5209: basic_string<_CharT, _Traits, _Alloc>:: 5209: find_last_not_of(const _CharT* __s, size_type __pos, size_type __n) const 5209: noexcept 5209: { 5209: ; 5209: size_type __size = this->size(); 5209: if (__size) 5209: { 5209: if (--__size > __pos) 5209: __size = __pos; 5209: do 5209: { 5209: if (!traits_type::find(__s, __n, _M_data()[__size])) 5209: return __size; 5209: } 5209: while (__size--); 5209: } 5209: return npos; 5209: } 5209: 5209: template 5209: typename basic_string<_CharT, _Traits, _Alloc>::size_type 5209: basic_string<_CharT, _Traits, _Alloc>:: 5209: find_last_not_of(_CharT __c, size_type __pos) const noexcept 5209: { 5209: size_type __size = this->size(); 5209: if (__size) 5209: { 5209: if (--__size > __pos) 5209: __size = __pos; 5209: do 5209: { 5209: if (!traits_type::eq(_M_data()[__size], __c)) 5209: return __size; 5209: } 5209: while (__size--); 5209: } 5209: return npos; 5209: } 5209: 5209: template 5209: int 5209: basic_string<_CharT, _Traits, _Alloc>:: 5209: compare(size_type __pos, size_type __n, const basic_string& __str) const 5209: { 5209: _M_check(__pos, "basic_string::compare"); 5209: __n = _M_limit(__pos, __n); 5209: const size_type __osize = __str.size(); 5209: const size_type __len = std::min(__n, __osize); 5209: int __r = traits_type::compare(_M_data() + __pos, __str.data(), __len); 5209: if (!__r) 5209: __r = _S_compare(__n, __osize); 5209: return __r; 5209: } 5209: 5209: template 5209: int 5209: basic_string<_CharT, _Traits, _Alloc>:: 5209: compare(size_type __pos1, size_type __n1, const basic_string& __str, 5209: size_type __pos2, size_type __n2) const 5209: { 5209: _M_check(__pos1, "basic_string::compare"); 5209: __str._M_check(__pos2, "basic_string::compare"); 5209: __n1 = _M_limit(__pos1, __n1); 5209: __n2 = __str._M_limit(__pos2, __n2); 5209: const size_type __len = std::min(__n1, __n2); 5209: int __r = traits_type::compare(_M_data() + __pos1, 5209: __str.data() + __pos2, __len); 5209: if (!__r) 5209: __r = _S_compare(__n1, __n2); 5209: return __r; 5209: } 5209: 5209: template 5209: int 5209: basic_string<_CharT, _Traits, _Alloc>:: 5209: compare(const _CharT* __s) const noexcept 5209: { 5209: ; 5209: const size_type __size = this->size(); 5209: const size_type __osize = traits_type::length(__s); 5209: const size_type __len = std::min(__size, __osize); 5209: int __r = traits_type::compare(_M_data(), __s, __len); 5209: if (!__r) 5209: __r = _S_compare(__size, __osize); 5209: return __r; 5209: } 5209: 5209: template 5209: int 5209: basic_string <_CharT, _Traits, _Alloc>:: 5209: compare(size_type __pos, size_type __n1, const _CharT* __s) const 5209: { 5209: ; 5209: _M_check(__pos, "basic_string::compare"); 5209: __n1 = _M_limit(__pos, __n1); 5209: const size_type __osize = traits_type::length(__s); 5209: const size_type __len = std::min(__n1, __osize); 5209: int __r = traits_type::compare(_M_data() + __pos, __s, __len); 5209: if (!__r) 5209: __r = _S_compare(__n1, __osize); 5209: return __r; 5209: } 5209: 5209: template 5209: int 5209: basic_string <_CharT, _Traits, _Alloc>:: 5209: compare(size_type __pos, size_type __n1, const _CharT* __s, 5209: size_type __n2) const 5209: { 5209: ; 5209: _M_check(__pos, "basic_string::compare"); 5209: __n1 = _M_limit(__pos, __n1); 5209: const size_type __len = std::min(__n1, __n2); 5209: int __r = traits_type::compare(_M_data() + __pos, __s, __len); 5209: if (!__r) 5209: __r = _S_compare(__n1, __n2); 5209: return __r; 5209: } 5209: 5209: 5209: template 5209: basic_istream<_CharT, _Traits>& 5209: operator>>(basic_istream<_CharT, _Traits>& __in, 5209: basic_string<_CharT, _Traits, _Alloc>& __str) 5209: { 5209: typedef basic_istream<_CharT, _Traits> __istream_type; 5209: typedef basic_string<_CharT, _Traits, _Alloc> __string_type; 5209: typedef typename __istream_type::ios_base __ios_base; 5209: typedef typename __istream_type::int_type __int_type; 5209: typedef typename __string_type::size_type __size_type; 5209: typedef ctype<_CharT> __ctype_type; 5209: typedef typename __ctype_type::ctype_base __ctype_base; 5209: 5209: __size_type __extracted = 0; 5209: typename __ios_base::iostate __err = __ios_base::goodbit; 5209: typename __istream_type::sentry __cerb(__in, false); 5209: if (__cerb) 5209: { 5209: try 5209: { 5209: 5209: __str.erase(); 5209: _CharT __buf[128]; 5209: __size_type __len = 0; 5209: const streamsize __w = __in.width(); 5209: const __size_type __n = __w > 0 ? static_cast<__size_type>(__w) 5209: : __str.max_size(); 5209: const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc()); 5209: const __int_type __eof = _Traits::eof(); 5209: __int_type __c = __in.rdbuf()->sgetc(); 5209: 5209: while (__extracted < __n 5209: && !_Traits::eq_int_type(__c, __eof) 5209: && !__ct.is(__ctype_base::space, 5209: _Traits::to_char_type(__c))) 5209: { 5209: if (__len == sizeof(__buf) / sizeof(_CharT)) 5209: { 5209: __str.append(__buf, sizeof(__buf) / sizeof(_CharT)); 5209: __len = 0; 5209: } 5209: __buf[__len++] = _Traits::to_char_type(__c); 5209: ++__extracted; 5209: __c = __in.rdbuf()->snextc(); 5209: } 5209: __str.append(__buf, __len); 5209: 5209: if (_Traits::eq_int_type(__c, __eof)) 5209: __err |= __ios_base::eofbit; 5209: __in.width(0); 5209: } 5209: catch(__cxxabiv1::__forced_unwind&) 5209: { 5209: __in._M_setstate(__ios_base::badbit); 5209: throw; 5209: } 5209: catch(...) 5209: { 5209: 5209: 5209: 5209: __in._M_setstate(__ios_base::badbit); 5209: } 5209: } 5209: 5209: if (!__extracted) 5209: __err |= __ios_base::failbit; 5209: if (__err) 5209: __in.setstate(__err); 5209: return __in; 5209: } 5209: 5209: template 5209: basic_istream<_CharT, _Traits>& 5209: getline(basic_istream<_CharT, _Traits>& __in, 5209: basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim) 5209: { 5209: typedef basic_istream<_CharT, _Traits> __istream_type; 5209: typedef basic_string<_CharT, _Traits, _Alloc> __string_type; 5209: typedef typename __istream_type::ios_base __ios_base; 5209: typedef typename __istream_type::int_type __int_type; 5209: typedef typename __string_type::size_type __size_type; 5209: 5209: __size_type __extracted = 0; 5209: const __size_type __n = __str.max_size(); 5209: typename __ios_base::iostate __err = __ios_base::goodbit; 5209: typename __istream_type::sentry __cerb(__in, true); 5209: if (__cerb) 5209: { 5209: try 5209: { 5209: __str.erase(); 5209: const __int_type __idelim = _Traits::to_int_type(__delim); 5209: const __int_type __eof = _Traits::eof(); 5209: __int_type __c = __in.rdbuf()->sgetc(); 5209: 5209: while (__extracted < __n 5209: && !_Traits::eq_int_type(__c, __eof) 5209: && !_Traits::eq_int_type(__c, __idelim)) 5209: { 5209: __str += _Traits::to_char_type(__c); 5209: ++__extracted; 5209: __c = __in.rdbuf()->snextc(); 5209: } 5209: 5209: if (_Traits::eq_int_type(__c, __eof)) 5209: __err |= __ios_base::eofbit; 5209: else if (_Traits::eq_int_type(__c, __idelim)) 5209: { 5209: ++__extracted; 5209: __in.rdbuf()->sbumpc(); 5209: } 5209: else 5209: __err |= __ios_base::failbit; 5209: } 5209: catch(__cxxabiv1::__forced_unwind&) 5209: { 5209: __in._M_setstate(__ios_base::badbit); 5209: throw; 5209: } 5209: catch(...) 5209: { 5209: 5209: 5209: 5209: __in._M_setstate(__ios_base::badbit); 5209: } 5209: } 5209: if (!__extracted) 5209: __err |= __ios_base::failbit; 5209: if (__err) 5209: __in.setstate(__err); 5209: return __in; 5209: } 5209: # 1618 "/usr/include/c++/10/bits/basic_string.tcc" 3 5209: extern template class basic_string; 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern template 5209: basic_istream& 5209: operator>>(basic_istream&, string&); 5209: extern template 5209: basic_ostream& 5209: operator<<(basic_ostream&, const string&); 5209: extern template 5209: basic_istream& 5209: getline(basic_istream&, string&, char); 5209: extern template 5209: basic_istream& 5209: getline(basic_istream&, string&); 5209: 5209: 5209: 5209: extern template class basic_string; 5209: 5209: 5209: 5209: 5209: 5209: extern template 5209: basic_istream& 5209: operator>>(basic_istream&, wstring&); 5209: extern template 5209: basic_ostream& 5209: operator<<(basic_ostream&, const wstring&); 5209: extern template 5209: basic_istream& 5209: getline(basic_istream&, wstring&, wchar_t); 5209: extern template 5209: basic_istream& 5209: getline(basic_istream&, wstring&); 5209: 5209: 5209: 5209: 5209: } 5209: # 57 "/usr/include/c++/10/string" 2 3 5209: # 41 "/usr/include/c++/10/bits/locale_classes.h" 2 3 5209: 5209: 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: # 62 "/usr/include/c++/10/bits/locale_classes.h" 3 5209: class locale 5209: { 5209: public: 5209: 5209: 5209: typedef int category; 5209: 5209: 5209: class facet; 5209: class id; 5209: class _Impl; 5209: 5209: friend class facet; 5209: friend class _Impl; 5209: 5209: template 5209: friend bool 5209: has_facet(const locale&) throw(); 5209: 5209: template 5209: friend const _Facet& 5209: use_facet(const locale&); 5209: 5209: template 5209: friend struct __use_cache; 5209: # 98 "/usr/include/c++/10/bits/locale_classes.h" 3 5209: static const category none = 0; 5209: static const category ctype = 1L << 0; 5209: static const category numeric = 1L << 1; 5209: static const category collate = 1L << 2; 5209: static const category time = 1L << 3; 5209: static const category monetary = 1L << 4; 5209: static const category messages = 1L << 5; 5209: static const category all = (ctype | numeric | collate | 5209: time | monetary | messages); 5209: # 117 "/usr/include/c++/10/bits/locale_classes.h" 3 5209: locale() throw(); 5209: # 126 "/usr/include/c++/10/bits/locale_classes.h" 3 5209: locale(const locale& __other) throw(); 5209: # 136 "/usr/include/c++/10/bits/locale_classes.h" 3 5209: explicit 5209: locale(const char* __s); 5209: # 151 "/usr/include/c++/10/bits/locale_classes.h" 3 5209: locale(const locale& __base, const char* __s, category __cat); 5209: # 162 "/usr/include/c++/10/bits/locale_classes.h" 3 5209: explicit 5209: locale(const std::string& __s) : locale(__s.c_str()) { } 5209: # 177 "/usr/include/c++/10/bits/locale_classes.h" 3 5209: locale(const locale& __base, const std::string& __s, category __cat) 5209: : locale(__base, __s.c_str(), __cat) { } 5209: # 192 "/usr/include/c++/10/bits/locale_classes.h" 3 5209: locale(const locale& __base, const locale& __add, category __cat); 5209: # 205 "/usr/include/c++/10/bits/locale_classes.h" 3 5209: template 5209: locale(const locale& __other, _Facet* __f); 5209: 5209: 5209: ~locale() throw(); 5209: # 219 "/usr/include/c++/10/bits/locale_classes.h" 3 5209: const locale& 5209: operator=(const locale& __other) throw(); 5209: # 234 "/usr/include/c++/10/bits/locale_classes.h" 3 5209: template 5209: locale 5209: combine(const locale& __other) const; 5209: 5209: 5209: 5209: 5209: 5209: 5209: __attribute ((__abi_tag__ ("cxx11"))) 5209: string 5209: name() const; 5209: # 254 "/usr/include/c++/10/bits/locale_classes.h" 3 5209: bool 5209: operator==(const locale& __other) const throw(); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: bool 5209: operator!=(const locale& __other) const throw() 5209: { return !(this->operator==(__other)); } 5209: # 282 "/usr/include/c++/10/bits/locale_classes.h" 3 5209: template 5209: bool 5209: operator()(const basic_string<_Char, _Traits, _Alloc>& __s1, 5209: const basic_string<_Char, _Traits, _Alloc>& __s2) const; 5209: # 298 "/usr/include/c++/10/bits/locale_classes.h" 3 5209: static locale 5209: global(const locale& __loc); 5209: 5209: 5209: 5209: 5209: static const locale& 5209: classic(); 5209: 5209: private: 5209: 5209: _Impl* _M_impl; 5209: 5209: 5209: static _Impl* _S_classic; 5209: 5209: 5209: static _Impl* _S_global; 5209: 5209: 5209: 5209: 5209: 5209: static const char* const* const _S_categories; 5209: # 333 "/usr/include/c++/10/bits/locale_classes.h" 3 5209: enum { _S_categories_size = 6 + 6 }; 5209: 5209: 5209: static __gthread_once_t _S_once; 5209: 5209: 5209: explicit 5209: locale(_Impl*) throw(); 5209: 5209: static void 5209: _S_initialize(); 5209: 5209: static void 5209: _S_initialize_once() throw(); 5209: 5209: static category 5209: _S_normalize_category(category); 5209: 5209: void 5209: _M_coalesce(const locale& __base, const locale& __add, category __cat); 5209: 5209: 5209: static const id* const _S_twinned_facets[]; 5209: 5209: }; 5209: # 371 "/usr/include/c++/10/bits/locale_classes.h" 3 5209: class locale::facet 5209: { 5209: private: 5209: friend class locale; 5209: friend class locale::_Impl; 5209: 5209: mutable _Atomic_word _M_refcount; 5209: 5209: 5209: static __c_locale _S_c_locale; 5209: 5209: 5209: static const char _S_c_name[2]; 5209: 5209: 5209: static __gthread_once_t _S_once; 5209: 5209: 5209: static void 5209: _S_initialize_once(); 5209: 5209: protected: 5209: # 402 "/usr/include/c++/10/bits/locale_classes.h" 3 5209: explicit 5209: facet(size_t __refs = 0) throw() : _M_refcount(__refs ? 1 : 0) 5209: { } 5209: 5209: 5209: virtual 5209: ~facet(); 5209: 5209: static void 5209: _S_create_c_locale(__c_locale& __cloc, const char* __s, 5209: __c_locale __old = 0); 5209: 5209: static __c_locale 5209: _S_clone_c_locale(__c_locale& __cloc) throw(); 5209: 5209: static void 5209: _S_destroy_c_locale(__c_locale& __cloc); 5209: 5209: static __c_locale 5209: _S_lc_ctype_c_locale(__c_locale __cloc, const char* __s); 5209: 5209: 5209: 5209: static __c_locale 5209: _S_get_c_locale(); 5209: 5209: __attribute__ ((__const__)) static const char* 5209: _S_get_c_name() throw(); 5209: # 438 "/usr/include/c++/10/bits/locale_classes.h" 3 5209: facet(const facet&) = delete; 5209: 5209: facet& 5209: operator=(const facet&) = delete; 5209: 5209: 5209: private: 5209: void 5209: _M_add_reference() const throw() 5209: { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); } 5209: 5209: void 5209: _M_remove_reference() const throw() 5209: { 5209: 5209: ; 5209: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1) == 1) 5209: { 5209: ; 5209: try 5209: { delete this; } 5209: catch(...) 5209: { } 5209: } 5209: } 5209: 5209: const facet* _M_sso_shim(const id*) const; 5209: const facet* _M_cow_shim(const id*) const; 5209: 5209: protected: 5209: class __shim; 5209: }; 5209: # 483 "/usr/include/c++/10/bits/locale_classes.h" 3 5209: class locale::id 5209: { 5209: private: 5209: friend class locale; 5209: friend class locale::_Impl; 5209: 5209: template 5209: friend const _Facet& 5209: use_facet(const locale&); 5209: 5209: template 5209: friend bool 5209: has_facet(const locale&) throw(); 5209: 5209: 5209: 5209: 5209: mutable size_t _M_index; 5209: 5209: 5209: static _Atomic_word _S_refcount; 5209: 5209: void 5209: operator=(const id&); 5209: 5209: id(const id&); 5209: 5209: public: 5209: 5209: 5209: 5209: id() { } 5209: 5209: size_t 5209: _M_id() const throw(); 5209: }; 5209: 5209: 5209: 5209: class locale::_Impl 5209: { 5209: public: 5209: 5209: friend class locale; 5209: friend class locale::facet; 5209: 5209: template 5209: friend bool 5209: has_facet(const locale&) throw(); 5209: 5209: template 5209: friend const _Facet& 5209: use_facet(const locale&); 5209: 5209: template 5209: friend struct __use_cache; 5209: 5209: private: 5209: 5209: _Atomic_word _M_refcount; 5209: const facet** _M_facets; 5209: size_t _M_facets_size; 5209: const facet** _M_caches; 5209: char** _M_names; 5209: static const locale::id* const _S_id_ctype[]; 5209: static const locale::id* const _S_id_numeric[]; 5209: static const locale::id* const _S_id_collate[]; 5209: static const locale::id* const _S_id_time[]; 5209: static const locale::id* const _S_id_monetary[]; 5209: static const locale::id* const _S_id_messages[]; 5209: static const locale::id* const* const _S_facet_categories[]; 5209: 5209: void 5209: _M_add_reference() throw() 5209: { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); } 5209: 5209: void 5209: _M_remove_reference() throw() 5209: { 5209: 5209: ; 5209: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1) == 1) 5209: { 5209: ; 5209: try 5209: { delete this; } 5209: catch(...) 5209: { } 5209: } 5209: } 5209: 5209: _Impl(const _Impl&, size_t); 5209: _Impl(const char*, size_t); 5209: _Impl(size_t) throw(); 5209: 5209: ~_Impl() throw(); 5209: 5209: _Impl(const _Impl&); 5209: 5209: void 5209: operator=(const _Impl&); 5209: 5209: bool 5209: _M_check_same_name() 5209: { 5209: bool __ret = true; 5209: if (_M_names[1]) 5209: 5209: for (size_t __i = 0; __ret && __i < _S_categories_size - 1; ++__i) 5209: __ret = __builtin_strcmp(_M_names[__i], _M_names[__i + 1]) == 0; 5209: return __ret; 5209: } 5209: 5209: void 5209: _M_replace_categories(const _Impl*, category); 5209: 5209: void 5209: _M_replace_category(const _Impl*, const locale::id* const*); 5209: 5209: void 5209: _M_replace_facet(const _Impl*, const locale::id*); 5209: 5209: void 5209: _M_install_facet(const locale::id*, const facet*); 5209: 5209: template 5209: void 5209: _M_init_facet(_Facet* __facet) 5209: { _M_install_facet(&_Facet::id, __facet); } 5209: 5209: template 5209: void 5209: _M_init_facet_unchecked(_Facet* __facet) 5209: { 5209: __facet->_M_add_reference(); 5209: _M_facets[_Facet::id._M_id()] = __facet; 5209: } 5209: 5209: void 5209: _M_install_cache(const facet*, size_t); 5209: 5209: void _M_init_extra(facet**); 5209: void _M_init_extra(void*, void*, const char*, const char*); 5209: }; 5209: # 641 "/usr/include/c++/10/bits/locale_classes.h" 3 5209: template 5209: class __cxx11:: collate : public locale::facet 5209: { 5209: public: 5209: 5209: 5209: 5209: typedef _CharT char_type; 5209: typedef basic_string<_CharT> string_type; 5209: 5209: 5209: protected: 5209: 5209: 5209: __c_locale _M_c_locale_collate; 5209: 5209: public: 5209: 5209: static locale::id id; 5209: # 668 "/usr/include/c++/10/bits/locale_classes.h" 3 5209: explicit 5209: collate(size_t __refs = 0) 5209: : facet(__refs), _M_c_locale_collate(_S_get_c_locale()) 5209: { } 5209: # 682 "/usr/include/c++/10/bits/locale_classes.h" 3 5209: explicit 5209: collate(__c_locale __cloc, size_t __refs = 0) 5209: : facet(__refs), _M_c_locale_collate(_S_clone_c_locale(__cloc)) 5209: { } 5209: # 699 "/usr/include/c++/10/bits/locale_classes.h" 3 5209: int 5209: compare(const _CharT* __lo1, const _CharT* __hi1, 5209: const _CharT* __lo2, const _CharT* __hi2) const 5209: { return this->do_compare(__lo1, __hi1, __lo2, __hi2); } 5209: # 718 "/usr/include/c++/10/bits/locale_classes.h" 3 5209: string_type 5209: transform(const _CharT* __lo, const _CharT* __hi) const 5209: { return this->do_transform(__lo, __hi); } 5209: # 732 "/usr/include/c++/10/bits/locale_classes.h" 3 5209: long 5209: hash(const _CharT* __lo, const _CharT* __hi) const 5209: { return this->do_hash(__lo, __hi); } 5209: 5209: 5209: int 5209: _M_compare(const _CharT*, const _CharT*) const throw(); 5209: 5209: size_t 5209: _M_transform(_CharT*, const _CharT*, size_t) const throw(); 5209: 5209: protected: 5209: 5209: virtual 5209: ~collate() 5209: { _S_destroy_c_locale(_M_c_locale_collate); } 5209: # 761 "/usr/include/c++/10/bits/locale_classes.h" 3 5209: virtual int 5209: do_compare(const _CharT* __lo1, const _CharT* __hi1, 5209: const _CharT* __lo2, const _CharT* __hi2) const; 5209: # 775 "/usr/include/c++/10/bits/locale_classes.h" 3 5209: virtual string_type 5209: do_transform(const _CharT* __lo, const _CharT* __hi) const; 5209: # 788 "/usr/include/c++/10/bits/locale_classes.h" 3 5209: virtual long 5209: do_hash(const _CharT* __lo, const _CharT* __hi) const; 5209: }; 5209: 5209: template 5209: locale::id collate<_CharT>::id; 5209: 5209: 5209: template<> 5209: int 5209: collate::_M_compare(const char*, const char*) const throw(); 5209: 5209: template<> 5209: size_t 5209: collate::_M_transform(char*, const char*, size_t) const throw(); 5209: 5209: 5209: template<> 5209: int 5209: collate::_M_compare(const wchar_t*, const wchar_t*) const throw(); 5209: 5209: template<> 5209: size_t 5209: collate::_M_transform(wchar_t*, const wchar_t*, size_t) const throw(); 5209: 5209: 5209: 5209: template 5209: class __cxx11:: collate_byname : public collate<_CharT> 5209: { 5209: public: 5209: 5209: 5209: typedef _CharT char_type; 5209: typedef basic_string<_CharT> string_type; 5209: 5209: 5209: explicit 5209: collate_byname(const char* __s, size_t __refs = 0) 5209: : collate<_CharT>(__refs) 5209: { 5209: if (__builtin_strcmp(__s, "C") != 0 5209: && __builtin_strcmp(__s, "POSIX") != 0) 5209: { 5209: this->_S_destroy_c_locale(this->_M_c_locale_collate); 5209: this->_S_create_c_locale(this->_M_c_locale_collate, __s); 5209: } 5209: } 5209: 5209: 5209: explicit 5209: collate_byname(const string& __s, size_t __refs = 0) 5209: : collate_byname(__s.c_str(), __refs) { } 5209: 5209: 5209: protected: 5209: virtual 5209: ~collate_byname() { } 5209: }; 5209: 5209: 5209: } 5209: 5209: # 1 "/usr/include/c++/10/bits/locale_classes.tcc" 1 3 5209: # 37 "/usr/include/c++/10/bits/locale_classes.tcc" 3 5209: 5209: # 38 "/usr/include/c++/10/bits/locale_classes.tcc" 3 5209: 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: template 5209: locale:: 5209: locale(const locale& __other, _Facet* __f) 5209: { 5209: _M_impl = new _Impl(*__other._M_impl, 1); 5209: 5209: try 5209: { _M_impl->_M_install_facet(&_Facet::id, __f); } 5209: catch(...) 5209: { 5209: _M_impl->_M_remove_reference(); 5209: throw; 5209: } 5209: delete [] _M_impl->_M_names[0]; 5209: _M_impl->_M_names[0] = 0; 5209: } 5209: 5209: template 5209: locale 5209: locale:: 5209: combine(const locale& __other) const 5209: { 5209: _Impl* __tmp = new _Impl(*_M_impl, 1); 5209: try 5209: { 5209: __tmp->_M_replace_facet(__other._M_impl, &_Facet::id); 5209: } 5209: catch(...) 5209: { 5209: __tmp->_M_remove_reference(); 5209: throw; 5209: } 5209: return locale(__tmp); 5209: } 5209: 5209: template 5209: bool 5209: locale:: 5209: operator()(const basic_string<_CharT, _Traits, _Alloc>& __s1, 5209: const basic_string<_CharT, _Traits, _Alloc>& __s2) const 5209: { 5209: typedef std::collate<_CharT> __collate_type; 5209: const __collate_type& __collate = use_facet<__collate_type>(*this); 5209: return (__collate.compare(__s1.data(), __s1.data() + __s1.length(), 5209: __s2.data(), __s2.data() + __s2.length()) < 0); 5209: } 5209: # 102 "/usr/include/c++/10/bits/locale_classes.tcc" 3 5209: template 5209: bool 5209: has_facet(const locale& __loc) throw() 5209: { 5209: const size_t __i = _Facet::id._M_id(); 5209: const locale::facet** __facets = __loc._M_impl->_M_facets; 5209: return (__i < __loc._M_impl->_M_facets_size 5209: 5209: && dynamic_cast(__facets[__i])); 5209: 5209: 5209: 5209: } 5209: # 130 "/usr/include/c++/10/bits/locale_classes.tcc" 3 5209: template 5209: const _Facet& 5209: use_facet(const locale& __loc) 5209: { 5209: const size_t __i = _Facet::id._M_id(); 5209: const locale::facet** __facets = __loc._M_impl->_M_facets; 5209: if (__i >= __loc._M_impl->_M_facets_size || !__facets[__i]) 5209: __throw_bad_cast(); 5209: 5209: return dynamic_cast(*__facets[__i]); 5209: 5209: 5209: 5209: } 5209: 5209: 5209: 5209: template 5209: int 5209: collate<_CharT>::_M_compare(const _CharT*, const _CharT*) const throw () 5209: { return 0; } 5209: 5209: 5209: template 5209: size_t 5209: collate<_CharT>::_M_transform(_CharT*, const _CharT*, size_t) const throw () 5209: { return 0; } 5209: 5209: template 5209: int 5209: collate<_CharT>:: 5209: do_compare(const _CharT* __lo1, const _CharT* __hi1, 5209: const _CharT* __lo2, const _CharT* __hi2) const 5209: { 5209: 5209: 5209: const string_type __one(__lo1, __hi1); 5209: const string_type __two(__lo2, __hi2); 5209: 5209: const _CharT* __p = __one.c_str(); 5209: const _CharT* __pend = __one.data() + __one.length(); 5209: const _CharT* __q = __two.c_str(); 5209: const _CharT* __qend = __two.data() + __two.length(); 5209: 5209: 5209: 5209: 5209: for (;;) 5209: { 5209: const int __res = _M_compare(__p, __q); 5209: if (__res) 5209: return __res; 5209: 5209: __p += char_traits<_CharT>::length(__p); 5209: __q += char_traits<_CharT>::length(__q); 5209: if (__p == __pend && __q == __qend) 5209: return 0; 5209: else if (__p == __pend) 5209: return -1; 5209: else if (__q == __qend) 5209: return 1; 5209: 5209: __p++; 5209: __q++; 5209: } 5209: } 5209: 5209: template 5209: typename collate<_CharT>::string_type 5209: collate<_CharT>:: 5209: do_transform(const _CharT* __lo, const _CharT* __hi) const 5209: { 5209: string_type __ret; 5209: 5209: 5209: const string_type __str(__lo, __hi); 5209: 5209: const _CharT* __p = __str.c_str(); 5209: const _CharT* __pend = __str.data() + __str.length(); 5209: 5209: size_t __len = (__hi - __lo) * 2; 5209: 5209: _CharT* __c = new _CharT[__len]; 5209: 5209: try 5209: { 5209: 5209: 5209: 5209: for (;;) 5209: { 5209: 5209: size_t __res = _M_transform(__c, __p, __len); 5209: 5209: 5209: if (__res >= __len) 5209: { 5209: __len = __res + 1; 5209: delete [] __c, __c = 0; 5209: __c = new _CharT[__len]; 5209: __res = _M_transform(__c, __p, __len); 5209: } 5209: 5209: __ret.append(__c, __res); 5209: __p += char_traits<_CharT>::length(__p); 5209: if (__p == __pend) 5209: break; 5209: 5209: __p++; 5209: __ret.push_back(_CharT()); 5209: } 5209: } 5209: catch(...) 5209: { 5209: delete [] __c; 5209: throw; 5209: } 5209: 5209: delete [] __c; 5209: 5209: return __ret; 5209: } 5209: 5209: template 5209: long 5209: collate<_CharT>:: 5209: do_hash(const _CharT* __lo, const _CharT* __hi) const 5209: { 5209: unsigned long __val = 0; 5209: for (; __lo < __hi; ++__lo) 5209: __val = 5209: *__lo + ((__val << 7) 5209: | (__val >> (__gnu_cxx::__numeric_traits:: 5209: __digits - 7))); 5209: return static_cast(__val); 5209: } 5209: 5209: 5209: 5209: 5209: extern template class collate; 5209: extern template class collate_byname; 5209: 5209: extern template 5209: const collate& 5209: use_facet >(const locale&); 5209: 5209: extern template 5209: bool 5209: has_facet >(const locale&); 5209: 5209: 5209: extern template class collate; 5209: extern template class collate_byname; 5209: 5209: extern template 5209: const collate& 5209: use_facet >(const locale&); 5209: 5209: extern template 5209: bool 5209: has_facet >(const locale&); 5209: 5209: 5209: 5209: 5209: } 5209: # 852 "/usr/include/c++/10/bits/locale_classes.h" 2 3 5209: # 42 "/usr/include/c++/10/bits/ios_base.h" 2 3 5209: 5209: 5209: 5209: 5209: # 1 "/usr/include/c++/10/system_error" 1 3 5209: # 32 "/usr/include/c++/10/system_error" 3 5209: 5209: # 33 "/usr/include/c++/10/system_error" 3 5209: 5209: 5209: 5209: 5209: 5209: 5209: # 1 "/usr/include/aarch64-linux-gnu/c++/10/bits/error_constants.h" 1 3 5209: # 34 "/usr/include/aarch64-linux-gnu/c++/10/bits/error_constants.h" 3 5209: # 1 "/usr/include/c++/10/cerrno" 1 3 5209: # 39 "/usr/include/c++/10/cerrno" 3 5209: 5209: # 40 "/usr/include/c++/10/cerrno" 3 5209: # 35 "/usr/include/aarch64-linux-gnu/c++/10/bits/error_constants.h" 2 3 5209: 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: enum class errc 5209: { 5209: address_family_not_supported = 97, 5209: address_in_use = 98, 5209: address_not_available = 99, 5209: already_connected = 106, 5209: argument_list_too_long = 7, 5209: argument_out_of_domain = 33, 5209: bad_address = 14, 5209: bad_file_descriptor = 9, 5209: 5209: 5209: bad_message = 74, 5209: 5209: 5209: broken_pipe = 32, 5209: connection_aborted = 103, 5209: connection_already_in_progress = 114, 5209: connection_refused = 111, 5209: connection_reset = 104, 5209: cross_device_link = 18, 5209: destination_address_required = 89, 5209: device_or_resource_busy = 16, 5209: directory_not_empty = 39, 5209: executable_format_error = 8, 5209: file_exists = 17, 5209: file_too_large = 27, 5209: filename_too_long = 36, 5209: function_not_supported = 38, 5209: host_unreachable = 113, 5209: 5209: 5209: identifier_removed = 43, 5209: 5209: 5209: illegal_byte_sequence = 84, 5209: inappropriate_io_control_operation = 25, 5209: interrupted = 4, 5209: invalid_argument = 22, 5209: invalid_seek = 29, 5209: io_error = 5, 5209: is_a_directory = 21, 5209: message_size = 90, 5209: network_down = 100, 5209: network_reset = 102, 5209: network_unreachable = 101, 5209: no_buffer_space = 105, 5209: no_child_process = 10, 5209: 5209: 5209: no_link = 67, 5209: 5209: 5209: no_lock_available = 37, 5209: 5209: 5209: no_message_available = 61, 5209: 5209: 5209: no_message = 42, 5209: no_protocol_option = 92, 5209: no_space_on_device = 28, 5209: 5209: 5209: no_stream_resources = 63, 5209: 5209: 5209: no_such_device_or_address = 6, 5209: no_such_device = 19, 5209: no_such_file_or_directory = 2, 5209: no_such_process = 3, 5209: not_a_directory = 20, 5209: not_a_socket = 88, 5209: 5209: 5209: not_a_stream = 60, 5209: 5209: 5209: not_connected = 107, 5209: not_enough_memory = 12, 5209: 5209: 5209: not_supported = 95, 5209: 5209: 5209: 5209: operation_canceled = 125, 5209: 5209: 5209: operation_in_progress = 115, 5209: operation_not_permitted = 1, 5209: operation_not_supported = 95, 5209: operation_would_block = 11, 5209: 5209: 5209: owner_dead = 130, 5209: 5209: 5209: permission_denied = 13, 5209: 5209: 5209: protocol_error = 71, 5209: 5209: 5209: protocol_not_supported = 93, 5209: read_only_file_system = 30, 5209: resource_deadlock_would_occur = 35, 5209: resource_unavailable_try_again = 11, 5209: result_out_of_range = 34, 5209: 5209: 5209: state_not_recoverable = 131, 5209: 5209: 5209: 5209: stream_timeout = 62, 5209: 5209: 5209: 5209: text_file_busy = 26, 5209: 5209: 5209: timed_out = 110, 5209: too_many_files_open_in_system = 23, 5209: too_many_files_open = 24, 5209: too_many_links = 31, 5209: too_many_symbolic_link_levels = 40, 5209: 5209: 5209: value_too_large = 75, 5209: 5209: 5209: wrong_protocol_type = 91 5209: }; 5209: 5209: 5209: } 5209: # 40 "/usr/include/c++/10/system_error" 2 3 5209: 5209: # 1 "/usr/include/c++/10/stdexcept" 1 3 5209: # 36 "/usr/include/c++/10/stdexcept" 3 5209: 5209: # 37 "/usr/include/c++/10/stdexcept" 3 5209: 5209: 5209: 5209: 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: struct __cow_string 5209: { 5209: union { 5209: const char* _M_p; 5209: char _M_bytes[sizeof(const char*)]; 5209: }; 5209: 5209: __cow_string(); 5209: __cow_string(const std::string&); 5209: __cow_string(const char*, size_t); 5209: __cow_string(const __cow_string&) noexcept; 5209: __cow_string& operator=(const __cow_string&) noexcept; 5209: ~__cow_string(); 5209: 5209: __cow_string(__cow_string&&) noexcept; 5209: __cow_string& operator=(__cow_string&&) noexcept; 5209: 5209: }; 5209: 5209: typedef basic_string __sso_string; 5209: # 113 "/usr/include/c++/10/stdexcept" 3 5209: class logic_error : public exception 5209: { 5209: __cow_string _M_msg; 5209: 5209: public: 5209: 5209: explicit 5209: logic_error(const string& __arg) ; 5209: 5209: 5209: explicit 5209: logic_error(const char*) ; 5209: 5209: logic_error(logic_error&&) noexcept; 5209: logic_error& operator=(logic_error&&) noexcept; 5209: 5209: 5209: 5209: logic_error(const logic_error&) noexcept; 5209: logic_error& operator=(const logic_error&) noexcept; 5209: 5209: 5209: 5209: 5209: 5209: virtual ~logic_error() noexcept; 5209: 5209: 5209: 5209: virtual const char* 5209: what() const noexcept; 5209: 5209: 5209: 5209: 5209: 5209: }; 5209: 5209: 5209: 5209: class domain_error : public logic_error 5209: { 5209: public: 5209: explicit domain_error(const string& __arg) ; 5209: 5209: explicit domain_error(const char*) ; 5209: domain_error(const domain_error&) = default; 5209: domain_error& operator=(const domain_error&) = default; 5209: domain_error(domain_error&&) = default; 5209: domain_error& operator=(domain_error&&) = default; 5209: 5209: virtual ~domain_error() noexcept; 5209: }; 5209: 5209: 5209: class invalid_argument : public logic_error 5209: { 5209: public: 5209: explicit invalid_argument(const string& __arg) ; 5209: 5209: explicit invalid_argument(const char*) ; 5209: invalid_argument(const invalid_argument&) = default; 5209: invalid_argument& operator=(const invalid_argument&) = default; 5209: invalid_argument(invalid_argument&&) = default; 5209: invalid_argument& operator=(invalid_argument&&) = default; 5209: 5209: virtual ~invalid_argument() noexcept; 5209: }; 5209: 5209: 5209: 5209: class length_error : public logic_error 5209: { 5209: public: 5209: explicit length_error(const string& __arg) ; 5209: 5209: explicit length_error(const char*) ; 5209: length_error(const length_error&) = default; 5209: length_error& operator=(const length_error&) = default; 5209: length_error(length_error&&) = default; 5209: length_error& operator=(length_error&&) = default; 5209: 5209: virtual ~length_error() noexcept; 5209: }; 5209: 5209: 5209: 5209: class out_of_range : public logic_error 5209: { 5209: public: 5209: explicit out_of_range(const string& __arg) ; 5209: 5209: explicit out_of_range(const char*) ; 5209: out_of_range(const out_of_range&) = default; 5209: out_of_range& operator=(const out_of_range&) = default; 5209: out_of_range(out_of_range&&) = default; 5209: out_of_range& operator=(out_of_range&&) = default; 5209: 5209: virtual ~out_of_range() noexcept; 5209: }; 5209: 5209: 5209: 5209: 5209: 5209: 5209: class runtime_error : public exception 5209: { 5209: __cow_string _M_msg; 5209: 5209: public: 5209: 5209: explicit 5209: runtime_error(const string& __arg) ; 5209: 5209: 5209: explicit 5209: runtime_error(const char*) ; 5209: 5209: runtime_error(runtime_error&&) noexcept; 5209: runtime_error& operator=(runtime_error&&) noexcept; 5209: 5209: 5209: 5209: runtime_error(const runtime_error&) noexcept; 5209: runtime_error& operator=(const runtime_error&) noexcept; 5209: 5209: 5209: 5209: 5209: 5209: virtual ~runtime_error() noexcept; 5209: 5209: 5209: 5209: virtual const char* 5209: what() const noexcept; 5209: 5209: 5209: 5209: 5209: 5209: }; 5209: 5209: 5209: class range_error : public runtime_error 5209: { 5209: public: 5209: explicit range_error(const string& __arg) ; 5209: 5209: explicit range_error(const char*) ; 5209: range_error(const range_error&) = default; 5209: range_error& operator=(const range_error&) = default; 5209: range_error(range_error&&) = default; 5209: range_error& operator=(range_error&&) = default; 5209: 5209: virtual ~range_error() noexcept; 5209: }; 5209: 5209: 5209: class overflow_error : public runtime_error 5209: { 5209: public: 5209: explicit overflow_error(const string& __arg) ; 5209: 5209: explicit overflow_error(const char*) ; 5209: overflow_error(const overflow_error&) = default; 5209: overflow_error& operator=(const overflow_error&) = default; 5209: overflow_error(overflow_error&&) = default; 5209: overflow_error& operator=(overflow_error&&) = default; 5209: 5209: virtual ~overflow_error() noexcept; 5209: }; 5209: 5209: 5209: class underflow_error : public runtime_error 5209: { 5209: public: 5209: explicit underflow_error(const string& __arg) ; 5209: 5209: explicit underflow_error(const char*) ; 5209: underflow_error(const underflow_error&) = default; 5209: underflow_error& operator=(const underflow_error&) = default; 5209: underflow_error(underflow_error&&) = default; 5209: underflow_error& operator=(underflow_error&&) = default; 5209: 5209: virtual ~underflow_error() noexcept; 5209: }; 5209: 5209: 5209: 5209: 5209: } 5209: # 42 "/usr/include/c++/10/system_error" 2 3 5209: 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: class error_code; 5209: class error_condition; 5209: class system_error; 5209: 5209: 5209: template 5209: struct is_error_code_enum : public false_type { }; 5209: 5209: 5209: template 5209: struct is_error_condition_enum : public false_type { }; 5209: 5209: template<> 5209: struct is_error_condition_enum 5209: : public true_type { }; 5209: # 75 "/usr/include/c++/10/system_error" 3 5209: inline namespace _V2 { 5209: # 86 "/usr/include/c++/10/system_error" 3 5209: class error_category 5209: { 5209: public: 5209: constexpr error_category() noexcept = default; 5209: 5209: virtual ~error_category(); 5209: 5209: error_category(const error_category&) = delete; 5209: error_category& operator=(const error_category&) = delete; 5209: 5209: virtual const char* 5209: name() const noexcept = 0; 5209: 5209: 5209: 5209: 5209: 5209: 5209: private: 5209: __attribute ((__abi_tag__ ("cxx11"))) 5209: virtual __cow_string 5209: _M_message(int) const; 5209: 5209: public: 5209: __attribute ((__abi_tag__ ("cxx11"))) 5209: virtual string 5209: message(int) const = 0; 5209: # 122 "/usr/include/c++/10/system_error" 3 5209: public: 5209: virtual error_condition 5209: default_error_condition(int __i) const noexcept; 5209: 5209: virtual bool 5209: equivalent(int __i, const error_condition& __cond) const noexcept; 5209: 5209: virtual bool 5209: equivalent(const error_code& __code, int __i) const noexcept; 5209: 5209: bool 5209: operator<(const error_category& __other) const noexcept 5209: { return less()(this, &__other); } 5209: 5209: bool 5209: operator==(const error_category& __other) const noexcept 5209: { return this == &__other; } 5209: 5209: bool 5209: operator!=(const error_category& __other) const noexcept 5209: { return this != &__other; } 5209: }; 5209: 5209: 5209: 5209: 5209: __attribute__ ((__const__)) const error_category& generic_category() noexcept; 5209: 5209: 5209: __attribute__ ((__const__)) const error_category& system_category() noexcept; 5209: 5209: } 5209: 5209: error_code make_error_code(errc) noexcept; 5209: # 171 "/usr/include/c++/10/system_error" 3 5209: struct error_code 5209: { 5209: error_code() noexcept 5209: : _M_value(0), _M_cat(&system_category()) { } 5209: 5209: error_code(int __v, const error_category& __cat) noexcept 5209: : _M_value(__v), _M_cat(&__cat) { } 5209: 5209: template::value>::type> 5209: error_code(_ErrorCodeEnum __e) noexcept 5209: { *this = make_error_code(__e); } 5209: 5209: void 5209: assign(int __v, const error_category& __cat) noexcept 5209: { 5209: _M_value = __v; 5209: _M_cat = &__cat; 5209: } 5209: 5209: void 5209: clear() noexcept 5209: { assign(0, system_category()); } 5209: 5209: 5209: template 5209: typename enable_if::value, 5209: error_code&>::type 5209: operator=(_ErrorCodeEnum __e) noexcept 5209: { return *this = make_error_code(__e); } 5209: 5209: int 5209: value() const noexcept { return _M_value; } 5209: 5209: const error_category& 5209: category() const noexcept { return *_M_cat; } 5209: 5209: error_condition 5209: default_error_condition() const noexcept; 5209: 5209: __attribute ((__abi_tag__ ("cxx11"))) 5209: string 5209: message() const 5209: { return category().message(value()); } 5209: 5209: explicit operator bool() const noexcept 5209: { return _M_value != 0; } 5209: 5209: 5209: private: 5209: int _M_value; 5209: const error_category* _M_cat; 5209: }; 5209: 5209: 5209: 5209: 5209: 5209: inline error_code 5209: make_error_code(errc __e) noexcept 5209: { return error_code(static_cast(__e), generic_category()); } 5209: 5209: inline bool 5209: operator<(const error_code& __lhs, const error_code& __rhs) noexcept 5209: { 5209: return (__lhs.category() < __rhs.category() 5209: || (__lhs.category() == __rhs.category() 5209: && __lhs.value() < __rhs.value())); 5209: } 5209: 5209: template 5209: basic_ostream<_CharT, _Traits>& 5209: operator<<(basic_ostream<_CharT, _Traits>& __os, const error_code& __e) 5209: { return (__os << __e.category().name() << ':' << __e.value()); } 5209: 5209: 5209: 5209: error_condition make_error_condition(errc) noexcept; 5209: # 259 "/usr/include/c++/10/system_error" 3 5209: struct error_condition 5209: { 5209: error_condition() noexcept 5209: : _M_value(0), _M_cat(&generic_category()) { } 5209: 5209: error_condition(int __v, const error_category& __cat) noexcept 5209: : _M_value(__v), _M_cat(&__cat) { } 5209: 5209: template::value>::type> 5209: error_condition(_ErrorConditionEnum __e) noexcept 5209: { *this = make_error_condition(__e); } 5209: 5209: void 5209: assign(int __v, const error_category& __cat) noexcept 5209: { 5209: _M_value = __v; 5209: _M_cat = &__cat; 5209: } 5209: 5209: 5209: template 5209: typename enable_if::value, error_condition&>::type 5209: operator=(_ErrorConditionEnum __e) noexcept 5209: { return *this = make_error_condition(__e); } 5209: 5209: void 5209: clear() noexcept 5209: { assign(0, generic_category()); } 5209: 5209: 5209: int 5209: value() const noexcept { return _M_value; } 5209: 5209: const error_category& 5209: category() const noexcept { return *_M_cat; } 5209: 5209: __attribute ((__abi_tag__ ("cxx11"))) 5209: string 5209: message() const 5209: { return category().message(value()); } 5209: 5209: explicit operator bool() const noexcept 5209: { return _M_value != 0; } 5209: 5209: 5209: private: 5209: int _M_value; 5209: const error_category* _M_cat; 5209: }; 5209: 5209: 5209: 5209: 5209: 5209: inline error_condition 5209: make_error_condition(errc __e) noexcept 5209: { return error_condition(static_cast(__e), generic_category()); } 5209: 5209: 5209: 5209: inline bool 5209: operator<(const error_condition& __lhs, 5209: const error_condition& __rhs) noexcept 5209: { 5209: return (__lhs.category() < __rhs.category() 5209: || (__lhs.category() == __rhs.category() 5209: && __lhs.value() < __rhs.value())); 5209: } 5209: 5209: 5209: 5209: 5209: inline bool 5209: operator==(const error_code& __lhs, const error_code& __rhs) noexcept 5209: { return (__lhs.category() == __rhs.category() 5209: && __lhs.value() == __rhs.value()); } 5209: 5209: 5209: 5209: inline bool 5209: operator==(const error_code& __lhs, const error_condition& __rhs) noexcept 5209: { 5209: return (__lhs.category().equivalent(__lhs.value(), __rhs) 5209: || __rhs.category().equivalent(__lhs, __rhs.value())); 5209: } 5209: 5209: 5209: 5209: inline bool 5209: operator==(const error_condition& __lhs, const error_code& __rhs) noexcept 5209: { 5209: return (__rhs.category().equivalent(__rhs.value(), __lhs) 5209: || __lhs.category().equivalent(__rhs, __lhs.value())); 5209: } 5209: 5209: 5209: inline bool 5209: operator==(const error_condition& __lhs, 5209: const error_condition& __rhs) noexcept 5209: { 5209: return (__lhs.category() == __rhs.category() 5209: && __lhs.value() == __rhs.value()); 5209: } 5209: 5209: 5209: inline bool 5209: operator!=(const error_code& __lhs, const error_code& __rhs) noexcept 5209: { return !(__lhs == __rhs); } 5209: 5209: 5209: 5209: inline bool 5209: operator!=(const error_code& __lhs, const error_condition& __rhs) noexcept 5209: { return !(__lhs == __rhs); } 5209: 5209: 5209: 5209: inline bool 5209: operator!=(const error_condition& __lhs, const error_code& __rhs) noexcept 5209: { return !(__lhs == __rhs); } 5209: 5209: 5209: inline bool 5209: operator!=(const error_condition& __lhs, 5209: const error_condition& __rhs) noexcept 5209: { return !(__lhs == __rhs); } 5209: # 397 "/usr/include/c++/10/system_error" 3 5209: class system_error : public std::runtime_error 5209: { 5209: private: 5209: error_code _M_code; 5209: 5209: public: 5209: system_error(error_code __ec = error_code()) 5209: : runtime_error(__ec.message()), _M_code(__ec) { } 5209: 5209: system_error(error_code __ec, const string& __what) 5209: : runtime_error(__what + ": " + __ec.message()), _M_code(__ec) { } 5209: 5209: system_error(error_code __ec, const char* __what) 5209: : runtime_error(__what + (": " + __ec.message())), _M_code(__ec) { } 5209: 5209: system_error(int __v, const error_category& __ecat, const char* __what) 5209: : system_error(error_code(__v, __ecat), __what) { } 5209: 5209: system_error(int __v, const error_category& __ecat) 5209: : runtime_error(error_code(__v, __ecat).message()), 5209: _M_code(__v, __ecat) { } 5209: 5209: system_error(int __v, const error_category& __ecat, const string& __what) 5209: : runtime_error(__what + ": " + error_code(__v, __ecat).message()), 5209: _M_code(__v, __ecat) { } 5209: 5209: 5209: system_error (const system_error &) = default; 5209: system_error &operator= (const system_error &) = default; 5209: 5209: 5209: virtual ~system_error() noexcept; 5209: 5209: const error_code& 5209: code() const noexcept { return _M_code; } 5209: }; 5209: 5209: 5209: } 5209: 5209: 5209: 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: template<> 5209: struct hash 5209: : public __hash_base 5209: { 5209: size_t 5209: operator()(const error_code& __e) const noexcept 5209: { 5209: const size_t __tmp = std::_Hash_impl::hash(__e.value()); 5209: return std::_Hash_impl::__hash_combine(&__e.category(), __tmp); 5209: } 5209: }; 5209: # 477 "/usr/include/c++/10/system_error" 3 5209: 5209: } 5209: # 47 "/usr/include/c++/10/bits/ios_base.h" 2 3 5209: 5209: 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: enum _Ios_Fmtflags 5209: { 5209: _S_boolalpha = 1L << 0, 5209: _S_dec = 1L << 1, 5209: _S_fixed = 1L << 2, 5209: _S_hex = 1L << 3, 5209: _S_internal = 1L << 4, 5209: _S_left = 1L << 5, 5209: _S_oct = 1L << 6, 5209: _S_right = 1L << 7, 5209: _S_scientific = 1L << 8, 5209: _S_showbase = 1L << 9, 5209: _S_showpoint = 1L << 10, 5209: _S_showpos = 1L << 11, 5209: _S_skipws = 1L << 12, 5209: _S_unitbuf = 1L << 13, 5209: _S_uppercase = 1L << 14, 5209: _S_adjustfield = _S_left | _S_right | _S_internal, 5209: _S_basefield = _S_dec | _S_oct | _S_hex, 5209: _S_floatfield = _S_scientific | _S_fixed, 5209: _S_ios_fmtflags_end = 1L << 16, 5209: _S_ios_fmtflags_max = 0x7fffffff, 5209: _S_ios_fmtflags_min = ~0x7fffffff 5209: }; 5209: 5209: inline constexpr _Ios_Fmtflags 5209: operator&(_Ios_Fmtflags __a, _Ios_Fmtflags __b) 5209: { return _Ios_Fmtflags(static_cast(__a) & static_cast(__b)); } 5209: 5209: inline constexpr _Ios_Fmtflags 5209: operator|(_Ios_Fmtflags __a, _Ios_Fmtflags __b) 5209: { return _Ios_Fmtflags(static_cast(__a) | static_cast(__b)); } 5209: 5209: inline constexpr _Ios_Fmtflags 5209: operator^(_Ios_Fmtflags __a, _Ios_Fmtflags __b) 5209: { return _Ios_Fmtflags(static_cast(__a) ^ static_cast(__b)); } 5209: 5209: inline constexpr _Ios_Fmtflags 5209: operator~(_Ios_Fmtflags __a) 5209: { return _Ios_Fmtflags(~static_cast(__a)); } 5209: 5209: inline const _Ios_Fmtflags& 5209: operator|=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b) 5209: { return __a = __a | __b; } 5209: 5209: inline const _Ios_Fmtflags& 5209: operator&=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b) 5209: { return __a = __a & __b; } 5209: 5209: inline const _Ios_Fmtflags& 5209: operator^=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b) 5209: { return __a = __a ^ __b; } 5209: 5209: 5209: enum _Ios_Openmode 5209: { 5209: _S_app = 1L << 0, 5209: _S_ate = 1L << 1, 5209: _S_bin = 1L << 2, 5209: _S_in = 1L << 3, 5209: _S_out = 1L << 4, 5209: _S_trunc = 1L << 5, 5209: _S_ios_openmode_end = 1L << 16, 5209: _S_ios_openmode_max = 0x7fffffff, 5209: _S_ios_openmode_min = ~0x7fffffff 5209: }; 5209: 5209: inline constexpr _Ios_Openmode 5209: operator&(_Ios_Openmode __a, _Ios_Openmode __b) 5209: { return _Ios_Openmode(static_cast(__a) & static_cast(__b)); } 5209: 5209: inline constexpr _Ios_Openmode 5209: operator|(_Ios_Openmode __a, _Ios_Openmode __b) 5209: { return _Ios_Openmode(static_cast(__a) | static_cast(__b)); } 5209: 5209: inline constexpr _Ios_Openmode 5209: operator^(_Ios_Openmode __a, _Ios_Openmode __b) 5209: { return _Ios_Openmode(static_cast(__a) ^ static_cast(__b)); } 5209: 5209: inline constexpr _Ios_Openmode 5209: operator~(_Ios_Openmode __a) 5209: { return _Ios_Openmode(~static_cast(__a)); } 5209: 5209: inline const _Ios_Openmode& 5209: operator|=(_Ios_Openmode& __a, _Ios_Openmode __b) 5209: { return __a = __a | __b; } 5209: 5209: inline const _Ios_Openmode& 5209: operator&=(_Ios_Openmode& __a, _Ios_Openmode __b) 5209: { return __a = __a & __b; } 5209: 5209: inline const _Ios_Openmode& 5209: operator^=(_Ios_Openmode& __a, _Ios_Openmode __b) 5209: { return __a = __a ^ __b; } 5209: 5209: 5209: enum _Ios_Iostate 5209: { 5209: _S_goodbit = 0, 5209: _S_badbit = 1L << 0, 5209: _S_eofbit = 1L << 1, 5209: _S_failbit = 1L << 2, 5209: _S_ios_iostate_end = 1L << 16, 5209: _S_ios_iostate_max = 0x7fffffff, 5209: _S_ios_iostate_min = ~0x7fffffff 5209: }; 5209: 5209: inline constexpr _Ios_Iostate 5209: operator&(_Ios_Iostate __a, _Ios_Iostate __b) 5209: { return _Ios_Iostate(static_cast(__a) & static_cast(__b)); } 5209: 5209: inline constexpr _Ios_Iostate 5209: operator|(_Ios_Iostate __a, _Ios_Iostate __b) 5209: { return _Ios_Iostate(static_cast(__a) | static_cast(__b)); } 5209: 5209: inline constexpr _Ios_Iostate 5209: operator^(_Ios_Iostate __a, _Ios_Iostate __b) 5209: { return _Ios_Iostate(static_cast(__a) ^ static_cast(__b)); } 5209: 5209: inline constexpr _Ios_Iostate 5209: operator~(_Ios_Iostate __a) 5209: { return _Ios_Iostate(~static_cast(__a)); } 5209: 5209: inline const _Ios_Iostate& 5209: operator|=(_Ios_Iostate& __a, _Ios_Iostate __b) 5209: { return __a = __a | __b; } 5209: 5209: inline const _Ios_Iostate& 5209: operator&=(_Ios_Iostate& __a, _Ios_Iostate __b) 5209: { return __a = __a & __b; } 5209: 5209: inline const _Ios_Iostate& 5209: operator^=(_Ios_Iostate& __a, _Ios_Iostate __b) 5209: { return __a = __a ^ __b; } 5209: 5209: 5209: enum _Ios_Seekdir 5209: { 5209: _S_beg = 0, 5209: _S_cur = 1, 5209: _S_end = 2, 5209: _S_ios_seekdir_end = 1L << 16 5209: }; 5209: 5209: 5209: 5209: enum class io_errc { stream = 1 }; 5209: 5209: template <> struct is_error_code_enum : public true_type { }; 5209: 5209: const error_category& iostream_category() noexcept; 5209: 5209: inline error_code 5209: make_error_code(io_errc __e) noexcept 5209: { return error_code(static_cast(__e), iostream_category()); } 5209: 5209: inline error_condition 5209: make_error_condition(io_errc __e) noexcept 5209: { return error_condition(static_cast(__e), iostream_category()); } 5209: # 228 "/usr/include/c++/10/bits/ios_base.h" 3 5209: class ios_base 5209: { 5209: # 246 "/usr/include/c++/10/bits/ios_base.h" 3 5209: public: 5209: # 255 "/usr/include/c++/10/bits/ios_base.h" 3 5209: class __attribute ((__abi_tag__ ("cxx11"))) failure : public system_error 5209: { 5209: public: 5209: explicit 5209: failure(const string& __str); 5209: 5209: 5209: explicit 5209: failure(const string&, const error_code&); 5209: 5209: explicit 5209: failure(const char*, const error_code& = io_errc::stream); 5209: 5209: 5209: virtual 5209: ~failure() throw(); 5209: 5209: virtual const char* 5209: what() const throw(); 5209: }; 5209: # 323 "/usr/include/c++/10/bits/ios_base.h" 3 5209: typedef _Ios_Fmtflags fmtflags; 5209: 5209: 5209: static const fmtflags boolalpha = _S_boolalpha; 5209: 5209: 5209: static const fmtflags dec = _S_dec; 5209: 5209: 5209: static const fmtflags fixed = _S_fixed; 5209: 5209: 5209: static const fmtflags hex = _S_hex; 5209: 5209: 5209: 5209: 5209: static const fmtflags internal = _S_internal; 5209: 5209: 5209: 5209: static const fmtflags left = _S_left; 5209: 5209: 5209: static const fmtflags oct = _S_oct; 5209: 5209: 5209: 5209: static const fmtflags right = _S_right; 5209: 5209: 5209: static const fmtflags scientific = _S_scientific; 5209: 5209: 5209: 5209: static const fmtflags showbase = _S_showbase; 5209: 5209: 5209: 5209: static const fmtflags showpoint = _S_showpoint; 5209: 5209: 5209: static const fmtflags showpos = _S_showpos; 5209: 5209: 5209: static const fmtflags skipws = _S_skipws; 5209: 5209: 5209: static const fmtflags unitbuf = _S_unitbuf; 5209: 5209: 5209: 5209: static const fmtflags uppercase = _S_uppercase; 5209: 5209: 5209: static const fmtflags adjustfield = _S_adjustfield; 5209: 5209: 5209: static const fmtflags basefield = _S_basefield; 5209: 5209: 5209: static const fmtflags floatfield = _S_floatfield; 5209: # 398 "/usr/include/c++/10/bits/ios_base.h" 3 5209: typedef _Ios_Iostate iostate; 5209: 5209: 5209: 5209: static const iostate badbit = _S_badbit; 5209: 5209: 5209: static const iostate eofbit = _S_eofbit; 5209: 5209: 5209: 5209: 5209: static const iostate failbit = _S_failbit; 5209: 5209: 5209: static const iostate goodbit = _S_goodbit; 5209: # 429 "/usr/include/c++/10/bits/ios_base.h" 3 5209: typedef _Ios_Openmode openmode; 5209: 5209: 5209: static const openmode app = _S_app; 5209: 5209: 5209: static const openmode ate = _S_ate; 5209: 5209: 5209: 5209: 5209: static const openmode binary = _S_bin; 5209: 5209: 5209: static const openmode in = _S_in; 5209: 5209: 5209: static const openmode out = _S_out; 5209: 5209: 5209: static const openmode trunc = _S_trunc; 5209: # 461 "/usr/include/c++/10/bits/ios_base.h" 3 5209: typedef _Ios_Seekdir seekdir; 5209: 5209: 5209: static const seekdir beg = _S_beg; 5209: 5209: 5209: static const seekdir cur = _S_cur; 5209: 5209: 5209: static const seekdir end = _S_end; 5209: 5209: 5209: 5209: typedef int io_state; 5209: typedef int open_mode; 5209: typedef int seek_dir; 5209: 5209: typedef std::streampos streampos; 5209: typedef std::streamoff streamoff; 5209: # 489 "/usr/include/c++/10/bits/ios_base.h" 3 5209: enum event 5209: { 5209: erase_event, 5209: imbue_event, 5209: copyfmt_event 5209: }; 5209: # 506 "/usr/include/c++/10/bits/ios_base.h" 3 5209: typedef void (*event_callback) (event __e, ios_base& __b, int __i); 5209: # 518 "/usr/include/c++/10/bits/ios_base.h" 3 5209: void 5209: register_callback(event_callback __fn, int __index); 5209: 5209: protected: 5209: streamsize _M_precision; 5209: streamsize _M_width; 5209: fmtflags _M_flags; 5209: iostate _M_exception; 5209: iostate _M_streambuf_state; 5209: 5209: 5209: 5209: struct _Callback_list 5209: { 5209: 5209: _Callback_list* _M_next; 5209: ios_base::event_callback _M_fn; 5209: int _M_index; 5209: _Atomic_word _M_refcount; 5209: 5209: _Callback_list(ios_base::event_callback __fn, int __index, 5209: _Callback_list* __cb) 5209: : _M_next(__cb), _M_fn(__fn), _M_index(__index), _M_refcount(0) { } 5209: 5209: void 5209: _M_add_reference() { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); } 5209: 5209: 5209: int 5209: _M_remove_reference() 5209: { 5209: 5209: ; 5209: int __res = __gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1); 5209: if (__res == 0) 5209: { 5209: ; 5209: } 5209: return __res; 5209: } 5209: }; 5209: 5209: _Callback_list* _M_callbacks; 5209: 5209: void 5209: _M_call_callbacks(event __ev) throw(); 5209: 5209: void 5209: _M_dispose_callbacks(void) throw(); 5209: 5209: 5209: struct _Words 5209: { 5209: void* _M_pword; 5209: long _M_iword; 5209: _Words() : _M_pword(0), _M_iword(0) { } 5209: }; 5209: 5209: 5209: _Words _M_word_zero; 5209: 5209: 5209: 5209: enum { _S_local_word_size = 8 }; 5209: _Words _M_local_word[_S_local_word_size]; 5209: 5209: 5209: int _M_word_size; 5209: _Words* _M_word; 5209: 5209: _Words& 5209: _M_grow_words(int __index, bool __iword); 5209: 5209: 5209: locale _M_ios_locale; 5209: 5209: void 5209: _M_init() throw(); 5209: 5209: public: 5209: 5209: 5209: 5209: 5209: 5209: class Init 5209: { 5209: friend class ios_base; 5209: public: 5209: Init(); 5209: ~Init(); 5209: 5209: 5209: Init(const Init&) = default; 5209: Init& operator=(const Init&) = default; 5209: 5209: 5209: private: 5209: static _Atomic_word _S_refcount; 5209: static bool _S_synced_with_stdio; 5209: }; 5209: 5209: 5209: 5209: 5209: 5209: 5209: fmtflags 5209: flags() const 5209: { return _M_flags; } 5209: # 636 "/usr/include/c++/10/bits/ios_base.h" 3 5209: fmtflags 5209: flags(fmtflags __fmtfl) 5209: { 5209: fmtflags __old = _M_flags; 5209: _M_flags = __fmtfl; 5209: return __old; 5209: } 5209: # 652 "/usr/include/c++/10/bits/ios_base.h" 3 5209: fmtflags 5209: setf(fmtflags __fmtfl) 5209: { 5209: fmtflags __old = _M_flags; 5209: _M_flags |= __fmtfl; 5209: return __old; 5209: } 5209: # 669 "/usr/include/c++/10/bits/ios_base.h" 3 5209: fmtflags 5209: setf(fmtflags __fmtfl, fmtflags __mask) 5209: { 5209: fmtflags __old = _M_flags; 5209: _M_flags &= ~__mask; 5209: _M_flags |= (__fmtfl & __mask); 5209: return __old; 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: void 5209: unsetf(fmtflags __mask) 5209: { _M_flags &= ~__mask; } 5209: # 695 "/usr/include/c++/10/bits/ios_base.h" 3 5209: streamsize 5209: precision() const 5209: { return _M_precision; } 5209: 5209: 5209: 5209: 5209: 5209: 5209: streamsize 5209: precision(streamsize __prec) 5209: { 5209: streamsize __old = _M_precision; 5209: _M_precision = __prec; 5209: return __old; 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: streamsize 5209: width() const 5209: { return _M_width; } 5209: 5209: 5209: 5209: 5209: 5209: 5209: streamsize 5209: width(streamsize __wide) 5209: { 5209: streamsize __old = _M_width; 5209: _M_width = __wide; 5209: return __old; 5209: } 5209: # 746 "/usr/include/c++/10/bits/ios_base.h" 3 5209: static bool 5209: sync_with_stdio(bool __sync = true); 5209: # 758 "/usr/include/c++/10/bits/ios_base.h" 3 5209: locale 5209: imbue(const locale& __loc) throw(); 5209: # 769 "/usr/include/c++/10/bits/ios_base.h" 3 5209: locale 5209: getloc() const 5209: { return _M_ios_locale; } 5209: # 780 "/usr/include/c++/10/bits/ios_base.h" 3 5209: const locale& 5209: _M_getloc() const 5209: { return _M_ios_locale; } 5209: # 799 "/usr/include/c++/10/bits/ios_base.h" 3 5209: static int 5209: xalloc() throw(); 5209: # 815 "/usr/include/c++/10/bits/ios_base.h" 3 5209: long& 5209: iword(int __ix) 5209: { 5209: _Words& __word = ((unsigned)__ix < (unsigned)_M_word_size) 5209: ? _M_word[__ix] : _M_grow_words(__ix, true); 5209: return __word._M_iword; 5209: } 5209: # 836 "/usr/include/c++/10/bits/ios_base.h" 3 5209: void*& 5209: pword(int __ix) 5209: { 5209: _Words& __word = ((unsigned)__ix < (unsigned)_M_word_size) 5209: ? _M_word[__ix] : _M_grow_words(__ix, false); 5209: return __word._M_pword; 5209: } 5209: # 853 "/usr/include/c++/10/bits/ios_base.h" 3 5209: virtual ~ios_base(); 5209: 5209: protected: 5209: ios_base() throw (); 5209: # 867 "/usr/include/c++/10/bits/ios_base.h" 3 5209: public: 5209: ios_base(const ios_base&) = delete; 5209: 5209: ios_base& 5209: operator=(const ios_base&) = delete; 5209: 5209: protected: 5209: void 5209: _M_move(ios_base&) noexcept; 5209: 5209: void 5209: _M_swap(ios_base& __rhs) noexcept; 5209: 5209: }; 5209: 5209: 5209: 5209: inline ios_base& 5209: boolalpha(ios_base& __base) 5209: { 5209: __base.setf(ios_base::boolalpha); 5209: return __base; 5209: } 5209: 5209: 5209: inline ios_base& 5209: noboolalpha(ios_base& __base) 5209: { 5209: __base.unsetf(ios_base::boolalpha); 5209: return __base; 5209: } 5209: 5209: 5209: inline ios_base& 5209: showbase(ios_base& __base) 5209: { 5209: __base.setf(ios_base::showbase); 5209: return __base; 5209: } 5209: 5209: 5209: inline ios_base& 5209: noshowbase(ios_base& __base) 5209: { 5209: __base.unsetf(ios_base::showbase); 5209: return __base; 5209: } 5209: 5209: 5209: inline ios_base& 5209: showpoint(ios_base& __base) 5209: { 5209: __base.setf(ios_base::showpoint); 5209: return __base; 5209: } 5209: 5209: 5209: inline ios_base& 5209: noshowpoint(ios_base& __base) 5209: { 5209: __base.unsetf(ios_base::showpoint); 5209: return __base; 5209: } 5209: 5209: 5209: inline ios_base& 5209: showpos(ios_base& __base) 5209: { 5209: __base.setf(ios_base::showpos); 5209: return __base; 5209: } 5209: 5209: 5209: inline ios_base& 5209: noshowpos(ios_base& __base) 5209: { 5209: __base.unsetf(ios_base::showpos); 5209: return __base; 5209: } 5209: 5209: 5209: inline ios_base& 5209: skipws(ios_base& __base) 5209: { 5209: __base.setf(ios_base::skipws); 5209: return __base; 5209: } 5209: 5209: 5209: inline ios_base& 5209: noskipws(ios_base& __base) 5209: { 5209: __base.unsetf(ios_base::skipws); 5209: return __base; 5209: } 5209: 5209: 5209: inline ios_base& 5209: uppercase(ios_base& __base) 5209: { 5209: __base.setf(ios_base::uppercase); 5209: return __base; 5209: } 5209: 5209: 5209: inline ios_base& 5209: nouppercase(ios_base& __base) 5209: { 5209: __base.unsetf(ios_base::uppercase); 5209: return __base; 5209: } 5209: 5209: 5209: inline ios_base& 5209: unitbuf(ios_base& __base) 5209: { 5209: __base.setf(ios_base::unitbuf); 5209: return __base; 5209: } 5209: 5209: 5209: inline ios_base& 5209: nounitbuf(ios_base& __base) 5209: { 5209: __base.unsetf(ios_base::unitbuf); 5209: return __base; 5209: } 5209: 5209: 5209: 5209: inline ios_base& 5209: internal(ios_base& __base) 5209: { 5209: __base.setf(ios_base::internal, ios_base::adjustfield); 5209: return __base; 5209: } 5209: 5209: 5209: inline ios_base& 5209: left(ios_base& __base) 5209: { 5209: __base.setf(ios_base::left, ios_base::adjustfield); 5209: return __base; 5209: } 5209: 5209: 5209: inline ios_base& 5209: right(ios_base& __base) 5209: { 5209: __base.setf(ios_base::right, ios_base::adjustfield); 5209: return __base; 5209: } 5209: 5209: 5209: 5209: inline ios_base& 5209: dec(ios_base& __base) 5209: { 5209: __base.setf(ios_base::dec, ios_base::basefield); 5209: return __base; 5209: } 5209: 5209: 5209: inline ios_base& 5209: hex(ios_base& __base) 5209: { 5209: __base.setf(ios_base::hex, ios_base::basefield); 5209: return __base; 5209: } 5209: 5209: 5209: inline ios_base& 5209: oct(ios_base& __base) 5209: { 5209: __base.setf(ios_base::oct, ios_base::basefield); 5209: return __base; 5209: } 5209: 5209: 5209: 5209: inline ios_base& 5209: fixed(ios_base& __base) 5209: { 5209: __base.setf(ios_base::fixed, ios_base::floatfield); 5209: return __base; 5209: } 5209: 5209: 5209: inline ios_base& 5209: scientific(ios_base& __base) 5209: { 5209: __base.setf(ios_base::scientific, ios_base::floatfield); 5209: return __base; 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: inline ios_base& 5209: hexfloat(ios_base& __base) 5209: { 5209: __base.setf(ios_base::fixed | ios_base::scientific, ios_base::floatfield); 5209: return __base; 5209: } 5209: 5209: 5209: inline ios_base& 5209: defaultfloat(ios_base& __base) 5209: { 5209: __base.unsetf(ios_base::floatfield); 5209: return __base; 5209: } 5209: 5209: 5209: 5209: } 5209: # 43 "/usr/include/c++/10/ios" 2 3 5209: # 1 "/usr/include/c++/10/streambuf" 1 3 5209: # 36 "/usr/include/c++/10/streambuf" 3 5209: 5209: # 37 "/usr/include/c++/10/streambuf" 3 5209: # 45 "/usr/include/c++/10/streambuf" 3 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: 5209: 5209: template 5209: streamsize 5209: __copy_streambufs_eof(basic_streambuf<_CharT, _Traits>*, 5209: basic_streambuf<_CharT, _Traits>*, bool&); 5209: # 121 "/usr/include/c++/10/streambuf" 3 5209: template 5209: class basic_streambuf 5209: { 5209: public: 5209: 5209: 5209: 5209: 5209: 5209: 5209: typedef _CharT char_type; 5209: typedef _Traits traits_type; 5209: typedef typename traits_type::int_type int_type; 5209: typedef typename traits_type::pos_type pos_type; 5209: typedef typename traits_type::off_type off_type; 5209: 5209: 5209: 5209: 5209: typedef basic_streambuf __streambuf_type; 5209: 5209: 5209: friend class basic_ios; 5209: friend class basic_istream; 5209: friend class basic_ostream; 5209: friend class istreambuf_iterator; 5209: friend class ostreambuf_iterator; 5209: 5209: friend streamsize 5209: __copy_streambufs_eof<>(basic_streambuf*, basic_streambuf*, bool&); 5209: 5209: template 5209: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, 5209: _CharT2*>::__type 5209: __copy_move_a2(istreambuf_iterator<_CharT2>, 5209: istreambuf_iterator<_CharT2>, _CharT2*); 5209: 5209: template 5209: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, 5209: istreambuf_iterator<_CharT2> >::__type 5209: find(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, 5209: const _CharT2&); 5209: 5209: template 5209: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, 5209: void>::__type 5209: advance(istreambuf_iterator<_CharT2>&, _Distance); 5209: 5209: template 5209: friend basic_istream<_CharT2, _Traits2>& 5209: operator>>(basic_istream<_CharT2, _Traits2>&, _CharT2*); 5209: 5209: template 5209: friend basic_istream<_CharT2, _Traits2>& 5209: operator>>(basic_istream<_CharT2, _Traits2>&, 5209: basic_string<_CharT2, _Traits2, _Alloc>&); 5209: 5209: template 5209: friend basic_istream<_CharT2, _Traits2>& 5209: getline(basic_istream<_CharT2, _Traits2>&, 5209: basic_string<_CharT2, _Traits2, _Alloc>&, _CharT2); 5209: 5209: protected: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: char_type* _M_in_beg; 5209: char_type* _M_in_cur; 5209: char_type* _M_in_end; 5209: char_type* _M_out_beg; 5209: char_type* _M_out_cur; 5209: char_type* _M_out_end; 5209: 5209: 5209: locale _M_buf_locale; 5209: 5209: public: 5209: 5209: virtual 5209: ~basic_streambuf() 5209: { } 5209: # 215 "/usr/include/c++/10/streambuf" 3 5209: locale 5209: pubimbue(const locale& __loc) 5209: { 5209: locale __tmp(this->getloc()); 5209: this->imbue(__loc); 5209: _M_buf_locale = __loc; 5209: return __tmp; 5209: } 5209: # 232 "/usr/include/c++/10/streambuf" 3 5209: locale 5209: getloc() const 5209: { return _M_buf_locale; } 5209: # 245 "/usr/include/c++/10/streambuf" 3 5209: basic_streambuf* 5209: pubsetbuf(char_type* __s, streamsize __n) 5209: { return this->setbuf(__s, __n); } 5209: # 257 "/usr/include/c++/10/streambuf" 3 5209: pos_type 5209: pubseekoff(off_type __off, ios_base::seekdir __way, 5209: ios_base::openmode __mode = ios_base::in | ios_base::out) 5209: { return this->seekoff(__off, __way, __mode); } 5209: # 269 "/usr/include/c++/10/streambuf" 3 5209: pos_type 5209: pubseekpos(pos_type __sp, 5209: ios_base::openmode __mode = ios_base::in | ios_base::out) 5209: { return this->seekpos(__sp, __mode); } 5209: 5209: 5209: 5209: 5209: int 5209: pubsync() { return this->sync(); } 5209: # 290 "/usr/include/c++/10/streambuf" 3 5209: streamsize 5209: in_avail() 5209: { 5209: const streamsize __ret = this->egptr() - this->gptr(); 5209: return __ret ? __ret : this->showmanyc(); 5209: } 5209: # 304 "/usr/include/c++/10/streambuf" 3 5209: int_type 5209: snextc() 5209: { 5209: int_type __ret = traits_type::eof(); 5209: if (__builtin_expect(!traits_type::eq_int_type(this->sbumpc(), 5209: __ret), true)) 5209: __ret = this->sgetc(); 5209: return __ret; 5209: } 5209: # 322 "/usr/include/c++/10/streambuf" 3 5209: int_type 5209: sbumpc() 5209: { 5209: int_type __ret; 5209: if (__builtin_expect(this->gptr() < this->egptr(), true)) 5209: { 5209: __ret = traits_type::to_int_type(*this->gptr()); 5209: this->gbump(1); 5209: } 5209: else 5209: __ret = this->uflow(); 5209: return __ret; 5209: } 5209: # 344 "/usr/include/c++/10/streambuf" 3 5209: int_type 5209: sgetc() 5209: { 5209: int_type __ret; 5209: if (__builtin_expect(this->gptr() < this->egptr(), true)) 5209: __ret = traits_type::to_int_type(*this->gptr()); 5209: else 5209: __ret = this->underflow(); 5209: return __ret; 5209: } 5209: # 363 "/usr/include/c++/10/streambuf" 3 5209: streamsize 5209: sgetn(char_type* __s, streamsize __n) 5209: { return this->xsgetn(__s, __n); } 5209: # 378 "/usr/include/c++/10/streambuf" 3 5209: int_type 5209: sputbackc(char_type __c) 5209: { 5209: int_type __ret; 5209: const bool __testpos = this->eback() < this->gptr(); 5209: if (__builtin_expect(!__testpos || 5209: !traits_type::eq(__c, this->gptr()[-1]), false)) 5209: __ret = this->pbackfail(traits_type::to_int_type(__c)); 5209: else 5209: { 5209: this->gbump(-1); 5209: __ret = traits_type::to_int_type(*this->gptr()); 5209: } 5209: return __ret; 5209: } 5209: # 403 "/usr/include/c++/10/streambuf" 3 5209: int_type 5209: sungetc() 5209: { 5209: int_type __ret; 5209: if (__builtin_expect(this->eback() < this->gptr(), true)) 5209: { 5209: this->gbump(-1); 5209: __ret = traits_type::to_int_type(*this->gptr()); 5209: } 5209: else 5209: __ret = this->pbackfail(); 5209: return __ret; 5209: } 5209: # 430 "/usr/include/c++/10/streambuf" 3 5209: int_type 5209: sputc(char_type __c) 5209: { 5209: int_type __ret; 5209: if (__builtin_expect(this->pptr() < this->epptr(), true)) 5209: { 5209: *this->pptr() = __c; 5209: this->pbump(1); 5209: __ret = traits_type::to_int_type(__c); 5209: } 5209: else 5209: __ret = this->overflow(traits_type::to_int_type(__c)); 5209: return __ret; 5209: } 5209: # 456 "/usr/include/c++/10/streambuf" 3 5209: streamsize 5209: sputn(const char_type* __s, streamsize __n) 5209: { return this->xsputn(__s, __n); } 5209: 5209: protected: 5209: # 470 "/usr/include/c++/10/streambuf" 3 5209: basic_streambuf() 5209: : _M_in_beg(0), _M_in_cur(0), _M_in_end(0), 5209: _M_out_beg(0), _M_out_cur(0), _M_out_end(0), 5209: _M_buf_locale(locale()) 5209: { } 5209: # 488 "/usr/include/c++/10/streambuf" 3 5209: char_type* 5209: eback() const { return _M_in_beg; } 5209: 5209: char_type* 5209: gptr() const { return _M_in_cur; } 5209: 5209: char_type* 5209: egptr() const { return _M_in_end; } 5209: # 504 "/usr/include/c++/10/streambuf" 3 5209: void 5209: gbump(int __n) { _M_in_cur += __n; } 5209: # 515 "/usr/include/c++/10/streambuf" 3 5209: void 5209: setg(char_type* __gbeg, char_type* __gnext, char_type* __gend) 5209: { 5209: _M_in_beg = __gbeg; 5209: _M_in_cur = __gnext; 5209: _M_in_end = __gend; 5209: } 5209: # 535 "/usr/include/c++/10/streambuf" 3 5209: char_type* 5209: pbase() const { return _M_out_beg; } 5209: 5209: char_type* 5209: pptr() const { return _M_out_cur; } 5209: 5209: char_type* 5209: epptr() const { return _M_out_end; } 5209: # 551 "/usr/include/c++/10/streambuf" 3 5209: void 5209: pbump(int __n) { _M_out_cur += __n; } 5209: # 561 "/usr/include/c++/10/streambuf" 3 5209: void 5209: setp(char_type* __pbeg, char_type* __pend) 5209: { 5209: _M_out_beg = _M_out_cur = __pbeg; 5209: _M_out_end = __pend; 5209: } 5209: # 582 "/usr/include/c++/10/streambuf" 3 5209: virtual void 5209: imbue(const locale& __loc __attribute__ ((__unused__))) 5209: { } 5209: # 597 "/usr/include/c++/10/streambuf" 3 5209: virtual basic_streambuf* 5209: setbuf(char_type*, streamsize) 5209: { return this; } 5209: # 608 "/usr/include/c++/10/streambuf" 3 5209: virtual pos_type 5209: seekoff(off_type, ios_base::seekdir, 5209: ios_base::openmode = ios_base::in | ios_base::out) 5209: { return pos_type(off_type(-1)); } 5209: # 620 "/usr/include/c++/10/streambuf" 3 5209: virtual pos_type 5209: seekpos(pos_type, 5209: ios_base::openmode = ios_base::in | ios_base::out) 5209: { return pos_type(off_type(-1)); } 5209: # 633 "/usr/include/c++/10/streambuf" 3 5209: virtual int 5209: sync() { return 0; } 5209: # 655 "/usr/include/c++/10/streambuf" 3 5209: virtual streamsize 5209: showmanyc() { return 0; } 5209: # 671 "/usr/include/c++/10/streambuf" 3 5209: virtual streamsize 5209: xsgetn(char_type* __s, streamsize __n); 5209: # 693 "/usr/include/c++/10/streambuf" 3 5209: virtual int_type 5209: underflow() 5209: { return traits_type::eof(); } 5209: # 706 "/usr/include/c++/10/streambuf" 3 5209: virtual int_type 5209: uflow() 5209: { 5209: int_type __ret = traits_type::eof(); 5209: const bool __testeof = traits_type::eq_int_type(this->underflow(), 5209: __ret); 5209: if (!__testeof) 5209: { 5209: __ret = traits_type::to_int_type(*this->gptr()); 5209: this->gbump(1); 5209: } 5209: return __ret; 5209: } 5209: # 730 "/usr/include/c++/10/streambuf" 3 5209: virtual int_type 5209: pbackfail(int_type __c __attribute__ ((__unused__)) = traits_type::eof()) 5209: { return traits_type::eof(); } 5209: # 748 "/usr/include/c++/10/streambuf" 3 5209: virtual streamsize 5209: xsputn(const char_type* __s, streamsize __n); 5209: # 774 "/usr/include/c++/10/streambuf" 3 5209: virtual int_type 5209: overflow(int_type __c __attribute__ ((__unused__)) = traits_type::eof()) 5209: { return traits_type::eof(); } 5209: 5209: 5209: 5209: public: 5209: # 790 "/usr/include/c++/10/streambuf" 3 5209: [[__deprecated__("stossc is deprecated, use sbumpc instead")]] 5209: 5209: void 5209: stossc() 5209: { 5209: if (this->gptr() < this->egptr()) 5209: this->gbump(1); 5209: else 5209: this->uflow(); 5209: } 5209: 5209: 5209: 5209: void 5209: __safe_gbump(streamsize __n) { _M_in_cur += __n; } 5209: 5209: void 5209: __safe_pbump(streamsize __n) { _M_out_cur += __n; } 5209: 5209: 5209: 5209: 5209: protected: 5209: 5209: basic_streambuf(const basic_streambuf&); 5209: 5209: basic_streambuf& 5209: operator=(const basic_streambuf&); 5209: 5209: 5209: void 5209: swap(basic_streambuf& __sb) 5209: { 5209: std::swap(_M_in_beg, __sb._M_in_beg); 5209: std::swap(_M_in_cur, __sb._M_in_cur); 5209: std::swap(_M_in_end, __sb._M_in_end); 5209: std::swap(_M_out_beg, __sb._M_out_beg); 5209: std::swap(_M_out_cur, __sb._M_out_cur); 5209: std::swap(_M_out_end, __sb._M_out_end); 5209: std::swap(_M_buf_locale, __sb._M_buf_locale); 5209: } 5209: 5209: }; 5209: 5209: 5209: template 5209: std::basic_streambuf<_CharT, _Traits>:: 5209: basic_streambuf(const basic_streambuf&) = default; 5209: 5209: template 5209: std::basic_streambuf<_CharT, _Traits>& 5209: std::basic_streambuf<_CharT, _Traits>:: 5209: operator=(const basic_streambuf&) = default; 5209: 5209: 5209: 5209: template<> 5209: streamsize 5209: __copy_streambufs_eof(basic_streambuf* __sbin, 5209: basic_streambuf* __sbout, bool& __ineof); 5209: 5209: template<> 5209: streamsize 5209: __copy_streambufs_eof(basic_streambuf* __sbin, 5209: basic_streambuf* __sbout, bool& __ineof); 5209: 5209: 5209: 5209: 5209: 5209: } 5209: 5209: # 1 "/usr/include/c++/10/bits/streambuf.tcc" 1 3 5209: # 37 "/usr/include/c++/10/bits/streambuf.tcc" 3 5209: 5209: # 38 "/usr/include/c++/10/bits/streambuf.tcc" 3 5209: 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: template 5209: streamsize 5209: basic_streambuf<_CharT, _Traits>:: 5209: xsgetn(char_type* __s, streamsize __n) 5209: { 5209: streamsize __ret = 0; 5209: while (__ret < __n) 5209: { 5209: const streamsize __buf_len = this->egptr() - this->gptr(); 5209: if (__buf_len) 5209: { 5209: const streamsize __remaining = __n - __ret; 5209: const streamsize __len = std::min(__buf_len, __remaining); 5209: traits_type::copy(__s, this->gptr(), __len); 5209: __ret += __len; 5209: __s += __len; 5209: this->__safe_gbump(__len); 5209: } 5209: 5209: if (__ret < __n) 5209: { 5209: const int_type __c = this->uflow(); 5209: if (!traits_type::eq_int_type(__c, traits_type::eof())) 5209: { 5209: traits_type::assign(*__s++, traits_type::to_char_type(__c)); 5209: ++__ret; 5209: } 5209: else 5209: break; 5209: } 5209: } 5209: return __ret; 5209: } 5209: 5209: template 5209: streamsize 5209: basic_streambuf<_CharT, _Traits>:: 5209: xsputn(const char_type* __s, streamsize __n) 5209: { 5209: streamsize __ret = 0; 5209: while (__ret < __n) 5209: { 5209: const streamsize __buf_len = this->epptr() - this->pptr(); 5209: if (__buf_len) 5209: { 5209: const streamsize __remaining = __n - __ret; 5209: const streamsize __len = std::min(__buf_len, __remaining); 5209: traits_type::copy(this->pptr(), __s, __len); 5209: __ret += __len; 5209: __s += __len; 5209: this->__safe_pbump(__len); 5209: } 5209: 5209: if (__ret < __n) 5209: { 5209: int_type __c = this->overflow(traits_type::to_int_type(*__s)); 5209: if (!traits_type::eq_int_type(__c, traits_type::eof())) 5209: { 5209: ++__ret; 5209: ++__s; 5209: } 5209: else 5209: break; 5209: } 5209: } 5209: return __ret; 5209: } 5209: 5209: 5209: 5209: 5209: template 5209: streamsize 5209: __copy_streambufs_eof(basic_streambuf<_CharT, _Traits>* __sbin, 5209: basic_streambuf<_CharT, _Traits>* __sbout, 5209: bool& __ineof) 5209: { 5209: streamsize __ret = 0; 5209: __ineof = true; 5209: typename _Traits::int_type __c = __sbin->sgetc(); 5209: while (!_Traits::eq_int_type(__c, _Traits::eof())) 5209: { 5209: __c = __sbout->sputc(_Traits::to_char_type(__c)); 5209: if (_Traits::eq_int_type(__c, _Traits::eof())) 5209: { 5209: __ineof = false; 5209: break; 5209: } 5209: ++__ret; 5209: __c = __sbin->snextc(); 5209: } 5209: return __ret; 5209: } 5209: 5209: template 5209: inline streamsize 5209: __copy_streambufs(basic_streambuf<_CharT, _Traits>* __sbin, 5209: basic_streambuf<_CharT, _Traits>* __sbout) 5209: { 5209: bool __ineof; 5209: return __copy_streambufs_eof(__sbin, __sbout, __ineof); 5209: } 5209: 5209: 5209: 5209: 5209: extern template class basic_streambuf; 5209: extern template 5209: streamsize 5209: __copy_streambufs(basic_streambuf*, 5209: basic_streambuf*); 5209: extern template 5209: streamsize 5209: __copy_streambufs_eof(basic_streambuf*, 5209: basic_streambuf*, bool&); 5209: 5209: 5209: extern template class basic_streambuf; 5209: extern template 5209: streamsize 5209: __copy_streambufs(basic_streambuf*, 5209: basic_streambuf*); 5209: extern template 5209: streamsize 5209: __copy_streambufs_eof(basic_streambuf*, 5209: basic_streambuf*, bool&); 5209: 5209: 5209: 5209: 5209: } 5209: # 863 "/usr/include/c++/10/streambuf" 2 3 5209: # 44 "/usr/include/c++/10/ios" 2 3 5209: # 1 "/usr/include/c++/10/bits/basic_ios.h" 1 3 5209: # 33 "/usr/include/c++/10/bits/basic_ios.h" 3 5209: 5209: # 34 "/usr/include/c++/10/bits/basic_ios.h" 3 5209: 5209: 5209: 5209: # 1 "/usr/include/c++/10/bits/locale_facets.h" 1 3 5209: # 37 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: 5209: # 38 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: 5209: # 1 "/usr/include/c++/10/cwctype" 1 3 5209: # 39 "/usr/include/c++/10/cwctype" 3 5209: 5209: # 40 "/usr/include/c++/10/cwctype" 3 5209: # 50 "/usr/include/c++/10/cwctype" 3 5209: # 1 "/usr/include/wctype.h" 1 3 4 5209: # 38 "/usr/include/wctype.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/wctype-wchar.h" 1 3 4 5209: # 38 "/usr/include/aarch64-linux-gnu/bits/wctype-wchar.h" 3 4 5209: typedef unsigned long int wctype_t; 5209: # 56 "/usr/include/aarch64-linux-gnu/bits/wctype-wchar.h" 3 4 5209: enum 5209: { 5209: __ISwupper = 0, 5209: __ISwlower = 1, 5209: __ISwalpha = 2, 5209: __ISwdigit = 3, 5209: __ISwxdigit = 4, 5209: __ISwspace = 5, 5209: __ISwprint = 6, 5209: __ISwgraph = 7, 5209: __ISwblank = 8, 5209: __ISwcntrl = 9, 5209: __ISwpunct = 10, 5209: __ISwalnum = 11, 5209: 5209: _ISwupper = ((__ISwupper) < 8 ? (int) ((1UL << (__ISwupper)) << 24) : ((__ISwupper) < 16 ? (int) ((1UL << (__ISwupper)) << 8) : ((__ISwupper) < 24 ? (int) ((1UL << (__ISwupper)) >> 8) : (int) ((1UL << (__ISwupper)) >> 24)))), 5209: _ISwlower = ((__ISwlower) < 8 ? (int) ((1UL << (__ISwlower)) << 24) : ((__ISwlower) < 16 ? (int) ((1UL << (__ISwlower)) << 8) : ((__ISwlower) < 24 ? (int) ((1UL << (__ISwlower)) >> 8) : (int) ((1UL << (__ISwlower)) >> 24)))), 5209: _ISwalpha = ((__ISwalpha) < 8 ? (int) ((1UL << (__ISwalpha)) << 24) : ((__ISwalpha) < 16 ? (int) ((1UL << (__ISwalpha)) << 8) : ((__ISwalpha) < 24 ? (int) ((1UL << (__ISwalpha)) >> 8) : (int) ((1UL << (__ISwalpha)) >> 24)))), 5209: _ISwdigit = ((__ISwdigit) < 8 ? (int) ((1UL << (__ISwdigit)) << 24) : ((__ISwdigit) < 16 ? (int) ((1UL << (__ISwdigit)) << 8) : ((__ISwdigit) < 24 ? (int) ((1UL << (__ISwdigit)) >> 8) : (int) ((1UL << (__ISwdigit)) >> 24)))), 5209: _ISwxdigit = ((__ISwxdigit) < 8 ? (int) ((1UL << (__ISwxdigit)) << 24) : ((__ISwxdigit) < 16 ? (int) ((1UL << (__ISwxdigit)) << 8) : ((__ISwxdigit) < 24 ? (int) ((1UL << (__ISwxdigit)) >> 8) : (int) ((1UL << (__ISwxdigit)) >> 24)))), 5209: _ISwspace = ((__ISwspace) < 8 ? (int) ((1UL << (__ISwspace)) << 24) : ((__ISwspace) < 16 ? (int) ((1UL << (__ISwspace)) << 8) : ((__ISwspace) < 24 ? (int) ((1UL << (__ISwspace)) >> 8) : (int) ((1UL << (__ISwspace)) >> 24)))), 5209: _ISwprint = ((__ISwprint) < 8 ? (int) ((1UL << (__ISwprint)) << 24) : ((__ISwprint) < 16 ? (int) ((1UL << (__ISwprint)) << 8) : ((__ISwprint) < 24 ? (int) ((1UL << (__ISwprint)) >> 8) : (int) ((1UL << (__ISwprint)) >> 24)))), 5209: _ISwgraph = ((__ISwgraph) < 8 ? (int) ((1UL << (__ISwgraph)) << 24) : ((__ISwgraph) < 16 ? (int) ((1UL << (__ISwgraph)) << 8) : ((__ISwgraph) < 24 ? (int) ((1UL << (__ISwgraph)) >> 8) : (int) ((1UL << (__ISwgraph)) >> 24)))), 5209: _ISwblank = ((__ISwblank) < 8 ? (int) ((1UL << (__ISwblank)) << 24) : ((__ISwblank) < 16 ? (int) ((1UL << (__ISwblank)) << 8) : ((__ISwblank) < 24 ? (int) ((1UL << (__ISwblank)) >> 8) : (int) ((1UL << (__ISwblank)) >> 24)))), 5209: _ISwcntrl = ((__ISwcntrl) < 8 ? (int) ((1UL << (__ISwcntrl)) << 24) : ((__ISwcntrl) < 16 ? (int) ((1UL << (__ISwcntrl)) << 8) : ((__ISwcntrl) < 24 ? (int) ((1UL << (__ISwcntrl)) >> 8) : (int) ((1UL << (__ISwcntrl)) >> 24)))), 5209: _ISwpunct = ((__ISwpunct) < 8 ? (int) ((1UL << (__ISwpunct)) << 24) : ((__ISwpunct) < 16 ? (int) ((1UL << (__ISwpunct)) << 8) : ((__ISwpunct) < 24 ? (int) ((1UL << (__ISwpunct)) >> 8) : (int) ((1UL << (__ISwpunct)) >> 24)))), 5209: _ISwalnum = ((__ISwalnum) < 8 ? (int) ((1UL << (__ISwalnum)) << 24) : ((__ISwalnum) < 16 ? (int) ((1UL << (__ISwalnum)) << 8) : ((__ISwalnum) < 24 ? (int) ((1UL << (__ISwalnum)) >> 8) : (int) ((1UL << (__ISwalnum)) >> 24)))) 5209: }; 5209: 5209: 5209: 5209: extern "C" { 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern int iswalnum (wint_t __wc) throw (); 5209: 5209: 5209: 5209: 5209: 5209: extern int iswalpha (wint_t __wc) throw (); 5209: 5209: 5209: extern int iswcntrl (wint_t __wc) throw (); 5209: 5209: 5209: 5209: extern int iswdigit (wint_t __wc) throw (); 5209: 5209: 5209: 5209: extern int iswgraph (wint_t __wc) throw (); 5209: 5209: 5209: 5209: 5209: extern int iswlower (wint_t __wc) throw (); 5209: 5209: 5209: extern int iswprint (wint_t __wc) throw (); 5209: 5209: 5209: 5209: 5209: extern int iswpunct (wint_t __wc) throw (); 5209: 5209: 5209: 5209: 5209: extern int iswspace (wint_t __wc) throw (); 5209: 5209: 5209: 5209: 5209: extern int iswupper (wint_t __wc) throw (); 5209: 5209: 5209: 5209: 5209: extern int iswxdigit (wint_t __wc) throw (); 5209: 5209: 5209: 5209: 5209: 5209: extern int iswblank (wint_t __wc) throw (); 5209: # 155 "/usr/include/aarch64-linux-gnu/bits/wctype-wchar.h" 3 4 5209: extern wctype_t wctype (const char *__property) throw (); 5209: 5209: 5209: 5209: extern int iswctype (wint_t __wc, wctype_t __desc) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern wint_t towlower (wint_t __wc) throw (); 5209: 5209: 5209: extern wint_t towupper (wint_t __wc) throw (); 5209: 5209: } 5209: # 39 "/usr/include/wctype.h" 2 3 4 5209: 5209: 5209: 5209: 5209: 5209: extern "C" { 5209: 5209: 5209: 5209: typedef const __int32_t *wctrans_t; 5209: 5209: 5209: 5209: extern wctrans_t wctrans (const char *__property) throw (); 5209: 5209: 5209: extern wint_t towctrans (wint_t __wc, wctrans_t __desc) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern int iswalnum_l (wint_t __wc, locale_t __locale) throw (); 5209: 5209: 5209: 5209: 5209: 5209: extern int iswalpha_l (wint_t __wc, locale_t __locale) throw (); 5209: 5209: 5209: extern int iswcntrl_l (wint_t __wc, locale_t __locale) throw (); 5209: 5209: 5209: 5209: extern int iswdigit_l (wint_t __wc, locale_t __locale) throw (); 5209: 5209: 5209: 5209: extern int iswgraph_l (wint_t __wc, locale_t __locale) throw (); 5209: 5209: 5209: 5209: 5209: extern int iswlower_l (wint_t __wc, locale_t __locale) throw (); 5209: 5209: 5209: extern int iswprint_l (wint_t __wc, locale_t __locale) throw (); 5209: 5209: 5209: 5209: 5209: extern int iswpunct_l (wint_t __wc, locale_t __locale) throw (); 5209: 5209: 5209: 5209: 5209: extern int iswspace_l (wint_t __wc, locale_t __locale) throw (); 5209: 5209: 5209: 5209: 5209: extern int iswupper_l (wint_t __wc, locale_t __locale) throw (); 5209: 5209: 5209: 5209: 5209: extern int iswxdigit_l (wint_t __wc, locale_t __locale) throw (); 5209: 5209: 5209: 5209: 5209: extern int iswblank_l (wint_t __wc, locale_t __locale) throw (); 5209: 5209: 5209: 5209: extern wctype_t wctype_l (const char *__property, locale_t __locale) 5209: throw (); 5209: 5209: 5209: 5209: extern int iswctype_l (wint_t __wc, wctype_t __desc, locale_t __locale) 5209: throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern wint_t towlower_l (wint_t __wc, locale_t __locale) throw (); 5209: 5209: 5209: extern wint_t towupper_l (wint_t __wc, locale_t __locale) throw (); 5209: 5209: 5209: 5209: extern wctrans_t wctrans_l (const char *__property, locale_t __locale) 5209: throw (); 5209: 5209: 5209: extern wint_t towctrans_l (wint_t __wc, wctrans_t __desc, 5209: locale_t __locale) throw (); 5209: 5209: 5209: 5209: } 5209: # 51 "/usr/include/c++/10/cwctype" 2 3 5209: # 80 "/usr/include/c++/10/cwctype" 3 5209: namespace std 5209: { 5209: using ::wctrans_t; 5209: using ::wctype_t; 5209: using ::wint_t; 5209: 5209: using ::iswalnum; 5209: using ::iswalpha; 5209: 5209: using ::iswblank; 5209: 5209: using ::iswcntrl; 5209: using ::iswctype; 5209: using ::iswdigit; 5209: using ::iswgraph; 5209: using ::iswlower; 5209: using ::iswprint; 5209: using ::iswpunct; 5209: using ::iswspace; 5209: using ::iswupper; 5209: using ::iswxdigit; 5209: using ::towctrans; 5209: using ::towlower; 5209: using ::towupper; 5209: using ::wctrans; 5209: using ::wctype; 5209: } 5209: # 40 "/usr/include/c++/10/bits/locale_facets.h" 2 3 5209: # 1 "/usr/include/c++/10/cctype" 1 3 5209: # 39 "/usr/include/c++/10/cctype" 3 5209: 5209: # 40 "/usr/include/c++/10/cctype" 3 5209: # 41 "/usr/include/c++/10/bits/locale_facets.h" 2 3 5209: # 1 "/usr/include/aarch64-linux-gnu/c++/10/bits/ctype_base.h" 1 3 5209: # 36 "/usr/include/aarch64-linux-gnu/c++/10/bits/ctype_base.h" 3 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: 5209: struct ctype_base 5209: { 5209: 5209: typedef const int* __to_type; 5209: 5209: 5209: 5209: typedef unsigned short mask; 5209: static const mask upper = _ISupper; 5209: static const mask lower = _ISlower; 5209: static const mask alpha = _ISalpha; 5209: static const mask digit = _ISdigit; 5209: static const mask xdigit = _ISxdigit; 5209: static const mask space = _ISspace; 5209: static const mask print = _ISprint; 5209: static const mask graph = _ISalpha | _ISdigit | _ISpunct; 5209: static const mask cntrl = _IScntrl; 5209: static const mask punct = _ISpunct; 5209: static const mask alnum = _ISalpha | _ISdigit; 5209: 5209: static const mask blank = _ISblank; 5209: 5209: }; 5209: 5209: 5209: } 5209: # 42 "/usr/include/c++/10/bits/locale_facets.h" 2 3 5209: 5209: 5209: 5209: 5209: 5209: 5209: # 1 "/usr/include/c++/10/bits/streambuf_iterator.h" 1 3 5209: # 33 "/usr/include/c++/10/bits/streambuf_iterator.h" 3 5209: 5209: # 34 "/usr/include/c++/10/bits/streambuf_iterator.h" 3 5209: 5209: 5209: 5209: 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: # 49 "/usr/include/c++/10/bits/streambuf_iterator.h" 3 5209: template 5209: class istreambuf_iterator 5209: : public iterator 5209: 5209: 5209: 5209: { 5209: public: 5209: # 69 "/usr/include/c++/10/bits/streambuf_iterator.h" 3 5209: typedef _CharT char_type; 5209: typedef _Traits traits_type; 5209: typedef typename _Traits::int_type int_type; 5209: typedef basic_streambuf<_CharT, _Traits> streambuf_type; 5209: typedef basic_istream<_CharT, _Traits> istream_type; 5209: 5209: 5209: template 5209: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, 5209: ostreambuf_iterator<_CharT2> >::__type 5209: copy(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, 5209: ostreambuf_iterator<_CharT2>); 5209: 5209: template 5209: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, 5209: _CharT2*>::__type 5209: __copy_move_a2(istreambuf_iterator<_CharT2>, 5209: istreambuf_iterator<_CharT2>, _CharT2*); 5209: 5209: 5209: template 5209: friend __enable_if_t<__is_char<_CharT2>::__value, _CharT2*> 5209: __copy_n_a(istreambuf_iterator<_CharT2>, _Size, _CharT2*); 5209: 5209: 5209: template 5209: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, 5209: istreambuf_iterator<_CharT2> >::__type 5209: find(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, 5209: const _CharT2&); 5209: 5209: template 5209: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, 5209: void>::__type 5209: advance(istreambuf_iterator<_CharT2>&, _Distance); 5209: 5209: private: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: mutable streambuf_type* _M_sbuf; 5209: int_type _M_c; 5209: 5209: public: 5209: 5209: constexpr istreambuf_iterator() noexcept 5209: : _M_sbuf(0), _M_c(traits_type::eof()) { } 5209: 5209: 5209: istreambuf_iterator(const istreambuf_iterator&) noexcept = default; 5209: 5209: ~istreambuf_iterator() = default; 5209: 5209: 5209: 5209: istreambuf_iterator(istream_type& __s) noexcept 5209: : _M_sbuf(__s.rdbuf()), _M_c(traits_type::eof()) { } 5209: 5209: 5209: istreambuf_iterator(streambuf_type* __s) noexcept 5209: : _M_sbuf(__s), _M_c(traits_type::eof()) { } 5209: 5209: 5209: istreambuf_iterator& 5209: operator=(const istreambuf_iterator&) noexcept = default; 5209: 5209: 5209: 5209: 5209: 5209: char_type 5209: operator*() const 5209: { 5209: int_type __c = _M_get(); 5209: # 155 "/usr/include/c++/10/bits/streambuf_iterator.h" 3 5209: return traits_type::to_char_type(__c); 5209: } 5209: 5209: 5209: istreambuf_iterator& 5209: operator++() 5209: { 5209: 5209: 5209: 5209: ; 5209: 5209: _M_sbuf->sbumpc(); 5209: _M_c = traits_type::eof(); 5209: return *this; 5209: } 5209: 5209: 5209: istreambuf_iterator 5209: operator++(int) 5209: { 5209: 5209: 5209: 5209: ; 5209: 5209: istreambuf_iterator __old = *this; 5209: __old._M_c = _M_sbuf->sbumpc(); 5209: _M_c = traits_type::eof(); 5209: return __old; 5209: } 5209: 5209: 5209: 5209: 5209: 5209: bool 5209: equal(const istreambuf_iterator& __b) const 5209: { return _M_at_eof() == __b._M_at_eof(); } 5209: 5209: private: 5209: int_type 5209: _M_get() const 5209: { 5209: int_type __ret = _M_c; 5209: if (_M_sbuf && _S_is_eof(__ret) && _S_is_eof(__ret = _M_sbuf->sgetc())) 5209: _M_sbuf = 0; 5209: return __ret; 5209: } 5209: 5209: bool 5209: _M_at_eof() const 5209: { return _S_is_eof(_M_get()); } 5209: 5209: static bool 5209: _S_is_eof(int_type __c) 5209: { 5209: const int_type __eof = traits_type::eof(); 5209: return traits_type::eq_int_type(__c, __eof); 5209: } 5209: }; 5209: 5209: template 5209: inline bool 5209: operator==(const istreambuf_iterator<_CharT, _Traits>& __a, 5209: const istreambuf_iterator<_CharT, _Traits>& __b) 5209: { return __a.equal(__b); } 5209: 5209: template 5209: inline bool 5209: operator!=(const istreambuf_iterator<_CharT, _Traits>& __a, 5209: const istreambuf_iterator<_CharT, _Traits>& __b) 5209: { return !__a.equal(__b); } 5209: 5209: 5209: template 5209: class ostreambuf_iterator 5209: : public iterator 5209: { 5209: public: 5209: 5209: 5209: 5209: 5209: 5209: 5209: typedef _CharT char_type; 5209: typedef _Traits traits_type; 5209: typedef basic_streambuf<_CharT, _Traits> streambuf_type; 5209: typedef basic_ostream<_CharT, _Traits> ostream_type; 5209: 5209: 5209: template 5209: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, 5209: ostreambuf_iterator<_CharT2> >::__type 5209: copy(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, 5209: ostreambuf_iterator<_CharT2>); 5209: 5209: private: 5209: streambuf_type* _M_sbuf; 5209: bool _M_failed; 5209: 5209: public: 5209: # 266 "/usr/include/c++/10/bits/streambuf_iterator.h" 3 5209: ostreambuf_iterator(ostream_type& __s) noexcept 5209: : _M_sbuf(__s.rdbuf()), _M_failed(!_M_sbuf) { } 5209: 5209: 5209: ostreambuf_iterator(streambuf_type* __s) noexcept 5209: : _M_sbuf(__s), _M_failed(!_M_sbuf) { } 5209: 5209: 5209: ostreambuf_iterator& 5209: operator=(_CharT __c) 5209: { 5209: if (!_M_failed && 5209: _Traits::eq_int_type(_M_sbuf->sputc(__c), _Traits::eof())) 5209: _M_failed = true; 5209: return *this; 5209: } 5209: 5209: 5209: ostreambuf_iterator& 5209: operator*() 5209: { return *this; } 5209: 5209: 5209: ostreambuf_iterator& 5209: operator++(int) 5209: { return *this; } 5209: 5209: 5209: ostreambuf_iterator& 5209: operator++() 5209: { return *this; } 5209: 5209: 5209: bool 5209: failed() const noexcept 5209: { return _M_failed; } 5209: 5209: ostreambuf_iterator& 5209: _M_put(const _CharT* __ws, streamsize __len) 5209: { 5209: if (__builtin_expect(!_M_failed, true) 5209: && __builtin_expect(this->_M_sbuf->sputn(__ws, __len) != __len, 5209: false)) 5209: _M_failed = true; 5209: return *this; 5209: } 5209: }; 5209: 5209: 5209: template 5209: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 5209: ostreambuf_iterator<_CharT> >::__type 5209: copy(istreambuf_iterator<_CharT> __first, 5209: istreambuf_iterator<_CharT> __last, 5209: ostreambuf_iterator<_CharT> __result) 5209: { 5209: if (__first._M_sbuf && !__last._M_sbuf && !__result._M_failed) 5209: { 5209: bool __ineof; 5209: __copy_streambufs_eof(__first._M_sbuf, __result._M_sbuf, __ineof); 5209: if (!__ineof) 5209: __result._M_failed = true; 5209: } 5209: return __result; 5209: } 5209: 5209: template 5209: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 5209: ostreambuf_iterator<_CharT> >::__type 5209: __copy_move_a2(_CharT* __first, _CharT* __last, 5209: ostreambuf_iterator<_CharT> __result) 5209: { 5209: const streamsize __num = __last - __first; 5209: if (__num > 0) 5209: __result._M_put(__first, __num); 5209: return __result; 5209: } 5209: 5209: template 5209: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 5209: ostreambuf_iterator<_CharT> >::__type 5209: __copy_move_a2(const _CharT* __first, const _CharT* __last, 5209: ostreambuf_iterator<_CharT> __result) 5209: { 5209: const streamsize __num = __last - __first; 5209: if (__num > 0) 5209: __result._M_put(__first, __num); 5209: return __result; 5209: } 5209: 5209: template 5209: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 5209: _CharT*>::__type 5209: __copy_move_a2(istreambuf_iterator<_CharT> __first, 5209: istreambuf_iterator<_CharT> __last, _CharT* __result) 5209: { 5209: typedef istreambuf_iterator<_CharT> __is_iterator_type; 5209: typedef typename __is_iterator_type::traits_type traits_type; 5209: typedef typename __is_iterator_type::streambuf_type streambuf_type; 5209: typedef typename traits_type::int_type int_type; 5209: 5209: if (__first._M_sbuf && !__last._M_sbuf) 5209: { 5209: streambuf_type* __sb = __first._M_sbuf; 5209: int_type __c = __sb->sgetc(); 5209: while (!traits_type::eq_int_type(__c, traits_type::eof())) 5209: { 5209: const streamsize __n = __sb->egptr() - __sb->gptr(); 5209: if (__n > 1) 5209: { 5209: traits_type::copy(__result, __sb->gptr(), __n); 5209: __sb->__safe_gbump(__n); 5209: __result += __n; 5209: __c = __sb->underflow(); 5209: } 5209: else 5209: { 5209: *__result++ = traits_type::to_char_type(__c); 5209: __c = __sb->snextc(); 5209: } 5209: } 5209: } 5209: return __result; 5209: } 5209: 5209: 5209: template 5209: __enable_if_t<__is_char<_CharT>::__value, _CharT*> 5209: __copy_n_a(istreambuf_iterator<_CharT> __it, _Size __n, _CharT* __result) 5209: { 5209: if (__n == 0) 5209: return __result; 5209: 5209: 5209: 5209: ; 5209: _CharT* __beg = __result; 5209: __result += __it._M_sbuf->sgetn(__beg, __n); 5209: 5209: 5209: ; 5209: return __result; 5209: } 5209: 5209: 5209: template 5209: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 5209: istreambuf_iterator<_CharT> >::__type 5209: find(istreambuf_iterator<_CharT> __first, 5209: istreambuf_iterator<_CharT> __last, const _CharT& __val) 5209: { 5209: typedef istreambuf_iterator<_CharT> __is_iterator_type; 5209: typedef typename __is_iterator_type::traits_type traits_type; 5209: typedef typename __is_iterator_type::streambuf_type streambuf_type; 5209: typedef typename traits_type::int_type int_type; 5209: const int_type __eof = traits_type::eof(); 5209: 5209: if (__first._M_sbuf && !__last._M_sbuf) 5209: { 5209: const int_type __ival = traits_type::to_int_type(__val); 5209: streambuf_type* __sb = __first._M_sbuf; 5209: int_type __c = __sb->sgetc(); 5209: while (!traits_type::eq_int_type(__c, __eof) 5209: && !traits_type::eq_int_type(__c, __ival)) 5209: { 5209: streamsize __n = __sb->egptr() - __sb->gptr(); 5209: if (__n > 1) 5209: { 5209: const _CharT* __p = traits_type::find(__sb->gptr(), 5209: __n, __val); 5209: if (__p) 5209: __n = __p - __sb->gptr(); 5209: __sb->__safe_gbump(__n); 5209: __c = __sb->sgetc(); 5209: } 5209: else 5209: __c = __sb->snextc(); 5209: } 5209: 5209: __first._M_c = __eof; 5209: } 5209: 5209: return __first; 5209: } 5209: 5209: template 5209: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 5209: void>::__type 5209: advance(istreambuf_iterator<_CharT>& __i, _Distance __n) 5209: { 5209: if (__n == 0) 5209: return; 5209: 5209: ; 5209: 5209: 5209: ; 5209: 5209: typedef istreambuf_iterator<_CharT> __is_iterator_type; 5209: typedef typename __is_iterator_type::traits_type traits_type; 5209: typedef typename __is_iterator_type::streambuf_type streambuf_type; 5209: typedef typename traits_type::int_type int_type; 5209: const int_type __eof = traits_type::eof(); 5209: 5209: streambuf_type* __sb = __i._M_sbuf; 5209: while (__n > 0) 5209: { 5209: streamsize __size = __sb->egptr() - __sb->gptr(); 5209: if (__size > __n) 5209: { 5209: __sb->__safe_gbump(__n); 5209: break; 5209: } 5209: 5209: __sb->__safe_gbump(__size); 5209: __n -= __size; 5209: if (traits_type::eq_int_type(__sb->underflow(), __eof)) 5209: { 5209: 5209: 5209: ; 5209: break; 5209: } 5209: } 5209: 5209: __i._M_c = __eof; 5209: } 5209: 5209: 5209: 5209: 5209: } 5209: # 49 "/usr/include/c++/10/bits/locale_facets.h" 2 3 5209: 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: # 71 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: template 5209: void 5209: __convert_to_v(const char*, _Tp&, ios_base::iostate&, 5209: const __c_locale&) throw(); 5209: 5209: 5209: template<> 5209: void 5209: __convert_to_v(const char*, float&, ios_base::iostate&, 5209: const __c_locale&) throw(); 5209: 5209: template<> 5209: void 5209: __convert_to_v(const char*, double&, ios_base::iostate&, 5209: const __c_locale&) throw(); 5209: 5209: template<> 5209: void 5209: __convert_to_v(const char*, long double&, ios_base::iostate&, 5209: const __c_locale&) throw(); 5209: 5209: 5209: 5209: template 5209: struct __pad 5209: { 5209: static void 5209: _S_pad(ios_base& __io, _CharT __fill, _CharT* __news, 5209: const _CharT* __olds, streamsize __newlen, streamsize __oldlen); 5209: }; 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: _CharT* 5209: __add_grouping(_CharT* __s, _CharT __sep, 5209: const char* __gbeg, size_t __gsize, 5209: const _CharT* __first, const _CharT* __last); 5209: 5209: 5209: 5209: 5209: template 5209: inline 5209: ostreambuf_iterator<_CharT> 5209: __write(ostreambuf_iterator<_CharT> __s, const _CharT* __ws, int __len) 5209: { 5209: __s._M_put(__ws, __len); 5209: return __s; 5209: } 5209: 5209: 5209: template 5209: inline 5209: _OutIter 5209: __write(_OutIter __s, const _CharT* __ws, int __len) 5209: { 5209: for (int __j = 0; __j < __len; __j++, ++__s) 5209: *__s = __ws[__j]; 5209: return __s; 5209: } 5209: # 149 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: template 5209: class __ctype_abstract_base : public locale::facet, public ctype_base 5209: { 5209: public: 5209: 5209: 5209: typedef _CharT char_type; 5209: # 168 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: bool 5209: is(mask __m, char_type __c) const 5209: { return this->do_is(__m, __c); } 5209: # 185 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: const char_type* 5209: is(const char_type *__lo, const char_type *__hi, mask *__vec) const 5209: { return this->do_is(__lo, __hi, __vec); } 5209: # 201 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: const char_type* 5209: scan_is(mask __m, const char_type* __lo, const char_type* __hi) const 5209: { return this->do_scan_is(__m, __lo, __hi); } 5209: # 217 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: const char_type* 5209: scan_not(mask __m, const char_type* __lo, const char_type* __hi) const 5209: { return this->do_scan_not(__m, __lo, __hi); } 5209: # 231 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: char_type 5209: toupper(char_type __c) const 5209: { return this->do_toupper(__c); } 5209: # 246 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: const char_type* 5209: toupper(char_type *__lo, const char_type* __hi) const 5209: { return this->do_toupper(__lo, __hi); } 5209: # 260 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: char_type 5209: tolower(char_type __c) const 5209: { return this->do_tolower(__c); } 5209: # 275 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: const char_type* 5209: tolower(char_type* __lo, const char_type* __hi) const 5209: { return this->do_tolower(__lo, __hi); } 5209: # 292 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: char_type 5209: widen(char __c) const 5209: { return this->do_widen(__c); } 5209: # 311 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: const char* 5209: widen(const char* __lo, const char* __hi, char_type* __to) const 5209: { return this->do_widen(__lo, __hi, __to); } 5209: # 330 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: char 5209: narrow(char_type __c, char __dfault) const 5209: { return this->do_narrow(__c, __dfault); } 5209: # 352 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: const char_type* 5209: narrow(const char_type* __lo, const char_type* __hi, 5209: char __dfault, char* __to) const 5209: { return this->do_narrow(__lo, __hi, __dfault, __to); } 5209: 5209: protected: 5209: explicit 5209: __ctype_abstract_base(size_t __refs = 0): facet(__refs) { } 5209: 5209: virtual 5209: ~__ctype_abstract_base() { } 5209: # 377 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: virtual bool 5209: do_is(mask __m, char_type __c) const = 0; 5209: # 396 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: virtual const char_type* 5209: do_is(const char_type* __lo, const char_type* __hi, 5209: mask* __vec) const = 0; 5209: # 415 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: virtual const char_type* 5209: do_scan_is(mask __m, const char_type* __lo, 5209: const char_type* __hi) const = 0; 5209: # 434 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: virtual const char_type* 5209: do_scan_not(mask __m, const char_type* __lo, 5209: const char_type* __hi) const = 0; 5209: # 452 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: virtual char_type 5209: do_toupper(char_type __c) const = 0; 5209: # 469 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: virtual const char_type* 5209: do_toupper(char_type* __lo, const char_type* __hi) const = 0; 5209: # 485 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: virtual char_type 5209: do_tolower(char_type __c) const = 0; 5209: # 502 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: virtual const char_type* 5209: do_tolower(char_type* __lo, const char_type* __hi) const = 0; 5209: # 521 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: virtual char_type 5209: do_widen(char __c) const = 0; 5209: # 542 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: virtual const char* 5209: do_widen(const char* __lo, const char* __hi, char_type* __to) const = 0; 5209: # 563 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: virtual char 5209: do_narrow(char_type __c, char __dfault) const = 0; 5209: # 588 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: virtual const char_type* 5209: do_narrow(const char_type* __lo, const char_type* __hi, 5209: char __dfault, char* __to) const = 0; 5209: }; 5209: # 611 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: template 5209: class ctype : public __ctype_abstract_base<_CharT> 5209: { 5209: public: 5209: 5209: typedef _CharT char_type; 5209: typedef typename __ctype_abstract_base<_CharT>::mask mask; 5209: 5209: 5209: static locale::id id; 5209: 5209: explicit 5209: ctype(size_t __refs = 0) : __ctype_abstract_base<_CharT>(__refs) { } 5209: 5209: protected: 5209: virtual 5209: ~ctype(); 5209: 5209: virtual bool 5209: do_is(mask __m, char_type __c) const; 5209: 5209: virtual const char_type* 5209: do_is(const char_type* __lo, const char_type* __hi, mask* __vec) const; 5209: 5209: virtual const char_type* 5209: do_scan_is(mask __m, const char_type* __lo, const char_type* __hi) const; 5209: 5209: virtual const char_type* 5209: do_scan_not(mask __m, const char_type* __lo, 5209: const char_type* __hi) const; 5209: 5209: virtual char_type 5209: do_toupper(char_type __c) const; 5209: 5209: virtual const char_type* 5209: do_toupper(char_type* __lo, const char_type* __hi) const; 5209: 5209: virtual char_type 5209: do_tolower(char_type __c) const; 5209: 5209: virtual const char_type* 5209: do_tolower(char_type* __lo, const char_type* __hi) const; 5209: 5209: virtual char_type 5209: do_widen(char __c) const; 5209: 5209: virtual const char* 5209: do_widen(const char* __lo, const char* __hi, char_type* __dest) const; 5209: 5209: virtual char 5209: do_narrow(char_type, char __dfault) const; 5209: 5209: virtual const char_type* 5209: do_narrow(const char_type* __lo, const char_type* __hi, 5209: char __dfault, char* __to) const; 5209: }; 5209: 5209: template 5209: locale::id ctype<_CharT>::id; 5209: # 680 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: template<> 5209: class ctype : public locale::facet, public ctype_base 5209: { 5209: public: 5209: 5209: 5209: typedef char char_type; 5209: 5209: protected: 5209: 5209: __c_locale _M_c_locale_ctype; 5209: bool _M_del; 5209: __to_type _M_toupper; 5209: __to_type _M_tolower; 5209: const mask* _M_table; 5209: mutable char _M_widen_ok; 5209: mutable char _M_widen[1 + static_cast(-1)]; 5209: mutable char _M_narrow[1 + static_cast(-1)]; 5209: mutable char _M_narrow_ok; 5209: 5209: 5209: public: 5209: 5209: static locale::id id; 5209: 5209: static const size_t table_size = 1 + static_cast(-1); 5209: # 717 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: explicit 5209: ctype(const mask* __table = 0, bool __del = false, size_t __refs = 0); 5209: # 730 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: explicit 5209: ctype(__c_locale __cloc, const mask* __table = 0, bool __del = false, 5209: size_t __refs = 0); 5209: # 743 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: inline bool 5209: is(mask __m, char __c) const; 5209: # 758 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: inline const char* 5209: is(const char* __lo, const char* __hi, mask* __vec) const; 5209: # 772 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: inline const char* 5209: scan_is(mask __m, const char* __lo, const char* __hi) const; 5209: # 786 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: inline const char* 5209: scan_not(mask __m, const char* __lo, const char* __hi) const; 5209: # 801 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: char_type 5209: toupper(char_type __c) const 5209: { return this->do_toupper(__c); } 5209: # 818 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: const char_type* 5209: toupper(char_type *__lo, const char_type* __hi) const 5209: { return this->do_toupper(__lo, __hi); } 5209: # 834 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: char_type 5209: tolower(char_type __c) const 5209: { return this->do_tolower(__c); } 5209: # 851 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: const char_type* 5209: tolower(char_type* __lo, const char_type* __hi) const 5209: { return this->do_tolower(__lo, __hi); } 5209: # 871 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: char_type 5209: widen(char __c) const 5209: { 5209: if (_M_widen_ok) 5209: return _M_widen[static_cast(__c)]; 5209: this->_M_widen_init(); 5209: return this->do_widen(__c); 5209: } 5209: # 898 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: const char* 5209: widen(const char* __lo, const char* __hi, char_type* __to) const 5209: { 5209: if (_M_widen_ok == 1) 5209: { 5209: if (__builtin_expect(__hi != __lo, true)) 5209: __builtin_memcpy(__to, __lo, __hi - __lo); 5209: return __hi; 5209: } 5209: if (!_M_widen_ok) 5209: _M_widen_init(); 5209: return this->do_widen(__lo, __hi, __to); 5209: } 5209: # 930 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: char 5209: narrow(char_type __c, char __dfault) const 5209: { 5209: if (_M_narrow[static_cast(__c)]) 5209: return _M_narrow[static_cast(__c)]; 5209: const char __t = do_narrow(__c, __dfault); 5209: if (__t != __dfault) 5209: _M_narrow[static_cast(__c)] = __t; 5209: return __t; 5209: } 5209: # 963 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: const char_type* 5209: narrow(const char_type* __lo, const char_type* __hi, 5209: char __dfault, char* __to) const 5209: { 5209: if (__builtin_expect(_M_narrow_ok == 1, true)) 5209: { 5209: if (__builtin_expect(__hi != __lo, true)) 5209: __builtin_memcpy(__to, __lo, __hi - __lo); 5209: return __hi; 5209: } 5209: if (!_M_narrow_ok) 5209: _M_narrow_init(); 5209: return this->do_narrow(__lo, __hi, __dfault, __to); 5209: } 5209: 5209: 5209: 5209: 5209: 5209: const mask* 5209: table() const throw() 5209: { return _M_table; } 5209: 5209: 5209: static const mask* 5209: classic_table() throw(); 5209: protected: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: virtual 5209: ~ctype(); 5209: # 1013 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: virtual char_type 5209: do_toupper(char_type __c) const; 5209: # 1030 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: virtual const char_type* 5209: do_toupper(char_type* __lo, const char_type* __hi) const; 5209: # 1046 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: virtual char_type 5209: do_tolower(char_type __c) const; 5209: # 1063 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: virtual const char_type* 5209: do_tolower(char_type* __lo, const char_type* __hi) const; 5209: # 1083 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: virtual char_type 5209: do_widen(char __c) const 5209: { return __c; } 5209: # 1106 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: virtual const char* 5209: do_widen(const char* __lo, const char* __hi, char_type* __to) const 5209: { 5209: if (__builtin_expect(__hi != __lo, true)) 5209: __builtin_memcpy(__to, __lo, __hi - __lo); 5209: return __hi; 5209: } 5209: # 1133 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: virtual char 5209: do_narrow(char_type __c, char __dfault __attribute__((__unused__))) const 5209: { return __c; } 5209: # 1159 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: virtual const char_type* 5209: do_narrow(const char_type* __lo, const char_type* __hi, 5209: char __dfault __attribute__((__unused__)), char* __to) const 5209: { 5209: if (__builtin_expect(__hi != __lo, true)) 5209: __builtin_memcpy(__to, __lo, __hi - __lo); 5209: return __hi; 5209: } 5209: 5209: private: 5209: void _M_narrow_init() const; 5209: void _M_widen_init() const; 5209: }; 5209: # 1185 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: template<> 5209: class ctype : public __ctype_abstract_base 5209: { 5209: public: 5209: 5209: 5209: typedef wchar_t char_type; 5209: typedef wctype_t __wmask_type; 5209: 5209: protected: 5209: __c_locale _M_c_locale_ctype; 5209: 5209: 5209: bool _M_narrow_ok; 5209: char _M_narrow[128]; 5209: wint_t _M_widen[1 + static_cast(-1)]; 5209: 5209: 5209: mask _M_bit[16]; 5209: __wmask_type _M_wmask[16]; 5209: 5209: public: 5209: 5209: 5209: static locale::id id; 5209: # 1218 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: explicit 5209: ctype(size_t __refs = 0); 5209: # 1229 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: explicit 5209: ctype(__c_locale __cloc, size_t __refs = 0); 5209: 5209: protected: 5209: __wmask_type 5209: _M_convert_to_wmask(const mask __m) const throw(); 5209: 5209: 5209: virtual 5209: ~ctype(); 5209: # 1253 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: virtual bool 5209: do_is(mask __m, char_type __c) const; 5209: # 1272 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: virtual const char_type* 5209: do_is(const char_type* __lo, const char_type* __hi, mask* __vec) const; 5209: # 1290 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: virtual const char_type* 5209: do_scan_is(mask __m, const char_type* __lo, const char_type* __hi) const; 5209: # 1308 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: virtual const char_type* 5209: do_scan_not(mask __m, const char_type* __lo, 5209: const char_type* __hi) const; 5209: # 1325 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: virtual char_type 5209: do_toupper(char_type __c) const; 5209: # 1342 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: virtual const char_type* 5209: do_toupper(char_type* __lo, const char_type* __hi) const; 5209: # 1358 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: virtual char_type 5209: do_tolower(char_type __c) const; 5209: # 1375 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: virtual const char_type* 5209: do_tolower(char_type* __lo, const char_type* __hi) const; 5209: # 1395 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: virtual char_type 5209: do_widen(char __c) const; 5209: # 1417 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: virtual const char* 5209: do_widen(const char* __lo, const char* __hi, char_type* __to) const; 5209: # 1440 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: virtual char 5209: do_narrow(char_type __c, char __dfault) const; 5209: # 1466 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: virtual const char_type* 5209: do_narrow(const char_type* __lo, const char_type* __hi, 5209: char __dfault, char* __to) const; 5209: 5209: 5209: void 5209: _M_initialize_ctype() throw(); 5209: }; 5209: 5209: 5209: 5209: template 5209: class ctype_byname : public ctype<_CharT> 5209: { 5209: public: 5209: typedef typename ctype<_CharT>::mask mask; 5209: 5209: explicit 5209: ctype_byname(const char* __s, size_t __refs = 0); 5209: 5209: 5209: explicit 5209: ctype_byname(const string& __s, size_t __refs = 0) 5209: : ctype_byname(__s.c_str(), __refs) { } 5209: 5209: 5209: protected: 5209: virtual 5209: ~ctype_byname() { } 5209: }; 5209: 5209: 5209: template<> 5209: class ctype_byname : public ctype 5209: { 5209: public: 5209: explicit 5209: ctype_byname(const char* __s, size_t __refs = 0); 5209: 5209: 5209: explicit 5209: ctype_byname(const string& __s, size_t __refs = 0); 5209: 5209: 5209: protected: 5209: virtual 5209: ~ctype_byname(); 5209: }; 5209: 5209: 5209: template<> 5209: class ctype_byname : public ctype 5209: { 5209: public: 5209: explicit 5209: ctype_byname(const char* __s, size_t __refs = 0); 5209: 5209: 5209: explicit 5209: ctype_byname(const string& __s, size_t __refs = 0); 5209: 5209: 5209: protected: 5209: virtual 5209: ~ctype_byname(); 5209: }; 5209: 5209: 5209: 5209: } 5209: 5209: 5209: # 1 "/usr/include/aarch64-linux-gnu/c++/10/bits/ctype_inline.h" 1 3 5209: # 37 "/usr/include/aarch64-linux-gnu/c++/10/bits/ctype_inline.h" 3 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: bool 5209: ctype:: 5209: is(mask __m, char __c) const 5209: { return _M_table[static_cast(__c)] & __m; } 5209: 5209: const char* 5209: ctype:: 5209: is(const char* __low, const char* __high, mask* __vec) const 5209: { 5209: while (__low < __high) 5209: *__vec++ = _M_table[static_cast(*__low++)]; 5209: return __high; 5209: } 5209: 5209: const char* 5209: ctype:: 5209: scan_is(mask __m, const char* __low, const char* __high) const 5209: { 5209: while (__low < __high 5209: && !(_M_table[static_cast(*__low)] & __m)) 5209: ++__low; 5209: return __low; 5209: } 5209: 5209: const char* 5209: ctype:: 5209: scan_not(mask __m, const char* __low, const char* __high) const 5209: { 5209: while (__low < __high 5209: && (_M_table[static_cast(*__low)] & __m) != 0) 5209: ++__low; 5209: return __low; 5209: } 5209: 5209: 5209: } 5209: # 1539 "/usr/include/c++/10/bits/locale_facets.h" 2 3 5209: 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: 5209: class __num_base 5209: { 5209: public: 5209: 5209: 5209: enum 5209: { 5209: _S_ominus, 5209: _S_oplus, 5209: _S_ox, 5209: _S_oX, 5209: _S_odigits, 5209: _S_odigits_end = _S_odigits + 16, 5209: _S_oudigits = _S_odigits_end, 5209: _S_oudigits_end = _S_oudigits + 16, 5209: _S_oe = _S_odigits + 14, 5209: _S_oE = _S_oudigits + 14, 5209: _S_oend = _S_oudigits_end 5209: }; 5209: 5209: 5209: 5209: 5209: 5209: 5209: static const char* _S_atoms_out; 5209: 5209: 5209: 5209: static const char* _S_atoms_in; 5209: 5209: enum 5209: { 5209: _S_iminus, 5209: _S_iplus, 5209: _S_ix, 5209: _S_iX, 5209: _S_izero, 5209: _S_ie = _S_izero + 14, 5209: _S_iE = _S_izero + 20, 5209: _S_iend = 26 5209: }; 5209: 5209: 5209: 5209: static void 5209: _S_format_float(const ios_base& __io, char* __fptr, char __mod) throw(); 5209: }; 5209: 5209: template 5209: struct __numpunct_cache : public locale::facet 5209: { 5209: const char* _M_grouping; 5209: size_t _M_grouping_size; 5209: bool _M_use_grouping; 5209: const _CharT* _M_truename; 5209: size_t _M_truename_size; 5209: const _CharT* _M_falsename; 5209: size_t _M_falsename_size; 5209: _CharT _M_decimal_point; 5209: _CharT _M_thousands_sep; 5209: 5209: 5209: 5209: 5209: 5209: _CharT _M_atoms_out[__num_base::_S_oend]; 5209: 5209: 5209: 5209: 5209: 5209: _CharT _M_atoms_in[__num_base::_S_iend]; 5209: 5209: bool _M_allocated; 5209: 5209: __numpunct_cache(size_t __refs = 0) 5209: : facet(__refs), _M_grouping(0), _M_grouping_size(0), 5209: _M_use_grouping(false), 5209: _M_truename(0), _M_truename_size(0), _M_falsename(0), 5209: _M_falsename_size(0), _M_decimal_point(_CharT()), 5209: _M_thousands_sep(_CharT()), _M_allocated(false) 5209: { } 5209: 5209: ~__numpunct_cache(); 5209: 5209: void 5209: _M_cache(const locale& __loc); 5209: 5209: private: 5209: __numpunct_cache& 5209: operator=(const __numpunct_cache&); 5209: 5209: explicit 5209: __numpunct_cache(const __numpunct_cache&); 5209: }; 5209: 5209: template 5209: __numpunct_cache<_CharT>::~__numpunct_cache() 5209: { 5209: if (_M_allocated) 5209: { 5209: delete [] _M_grouping; 5209: delete [] _M_truename; 5209: delete [] _M_falsename; 5209: } 5209: } 5209: 5209: namespace __cxx11 { 5209: # 1669 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: template 5209: class numpunct : public locale::facet 5209: { 5209: public: 5209: 5209: 5209: 5209: typedef _CharT char_type; 5209: typedef basic_string<_CharT> string_type; 5209: 5209: typedef __numpunct_cache<_CharT> __cache_type; 5209: 5209: protected: 5209: __cache_type* _M_data; 5209: 5209: public: 5209: 5209: static locale::id id; 5209: 5209: 5209: 5209: 5209: 5209: 5209: explicit 5209: numpunct(size_t __refs = 0) 5209: : facet(__refs), _M_data(0) 5209: { _M_initialize_numpunct(); } 5209: # 1707 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: explicit 5209: numpunct(__cache_type* __cache, size_t __refs = 0) 5209: : facet(__refs), _M_data(__cache) 5209: { _M_initialize_numpunct(); } 5209: # 1721 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: explicit 5209: numpunct(__c_locale __cloc, size_t __refs = 0) 5209: : facet(__refs), _M_data(0) 5209: { _M_initialize_numpunct(__cloc); } 5209: # 1735 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: char_type 5209: decimal_point() const 5209: { return this->do_decimal_point(); } 5209: # 1748 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: char_type 5209: thousands_sep() const 5209: { return this->do_thousands_sep(); } 5209: # 1779 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: string 5209: grouping() const 5209: { return this->do_grouping(); } 5209: # 1792 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: string_type 5209: truename() const 5209: { return this->do_truename(); } 5209: # 1805 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: string_type 5209: falsename() const 5209: { return this->do_falsename(); } 5209: 5209: protected: 5209: 5209: virtual 5209: ~numpunct(); 5209: # 1822 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: virtual char_type 5209: do_decimal_point() const 5209: { return _M_data->_M_decimal_point; } 5209: # 1834 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: virtual char_type 5209: do_thousands_sep() const 5209: { return _M_data->_M_thousands_sep; } 5209: # 1847 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: virtual string 5209: do_grouping() const 5209: { return _M_data->_M_grouping; } 5209: # 1860 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: virtual string_type 5209: do_truename() const 5209: { return _M_data->_M_truename; } 5209: # 1873 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: virtual string_type 5209: do_falsename() const 5209: { return _M_data->_M_falsename; } 5209: 5209: 5209: void 5209: _M_initialize_numpunct(__c_locale __cloc = 0); 5209: }; 5209: 5209: template 5209: locale::id numpunct<_CharT>::id; 5209: 5209: template<> 5209: numpunct::~numpunct(); 5209: 5209: template<> 5209: void 5209: numpunct::_M_initialize_numpunct(__c_locale __cloc); 5209: 5209: 5209: template<> 5209: numpunct::~numpunct(); 5209: 5209: template<> 5209: void 5209: numpunct::_M_initialize_numpunct(__c_locale __cloc); 5209: 5209: 5209: 5209: template 5209: class numpunct_byname : public numpunct<_CharT> 5209: { 5209: public: 5209: typedef _CharT char_type; 5209: typedef basic_string<_CharT> string_type; 5209: 5209: explicit 5209: numpunct_byname(const char* __s, size_t __refs = 0) 5209: : numpunct<_CharT>(__refs) 5209: { 5209: if (__builtin_strcmp(__s, "C") != 0 5209: && __builtin_strcmp(__s, "POSIX") != 0) 5209: { 5209: __c_locale __tmp; 5209: this->_S_create_c_locale(__tmp, __s); 5209: this->_M_initialize_numpunct(__tmp); 5209: this->_S_destroy_c_locale(__tmp); 5209: } 5209: } 5209: 5209: 5209: explicit 5209: numpunct_byname(const string& __s, size_t __refs = 0) 5209: : numpunct_byname(__s.c_str(), __refs) { } 5209: 5209: 5209: protected: 5209: virtual 5209: ~numpunct_byname() { } 5209: }; 5209: 5209: } 5209: 5209: 5209: # 1951 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: template 5209: class num_get : public locale::facet 5209: { 5209: public: 5209: 5209: 5209: 5209: typedef _CharT char_type; 5209: typedef _InIter iter_type; 5209: 5209: 5209: 5209: static locale::id id; 5209: # 1972 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: explicit 5209: num_get(size_t __refs = 0) : facet(__refs) { } 5209: # 1998 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: iter_type 5209: get(iter_type __in, iter_type __end, ios_base& __io, 5209: ios_base::iostate& __err, bool& __v) const 5209: { return this->do_get(__in, __end, __io, __err, __v); } 5209: # 2035 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: iter_type 5209: get(iter_type __in, iter_type __end, ios_base& __io, 5209: ios_base::iostate& __err, long& __v) const 5209: { return this->do_get(__in, __end, __io, __err, __v); } 5209: 5209: iter_type 5209: get(iter_type __in, iter_type __end, ios_base& __io, 5209: ios_base::iostate& __err, unsigned short& __v) const 5209: { return this->do_get(__in, __end, __io, __err, __v); } 5209: 5209: iter_type 5209: get(iter_type __in, iter_type __end, ios_base& __io, 5209: ios_base::iostate& __err, unsigned int& __v) const 5209: { return this->do_get(__in, __end, __io, __err, __v); } 5209: 5209: iter_type 5209: get(iter_type __in, iter_type __end, ios_base& __io, 5209: ios_base::iostate& __err, unsigned long& __v) const 5209: { return this->do_get(__in, __end, __io, __err, __v); } 5209: 5209: 5209: iter_type 5209: get(iter_type __in, iter_type __end, ios_base& __io, 5209: ios_base::iostate& __err, long long& __v) const 5209: { return this->do_get(__in, __end, __io, __err, __v); } 5209: 5209: iter_type 5209: get(iter_type __in, iter_type __end, ios_base& __io, 5209: ios_base::iostate& __err, unsigned long long& __v) const 5209: { return this->do_get(__in, __end, __io, __err, __v); } 5209: # 2095 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: iter_type 5209: get(iter_type __in, iter_type __end, ios_base& __io, 5209: ios_base::iostate& __err, float& __v) const 5209: { return this->do_get(__in, __end, __io, __err, __v); } 5209: 5209: iter_type 5209: get(iter_type __in, iter_type __end, ios_base& __io, 5209: ios_base::iostate& __err, double& __v) const 5209: { return this->do_get(__in, __end, __io, __err, __v); } 5209: 5209: iter_type 5209: get(iter_type __in, iter_type __end, ios_base& __io, 5209: ios_base::iostate& __err, long double& __v) const 5209: { return this->do_get(__in, __end, __io, __err, __v); } 5209: # 2138 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: iter_type 5209: get(iter_type __in, iter_type __end, ios_base& __io, 5209: ios_base::iostate& __err, void*& __v) const 5209: { return this->do_get(__in, __end, __io, __err, __v); } 5209: 5209: protected: 5209: 5209: virtual ~num_get() { } 5209: 5209: __attribute ((__abi_tag__ ("cxx11"))) 5209: iter_type 5209: _M_extract_float(iter_type, iter_type, ios_base&, ios_base::iostate&, 5209: string&) const; 5209: 5209: template 5209: __attribute ((__abi_tag__ ("cxx11"))) 5209: iter_type 5209: _M_extract_int(iter_type, iter_type, ios_base&, ios_base::iostate&, 5209: _ValueT&) const; 5209: 5209: template 5209: typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, int>::__type 5209: _M_find(const _CharT2*, size_t __len, _CharT2 __c) const 5209: { 5209: int __ret = -1; 5209: if (__len <= 10) 5209: { 5209: if (__c >= _CharT2('0') && __c < _CharT2(_CharT2('0') + __len)) 5209: __ret = __c - _CharT2('0'); 5209: } 5209: else 5209: { 5209: if (__c >= _CharT2('0') && __c <= _CharT2('9')) 5209: __ret = __c - _CharT2('0'); 5209: else if (__c >= _CharT2('a') && __c <= _CharT2('f')) 5209: __ret = 10 + (__c - _CharT2('a')); 5209: else if (__c >= _CharT2('A') && __c <= _CharT2('F')) 5209: __ret = 10 + (__c - _CharT2('A')); 5209: } 5209: return __ret; 5209: } 5209: 5209: template 5209: typename __gnu_cxx::__enable_if::__value, 5209: int>::__type 5209: _M_find(const _CharT2* __zero, size_t __len, _CharT2 __c) const 5209: { 5209: int __ret = -1; 5209: const char_type* __q = char_traits<_CharT2>::find(__zero, __len, __c); 5209: if (__q) 5209: { 5209: __ret = __q - __zero; 5209: if (__ret > 15) 5209: __ret -= 6; 5209: } 5209: return __ret; 5209: } 5209: # 2211 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: virtual iter_type 5209: do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, bool&) const; 5209: 5209: virtual iter_type 5209: do_get(iter_type __beg, iter_type __end, ios_base& __io, 5209: ios_base::iostate& __err, long& __v) const 5209: { return _M_extract_int(__beg, __end, __io, __err, __v); } 5209: 5209: virtual iter_type 5209: do_get(iter_type __beg, iter_type __end, ios_base& __io, 5209: ios_base::iostate& __err, unsigned short& __v) const 5209: { return _M_extract_int(__beg, __end, __io, __err, __v); } 5209: 5209: virtual iter_type 5209: do_get(iter_type __beg, iter_type __end, ios_base& __io, 5209: ios_base::iostate& __err, unsigned int& __v) const 5209: { return _M_extract_int(__beg, __end, __io, __err, __v); } 5209: 5209: virtual iter_type 5209: do_get(iter_type __beg, iter_type __end, ios_base& __io, 5209: ios_base::iostate& __err, unsigned long& __v) const 5209: { return _M_extract_int(__beg, __end, __io, __err, __v); } 5209: 5209: 5209: virtual iter_type 5209: do_get(iter_type __beg, iter_type __end, ios_base& __io, 5209: ios_base::iostate& __err, long long& __v) const 5209: { return _M_extract_int(__beg, __end, __io, __err, __v); } 5209: 5209: virtual iter_type 5209: do_get(iter_type __beg, iter_type __end, ios_base& __io, 5209: ios_base::iostate& __err, unsigned long long& __v) const 5209: { return _M_extract_int(__beg, __end, __io, __err, __v); } 5209: 5209: 5209: virtual iter_type 5209: do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, float&) const; 5209: 5209: virtual iter_type 5209: do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, 5209: double&) const; 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: virtual iter_type 5209: do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, 5209: long double&) const; 5209: 5209: 5209: virtual iter_type 5209: do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, void*&) const; 5209: # 2274 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: }; 5209: 5209: template 5209: locale::id num_get<_CharT, _InIter>::id; 5209: # 2292 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: template 5209: class num_put : public locale::facet 5209: { 5209: public: 5209: 5209: 5209: 5209: typedef _CharT char_type; 5209: typedef _OutIter iter_type; 5209: 5209: 5209: 5209: static locale::id id; 5209: # 2313 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: explicit 5209: num_put(size_t __refs = 0) : facet(__refs) { } 5209: # 2331 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: iter_type 5209: put(iter_type __s, ios_base& __io, char_type __fill, bool __v) const 5209: { return this->do_put(__s, __io, __fill, __v); } 5209: # 2373 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: iter_type 5209: put(iter_type __s, ios_base& __io, char_type __fill, long __v) const 5209: { return this->do_put(__s, __io, __fill, __v); } 5209: 5209: iter_type 5209: put(iter_type __s, ios_base& __io, char_type __fill, 5209: unsigned long __v) const 5209: { return this->do_put(__s, __io, __fill, __v); } 5209: 5209: 5209: iter_type 5209: put(iter_type __s, ios_base& __io, char_type __fill, long long __v) const 5209: { return this->do_put(__s, __io, __fill, __v); } 5209: 5209: iter_type 5209: put(iter_type __s, ios_base& __io, char_type __fill, 5209: unsigned long long __v) const 5209: { return this->do_put(__s, __io, __fill, __v); } 5209: # 2436 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: iter_type 5209: put(iter_type __s, ios_base& __io, char_type __fill, double __v) const 5209: { return this->do_put(__s, __io, __fill, __v); } 5209: 5209: iter_type 5209: put(iter_type __s, ios_base& __io, char_type __fill, 5209: long double __v) const 5209: { return this->do_put(__s, __io, __fill, __v); } 5209: # 2461 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: iter_type 5209: put(iter_type __s, ios_base& __io, char_type __fill, 5209: const void* __v) const 5209: { return this->do_put(__s, __io, __fill, __v); } 5209: 5209: protected: 5209: template 5209: iter_type 5209: _M_insert_float(iter_type, ios_base& __io, char_type __fill, 5209: char __mod, _ValueT __v) const; 5209: 5209: void 5209: _M_group_float(const char* __grouping, size_t __grouping_size, 5209: char_type __sep, const char_type* __p, char_type* __new, 5209: char_type* __cs, int& __len) const; 5209: 5209: template 5209: iter_type 5209: _M_insert_int(iter_type, ios_base& __io, char_type __fill, 5209: _ValueT __v) const; 5209: 5209: void 5209: _M_group_int(const char* __grouping, size_t __grouping_size, 5209: char_type __sep, ios_base& __io, char_type* __new, 5209: char_type* __cs, int& __len) const; 5209: 5209: void 5209: _M_pad(char_type __fill, streamsize __w, ios_base& __io, 5209: char_type* __new, const char_type* __cs, int& __len) const; 5209: 5209: 5209: virtual 5209: ~num_put() { } 5209: # 2509 "/usr/include/c++/10/bits/locale_facets.h" 3 5209: virtual iter_type 5209: do_put(iter_type __s, ios_base& __io, char_type __fill, bool __v) const; 5209: 5209: virtual iter_type 5209: do_put(iter_type __s, ios_base& __io, char_type __fill, long __v) const 5209: { return _M_insert_int(__s, __io, __fill, __v); } 5209: 5209: virtual iter_type 5209: do_put(iter_type __s, ios_base& __io, char_type __fill, 5209: unsigned long __v) const 5209: { return _M_insert_int(__s, __io, __fill, __v); } 5209: 5209: 5209: virtual iter_type 5209: do_put(iter_type __s, ios_base& __io, char_type __fill, 5209: long long __v) const 5209: { return _M_insert_int(__s, __io, __fill, __v); } 5209: 5209: virtual iter_type 5209: do_put(iter_type __s, ios_base& __io, char_type __fill, 5209: unsigned long long __v) const 5209: { return _M_insert_int(__s, __io, __fill, __v); } 5209: 5209: 5209: virtual iter_type 5209: do_put(iter_type, ios_base&, char_type, double) const; 5209: 5209: 5209: 5209: 5209: 5209: 5209: virtual iter_type 5209: do_put(iter_type, ios_base&, char_type, long double) const; 5209: 5209: 5209: virtual iter_type 5209: do_put(iter_type, ios_base&, char_type, const void*) const; 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: }; 5209: 5209: template 5209: locale::id num_put<_CharT, _OutIter>::id; 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: inline bool 5209: isspace(_CharT __c, const locale& __loc) 5209: { return use_facet >(__loc).is(ctype_base::space, __c); } 5209: 5209: 5209: template 5209: inline bool 5209: isprint(_CharT __c, const locale& __loc) 5209: { return use_facet >(__loc).is(ctype_base::print, __c); } 5209: 5209: 5209: template 5209: inline bool 5209: iscntrl(_CharT __c, const locale& __loc) 5209: { return use_facet >(__loc).is(ctype_base::cntrl, __c); } 5209: 5209: 5209: template 5209: inline bool 5209: isupper(_CharT __c, const locale& __loc) 5209: { return use_facet >(__loc).is(ctype_base::upper, __c); } 5209: 5209: 5209: template 5209: inline bool 5209: islower(_CharT __c, const locale& __loc) 5209: { return use_facet >(__loc).is(ctype_base::lower, __c); } 5209: 5209: 5209: template 5209: inline bool 5209: isalpha(_CharT __c, const locale& __loc) 5209: { return use_facet >(__loc).is(ctype_base::alpha, __c); } 5209: 5209: 5209: template 5209: inline bool 5209: isdigit(_CharT __c, const locale& __loc) 5209: { return use_facet >(__loc).is(ctype_base::digit, __c); } 5209: 5209: 5209: template 5209: inline bool 5209: ispunct(_CharT __c, const locale& __loc) 5209: { return use_facet >(__loc).is(ctype_base::punct, __c); } 5209: 5209: 5209: template 5209: inline bool 5209: isxdigit(_CharT __c, const locale& __loc) 5209: { return use_facet >(__loc).is(ctype_base::xdigit, __c); } 5209: 5209: 5209: template 5209: inline bool 5209: isalnum(_CharT __c, const locale& __loc) 5209: { return use_facet >(__loc).is(ctype_base::alnum, __c); } 5209: 5209: 5209: template 5209: inline bool 5209: isgraph(_CharT __c, const locale& __loc) 5209: { return use_facet >(__loc).is(ctype_base::graph, __c); } 5209: 5209: 5209: 5209: template 5209: inline bool 5209: isblank(_CharT __c, const locale& __loc) 5209: { return use_facet >(__loc).is(ctype_base::blank, __c); } 5209: 5209: 5209: 5209: template 5209: inline _CharT 5209: toupper(_CharT __c, const locale& __loc) 5209: { return use_facet >(__loc).toupper(__c); } 5209: 5209: 5209: template 5209: inline _CharT 5209: tolower(_CharT __c, const locale& __loc) 5209: { return use_facet >(__loc).tolower(__c); } 5209: 5209: 5209: } 5209: 5209: # 1 "/usr/include/c++/10/bits/locale_facets.tcc" 1 3 5209: # 33 "/usr/include/c++/10/bits/locale_facets.tcc" 3 5209: 5209: # 34 "/usr/include/c++/10/bits/locale_facets.tcc" 3 5209: 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: 5209: 5209: template 5209: struct __use_cache 5209: { 5209: const _Facet* 5209: operator() (const locale& __loc) const; 5209: }; 5209: 5209: 5209: template 5209: struct __use_cache<__numpunct_cache<_CharT> > 5209: { 5209: const __numpunct_cache<_CharT>* 5209: operator() (const locale& __loc) const 5209: { 5209: const size_t __i = numpunct<_CharT>::id._M_id(); 5209: const locale::facet** __caches = __loc._M_impl->_M_caches; 5209: if (!__caches[__i]) 5209: { 5209: __numpunct_cache<_CharT>* __tmp = 0; 5209: try 5209: { 5209: __tmp = new __numpunct_cache<_CharT>; 5209: __tmp->_M_cache(__loc); 5209: } 5209: catch(...) 5209: { 5209: delete __tmp; 5209: throw; 5209: } 5209: __loc._M_impl->_M_install_cache(__tmp, __i); 5209: } 5209: return static_cast*>(__caches[__i]); 5209: } 5209: }; 5209: 5209: template 5209: void 5209: __numpunct_cache<_CharT>::_M_cache(const locale& __loc) 5209: { 5209: const numpunct<_CharT>& __np = use_facet >(__loc); 5209: 5209: char* __grouping = 0; 5209: _CharT* __truename = 0; 5209: _CharT* __falsename = 0; 5209: try 5209: { 5209: const string& __g = __np.grouping(); 5209: _M_grouping_size = __g.size(); 5209: __grouping = new char[_M_grouping_size]; 5209: __g.copy(__grouping, _M_grouping_size); 5209: _M_use_grouping = (_M_grouping_size 5209: && static_cast(__grouping[0]) > 0 5209: && (__grouping[0] 5209: != __gnu_cxx::__numeric_traits::__max)); 5209: 5209: const basic_string<_CharT>& __tn = __np.truename(); 5209: _M_truename_size = __tn.size(); 5209: __truename = new _CharT[_M_truename_size]; 5209: __tn.copy(__truename, _M_truename_size); 5209: 5209: const basic_string<_CharT>& __fn = __np.falsename(); 5209: _M_falsename_size = __fn.size(); 5209: __falsename = new _CharT[_M_falsename_size]; 5209: __fn.copy(__falsename, _M_falsename_size); 5209: 5209: _M_decimal_point = __np.decimal_point(); 5209: _M_thousands_sep = __np.thousands_sep(); 5209: 5209: const ctype<_CharT>& __ct = use_facet >(__loc); 5209: __ct.widen(__num_base::_S_atoms_out, 5209: __num_base::_S_atoms_out 5209: + __num_base::_S_oend, _M_atoms_out); 5209: __ct.widen(__num_base::_S_atoms_in, 5209: __num_base::_S_atoms_in 5209: + __num_base::_S_iend, _M_atoms_in); 5209: 5209: _M_grouping = __grouping; 5209: _M_truename = __truename; 5209: _M_falsename = __falsename; 5209: _M_allocated = true; 5209: } 5209: catch(...) 5209: { 5209: delete [] __grouping; 5209: delete [] __truename; 5209: delete [] __falsename; 5209: throw; 5209: } 5209: } 5209: # 139 "/usr/include/c++/10/bits/locale_facets.tcc" 3 5209: __attribute__ ((__pure__)) bool 5209: __verify_grouping(const char* __grouping, size_t __grouping_size, 5209: const string& __grouping_tmp) throw (); 5209: 5209: 5209: 5209: template 5209: __attribute ((__abi_tag__ ("cxx11"))) 5209: _InIter 5209: num_get<_CharT, _InIter>:: 5209: _M_extract_float(_InIter __beg, _InIter __end, ios_base& __io, 5209: ios_base::iostate& __err, string& __xtrc) const 5209: { 5209: typedef char_traits<_CharT> __traits_type; 5209: typedef __numpunct_cache<_CharT> __cache_type; 5209: __use_cache<__cache_type> __uc; 5209: const locale& __loc = __io._M_getloc(); 5209: const __cache_type* __lc = __uc(__loc); 5209: const _CharT* __lit = __lc->_M_atoms_in; 5209: char_type __c = char_type(); 5209: 5209: 5209: bool __testeof = __beg == __end; 5209: 5209: 5209: if (!__testeof) 5209: { 5209: __c = *__beg; 5209: const bool __plus = __c == __lit[__num_base::_S_iplus]; 5209: if ((__plus || __c == __lit[__num_base::_S_iminus]) 5209: && !(__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) 5209: && !(__c == __lc->_M_decimal_point)) 5209: { 5209: __xtrc += __plus ? '+' : '-'; 5209: if (++__beg != __end) 5209: __c = *__beg; 5209: else 5209: __testeof = true; 5209: } 5209: } 5209: 5209: 5209: bool __found_mantissa = false; 5209: int __sep_pos = 0; 5209: while (!__testeof) 5209: { 5209: if ((__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) 5209: || __c == __lc->_M_decimal_point) 5209: break; 5209: else if (__c == __lit[__num_base::_S_izero]) 5209: { 5209: if (!__found_mantissa) 5209: { 5209: __xtrc += '0'; 5209: __found_mantissa = true; 5209: } 5209: ++__sep_pos; 5209: 5209: if (++__beg != __end) 5209: __c = *__beg; 5209: else 5209: __testeof = true; 5209: } 5209: else 5209: break; 5209: } 5209: 5209: 5209: bool __found_dec = false; 5209: bool __found_sci = false; 5209: string __found_grouping; 5209: if (__lc->_M_use_grouping) 5209: __found_grouping.reserve(32); 5209: const char_type* __lit_zero = __lit + __num_base::_S_izero; 5209: 5209: if (!__lc->_M_allocated) 5209: 5209: while (!__testeof) 5209: { 5209: const int __digit = _M_find(__lit_zero, 10, __c); 5209: if (__digit != -1) 5209: { 5209: __xtrc += '0' + __digit; 5209: __found_mantissa = true; 5209: } 5209: else if (__c == __lc->_M_decimal_point 5209: && !__found_dec && !__found_sci) 5209: { 5209: __xtrc += '.'; 5209: __found_dec = true; 5209: } 5209: else if ((__c == __lit[__num_base::_S_ie] 5209: || __c == __lit[__num_base::_S_iE]) 5209: && !__found_sci && __found_mantissa) 5209: { 5209: 5209: __xtrc += 'e'; 5209: __found_sci = true; 5209: 5209: 5209: if (++__beg != __end) 5209: { 5209: __c = *__beg; 5209: const bool __plus = __c == __lit[__num_base::_S_iplus]; 5209: if (__plus || __c == __lit[__num_base::_S_iminus]) 5209: __xtrc += __plus ? '+' : '-'; 5209: else 5209: continue; 5209: } 5209: else 5209: { 5209: __testeof = true; 5209: break; 5209: } 5209: } 5209: else 5209: break; 5209: 5209: if (++__beg != __end) 5209: __c = *__beg; 5209: else 5209: __testeof = true; 5209: } 5209: else 5209: while (!__testeof) 5209: { 5209: 5209: 5209: if (__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) 5209: { 5209: if (!__found_dec && !__found_sci) 5209: { 5209: 5209: 5209: if (__sep_pos) 5209: { 5209: __found_grouping += static_cast(__sep_pos); 5209: __sep_pos = 0; 5209: } 5209: else 5209: { 5209: 5209: 5209: __xtrc.clear(); 5209: break; 5209: } 5209: } 5209: else 5209: break; 5209: } 5209: else if (__c == __lc->_M_decimal_point) 5209: { 5209: if (!__found_dec && !__found_sci) 5209: { 5209: 5209: 5209: 5209: if (__found_grouping.size()) 5209: __found_grouping += static_cast(__sep_pos); 5209: __xtrc += '.'; 5209: __found_dec = true; 5209: } 5209: else 5209: break; 5209: } 5209: else 5209: { 5209: const char_type* __q = 5209: __traits_type::find(__lit_zero, 10, __c); 5209: if (__q) 5209: { 5209: __xtrc += '0' + (__q - __lit_zero); 5209: __found_mantissa = true; 5209: ++__sep_pos; 5209: } 5209: else if ((__c == __lit[__num_base::_S_ie] 5209: || __c == __lit[__num_base::_S_iE]) 5209: && !__found_sci && __found_mantissa) 5209: { 5209: 5209: if (__found_grouping.size() && !__found_dec) 5209: __found_grouping += static_cast(__sep_pos); 5209: __xtrc += 'e'; 5209: __found_sci = true; 5209: 5209: 5209: if (++__beg != __end) 5209: { 5209: __c = *__beg; 5209: const bool __plus = __c == __lit[__num_base::_S_iplus]; 5209: if ((__plus || __c == __lit[__num_base::_S_iminus]) 5209: && !(__lc->_M_use_grouping 5209: && __c == __lc->_M_thousands_sep) 5209: && !(__c == __lc->_M_decimal_point)) 5209: __xtrc += __plus ? '+' : '-'; 5209: else 5209: continue; 5209: } 5209: else 5209: { 5209: __testeof = true; 5209: break; 5209: } 5209: } 5209: else 5209: break; 5209: } 5209: 5209: if (++__beg != __end) 5209: __c = *__beg; 5209: else 5209: __testeof = true; 5209: } 5209: 5209: 5209: 5209: if (__found_grouping.size()) 5209: { 5209: 5209: if (!__found_dec && !__found_sci) 5209: __found_grouping += static_cast(__sep_pos); 5209: 5209: if (!std::__verify_grouping(__lc->_M_grouping, 5209: __lc->_M_grouping_size, 5209: __found_grouping)) 5209: __err = ios_base::failbit; 5209: } 5209: 5209: return __beg; 5209: } 5209: 5209: template 5209: template 5209: __attribute ((__abi_tag__ ("cxx11"))) 5209: _InIter 5209: num_get<_CharT, _InIter>:: 5209: _M_extract_int(_InIter __beg, _InIter __end, ios_base& __io, 5209: ios_base::iostate& __err, _ValueT& __v) const 5209: { 5209: typedef char_traits<_CharT> __traits_type; 5209: using __gnu_cxx::__add_unsigned; 5209: typedef typename __add_unsigned<_ValueT>::__type __unsigned_type; 5209: typedef __numpunct_cache<_CharT> __cache_type; 5209: __use_cache<__cache_type> __uc; 5209: const locale& __loc = __io._M_getloc(); 5209: const __cache_type* __lc = __uc(__loc); 5209: const _CharT* __lit = __lc->_M_atoms_in; 5209: char_type __c = char_type(); 5209: 5209: 5209: const ios_base::fmtflags __basefield = __io.flags() 5209: & ios_base::basefield; 5209: const bool __oct = __basefield == ios_base::oct; 5209: int __base = __oct ? 8 : (__basefield == ios_base::hex ? 16 : 10); 5209: 5209: 5209: bool __testeof = __beg == __end; 5209: 5209: 5209: bool __negative = false; 5209: if (!__testeof) 5209: { 5209: __c = *__beg; 5209: __negative = __c == __lit[__num_base::_S_iminus]; 5209: if ((__negative || __c == __lit[__num_base::_S_iplus]) 5209: && !(__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) 5209: && !(__c == __lc->_M_decimal_point)) 5209: { 5209: if (++__beg != __end) 5209: __c = *__beg; 5209: else 5209: __testeof = true; 5209: } 5209: } 5209: 5209: 5209: 5209: bool __found_zero = false; 5209: int __sep_pos = 0; 5209: while (!__testeof) 5209: { 5209: if ((__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) 5209: || __c == __lc->_M_decimal_point) 5209: break; 5209: else if (__c == __lit[__num_base::_S_izero] 5209: && (!__found_zero || __base == 10)) 5209: { 5209: __found_zero = true; 5209: ++__sep_pos; 5209: if (__basefield == 0) 5209: __base = 8; 5209: if (__base == 8) 5209: __sep_pos = 0; 5209: } 5209: else if (__found_zero 5209: && (__c == __lit[__num_base::_S_ix] 5209: || __c == __lit[__num_base::_S_iX])) 5209: { 5209: if (__basefield == 0) 5209: __base = 16; 5209: if (__base == 16) 5209: { 5209: __found_zero = false; 5209: __sep_pos = 0; 5209: } 5209: else 5209: break; 5209: } 5209: else 5209: break; 5209: 5209: if (++__beg != __end) 5209: { 5209: __c = *__beg; 5209: if (!__found_zero) 5209: break; 5209: } 5209: else 5209: __testeof = true; 5209: } 5209: 5209: 5209: 5209: const size_t __len = (__base == 16 ? __num_base::_S_iend 5209: - __num_base::_S_izero : __base); 5209: 5209: 5209: typedef __gnu_cxx::__numeric_traits<_ValueT> __num_traits; 5209: string __found_grouping; 5209: if (__lc->_M_use_grouping) 5209: __found_grouping.reserve(32); 5209: bool __testfail = false; 5209: bool __testoverflow = false; 5209: const __unsigned_type __max = 5209: (__negative && __num_traits::__is_signed) 5209: ? -static_cast<__unsigned_type>(__num_traits::__min) 5209: : __num_traits::__max; 5209: const __unsigned_type __smax = __max / __base; 5209: __unsigned_type __result = 0; 5209: int __digit = 0; 5209: const char_type* __lit_zero = __lit + __num_base::_S_izero; 5209: 5209: if (!__lc->_M_allocated) 5209: 5209: while (!__testeof) 5209: { 5209: __digit = _M_find(__lit_zero, __len, __c); 5209: if (__digit == -1) 5209: break; 5209: 5209: if (__result > __smax) 5209: __testoverflow = true; 5209: else 5209: { 5209: __result *= __base; 5209: __testoverflow |= __result > __max - __digit; 5209: __result += __digit; 5209: ++__sep_pos; 5209: } 5209: 5209: if (++__beg != __end) 5209: __c = *__beg; 5209: else 5209: __testeof = true; 5209: } 5209: else 5209: while (!__testeof) 5209: { 5209: 5209: 5209: if (__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) 5209: { 5209: 5209: 5209: if (__sep_pos) 5209: { 5209: __found_grouping += static_cast(__sep_pos); 5209: __sep_pos = 0; 5209: } 5209: else 5209: { 5209: __testfail = true; 5209: break; 5209: } 5209: } 5209: else if (__c == __lc->_M_decimal_point) 5209: break; 5209: else 5209: { 5209: const char_type* __q = 5209: __traits_type::find(__lit_zero, __len, __c); 5209: if (!__q) 5209: break; 5209: 5209: __digit = __q - __lit_zero; 5209: if (__digit > 15) 5209: __digit -= 6; 5209: if (__result > __smax) 5209: __testoverflow = true; 5209: else 5209: { 5209: __result *= __base; 5209: __testoverflow |= __result > __max - __digit; 5209: __result += __digit; 5209: ++__sep_pos; 5209: } 5209: } 5209: 5209: if (++__beg != __end) 5209: __c = *__beg; 5209: else 5209: __testeof = true; 5209: } 5209: 5209: 5209: 5209: if (__found_grouping.size()) 5209: { 5209: 5209: __found_grouping += static_cast(__sep_pos); 5209: 5209: if (!std::__verify_grouping(__lc->_M_grouping, 5209: __lc->_M_grouping_size, 5209: __found_grouping)) 5209: __err = ios_base::failbit; 5209: } 5209: 5209: 5209: 5209: if ((!__sep_pos && !__found_zero && !__found_grouping.size()) 5209: || __testfail) 5209: { 5209: __v = 0; 5209: __err = ios_base::failbit; 5209: } 5209: else if (__testoverflow) 5209: { 5209: if (__negative && __num_traits::__is_signed) 5209: __v = __num_traits::__min; 5209: else 5209: __v = __num_traits::__max; 5209: __err = ios_base::failbit; 5209: } 5209: else 5209: __v = __negative ? -__result : __result; 5209: 5209: if (__testeof) 5209: __err |= ios_base::eofbit; 5209: return __beg; 5209: } 5209: 5209: 5209: 5209: template 5209: _InIter 5209: num_get<_CharT, _InIter>:: 5209: do_get(iter_type __beg, iter_type __end, ios_base& __io, 5209: ios_base::iostate& __err, bool& __v) const 5209: { 5209: if (!(__io.flags() & ios_base::boolalpha)) 5209: { 5209: 5209: 5209: 5209: long __l = -1; 5209: __beg = _M_extract_int(__beg, __end, __io, __err, __l); 5209: if (__l == 0 || __l == 1) 5209: __v = bool(__l); 5209: else 5209: { 5209: 5209: 5209: __v = true; 5209: __err = ios_base::failbit; 5209: if (__beg == __end) 5209: __err |= ios_base::eofbit; 5209: } 5209: } 5209: else 5209: { 5209: 5209: typedef __numpunct_cache<_CharT> __cache_type; 5209: __use_cache<__cache_type> __uc; 5209: const locale& __loc = __io._M_getloc(); 5209: const __cache_type* __lc = __uc(__loc); 5209: 5209: bool __testf = true; 5209: bool __testt = true; 5209: bool __donef = __lc->_M_falsename_size == 0; 5209: bool __donet = __lc->_M_truename_size == 0; 5209: bool __testeof = false; 5209: size_t __n = 0; 5209: while (!__donef || !__donet) 5209: { 5209: if (__beg == __end) 5209: { 5209: __testeof = true; 5209: break; 5209: } 5209: 5209: const char_type __c = *__beg; 5209: 5209: if (!__donef) 5209: __testf = __c == __lc->_M_falsename[__n]; 5209: 5209: if (!__testf && __donet) 5209: break; 5209: 5209: if (!__donet) 5209: __testt = __c == __lc->_M_truename[__n]; 5209: 5209: if (!__testt && __donef) 5209: break; 5209: 5209: if (!__testt && !__testf) 5209: break; 5209: 5209: ++__n; 5209: ++__beg; 5209: 5209: __donef = !__testf || __n >= __lc->_M_falsename_size; 5209: __donet = !__testt || __n >= __lc->_M_truename_size; 5209: } 5209: if (__testf && __n == __lc->_M_falsename_size && __n) 5209: { 5209: __v = false; 5209: if (__testt && __n == __lc->_M_truename_size) 5209: __err = ios_base::failbit; 5209: else 5209: __err = __testeof ? ios_base::eofbit : ios_base::goodbit; 5209: } 5209: else if (__testt && __n == __lc->_M_truename_size && __n) 5209: { 5209: __v = true; 5209: __err = __testeof ? ios_base::eofbit : ios_base::goodbit; 5209: } 5209: else 5209: { 5209: 5209: 5209: __v = false; 5209: __err = ios_base::failbit; 5209: if (__testeof) 5209: __err |= ios_base::eofbit; 5209: } 5209: } 5209: return __beg; 5209: } 5209: 5209: template 5209: _InIter 5209: num_get<_CharT, _InIter>:: 5209: do_get(iter_type __beg, iter_type __end, ios_base& __io, 5209: ios_base::iostate& __err, float& __v) const 5209: { 5209: string __xtrc; 5209: __xtrc.reserve(32); 5209: __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc); 5209: std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale()); 5209: if (__beg == __end) 5209: __err |= ios_base::eofbit; 5209: return __beg; 5209: } 5209: 5209: template 5209: _InIter 5209: num_get<_CharT, _InIter>:: 5209: do_get(iter_type __beg, iter_type __end, ios_base& __io, 5209: ios_base::iostate& __err, double& __v) const 5209: { 5209: string __xtrc; 5209: __xtrc.reserve(32); 5209: __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc); 5209: std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale()); 5209: if (__beg == __end) 5209: __err |= ios_base::eofbit; 5209: return __beg; 5209: } 5209: # 735 "/usr/include/c++/10/bits/locale_facets.tcc" 3 5209: template 5209: _InIter 5209: num_get<_CharT, _InIter>:: 5209: do_get(iter_type __beg, iter_type __end, ios_base& __io, 5209: ios_base::iostate& __err, long double& __v) const 5209: { 5209: string __xtrc; 5209: __xtrc.reserve(32); 5209: __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc); 5209: std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale()); 5209: if (__beg == __end) 5209: __err |= ios_base::eofbit; 5209: return __beg; 5209: } 5209: 5209: template 5209: _InIter 5209: num_get<_CharT, _InIter>:: 5209: do_get(iter_type __beg, iter_type __end, ios_base& __io, 5209: ios_base::iostate& __err, void*& __v) const 5209: { 5209: 5209: typedef ios_base::fmtflags fmtflags; 5209: const fmtflags __fmt = __io.flags(); 5209: __io.flags((__fmt & ~ios_base::basefield) | ios_base::hex); 5209: 5209: typedef __gnu_cxx::__conditional_type<(sizeof(void*) 5209: <= sizeof(unsigned long)), 5209: unsigned long, unsigned long long>::__type _UIntPtrType; 5209: 5209: _UIntPtrType __ul; 5209: __beg = _M_extract_int(__beg, __end, __io, __err, __ul); 5209: 5209: 5209: __io.flags(__fmt); 5209: 5209: __v = reinterpret_cast(__ul); 5209: return __beg; 5209: } 5209: 5209: 5209: 5209: template 5209: void 5209: num_put<_CharT, _OutIter>:: 5209: _M_pad(_CharT __fill, streamsize __w, ios_base& __io, 5209: _CharT* __new, const _CharT* __cs, int& __len) const 5209: { 5209: 5209: 5209: __pad<_CharT, char_traits<_CharT> >::_S_pad(__io, __fill, __new, 5209: __cs, __w, __len); 5209: __len = static_cast(__w); 5209: } 5209: 5209: 5209: 5209: template 5209: int 5209: __int_to_char(_CharT* __bufend, _ValueT __v, const _CharT* __lit, 5209: ios_base::fmtflags __flags, bool __dec) 5209: { 5209: _CharT* __buf = __bufend; 5209: if (__builtin_expect(__dec, true)) 5209: { 5209: 5209: do 5209: { 5209: *--__buf = __lit[(__v % 10) + __num_base::_S_odigits]; 5209: __v /= 10; 5209: } 5209: while (__v != 0); 5209: } 5209: else if ((__flags & ios_base::basefield) == ios_base::oct) 5209: { 5209: 5209: do 5209: { 5209: *--__buf = __lit[(__v & 0x7) + __num_base::_S_odigits]; 5209: __v >>= 3; 5209: } 5209: while (__v != 0); 5209: } 5209: else 5209: { 5209: 5209: const bool __uppercase = __flags & ios_base::uppercase; 5209: const int __case_offset = __uppercase ? __num_base::_S_oudigits 5209: : __num_base::_S_odigits; 5209: do 5209: { 5209: *--__buf = __lit[(__v & 0xf) + __case_offset]; 5209: __v >>= 4; 5209: } 5209: while (__v != 0); 5209: } 5209: return __bufend - __buf; 5209: } 5209: 5209: 5209: 5209: template 5209: void 5209: num_put<_CharT, _OutIter>:: 5209: _M_group_int(const char* __grouping, size_t __grouping_size, _CharT __sep, 5209: ios_base&, _CharT* __new, _CharT* __cs, int& __len) const 5209: { 5209: _CharT* __p = std::__add_grouping(__new, __sep, __grouping, 5209: __grouping_size, __cs, __cs + __len); 5209: __len = __p - __new; 5209: } 5209: 5209: template 5209: template 5209: _OutIter 5209: num_put<_CharT, _OutIter>:: 5209: _M_insert_int(_OutIter __s, ios_base& __io, _CharT __fill, 5209: _ValueT __v) const 5209: { 5209: using __gnu_cxx::__add_unsigned; 5209: typedef typename __add_unsigned<_ValueT>::__type __unsigned_type; 5209: typedef __numpunct_cache<_CharT> __cache_type; 5209: __use_cache<__cache_type> __uc; 5209: const locale& __loc = __io._M_getloc(); 5209: const __cache_type* __lc = __uc(__loc); 5209: const _CharT* __lit = __lc->_M_atoms_out; 5209: const ios_base::fmtflags __flags = __io.flags(); 5209: 5209: 5209: const int __ilen = 5 * sizeof(_ValueT); 5209: _CharT* __cs = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) 5209: * __ilen)); 5209: 5209: 5209: 5209: const ios_base::fmtflags __basefield = __flags & ios_base::basefield; 5209: const bool __dec = (__basefield != ios_base::oct 5209: && __basefield != ios_base::hex); 5209: const __unsigned_type __u = ((__v > 0 || !__dec) 5209: ? __unsigned_type(__v) 5209: : -__unsigned_type(__v)); 5209: int __len = __int_to_char(__cs + __ilen, __u, __lit, __flags, __dec); 5209: __cs += __ilen - __len; 5209: 5209: 5209: if (__lc->_M_use_grouping) 5209: { 5209: 5209: 5209: _CharT* __cs2 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) 5209: * (__len + 1) 5209: * 2)); 5209: _M_group_int(__lc->_M_grouping, __lc->_M_grouping_size, 5209: __lc->_M_thousands_sep, __io, __cs2 + 2, __cs, __len); 5209: __cs = __cs2 + 2; 5209: } 5209: 5209: 5209: if (__builtin_expect(__dec, true)) 5209: { 5209: 5209: if (__v >= 0) 5209: { 5209: if (bool(__flags & ios_base::showpos) 5209: && __gnu_cxx::__numeric_traits<_ValueT>::__is_signed) 5209: *--__cs = __lit[__num_base::_S_oplus], ++__len; 5209: } 5209: else 5209: *--__cs = __lit[__num_base::_S_ominus], ++__len; 5209: } 5209: else if (bool(__flags & ios_base::showbase) && __v) 5209: { 5209: if (__basefield == ios_base::oct) 5209: *--__cs = __lit[__num_base::_S_odigits], ++__len; 5209: else 5209: { 5209: 5209: const bool __uppercase = __flags & ios_base::uppercase; 5209: *--__cs = __lit[__num_base::_S_ox + __uppercase]; 5209: 5209: *--__cs = __lit[__num_base::_S_odigits]; 5209: __len += 2; 5209: } 5209: } 5209: 5209: 5209: const streamsize __w = __io.width(); 5209: if (__w > static_cast(__len)) 5209: { 5209: _CharT* __cs3 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) 5209: * __w)); 5209: _M_pad(__fill, __w, __io, __cs3, __cs, __len); 5209: __cs = __cs3; 5209: } 5209: __io.width(0); 5209: 5209: 5209: 5209: return std::__write(__s, __cs, __len); 5209: } 5209: 5209: template 5209: void 5209: num_put<_CharT, _OutIter>:: 5209: _M_group_float(const char* __grouping, size_t __grouping_size, 5209: _CharT __sep, const _CharT* __p, _CharT* __new, 5209: _CharT* __cs, int& __len) const 5209: { 5209: 5209: 5209: 5209: const int __declen = __p ? __p - __cs : __len; 5209: _CharT* __p2 = std::__add_grouping(__new, __sep, __grouping, 5209: __grouping_size, 5209: __cs, __cs + __declen); 5209: 5209: 5209: int __newlen = __p2 - __new; 5209: if (__p) 5209: { 5209: char_traits<_CharT>::copy(__p2, __p, __len - __declen); 5209: __newlen += __len - __declen; 5209: } 5209: __len = __newlen; 5209: } 5209: # 971 "/usr/include/c++/10/bits/locale_facets.tcc" 3 5209: template 5209: template 5209: _OutIter 5209: num_put<_CharT, _OutIter>:: 5209: _M_insert_float(_OutIter __s, ios_base& __io, _CharT __fill, char __mod, 5209: _ValueT __v) const 5209: { 5209: typedef __numpunct_cache<_CharT> __cache_type; 5209: __use_cache<__cache_type> __uc; 5209: const locale& __loc = __io._M_getloc(); 5209: const __cache_type* __lc = __uc(__loc); 5209: 5209: 5209: const streamsize __prec = __io.precision() < 0 ? 6 : __io.precision(); 5209: 5209: const int __max_digits = 5209: __gnu_cxx::__numeric_traits<_ValueT>::__digits10; 5209: 5209: 5209: int __len; 5209: 5209: char __fbuf[16]; 5209: __num_base::_S_format_float(__io, __fbuf, __mod); 5209: 5209: 5209: 5209: const bool __use_prec = 5209: (__io.flags() & ios_base::floatfield) != ios_base::floatfield; 5209: 5209: 5209: 5209: int __cs_size = __max_digits * 3; 5209: char* __cs = static_cast(__builtin_alloca(__cs_size)); 5209: if (__use_prec) 5209: __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size, 5209: __fbuf, __prec, __v); 5209: else 5209: __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size, 5209: __fbuf, __v); 5209: 5209: 5209: if (__len >= __cs_size) 5209: { 5209: __cs_size = __len + 1; 5209: __cs = static_cast(__builtin_alloca(__cs_size)); 5209: if (__use_prec) 5209: __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size, 5209: __fbuf, __prec, __v); 5209: else 5209: __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size, 5209: __fbuf, __v); 5209: } 5209: # 1044 "/usr/include/c++/10/bits/locale_facets.tcc" 3 5209: const ctype<_CharT>& __ctype = use_facet >(__loc); 5209: 5209: _CharT* __ws = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) 5209: * __len)); 5209: __ctype.widen(__cs, __cs + __len, __ws); 5209: 5209: 5209: _CharT* __wp = 0; 5209: const char* __p = char_traits::find(__cs, __len, '.'); 5209: if (__p) 5209: { 5209: __wp = __ws + (__p - __cs); 5209: *__wp = __lc->_M_decimal_point; 5209: } 5209: 5209: 5209: 5209: 5209: if (__lc->_M_use_grouping 5209: && (__wp || __len < 3 || (__cs[1] <= '9' && __cs[2] <= '9' 5209: && __cs[1] >= '0' && __cs[2] >= '0'))) 5209: { 5209: 5209: 5209: _CharT* __ws2 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) 5209: * __len * 2)); 5209: 5209: streamsize __off = 0; 5209: if (__cs[0] == '-' || __cs[0] == '+') 5209: { 5209: __off = 1; 5209: __ws2[0] = __ws[0]; 5209: __len -= 1; 5209: } 5209: 5209: _M_group_float(__lc->_M_grouping, __lc->_M_grouping_size, 5209: __lc->_M_thousands_sep, __wp, __ws2 + __off, 5209: __ws + __off, __len); 5209: __len += __off; 5209: 5209: __ws = __ws2; 5209: } 5209: 5209: 5209: const streamsize __w = __io.width(); 5209: if (__w > static_cast(__len)) 5209: { 5209: _CharT* __ws3 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) 5209: * __w)); 5209: _M_pad(__fill, __w, __io, __ws3, __ws, __len); 5209: __ws = __ws3; 5209: } 5209: __io.width(0); 5209: 5209: 5209: 5209: return std::__write(__s, __ws, __len); 5209: } 5209: 5209: template 5209: _OutIter 5209: num_put<_CharT, _OutIter>:: 5209: do_put(iter_type __s, ios_base& __io, char_type __fill, bool __v) const 5209: { 5209: const ios_base::fmtflags __flags = __io.flags(); 5209: if ((__flags & ios_base::boolalpha) == 0) 5209: { 5209: const long __l = __v; 5209: __s = _M_insert_int(__s, __io, __fill, __l); 5209: } 5209: else 5209: { 5209: typedef __numpunct_cache<_CharT> __cache_type; 5209: __use_cache<__cache_type> __uc; 5209: const locale& __loc = __io._M_getloc(); 5209: const __cache_type* __lc = __uc(__loc); 5209: 5209: const _CharT* __name = __v ? __lc->_M_truename 5209: : __lc->_M_falsename; 5209: int __len = __v ? __lc->_M_truename_size 5209: : __lc->_M_falsename_size; 5209: 5209: const streamsize __w = __io.width(); 5209: if (__w > static_cast(__len)) 5209: { 5209: const streamsize __plen = __w - __len; 5209: _CharT* __ps 5209: = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) 5209: * __plen)); 5209: 5209: char_traits<_CharT>::assign(__ps, __plen, __fill); 5209: __io.width(0); 5209: 5209: if ((__flags & ios_base::adjustfield) == ios_base::left) 5209: { 5209: __s = std::__write(__s, __name, __len); 5209: __s = std::__write(__s, __ps, __plen); 5209: } 5209: else 5209: { 5209: __s = std::__write(__s, __ps, __plen); 5209: __s = std::__write(__s, __name, __len); 5209: } 5209: return __s; 5209: } 5209: __io.width(0); 5209: __s = std::__write(__s, __name, __len); 5209: } 5209: return __s; 5209: } 5209: 5209: template 5209: _OutIter 5209: num_put<_CharT, _OutIter>:: 5209: do_put(iter_type __s, ios_base& __io, char_type __fill, double __v) const 5209: { return _M_insert_float(__s, __io, __fill, char(), __v); } 5209: # 1169 "/usr/include/c++/10/bits/locale_facets.tcc" 3 5209: template 5209: _OutIter 5209: num_put<_CharT, _OutIter>:: 5209: do_put(iter_type __s, ios_base& __io, char_type __fill, 5209: long double __v) const 5209: { return _M_insert_float(__s, __io, __fill, 'L', __v); } 5209: 5209: template 5209: _OutIter 5209: num_put<_CharT, _OutIter>:: 5209: do_put(iter_type __s, ios_base& __io, char_type __fill, 5209: const void* __v) const 5209: { 5209: const ios_base::fmtflags __flags = __io.flags(); 5209: const ios_base::fmtflags __fmt = ~(ios_base::basefield 5209: | ios_base::uppercase); 5209: __io.flags((__flags & __fmt) | (ios_base::hex | ios_base::showbase)); 5209: 5209: typedef __gnu_cxx::__conditional_type<(sizeof(const void*) 5209: <= sizeof(unsigned long)), 5209: unsigned long, unsigned long long>::__type _UIntPtrType; 5209: 5209: __s = _M_insert_int(__s, __io, __fill, 5209: reinterpret_cast<_UIntPtrType>(__v)); 5209: __io.flags(__flags); 5209: return __s; 5209: } 5209: 5209: 5209: # 1206 "/usr/include/c++/10/bits/locale_facets.tcc" 3 5209: template 5209: void 5209: __pad<_CharT, _Traits>::_S_pad(ios_base& __io, _CharT __fill, 5209: _CharT* __news, const _CharT* __olds, 5209: streamsize __newlen, streamsize __oldlen) 5209: { 5209: const size_t __plen = static_cast(__newlen - __oldlen); 5209: const ios_base::fmtflags __adjust = __io.flags() & ios_base::adjustfield; 5209: 5209: 5209: if (__adjust == ios_base::left) 5209: { 5209: _Traits::copy(__news, __olds, __oldlen); 5209: _Traits::assign(__news + __oldlen, __plen, __fill); 5209: return; 5209: } 5209: 5209: size_t __mod = 0; 5209: if (__adjust == ios_base::internal) 5209: { 5209: 5209: 5209: 5209: const locale& __loc = __io._M_getloc(); 5209: const ctype<_CharT>& __ctype = use_facet >(__loc); 5209: 5209: if (__ctype.widen('-') == __olds[0] 5209: || __ctype.widen('+') == __olds[0]) 5209: { 5209: __news[0] = __olds[0]; 5209: __mod = 1; 5209: ++__news; 5209: } 5209: else if (__ctype.widen('0') == __olds[0] 5209: && __oldlen > 1 5209: && (__ctype.widen('x') == __olds[1] 5209: || __ctype.widen('X') == __olds[1])) 5209: { 5209: __news[0] = __olds[0]; 5209: __news[1] = __olds[1]; 5209: __mod = 2; 5209: __news += 2; 5209: } 5209: 5209: } 5209: _Traits::assign(__news, __plen, __fill); 5209: _Traits::copy(__news + __plen, __olds + __mod, __oldlen - __mod); 5209: } 5209: 5209: template 5209: _CharT* 5209: __add_grouping(_CharT* __s, _CharT __sep, 5209: const char* __gbeg, size_t __gsize, 5209: const _CharT* __first, const _CharT* __last) 5209: { 5209: size_t __idx = 0; 5209: size_t __ctr = 0; 5209: 5209: while (__last - __first > __gbeg[__idx] 5209: && static_cast(__gbeg[__idx]) > 0 5209: && __gbeg[__idx] != __gnu_cxx::__numeric_traits::__max) 5209: { 5209: __last -= __gbeg[__idx]; 5209: __idx < __gsize - 1 ? ++__idx : ++__ctr; 5209: } 5209: 5209: while (__first != __last) 5209: *__s++ = *__first++; 5209: 5209: while (__ctr--) 5209: { 5209: *__s++ = __sep; 5209: for (char __i = __gbeg[__idx]; __i > 0; --__i) 5209: *__s++ = *__first++; 5209: } 5209: 5209: while (__idx--) 5209: { 5209: *__s++ = __sep; 5209: for (char __i = __gbeg[__idx]; __i > 0; --__i) 5209: *__s++ = *__first++; 5209: } 5209: 5209: return __s; 5209: } 5209: 5209: 5209: 5209: 5209: extern template class __cxx11:: numpunct; 5209: extern template class __cxx11:: numpunct_byname; 5209: extern template class num_get; 5209: extern template class num_put; 5209: extern template class ctype_byname; 5209: 5209: extern template 5209: const ctype& 5209: use_facet >(const locale&); 5209: 5209: extern template 5209: const numpunct& 5209: use_facet >(const locale&); 5209: 5209: extern template 5209: const num_put& 5209: use_facet >(const locale&); 5209: 5209: extern template 5209: const num_get& 5209: use_facet >(const locale&); 5209: 5209: extern template 5209: bool 5209: has_facet >(const locale&); 5209: 5209: extern template 5209: bool 5209: has_facet >(const locale&); 5209: 5209: extern template 5209: bool 5209: has_facet >(const locale&); 5209: 5209: extern template 5209: bool 5209: has_facet >(const locale&); 5209: 5209: 5209: extern template class __cxx11:: numpunct; 5209: extern template class __cxx11:: numpunct_byname; 5209: extern template class num_get; 5209: extern template class num_put; 5209: extern template class ctype_byname; 5209: 5209: extern template 5209: const ctype& 5209: use_facet >(const locale&); 5209: 5209: extern template 5209: const numpunct& 5209: use_facet >(const locale&); 5209: 5209: extern template 5209: const num_put& 5209: use_facet >(const locale&); 5209: 5209: extern template 5209: const num_get& 5209: use_facet >(const locale&); 5209: 5209: extern template 5209: bool 5209: has_facet >(const locale&); 5209: 5209: extern template 5209: bool 5209: has_facet >(const locale&); 5209: 5209: extern template 5209: bool 5209: has_facet >(const locale&); 5209: 5209: extern template 5209: bool 5209: has_facet >(const locale&); 5209: 5209: 5209: 5209: 5209: } 5209: # 2656 "/usr/include/c++/10/bits/locale_facets.h" 2 3 5209: # 38 "/usr/include/c++/10/bits/basic_ios.h" 2 3 5209: 5209: 5209: 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: template 5209: inline const _Facet& 5209: __check_facet(const _Facet* __f) 5209: { 5209: if (!__f) 5209: __throw_bad_cast(); 5209: return *__f; 5209: } 5209: # 66 "/usr/include/c++/10/bits/basic_ios.h" 3 5209: template 5209: class basic_ios : public ios_base 5209: { 5209: public: 5209: 5209: 5209: 5209: 5209: 5209: 5209: typedef _CharT char_type; 5209: typedef typename _Traits::int_type int_type; 5209: typedef typename _Traits::pos_type pos_type; 5209: typedef typename _Traits::off_type off_type; 5209: typedef _Traits traits_type; 5209: 5209: 5209: 5209: 5209: 5209: 5209: typedef ctype<_CharT> __ctype_type; 5209: typedef num_put<_CharT, ostreambuf_iterator<_CharT, _Traits> > 5209: __num_put_type; 5209: typedef num_get<_CharT, istreambuf_iterator<_CharT, _Traits> > 5209: __num_get_type; 5209: 5209: 5209: 5209: protected: 5209: basic_ostream<_CharT, _Traits>* _M_tie; 5209: mutable char_type _M_fill; 5209: mutable bool _M_fill_init; 5209: basic_streambuf<_CharT, _Traits>* _M_streambuf; 5209: 5209: 5209: const __ctype_type* _M_ctype; 5209: 5209: const __num_put_type* _M_num_put; 5209: 5209: const __num_get_type* _M_num_get; 5209: 5209: public: 5209: # 117 "/usr/include/c++/10/bits/basic_ios.h" 3 5209: explicit operator bool() const 5209: { return !this->fail(); } 5209: 5209: 5209: 5209: 5209: 5209: bool 5209: operator!() const 5209: { return this->fail(); } 5209: # 136 "/usr/include/c++/10/bits/basic_ios.h" 3 5209: iostate 5209: rdstate() const 5209: { return _M_streambuf_state; } 5209: # 147 "/usr/include/c++/10/bits/basic_ios.h" 3 5209: void 5209: clear(iostate __state = goodbit); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: void 5209: setstate(iostate __state) 5209: { this->clear(this->rdstate() | __state); } 5209: 5209: 5209: 5209: 5209: void 5209: _M_setstate(iostate __state) 5209: { 5209: 5209: 5209: _M_streambuf_state |= __state; 5209: if (this->exceptions() & __state) 5209: throw; 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: bool 5209: good() const 5209: { return this->rdstate() == 0; } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: bool 5209: eof() const 5209: { return (this->rdstate() & eofbit) != 0; } 5209: # 200 "/usr/include/c++/10/bits/basic_ios.h" 3 5209: bool 5209: fail() const 5209: { return (this->rdstate() & (badbit | failbit)) != 0; } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: bool 5209: bad() const 5209: { return (this->rdstate() & badbit) != 0; } 5209: # 221 "/usr/include/c++/10/bits/basic_ios.h" 3 5209: iostate 5209: exceptions() const 5209: { return _M_exception; } 5209: # 256 "/usr/include/c++/10/bits/basic_ios.h" 3 5209: void 5209: exceptions(iostate __except) 5209: { 5209: _M_exception = __except; 5209: this->clear(_M_streambuf_state); 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: explicit 5209: basic_ios(basic_streambuf<_CharT, _Traits>* __sb) 5209: : ios_base(), _M_tie(0), _M_fill(), _M_fill_init(false), _M_streambuf(0), 5209: _M_ctype(0), _M_num_put(0), _M_num_get(0) 5209: { this->init(__sb); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: virtual 5209: ~basic_ios() { } 5209: # 294 "/usr/include/c++/10/bits/basic_ios.h" 3 5209: basic_ostream<_CharT, _Traits>* 5209: tie() const 5209: { return _M_tie; } 5209: # 306 "/usr/include/c++/10/bits/basic_ios.h" 3 5209: basic_ostream<_CharT, _Traits>* 5209: tie(basic_ostream<_CharT, _Traits>* __tiestr) 5209: { 5209: basic_ostream<_CharT, _Traits>* __old = _M_tie; 5209: _M_tie = __tiestr; 5209: return __old; 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: basic_streambuf<_CharT, _Traits>* 5209: rdbuf() const 5209: { return _M_streambuf; } 5209: # 346 "/usr/include/c++/10/bits/basic_ios.h" 3 5209: basic_streambuf<_CharT, _Traits>* 5209: rdbuf(basic_streambuf<_CharT, _Traits>* __sb); 5209: # 360 "/usr/include/c++/10/bits/basic_ios.h" 3 5209: basic_ios& 5209: copyfmt(const basic_ios& __rhs); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: char_type 5209: fill() const 5209: { 5209: if (!_M_fill_init) 5209: { 5209: _M_fill = this->widen(' '); 5209: _M_fill_init = true; 5209: } 5209: return _M_fill; 5209: } 5209: # 389 "/usr/include/c++/10/bits/basic_ios.h" 3 5209: char_type 5209: fill(char_type __ch) 5209: { 5209: char_type __old = this->fill(); 5209: _M_fill = __ch; 5209: return __old; 5209: } 5209: # 409 "/usr/include/c++/10/bits/basic_ios.h" 3 5209: locale 5209: imbue(const locale& __loc); 5209: # 429 "/usr/include/c++/10/bits/basic_ios.h" 3 5209: char 5209: narrow(char_type __c, char __dfault) const 5209: { return __check_facet(_M_ctype).narrow(__c, __dfault); } 5209: # 448 "/usr/include/c++/10/bits/basic_ios.h" 3 5209: char_type 5209: widen(char __c) const 5209: { return __check_facet(_M_ctype).widen(__c); } 5209: 5209: protected: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: basic_ios() 5209: : ios_base(), _M_tie(0), _M_fill(char_type()), _M_fill_init(false), 5209: _M_streambuf(0), _M_ctype(0), _M_num_put(0), _M_num_get(0) 5209: { } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: void 5209: init(basic_streambuf<_CharT, _Traits>* __sb); 5209: 5209: 5209: basic_ios(const basic_ios&) = delete; 5209: basic_ios& operator=(const basic_ios&) = delete; 5209: 5209: void 5209: move(basic_ios& __rhs) 5209: { 5209: ios_base::_M_move(__rhs); 5209: _M_cache_locale(_M_ios_locale); 5209: this->tie(__rhs.tie(nullptr)); 5209: _M_fill = __rhs._M_fill; 5209: _M_fill_init = __rhs._M_fill_init; 5209: _M_streambuf = nullptr; 5209: } 5209: 5209: void 5209: move(basic_ios&& __rhs) 5209: { this->move(__rhs); } 5209: 5209: void 5209: swap(basic_ios& __rhs) noexcept 5209: { 5209: ios_base::_M_swap(__rhs); 5209: _M_cache_locale(_M_ios_locale); 5209: __rhs._M_cache_locale(__rhs._M_ios_locale); 5209: std::swap(_M_tie, __rhs._M_tie); 5209: std::swap(_M_fill, __rhs._M_fill); 5209: std::swap(_M_fill_init, __rhs._M_fill_init); 5209: } 5209: 5209: void 5209: set_rdbuf(basic_streambuf<_CharT, _Traits>* __sb) 5209: { _M_streambuf = __sb; } 5209: 5209: 5209: void 5209: _M_cache_locale(const locale& __loc); 5209: }; 5209: 5209: 5209: } 5209: 5209: # 1 "/usr/include/c++/10/bits/basic_ios.tcc" 1 3 5209: # 33 "/usr/include/c++/10/bits/basic_ios.tcc" 3 5209: 5209: # 34 "/usr/include/c++/10/bits/basic_ios.tcc" 3 5209: 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: template 5209: void 5209: basic_ios<_CharT, _Traits>::clear(iostate __state) 5209: { 5209: if (this->rdbuf()) 5209: _M_streambuf_state = __state; 5209: else 5209: _M_streambuf_state = __state | badbit; 5209: if (this->exceptions() & this->rdstate()) 5209: __throw_ios_failure(("basic_ios::clear")); 5209: } 5209: 5209: template 5209: basic_streambuf<_CharT, _Traits>* 5209: basic_ios<_CharT, _Traits>::rdbuf(basic_streambuf<_CharT, _Traits>* __sb) 5209: { 5209: basic_streambuf<_CharT, _Traits>* __old = _M_streambuf; 5209: _M_streambuf = __sb; 5209: this->clear(); 5209: return __old; 5209: } 5209: 5209: template 5209: basic_ios<_CharT, _Traits>& 5209: basic_ios<_CharT, _Traits>::copyfmt(const basic_ios& __rhs) 5209: { 5209: 5209: 5209: if (this != &__rhs) 5209: { 5209: 5209: 5209: 5209: 5209: _Words* __words = (__rhs._M_word_size <= _S_local_word_size) ? 5209: _M_local_word : new _Words[__rhs._M_word_size]; 5209: 5209: 5209: _Callback_list* __cb = __rhs._M_callbacks; 5209: if (__cb) 5209: __cb->_M_add_reference(); 5209: _M_call_callbacks(erase_event); 5209: if (_M_word != _M_local_word) 5209: { 5209: delete [] _M_word; 5209: _M_word = 0; 5209: } 5209: _M_dispose_callbacks(); 5209: 5209: 5209: _M_callbacks = __cb; 5209: for (int __i = 0; __i < __rhs._M_word_size; ++__i) 5209: __words[__i] = __rhs._M_word[__i]; 5209: _M_word = __words; 5209: _M_word_size = __rhs._M_word_size; 5209: 5209: this->flags(__rhs.flags()); 5209: this->width(__rhs.width()); 5209: this->precision(__rhs.precision()); 5209: this->tie(__rhs.tie()); 5209: this->fill(__rhs.fill()); 5209: _M_ios_locale = __rhs.getloc(); 5209: _M_cache_locale(_M_ios_locale); 5209: 5209: _M_call_callbacks(copyfmt_event); 5209: 5209: 5209: this->exceptions(__rhs.exceptions()); 5209: } 5209: return *this; 5209: } 5209: 5209: 5209: template 5209: locale 5209: basic_ios<_CharT, _Traits>::imbue(const locale& __loc) 5209: { 5209: locale __old(this->getloc()); 5209: ios_base::imbue(__loc); 5209: _M_cache_locale(__loc); 5209: if (this->rdbuf() != 0) 5209: this->rdbuf()->pubimbue(__loc); 5209: return __old; 5209: } 5209: 5209: template 5209: void 5209: basic_ios<_CharT, _Traits>::init(basic_streambuf<_CharT, _Traits>* __sb) 5209: { 5209: 5209: ios_base::_M_init(); 5209: 5209: 5209: _M_cache_locale(_M_ios_locale); 5209: # 146 "/usr/include/c++/10/bits/basic_ios.tcc" 3 5209: _M_fill = _CharT(); 5209: _M_fill_init = false; 5209: 5209: _M_tie = 0; 5209: _M_exception = goodbit; 5209: _M_streambuf = __sb; 5209: _M_streambuf_state = __sb ? goodbit : badbit; 5209: } 5209: 5209: template 5209: void 5209: basic_ios<_CharT, _Traits>::_M_cache_locale(const locale& __loc) 5209: { 5209: if (__builtin_expect(has_facet<__ctype_type>(__loc), true)) 5209: _M_ctype = std::__addressof(use_facet<__ctype_type>(__loc)); 5209: else 5209: _M_ctype = 0; 5209: 5209: if (__builtin_expect(has_facet<__num_put_type>(__loc), true)) 5209: _M_num_put = std::__addressof(use_facet<__num_put_type>(__loc)); 5209: else 5209: _M_num_put = 0; 5209: 5209: if (__builtin_expect(has_facet<__num_get_type>(__loc), true)) 5209: _M_num_get = std::__addressof(use_facet<__num_get_type>(__loc)); 5209: else 5209: _M_num_get = 0; 5209: } 5209: 5209: 5209: 5209: 5209: extern template class basic_ios; 5209: 5209: 5209: extern template class basic_ios; 5209: 5209: 5209: 5209: 5209: } 5209: # 517 "/usr/include/c++/10/bits/basic_ios.h" 2 3 5209: # 45 "/usr/include/c++/10/ios" 2 3 5209: # 39 "/usr/include/c++/10/ostream" 2 3 5209: 5209: 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: # 57 "/usr/include/c++/10/ostream" 3 5209: template 5209: class basic_ostream : virtual public basic_ios<_CharT, _Traits> 5209: { 5209: public: 5209: 5209: typedef _CharT char_type; 5209: typedef typename _Traits::int_type int_type; 5209: typedef typename _Traits::pos_type pos_type; 5209: typedef typename _Traits::off_type off_type; 5209: typedef _Traits traits_type; 5209: 5209: 5209: typedef basic_streambuf<_CharT, _Traits> __streambuf_type; 5209: typedef basic_ios<_CharT, _Traits> __ios_type; 5209: typedef basic_ostream<_CharT, _Traits> __ostream_type; 5209: typedef num_put<_CharT, ostreambuf_iterator<_CharT, _Traits> > 5209: __num_put_type; 5209: typedef ctype<_CharT> __ctype_type; 5209: # 83 "/usr/include/c++/10/ostream" 3 5209: explicit 5209: basic_ostream(__streambuf_type* __sb) 5209: { this->init(__sb); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: virtual 5209: ~basic_ostream() { } 5209: 5209: 5209: class sentry; 5209: friend class sentry; 5209: # 107 "/usr/include/c++/10/ostream" 3 5209: __ostream_type& 5209: operator<<(__ostream_type& (*__pf)(__ostream_type&)) 5209: { 5209: 5209: 5209: 5209: return __pf(*this); 5209: } 5209: 5209: __ostream_type& 5209: operator<<(__ios_type& (*__pf)(__ios_type&)) 5209: { 5209: 5209: 5209: 5209: __pf(*this); 5209: return *this; 5209: } 5209: 5209: __ostream_type& 5209: operator<<(ios_base& (*__pf) (ios_base&)) 5209: { 5209: 5209: 5209: 5209: __pf(*this); 5209: return *this; 5209: } 5209: # 165 "/usr/include/c++/10/ostream" 3 5209: __ostream_type& 5209: operator<<(long __n) 5209: { return _M_insert(__n); } 5209: 5209: __ostream_type& 5209: operator<<(unsigned long __n) 5209: { return _M_insert(__n); } 5209: 5209: __ostream_type& 5209: operator<<(bool __n) 5209: { return _M_insert(__n); } 5209: 5209: __ostream_type& 5209: operator<<(short __n); 5209: 5209: __ostream_type& 5209: operator<<(unsigned short __n) 5209: { 5209: 5209: 5209: return _M_insert(static_cast(__n)); 5209: } 5209: 5209: __ostream_type& 5209: operator<<(int __n); 5209: 5209: __ostream_type& 5209: operator<<(unsigned int __n) 5209: { 5209: 5209: 5209: return _M_insert(static_cast(__n)); 5209: } 5209: 5209: 5209: __ostream_type& 5209: operator<<(long long __n) 5209: { return _M_insert(__n); } 5209: 5209: __ostream_type& 5209: operator<<(unsigned long long __n) 5209: { return _M_insert(__n); } 5209: # 219 "/usr/include/c++/10/ostream" 3 5209: __ostream_type& 5209: operator<<(double __f) 5209: { return _M_insert(__f); } 5209: 5209: __ostream_type& 5209: operator<<(float __f) 5209: { 5209: 5209: 5209: return _M_insert(static_cast(__f)); 5209: } 5209: 5209: __ostream_type& 5209: operator<<(long double __f) 5209: { return _M_insert(__f); } 5209: # 244 "/usr/include/c++/10/ostream" 3 5209: __ostream_type& 5209: operator<<(const void* __p) 5209: { return _M_insert(__p); } 5209: # 275 "/usr/include/c++/10/ostream" 3 5209: __ostream_type& 5209: operator<<(__streambuf_type* __sb); 5209: # 308 "/usr/include/c++/10/ostream" 3 5209: __ostream_type& 5209: put(char_type __c); 5209: 5209: 5209: 5209: 5209: 5209: 5209: void 5209: _M_write(const char_type* __s, streamsize __n) 5209: { 5209: const streamsize __put = this->rdbuf()->sputn(__s, __n); 5209: if (__put != __n) 5209: this->setstate(ios_base::badbit); 5209: } 5209: # 340 "/usr/include/c++/10/ostream" 3 5209: __ostream_type& 5209: write(const char_type* __s, streamsize __n); 5209: # 353 "/usr/include/c++/10/ostream" 3 5209: __ostream_type& 5209: flush(); 5209: # 363 "/usr/include/c++/10/ostream" 3 5209: pos_type 5209: tellp(); 5209: # 374 "/usr/include/c++/10/ostream" 3 5209: __ostream_type& 5209: seekp(pos_type); 5209: # 386 "/usr/include/c++/10/ostream" 3 5209: __ostream_type& 5209: seekp(off_type, ios_base::seekdir); 5209: 5209: protected: 5209: basic_ostream() 5209: { this->init(0); } 5209: 5209: 5209: 5209: basic_ostream(basic_iostream<_CharT, _Traits>&) { } 5209: 5209: basic_ostream(const basic_ostream&) = delete; 5209: 5209: basic_ostream(basic_ostream&& __rhs) 5209: : __ios_type() 5209: { __ios_type::move(__rhs); } 5209: 5209: 5209: 5209: basic_ostream& operator=(const basic_ostream&) = delete; 5209: 5209: basic_ostream& 5209: operator=(basic_ostream&& __rhs) 5209: { 5209: swap(__rhs); 5209: return *this; 5209: } 5209: 5209: void 5209: swap(basic_ostream& __rhs) 5209: { __ios_type::swap(__rhs); } 5209: 5209: 5209: template 5209: __ostream_type& 5209: _M_insert(_ValueT __v); 5209: }; 5209: # 431 "/usr/include/c++/10/ostream" 3 5209: template 5209: class basic_ostream<_CharT, _Traits>::sentry 5209: { 5209: 5209: bool _M_ok; 5209: basic_ostream<_CharT, _Traits>& _M_os; 5209: 5209: public: 5209: # 450 "/usr/include/c++/10/ostream" 3 5209: explicit 5209: sentry(basic_ostream<_CharT, _Traits>& __os); 5209: 5209: #pragma GCC diagnostic push 5209: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: ~sentry() 5209: { 5209: 5209: if (bool(_M_os.flags() & ios_base::unitbuf) && !uncaught_exception()) 5209: { 5209: 5209: if (_M_os.rdbuf() && _M_os.rdbuf()->pubsync() == -1) 5209: _M_os.setstate(ios_base::badbit); 5209: } 5209: } 5209: #pragma GCC diagnostic pop 5209: # 482 "/usr/include/c++/10/ostream" 3 5209: explicit 5209: 5209: operator bool() const 5209: { return _M_ok; } 5209: }; 5209: # 504 "/usr/include/c++/10/ostream" 3 5209: template 5209: inline basic_ostream<_CharT, _Traits>& 5209: operator<<(basic_ostream<_CharT, _Traits>& __out, _CharT __c) 5209: { return __ostream_insert(__out, &__c, 1); } 5209: 5209: template 5209: inline basic_ostream<_CharT, _Traits>& 5209: operator<<(basic_ostream<_CharT, _Traits>& __out, char __c) 5209: { return (__out << __out.widen(__c)); } 5209: 5209: 5209: template 5209: inline basic_ostream& 5209: operator<<(basic_ostream& __out, char __c) 5209: { return __ostream_insert(__out, &__c, 1); } 5209: 5209: 5209: template 5209: inline basic_ostream& 5209: operator<<(basic_ostream& __out, signed char __c) 5209: { return (__out << static_cast(__c)); } 5209: 5209: template 5209: inline basic_ostream& 5209: operator<<(basic_ostream& __out, unsigned char __c) 5209: { return (__out << static_cast(__c)); } 5209: # 587 "/usr/include/c++/10/ostream" 3 5209: template 5209: inline basic_ostream<_CharT, _Traits>& 5209: operator<<(basic_ostream<_CharT, _Traits>& __out, const _CharT* __s) 5209: { 5209: if (!__s) 5209: __out.setstate(ios_base::badbit); 5209: else 5209: __ostream_insert(__out, __s, 5209: static_cast(_Traits::length(__s))); 5209: return __out; 5209: } 5209: 5209: template 5209: basic_ostream<_CharT, _Traits> & 5209: operator<<(basic_ostream<_CharT, _Traits>& __out, const char* __s); 5209: 5209: 5209: template 5209: inline basic_ostream& 5209: operator<<(basic_ostream& __out, const char* __s) 5209: { 5209: if (!__s) 5209: __out.setstate(ios_base::badbit); 5209: else 5209: __ostream_insert(__out, __s, 5209: static_cast(_Traits::length(__s))); 5209: return __out; 5209: } 5209: 5209: 5209: template 5209: inline basic_ostream& 5209: operator<<(basic_ostream& __out, const signed char* __s) 5209: { return (__out << reinterpret_cast(__s)); } 5209: 5209: template 5209: inline basic_ostream & 5209: operator<<(basic_ostream& __out, const unsigned char* __s) 5209: { return (__out << reinterpret_cast(__s)); } 5209: # 679 "/usr/include/c++/10/ostream" 3 5209: template 5209: inline basic_ostream<_CharT, _Traits>& 5209: endl(basic_ostream<_CharT, _Traits>& __os) 5209: { return flush(__os.put(__os.widen('\n'))); } 5209: # 691 "/usr/include/c++/10/ostream" 3 5209: template 5209: inline basic_ostream<_CharT, _Traits>& 5209: ends(basic_ostream<_CharT, _Traits>& __os) 5209: { return __os.put(_CharT()); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: inline basic_ostream<_CharT, _Traits>& 5209: flush(basic_ostream<_CharT, _Traits>& __os) 5209: { return __os.flush(); } 5209: 5209: 5209: template 5209: basic_ostream<_Ch, _Up>& 5209: __is_convertible_to_basic_ostream_test(basic_ostream<_Ch, _Up>*); 5209: 5209: template 5209: struct __is_convertible_to_basic_ostream_impl 5209: { 5209: using __ostream_type = void; 5209: }; 5209: 5209: template 5209: using __do_is_convertible_to_basic_ostream_impl = 5209: decltype(__is_convertible_to_basic_ostream_test 5209: (declval::type*>())); 5209: 5209: template 5209: struct __is_convertible_to_basic_ostream_impl 5209: <_Tp, 5209: __void_t<__do_is_convertible_to_basic_ostream_impl<_Tp>>> 5209: { 5209: using __ostream_type = 5209: __do_is_convertible_to_basic_ostream_impl<_Tp>; 5209: }; 5209: 5209: template 5209: struct __is_convertible_to_basic_ostream 5209: : __is_convertible_to_basic_ostream_impl<_Tp> 5209: { 5209: public: 5209: using type = __not_::__ostream_type>>; 5209: constexpr static bool value = type::value; 5209: }; 5209: 5209: template 5209: struct __is_insertable : false_type {}; 5209: 5209: template 5209: struct __is_insertable<_Ostream, _Tp, 5209: __void_t() 5209: << declval())>> 5209: : true_type {}; 5209: 5209: template 5209: using __rvalue_ostream_type = 5209: typename __is_convertible_to_basic_ostream< 5209: _Ostream>::__ostream_type; 5209: # 765 "/usr/include/c++/10/ostream" 3 5209: template 5209: inline 5209: typename enable_if<__and_<__not_>, 5209: __is_convertible_to_basic_ostream<_Ostream>, 5209: __is_insertable< 5209: __rvalue_ostream_type<_Ostream>, 5209: const _Tp&>>::value, 5209: __rvalue_ostream_type<_Ostream>>::type 5209: operator<<(_Ostream&& __os, const _Tp& __x) 5209: { 5209: __rvalue_ostream_type<_Ostream> __ret_os = __os; 5209: __ret_os << __x; 5209: return __ret_os; 5209: } 5209: 5209: 5209: 5209: } 5209: 5209: # 1 "/usr/include/c++/10/bits/ostream.tcc" 1 3 5209: # 37 "/usr/include/c++/10/bits/ostream.tcc" 3 5209: 5209: # 38 "/usr/include/c++/10/bits/ostream.tcc" 3 5209: 5209: 5209: 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: template 5209: basic_ostream<_CharT, _Traits>::sentry:: 5209: sentry(basic_ostream<_CharT, _Traits>& __os) 5209: : _M_ok(false), _M_os(__os) 5209: { 5209: 5209: if (__os.tie() && __os.good()) 5209: __os.tie()->flush(); 5209: 5209: if (__os.good()) 5209: _M_ok = true; 5209: else 5209: __os.setstate(ios_base::failbit); 5209: } 5209: 5209: template 5209: template 5209: basic_ostream<_CharT, _Traits>& 5209: basic_ostream<_CharT, _Traits>:: 5209: _M_insert(_ValueT __v) 5209: { 5209: sentry __cerb(*this); 5209: if (__cerb) 5209: { 5209: ios_base::iostate __err = ios_base::goodbit; 5209: try 5209: { 5209: const __num_put_type& __np = __check_facet(this->_M_num_put); 5209: if (__np.put(*this, *this, this->fill(), __v).failed()) 5209: __err |= ios_base::badbit; 5209: } 5209: catch(__cxxabiv1::__forced_unwind&) 5209: { 5209: this->_M_setstate(ios_base::badbit); 5209: throw; 5209: } 5209: catch(...) 5209: { this->_M_setstate(ios_base::badbit); } 5209: if (__err) 5209: this->setstate(__err); 5209: } 5209: return *this; 5209: } 5209: 5209: template 5209: basic_ostream<_CharT, _Traits>& 5209: basic_ostream<_CharT, _Traits>:: 5209: operator<<(short __n) 5209: { 5209: 5209: 5209: const ios_base::fmtflags __fmt = this->flags() & ios_base::basefield; 5209: if (__fmt == ios_base::oct || __fmt == ios_base::hex) 5209: return _M_insert(static_cast(static_cast(__n))); 5209: else 5209: return _M_insert(static_cast(__n)); 5209: } 5209: 5209: template 5209: basic_ostream<_CharT, _Traits>& 5209: basic_ostream<_CharT, _Traits>:: 5209: operator<<(int __n) 5209: { 5209: 5209: 5209: const ios_base::fmtflags __fmt = this->flags() & ios_base::basefield; 5209: if (__fmt == ios_base::oct || __fmt == ios_base::hex) 5209: return _M_insert(static_cast(static_cast(__n))); 5209: else 5209: return _M_insert(static_cast(__n)); 5209: } 5209: 5209: template 5209: basic_ostream<_CharT, _Traits>& 5209: basic_ostream<_CharT, _Traits>:: 5209: operator<<(__streambuf_type* __sbin) 5209: { 5209: ios_base::iostate __err = ios_base::goodbit; 5209: sentry __cerb(*this); 5209: if (__cerb && __sbin) 5209: { 5209: try 5209: { 5209: if (!__copy_streambufs(__sbin, this->rdbuf())) 5209: __err |= ios_base::failbit; 5209: } 5209: catch(__cxxabiv1::__forced_unwind&) 5209: { 5209: this->_M_setstate(ios_base::badbit); 5209: throw; 5209: } 5209: catch(...) 5209: { this->_M_setstate(ios_base::failbit); } 5209: } 5209: else if (!__sbin) 5209: __err |= ios_base::badbit; 5209: if (__err) 5209: this->setstate(__err); 5209: return *this; 5209: } 5209: 5209: template 5209: basic_ostream<_CharT, _Traits>& 5209: basic_ostream<_CharT, _Traits>:: 5209: put(char_type __c) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: sentry __cerb(*this); 5209: if (__cerb) 5209: { 5209: ios_base::iostate __err = ios_base::goodbit; 5209: try 5209: { 5209: const int_type __put = this->rdbuf()->sputc(__c); 5209: if (traits_type::eq_int_type(__put, traits_type::eof())) 5209: __err |= ios_base::badbit; 5209: } 5209: catch(__cxxabiv1::__forced_unwind&) 5209: { 5209: this->_M_setstate(ios_base::badbit); 5209: throw; 5209: } 5209: catch(...) 5209: { this->_M_setstate(ios_base::badbit); } 5209: if (__err) 5209: this->setstate(__err); 5209: } 5209: return *this; 5209: } 5209: 5209: template 5209: basic_ostream<_CharT, _Traits>& 5209: basic_ostream<_CharT, _Traits>:: 5209: write(const _CharT* __s, streamsize __n) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: sentry __cerb(*this); 5209: if (__cerb) 5209: { 5209: try 5209: { _M_write(__s, __n); } 5209: catch(__cxxabiv1::__forced_unwind&) 5209: { 5209: this->_M_setstate(ios_base::badbit); 5209: throw; 5209: } 5209: catch(...) 5209: { this->_M_setstate(ios_base::badbit); } 5209: } 5209: return *this; 5209: } 5209: 5209: template 5209: basic_ostream<_CharT, _Traits>& 5209: basic_ostream<_CharT, _Traits>:: 5209: flush() 5209: { 5209: 5209: 5209: 5209: ios_base::iostate __err = ios_base::goodbit; 5209: try 5209: { 5209: if (this->rdbuf() && this->rdbuf()->pubsync() == -1) 5209: __err |= ios_base::badbit; 5209: } 5209: catch(__cxxabiv1::__forced_unwind&) 5209: { 5209: this->_M_setstate(ios_base::badbit); 5209: throw; 5209: } 5209: catch(...) 5209: { this->_M_setstate(ios_base::badbit); } 5209: if (__err) 5209: this->setstate(__err); 5209: return *this; 5209: } 5209: 5209: template 5209: typename basic_ostream<_CharT, _Traits>::pos_type 5209: basic_ostream<_CharT, _Traits>:: 5209: tellp() 5209: { 5209: pos_type __ret = pos_type(-1); 5209: try 5209: { 5209: if (!this->fail()) 5209: __ret = this->rdbuf()->pubseekoff(0, ios_base::cur, ios_base::out); 5209: } 5209: catch(__cxxabiv1::__forced_unwind&) 5209: { 5209: this->_M_setstate(ios_base::badbit); 5209: throw; 5209: } 5209: catch(...) 5209: { this->_M_setstate(ios_base::badbit); } 5209: return __ret; 5209: } 5209: 5209: template 5209: basic_ostream<_CharT, _Traits>& 5209: basic_ostream<_CharT, _Traits>:: 5209: seekp(pos_type __pos) 5209: { 5209: ios_base::iostate __err = ios_base::goodbit; 5209: try 5209: { 5209: if (!this->fail()) 5209: { 5209: 5209: 5209: const pos_type __p = this->rdbuf()->pubseekpos(__pos, 5209: ios_base::out); 5209: 5209: 5209: if (__p == pos_type(off_type(-1))) 5209: __err |= ios_base::failbit; 5209: } 5209: } 5209: catch(__cxxabiv1::__forced_unwind&) 5209: { 5209: this->_M_setstate(ios_base::badbit); 5209: throw; 5209: } 5209: catch(...) 5209: { this->_M_setstate(ios_base::badbit); } 5209: if (__err) 5209: this->setstate(__err); 5209: return *this; 5209: } 5209: 5209: template 5209: basic_ostream<_CharT, _Traits>& 5209: basic_ostream<_CharT, _Traits>:: 5209: seekp(off_type __off, ios_base::seekdir __dir) 5209: { 5209: ios_base::iostate __err = ios_base::goodbit; 5209: try 5209: { 5209: if (!this->fail()) 5209: { 5209: 5209: 5209: const pos_type __p = this->rdbuf()->pubseekoff(__off, __dir, 5209: ios_base::out); 5209: 5209: 5209: if (__p == pos_type(off_type(-1))) 5209: __err |= ios_base::failbit; 5209: } 5209: } 5209: catch(__cxxabiv1::__forced_unwind&) 5209: { 5209: this->_M_setstate(ios_base::badbit); 5209: throw; 5209: } 5209: catch(...) 5209: { this->_M_setstate(ios_base::badbit); } 5209: if (__err) 5209: this->setstate(__err); 5209: return *this; 5209: } 5209: 5209: template 5209: basic_ostream<_CharT, _Traits>& 5209: operator<<(basic_ostream<_CharT, _Traits>& __out, const char* __s) 5209: { 5209: if (!__s) 5209: __out.setstate(ios_base::badbit); 5209: else 5209: { 5209: 5209: 5209: const size_t __clen = char_traits::length(__s); 5209: try 5209: { 5209: struct __ptr_guard 5209: { 5209: _CharT *__p; 5209: __ptr_guard (_CharT *__ip): __p(__ip) { } 5209: ~__ptr_guard() { delete[] __p; } 5209: _CharT* __get() { return __p; } 5209: } __pg (new _CharT[__clen]); 5209: 5209: _CharT *__ws = __pg.__get(); 5209: for (size_t __i = 0; __i < __clen; ++__i) 5209: __ws[__i] = __out.widen(__s[__i]); 5209: __ostream_insert(__out, __ws, __clen); 5209: } 5209: catch(__cxxabiv1::__forced_unwind&) 5209: { 5209: __out._M_setstate(ios_base::badbit); 5209: throw; 5209: } 5209: catch(...) 5209: { __out._M_setstate(ios_base::badbit); } 5209: } 5209: return __out; 5209: } 5209: 5209: 5209: 5209: 5209: extern template class basic_ostream; 5209: extern template ostream& endl(ostream&); 5209: extern template ostream& ends(ostream&); 5209: extern template ostream& flush(ostream&); 5209: extern template ostream& operator<<(ostream&, char); 5209: extern template ostream& operator<<(ostream&, unsigned char); 5209: extern template ostream& operator<<(ostream&, signed char); 5209: extern template ostream& operator<<(ostream&, const char*); 5209: extern template ostream& operator<<(ostream&, const unsigned char*); 5209: extern template ostream& operator<<(ostream&, const signed char*); 5209: 5209: extern template ostream& ostream::_M_insert(long); 5209: extern template ostream& ostream::_M_insert(unsigned long); 5209: extern template ostream& ostream::_M_insert(bool); 5209: 5209: extern template ostream& ostream::_M_insert(long long); 5209: extern template ostream& ostream::_M_insert(unsigned long long); 5209: 5209: extern template ostream& ostream::_M_insert(double); 5209: extern template ostream& ostream::_M_insert(long double); 5209: extern template ostream& ostream::_M_insert(const void*); 5209: 5209: 5209: extern template class basic_ostream; 5209: extern template wostream& endl(wostream&); 5209: extern template wostream& ends(wostream&); 5209: extern template wostream& flush(wostream&); 5209: extern template wostream& operator<<(wostream&, wchar_t); 5209: extern template wostream& operator<<(wostream&, char); 5209: extern template wostream& operator<<(wostream&, const wchar_t*); 5209: extern template wostream& operator<<(wostream&, const char*); 5209: 5209: extern template wostream& wostream::_M_insert(long); 5209: extern template wostream& wostream::_M_insert(unsigned long); 5209: extern template wostream& wostream::_M_insert(bool); 5209: 5209: extern template wostream& wostream::_M_insert(long long); 5209: extern template wostream& wostream::_M_insert(unsigned long long); 5209: 5209: extern template wostream& wostream::_M_insert(double); 5209: extern template wostream& wostream::_M_insert(long double); 5209: extern template wostream& wostream::_M_insert(const void*); 5209: 5209: 5209: 5209: 5209: } 5209: # 785 "/usr/include/c++/10/ostream" 2 3 5209: # 40 "/usr/include/c++/10/iostream" 2 3 5209: # 1 "/usr/include/c++/10/istream" 1 3 5209: # 36 "/usr/include/c++/10/istream" 3 5209: 5209: # 37 "/usr/include/c++/10/istream" 3 5209: 5209: 5209: 5209: 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: # 57 "/usr/include/c++/10/istream" 3 5209: template 5209: class basic_istream : virtual public basic_ios<_CharT, _Traits> 5209: { 5209: public: 5209: 5209: typedef _CharT char_type; 5209: typedef typename _Traits::int_type int_type; 5209: typedef typename _Traits::pos_type pos_type; 5209: typedef typename _Traits::off_type off_type; 5209: typedef _Traits traits_type; 5209: 5209: 5209: typedef basic_streambuf<_CharT, _Traits> __streambuf_type; 5209: typedef basic_ios<_CharT, _Traits> __ios_type; 5209: typedef basic_istream<_CharT, _Traits> __istream_type; 5209: typedef num_get<_CharT, istreambuf_iterator<_CharT, _Traits> > 5209: __num_get_type; 5209: typedef ctype<_CharT> __ctype_type; 5209: 5209: protected: 5209: 5209: 5209: 5209: 5209: 5209: streamsize _M_gcount; 5209: 5209: public: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: explicit 5209: basic_istream(__streambuf_type* __sb) 5209: : _M_gcount(streamsize(0)) 5209: { this->init(__sb); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: virtual 5209: ~basic_istream() 5209: { _M_gcount = streamsize(0); } 5209: 5209: 5209: class sentry; 5209: friend class sentry; 5209: # 119 "/usr/include/c++/10/istream" 3 5209: __istream_type& 5209: operator>>(__istream_type& (*__pf)(__istream_type&)) 5209: { return __pf(*this); } 5209: 5209: __istream_type& 5209: operator>>(__ios_type& (*__pf)(__ios_type&)) 5209: { 5209: __pf(*this); 5209: return *this; 5209: } 5209: 5209: __istream_type& 5209: operator>>(ios_base& (*__pf)(ios_base&)) 5209: { 5209: __pf(*this); 5209: return *this; 5209: } 5209: # 167 "/usr/include/c++/10/istream" 3 5209: __istream_type& 5209: operator>>(bool& __n) 5209: { return _M_extract(__n); } 5209: 5209: __istream_type& 5209: operator>>(short& __n); 5209: 5209: __istream_type& 5209: operator>>(unsigned short& __n) 5209: { return _M_extract(__n); } 5209: 5209: __istream_type& 5209: operator>>(int& __n); 5209: 5209: __istream_type& 5209: operator>>(unsigned int& __n) 5209: { return _M_extract(__n); } 5209: 5209: __istream_type& 5209: operator>>(long& __n) 5209: { return _M_extract(__n); } 5209: 5209: __istream_type& 5209: operator>>(unsigned long& __n) 5209: { return _M_extract(__n); } 5209: 5209: 5209: __istream_type& 5209: operator>>(long long& __n) 5209: { return _M_extract(__n); } 5209: 5209: __istream_type& 5209: operator>>(unsigned long long& __n) 5209: { return _M_extract(__n); } 5209: # 213 "/usr/include/c++/10/istream" 3 5209: __istream_type& 5209: operator>>(float& __f) 5209: { return _M_extract(__f); } 5209: 5209: __istream_type& 5209: operator>>(double& __f) 5209: { return _M_extract(__f); } 5209: 5209: __istream_type& 5209: operator>>(long double& __f) 5209: { return _M_extract(__f); } 5209: # 234 "/usr/include/c++/10/istream" 3 5209: __istream_type& 5209: operator>>(void*& __p) 5209: { return _M_extract(__p); } 5209: # 258 "/usr/include/c++/10/istream" 3 5209: __istream_type& 5209: operator>>(__streambuf_type* __sb); 5209: # 268 "/usr/include/c++/10/istream" 3 5209: streamsize 5209: gcount() const 5209: { return _M_gcount; } 5209: # 301 "/usr/include/c++/10/istream" 3 5209: int_type 5209: get(); 5209: # 315 "/usr/include/c++/10/istream" 3 5209: __istream_type& 5209: get(char_type& __c); 5209: # 342 "/usr/include/c++/10/istream" 3 5209: __istream_type& 5209: get(char_type* __s, streamsize __n, char_type __delim); 5209: # 353 "/usr/include/c++/10/istream" 3 5209: __istream_type& 5209: get(char_type* __s, streamsize __n) 5209: { return this->get(__s, __n, this->widen('\n')); } 5209: # 376 "/usr/include/c++/10/istream" 3 5209: __istream_type& 5209: get(__streambuf_type& __sb, char_type __delim); 5209: # 386 "/usr/include/c++/10/istream" 3 5209: __istream_type& 5209: get(__streambuf_type& __sb) 5209: { return this->get(__sb, this->widen('\n')); } 5209: # 415 "/usr/include/c++/10/istream" 3 5209: __istream_type& 5209: getline(char_type* __s, streamsize __n, char_type __delim); 5209: # 426 "/usr/include/c++/10/istream" 3 5209: __istream_type& 5209: getline(char_type* __s, streamsize __n) 5209: { return this->getline(__s, __n, this->widen('\n')); } 5209: # 450 "/usr/include/c++/10/istream" 3 5209: __istream_type& 5209: ignore(streamsize __n, int_type __delim); 5209: 5209: __istream_type& 5209: ignore(streamsize __n); 5209: 5209: __istream_type& 5209: ignore(); 5209: # 467 "/usr/include/c++/10/istream" 3 5209: int_type 5209: peek(); 5209: # 485 "/usr/include/c++/10/istream" 3 5209: __istream_type& 5209: read(char_type* __s, streamsize __n); 5209: # 504 "/usr/include/c++/10/istream" 3 5209: streamsize 5209: readsome(char_type* __s, streamsize __n); 5209: # 521 "/usr/include/c++/10/istream" 3 5209: __istream_type& 5209: putback(char_type __c); 5209: # 537 "/usr/include/c++/10/istream" 3 5209: __istream_type& 5209: unget(); 5209: # 555 "/usr/include/c++/10/istream" 3 5209: int 5209: sync(); 5209: # 570 "/usr/include/c++/10/istream" 3 5209: pos_type 5209: tellg(); 5209: # 585 "/usr/include/c++/10/istream" 3 5209: __istream_type& 5209: seekg(pos_type); 5209: # 601 "/usr/include/c++/10/istream" 3 5209: __istream_type& 5209: seekg(off_type, ios_base::seekdir); 5209: 5209: 5209: protected: 5209: basic_istream() 5209: : _M_gcount(streamsize(0)) 5209: { this->init(0); } 5209: 5209: 5209: basic_istream(const basic_istream&) = delete; 5209: 5209: basic_istream(basic_istream&& __rhs) 5209: : __ios_type(), _M_gcount(__rhs._M_gcount) 5209: { 5209: __ios_type::move(__rhs); 5209: __rhs._M_gcount = 0; 5209: } 5209: 5209: 5209: 5209: basic_istream& operator=(const basic_istream&) = delete; 5209: 5209: basic_istream& 5209: operator=(basic_istream&& __rhs) 5209: { 5209: swap(__rhs); 5209: return *this; 5209: } 5209: 5209: void 5209: swap(basic_istream& __rhs) 5209: { 5209: __ios_type::swap(__rhs); 5209: std::swap(_M_gcount, __rhs._M_gcount); 5209: } 5209: 5209: 5209: template 5209: __istream_type& 5209: _M_extract(_ValueT& __v); 5209: }; 5209: 5209: 5209: template<> 5209: basic_istream& 5209: basic_istream:: 5209: getline(char_type* __s, streamsize __n, char_type __delim); 5209: 5209: template<> 5209: basic_istream& 5209: basic_istream:: 5209: ignore(streamsize __n); 5209: 5209: template<> 5209: basic_istream& 5209: basic_istream:: 5209: ignore(streamsize __n, int_type __delim); 5209: 5209: 5209: template<> 5209: basic_istream& 5209: basic_istream:: 5209: getline(char_type* __s, streamsize __n, char_type __delim); 5209: 5209: template<> 5209: basic_istream& 5209: basic_istream:: 5209: ignore(streamsize __n); 5209: 5209: template<> 5209: basic_istream& 5209: basic_istream:: 5209: ignore(streamsize __n, int_type __delim); 5209: # 685 "/usr/include/c++/10/istream" 3 5209: template 5209: class basic_istream<_CharT, _Traits>::sentry 5209: { 5209: 5209: bool _M_ok; 5209: 5209: public: 5209: 5209: typedef _Traits traits_type; 5209: typedef basic_streambuf<_CharT, _Traits> __streambuf_type; 5209: typedef basic_istream<_CharT, _Traits> __istream_type; 5209: typedef typename __istream_type::__ctype_type __ctype_type; 5209: typedef typename _Traits::int_type __int_type; 5209: # 721 "/usr/include/c++/10/istream" 3 5209: explicit 5209: sentry(basic_istream<_CharT, _Traits>& __is, bool __noskipws = false); 5209: # 732 "/usr/include/c++/10/istream" 3 5209: explicit 5209: 5209: operator bool() const 5209: { return _M_ok; } 5209: }; 5209: # 750 "/usr/include/c++/10/istream" 3 5209: template 5209: basic_istream<_CharT, _Traits>& 5209: operator>>(basic_istream<_CharT, _Traits>& __in, _CharT& __c); 5209: 5209: template 5209: inline basic_istream& 5209: operator>>(basic_istream& __in, unsigned char& __c) 5209: { return (__in >> reinterpret_cast(__c)); } 5209: 5209: template 5209: inline basic_istream& 5209: operator>>(basic_istream& __in, signed char& __c) 5209: { return (__in >> reinterpret_cast(__c)); } 5209: # 792 "/usr/include/c++/10/istream" 3 5209: template 5209: basic_istream<_CharT, _Traits>& 5209: operator>>(basic_istream<_CharT, _Traits>& __in, _CharT* __s); 5209: 5209: 5209: template<> 5209: basic_istream& 5209: operator>>(basic_istream& __in, char* __s); 5209: 5209: template 5209: inline basic_istream& 5209: operator>>(basic_istream& __in, unsigned char* __s) 5209: { return (__in >> reinterpret_cast(__s)); } 5209: 5209: template 5209: inline basic_istream& 5209: operator>>(basic_istream& __in, signed char* __s) 5209: { return (__in >> reinterpret_cast(__s)); } 5209: # 823 "/usr/include/c++/10/istream" 3 5209: template 5209: class basic_iostream 5209: : public basic_istream<_CharT, _Traits>, 5209: public basic_ostream<_CharT, _Traits> 5209: { 5209: public: 5209: 5209: 5209: 5209: typedef _CharT char_type; 5209: typedef typename _Traits::int_type int_type; 5209: typedef typename _Traits::pos_type pos_type; 5209: typedef typename _Traits::off_type off_type; 5209: typedef _Traits traits_type; 5209: 5209: 5209: typedef basic_istream<_CharT, _Traits> __istream_type; 5209: typedef basic_ostream<_CharT, _Traits> __ostream_type; 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: explicit 5209: basic_iostream(basic_streambuf<_CharT, _Traits>* __sb) 5209: : __istream_type(__sb), __ostream_type(__sb) { } 5209: 5209: 5209: 5209: 5209: virtual 5209: ~basic_iostream() { } 5209: 5209: protected: 5209: basic_iostream() 5209: : __istream_type(), __ostream_type() { } 5209: 5209: 5209: basic_iostream(const basic_iostream&) = delete; 5209: 5209: basic_iostream(basic_iostream&& __rhs) 5209: : __istream_type(std::move(__rhs)), __ostream_type(*this) 5209: { } 5209: 5209: 5209: 5209: basic_iostream& operator=(const basic_iostream&) = delete; 5209: 5209: basic_iostream& 5209: operator=(basic_iostream&& __rhs) 5209: { 5209: swap(__rhs); 5209: return *this; 5209: } 5209: 5209: void 5209: swap(basic_iostream& __rhs) 5209: { __istream_type::swap(__rhs); } 5209: 5209: }; 5209: # 906 "/usr/include/c++/10/istream" 3 5209: template 5209: basic_istream<_CharT, _Traits>& 5209: ws(basic_istream<_CharT, _Traits>& __is); 5209: 5209: 5209: template 5209: basic_istream<_Ch, _Up>& 5209: __is_convertible_to_basic_istream_test(basic_istream<_Ch, _Up>*); 5209: 5209: template 5209: struct __is_convertible_to_basic_istream_impl 5209: { 5209: using __istream_type = void; 5209: }; 5209: 5209: template 5209: using __do_is_convertible_to_basic_istream_impl = 5209: decltype(__is_convertible_to_basic_istream_test 5209: (declval::type*>())); 5209: 5209: template 5209: struct __is_convertible_to_basic_istream_impl 5209: <_Tp, 5209: __void_t<__do_is_convertible_to_basic_istream_impl<_Tp>>> 5209: { 5209: using __istream_type = 5209: __do_is_convertible_to_basic_istream_impl<_Tp>; 5209: }; 5209: 5209: template 5209: struct __is_convertible_to_basic_istream 5209: : __is_convertible_to_basic_istream_impl<_Tp> 5209: { 5209: public: 5209: using type = __not_::__istream_type>>; 5209: constexpr static bool value = type::value; 5209: }; 5209: 5209: template 5209: struct __is_extractable : false_type {}; 5209: 5209: template 5209: struct __is_extractable<_Istream, _Tp, 5209: __void_t() 5209: >> declval<_Tp>())>> 5209: : true_type {}; 5209: 5209: template 5209: using __rvalue_istream_type = 5209: typename __is_convertible_to_basic_istream< 5209: _Istream>::__istream_type; 5209: # 972 "/usr/include/c++/10/istream" 3 5209: template 5209: inline 5209: typename enable_if<__and_<__not_>, 5209: __is_convertible_to_basic_istream<_Istream>, 5209: __is_extractable< 5209: __rvalue_istream_type<_Istream>, 5209: _Tp&&>>::value, 5209: __rvalue_istream_type<_Istream>>::type 5209: operator>>(_Istream&& __is, _Tp&& __x) 5209: { 5209: __rvalue_istream_type<_Istream> __ret_is = __is; 5209: __ret_is >> std::forward<_Tp>(__x); 5209: return __ret_is; 5209: } 5209: 5209: 5209: 5209: } 5209: 5209: # 1 "/usr/include/c++/10/bits/istream.tcc" 1 3 5209: # 37 "/usr/include/c++/10/bits/istream.tcc" 3 5209: 5209: # 38 "/usr/include/c++/10/bits/istream.tcc" 3 5209: 5209: 5209: 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: template 5209: basic_istream<_CharT, _Traits>::sentry:: 5209: sentry(basic_istream<_CharT, _Traits>& __in, bool __noskip) : _M_ok(false) 5209: { 5209: ios_base::iostate __err = ios_base::goodbit; 5209: if (__in.good()) 5209: try 5209: { 5209: if (__in.tie()) 5209: __in.tie()->flush(); 5209: if (!__noskip && bool(__in.flags() & ios_base::skipws)) 5209: { 5209: const __int_type __eof = traits_type::eof(); 5209: __streambuf_type* __sb = __in.rdbuf(); 5209: __int_type __c = __sb->sgetc(); 5209: 5209: const __ctype_type& __ct = __check_facet(__in._M_ctype); 5209: while (!traits_type::eq_int_type(__c, __eof) 5209: && __ct.is(ctype_base::space, 5209: traits_type::to_char_type(__c))) 5209: __c = __sb->snextc(); 5209: 5209: 5209: 5209: 5209: if (traits_type::eq_int_type(__c, __eof)) 5209: __err |= ios_base::eofbit; 5209: } 5209: } 5209: catch(__cxxabiv1::__forced_unwind&) 5209: { 5209: __in._M_setstate(ios_base::badbit); 5209: throw; 5209: } 5209: catch(...) 5209: { __in._M_setstate(ios_base::badbit); } 5209: 5209: if (__in.good() && __err == ios_base::goodbit) 5209: _M_ok = true; 5209: else 5209: { 5209: __err |= ios_base::failbit; 5209: __in.setstate(__err); 5209: } 5209: } 5209: 5209: template 5209: template 5209: basic_istream<_CharT, _Traits>& 5209: basic_istream<_CharT, _Traits>:: 5209: _M_extract(_ValueT& __v) 5209: { 5209: sentry __cerb(*this, false); 5209: if (__cerb) 5209: { 5209: ios_base::iostate __err = ios_base::goodbit; 5209: try 5209: { 5209: const __num_get_type& __ng = __check_facet(this->_M_num_get); 5209: __ng.get(*this, 0, *this, __err, __v); 5209: } 5209: catch(__cxxabiv1::__forced_unwind&) 5209: { 5209: this->_M_setstate(ios_base::badbit); 5209: throw; 5209: } 5209: catch(...) 5209: { this->_M_setstate(ios_base::badbit); } 5209: if (__err) 5209: this->setstate(__err); 5209: } 5209: return *this; 5209: } 5209: 5209: template 5209: basic_istream<_CharT, _Traits>& 5209: basic_istream<_CharT, _Traits>:: 5209: operator>>(short& __n) 5209: { 5209: 5209: 5209: sentry __cerb(*this, false); 5209: if (__cerb) 5209: { 5209: ios_base::iostate __err = ios_base::goodbit; 5209: try 5209: { 5209: long __l; 5209: const __num_get_type& __ng = __check_facet(this->_M_num_get); 5209: __ng.get(*this, 0, *this, __err, __l); 5209: 5209: 5209: 5209: if (__l < __gnu_cxx::__numeric_traits::__min) 5209: { 5209: __err |= ios_base::failbit; 5209: __n = __gnu_cxx::__numeric_traits::__min; 5209: } 5209: else if (__l > __gnu_cxx::__numeric_traits::__max) 5209: { 5209: __err |= ios_base::failbit; 5209: __n = __gnu_cxx::__numeric_traits::__max; 5209: } 5209: else 5209: __n = short(__l); 5209: } 5209: catch(__cxxabiv1::__forced_unwind&) 5209: { 5209: this->_M_setstate(ios_base::badbit); 5209: throw; 5209: } 5209: catch(...) 5209: { this->_M_setstate(ios_base::badbit); } 5209: if (__err) 5209: this->setstate(__err); 5209: } 5209: return *this; 5209: } 5209: 5209: template 5209: basic_istream<_CharT, _Traits>& 5209: basic_istream<_CharT, _Traits>:: 5209: operator>>(int& __n) 5209: { 5209: 5209: 5209: sentry __cerb(*this, false); 5209: if (__cerb) 5209: { 5209: ios_base::iostate __err = ios_base::goodbit; 5209: try 5209: { 5209: long __l; 5209: const __num_get_type& __ng = __check_facet(this->_M_num_get); 5209: __ng.get(*this, 0, *this, __err, __l); 5209: 5209: 5209: 5209: if (__l < __gnu_cxx::__numeric_traits::__min) 5209: { 5209: __err |= ios_base::failbit; 5209: __n = __gnu_cxx::__numeric_traits::__min; 5209: } 5209: else if (__l > __gnu_cxx::__numeric_traits::__max) 5209: { 5209: __err |= ios_base::failbit; 5209: __n = __gnu_cxx::__numeric_traits::__max; 5209: } 5209: else 5209: __n = int(__l); 5209: } 5209: catch(__cxxabiv1::__forced_unwind&) 5209: { 5209: this->_M_setstate(ios_base::badbit); 5209: throw; 5209: } 5209: catch(...) 5209: { this->_M_setstate(ios_base::badbit); } 5209: if (__err) 5209: this->setstate(__err); 5209: } 5209: return *this; 5209: } 5209: 5209: template 5209: basic_istream<_CharT, _Traits>& 5209: basic_istream<_CharT, _Traits>:: 5209: operator>>(__streambuf_type* __sbout) 5209: { 5209: ios_base::iostate __err = ios_base::goodbit; 5209: sentry __cerb(*this, false); 5209: if (__cerb && __sbout) 5209: { 5209: try 5209: { 5209: bool __ineof; 5209: if (!__copy_streambufs_eof(this->rdbuf(), __sbout, __ineof)) 5209: __err |= ios_base::failbit; 5209: if (__ineof) 5209: __err |= ios_base::eofbit; 5209: } 5209: catch(__cxxabiv1::__forced_unwind&) 5209: { 5209: this->_M_setstate(ios_base::failbit); 5209: throw; 5209: } 5209: catch(...) 5209: { this->_M_setstate(ios_base::failbit); } 5209: } 5209: else if (!__sbout) 5209: __err |= ios_base::failbit; 5209: if (__err) 5209: this->setstate(__err); 5209: return *this; 5209: } 5209: 5209: template 5209: typename basic_istream<_CharT, _Traits>::int_type 5209: basic_istream<_CharT, _Traits>:: 5209: get(void) 5209: { 5209: const int_type __eof = traits_type::eof(); 5209: int_type __c = __eof; 5209: _M_gcount = 0; 5209: ios_base::iostate __err = ios_base::goodbit; 5209: sentry __cerb(*this, true); 5209: if (__cerb) 5209: { 5209: try 5209: { 5209: __c = this->rdbuf()->sbumpc(); 5209: 5209: if (!traits_type::eq_int_type(__c, __eof)) 5209: _M_gcount = 1; 5209: else 5209: __err |= ios_base::eofbit; 5209: } 5209: catch(__cxxabiv1::__forced_unwind&) 5209: { 5209: this->_M_setstate(ios_base::badbit); 5209: throw; 5209: } 5209: catch(...) 5209: { this->_M_setstate(ios_base::badbit); } 5209: } 5209: if (!_M_gcount) 5209: __err |= ios_base::failbit; 5209: if (__err) 5209: this->setstate(__err); 5209: return __c; 5209: } 5209: 5209: template 5209: basic_istream<_CharT, _Traits>& 5209: basic_istream<_CharT, _Traits>:: 5209: get(char_type& __c) 5209: { 5209: _M_gcount = 0; 5209: ios_base::iostate __err = ios_base::goodbit; 5209: sentry __cerb(*this, true); 5209: if (__cerb) 5209: { 5209: try 5209: { 5209: const int_type __cb = this->rdbuf()->sbumpc(); 5209: 5209: if (!traits_type::eq_int_type(__cb, traits_type::eof())) 5209: { 5209: _M_gcount = 1; 5209: __c = traits_type::to_char_type(__cb); 5209: } 5209: else 5209: __err |= ios_base::eofbit; 5209: } 5209: catch(__cxxabiv1::__forced_unwind&) 5209: { 5209: this->_M_setstate(ios_base::badbit); 5209: throw; 5209: } 5209: catch(...) 5209: { this->_M_setstate(ios_base::badbit); } 5209: } 5209: if (!_M_gcount) 5209: __err |= ios_base::failbit; 5209: if (__err) 5209: this->setstate(__err); 5209: return *this; 5209: } 5209: 5209: template 5209: basic_istream<_CharT, _Traits>& 5209: basic_istream<_CharT, _Traits>:: 5209: get(char_type* __s, streamsize __n, char_type __delim) 5209: { 5209: _M_gcount = 0; 5209: ios_base::iostate __err = ios_base::goodbit; 5209: sentry __cerb(*this, true); 5209: if (__cerb) 5209: { 5209: try 5209: { 5209: const int_type __idelim = traits_type::to_int_type(__delim); 5209: const int_type __eof = traits_type::eof(); 5209: __streambuf_type* __sb = this->rdbuf(); 5209: int_type __c = __sb->sgetc(); 5209: 5209: while (_M_gcount + 1 < __n 5209: && !traits_type::eq_int_type(__c, __eof) 5209: && !traits_type::eq_int_type(__c, __idelim)) 5209: { 5209: *__s++ = traits_type::to_char_type(__c); 5209: ++_M_gcount; 5209: __c = __sb->snextc(); 5209: } 5209: if (traits_type::eq_int_type(__c, __eof)) 5209: __err |= ios_base::eofbit; 5209: } 5209: catch(__cxxabiv1::__forced_unwind&) 5209: { 5209: this->_M_setstate(ios_base::badbit); 5209: throw; 5209: } 5209: catch(...) 5209: { this->_M_setstate(ios_base::badbit); } 5209: } 5209: 5209: 5209: if (__n > 0) 5209: *__s = char_type(); 5209: if (!_M_gcount) 5209: __err |= ios_base::failbit; 5209: if (__err) 5209: this->setstate(__err); 5209: return *this; 5209: } 5209: 5209: template 5209: basic_istream<_CharT, _Traits>& 5209: basic_istream<_CharT, _Traits>:: 5209: get(__streambuf_type& __sb, char_type __delim) 5209: { 5209: _M_gcount = 0; 5209: ios_base::iostate __err = ios_base::goodbit; 5209: sentry __cerb(*this, true); 5209: if (__cerb) 5209: { 5209: try 5209: { 5209: const int_type __idelim = traits_type::to_int_type(__delim); 5209: const int_type __eof = traits_type::eof(); 5209: __streambuf_type* __this_sb = this->rdbuf(); 5209: int_type __c = __this_sb->sgetc(); 5209: char_type __c2 = traits_type::to_char_type(__c); 5209: 5209: while (!traits_type::eq_int_type(__c, __eof) 5209: && !traits_type::eq_int_type(__c, __idelim) 5209: && !traits_type::eq_int_type(__sb.sputc(__c2), __eof)) 5209: { 5209: ++_M_gcount; 5209: __c = __this_sb->snextc(); 5209: __c2 = traits_type::to_char_type(__c); 5209: } 5209: if (traits_type::eq_int_type(__c, __eof)) 5209: __err |= ios_base::eofbit; 5209: } 5209: catch(__cxxabiv1::__forced_unwind&) 5209: { 5209: this->_M_setstate(ios_base::badbit); 5209: throw; 5209: } 5209: catch(...) 5209: { this->_M_setstate(ios_base::badbit); } 5209: } 5209: if (!_M_gcount) 5209: __err |= ios_base::failbit; 5209: if (__err) 5209: this->setstate(__err); 5209: return *this; 5209: } 5209: 5209: template 5209: basic_istream<_CharT, _Traits>& 5209: basic_istream<_CharT, _Traits>:: 5209: getline(char_type* __s, streamsize __n, char_type __delim) 5209: { 5209: _M_gcount = 0; 5209: ios_base::iostate __err = ios_base::goodbit; 5209: sentry __cerb(*this, true); 5209: if (__cerb) 5209: { 5209: try 5209: { 5209: const int_type __idelim = traits_type::to_int_type(__delim); 5209: const int_type __eof = traits_type::eof(); 5209: __streambuf_type* __sb = this->rdbuf(); 5209: int_type __c = __sb->sgetc(); 5209: 5209: while (_M_gcount + 1 < __n 5209: && !traits_type::eq_int_type(__c, __eof) 5209: && !traits_type::eq_int_type(__c, __idelim)) 5209: { 5209: *__s++ = traits_type::to_char_type(__c); 5209: __c = __sb->snextc(); 5209: ++_M_gcount; 5209: } 5209: if (traits_type::eq_int_type(__c, __eof)) 5209: __err |= ios_base::eofbit; 5209: else 5209: { 5209: if (traits_type::eq_int_type(__c, __idelim)) 5209: { 5209: __sb->sbumpc(); 5209: ++_M_gcount; 5209: } 5209: else 5209: __err |= ios_base::failbit; 5209: } 5209: } 5209: catch(__cxxabiv1::__forced_unwind&) 5209: { 5209: this->_M_setstate(ios_base::badbit); 5209: throw; 5209: } 5209: catch(...) 5209: { this->_M_setstate(ios_base::badbit); } 5209: } 5209: 5209: 5209: if (__n > 0) 5209: *__s = char_type(); 5209: if (!_M_gcount) 5209: __err |= ios_base::failbit; 5209: if (__err) 5209: this->setstate(__err); 5209: return *this; 5209: } 5209: 5209: 5209: 5209: 5209: template 5209: basic_istream<_CharT, _Traits>& 5209: basic_istream<_CharT, _Traits>:: 5209: ignore(void) 5209: { 5209: _M_gcount = 0; 5209: sentry __cerb(*this, true); 5209: if (__cerb) 5209: { 5209: ios_base::iostate __err = ios_base::goodbit; 5209: try 5209: { 5209: const int_type __eof = traits_type::eof(); 5209: __streambuf_type* __sb = this->rdbuf(); 5209: 5209: if (traits_type::eq_int_type(__sb->sbumpc(), __eof)) 5209: __err |= ios_base::eofbit; 5209: else 5209: _M_gcount = 1; 5209: } 5209: catch(__cxxabiv1::__forced_unwind&) 5209: { 5209: this->_M_setstate(ios_base::badbit); 5209: throw; 5209: } 5209: catch(...) 5209: { this->_M_setstate(ios_base::badbit); } 5209: if (__err) 5209: this->setstate(__err); 5209: } 5209: return *this; 5209: } 5209: 5209: template 5209: basic_istream<_CharT, _Traits>& 5209: basic_istream<_CharT, _Traits>:: 5209: ignore(streamsize __n) 5209: { 5209: _M_gcount = 0; 5209: sentry __cerb(*this, true); 5209: if (__cerb && __n > 0) 5209: { 5209: ios_base::iostate __err = ios_base::goodbit; 5209: try 5209: { 5209: const int_type __eof = traits_type::eof(); 5209: __streambuf_type* __sb = this->rdbuf(); 5209: int_type __c = __sb->sgetc(); 5209: # 521 "/usr/include/c++/10/bits/istream.tcc" 3 5209: bool __large_ignore = false; 5209: while (true) 5209: { 5209: while (_M_gcount < __n 5209: && !traits_type::eq_int_type(__c, __eof)) 5209: { 5209: ++_M_gcount; 5209: __c = __sb->snextc(); 5209: } 5209: if (__n == __gnu_cxx::__numeric_traits::__max 5209: && !traits_type::eq_int_type(__c, __eof)) 5209: { 5209: _M_gcount = 5209: __gnu_cxx::__numeric_traits::__min; 5209: __large_ignore = true; 5209: } 5209: else 5209: break; 5209: } 5209: 5209: if (__large_ignore) 5209: _M_gcount = __gnu_cxx::__numeric_traits::__max; 5209: 5209: if (traits_type::eq_int_type(__c, __eof)) 5209: __err |= ios_base::eofbit; 5209: } 5209: catch(__cxxabiv1::__forced_unwind&) 5209: { 5209: this->_M_setstate(ios_base::badbit); 5209: throw; 5209: } 5209: catch(...) 5209: { this->_M_setstate(ios_base::badbit); } 5209: if (__err) 5209: this->setstate(__err); 5209: } 5209: return *this; 5209: } 5209: 5209: template 5209: basic_istream<_CharT, _Traits>& 5209: basic_istream<_CharT, _Traits>:: 5209: ignore(streamsize __n, int_type __delim) 5209: { 5209: _M_gcount = 0; 5209: sentry __cerb(*this, true); 5209: if (__cerb && __n > 0) 5209: { 5209: ios_base::iostate __err = ios_base::goodbit; 5209: try 5209: { 5209: const int_type __eof = traits_type::eof(); 5209: __streambuf_type* __sb = this->rdbuf(); 5209: int_type __c = __sb->sgetc(); 5209: 5209: 5209: bool __large_ignore = false; 5209: while (true) 5209: { 5209: while (_M_gcount < __n 5209: && !traits_type::eq_int_type(__c, __eof) 5209: && !traits_type::eq_int_type(__c, __delim)) 5209: { 5209: ++_M_gcount; 5209: __c = __sb->snextc(); 5209: } 5209: if (__n == __gnu_cxx::__numeric_traits::__max 5209: && !traits_type::eq_int_type(__c, __eof) 5209: && !traits_type::eq_int_type(__c, __delim)) 5209: { 5209: _M_gcount = 5209: __gnu_cxx::__numeric_traits::__min; 5209: __large_ignore = true; 5209: } 5209: else 5209: break; 5209: } 5209: 5209: if (__large_ignore) 5209: _M_gcount = __gnu_cxx::__numeric_traits::__max; 5209: 5209: if (traits_type::eq_int_type(__c, __eof)) 5209: __err |= ios_base::eofbit; 5209: else if (traits_type::eq_int_type(__c, __delim)) 5209: { 5209: if (_M_gcount 5209: < __gnu_cxx::__numeric_traits::__max) 5209: ++_M_gcount; 5209: __sb->sbumpc(); 5209: } 5209: } 5209: catch(__cxxabiv1::__forced_unwind&) 5209: { 5209: this->_M_setstate(ios_base::badbit); 5209: throw; 5209: } 5209: catch(...) 5209: { this->_M_setstate(ios_base::badbit); } 5209: if (__err) 5209: this->setstate(__err); 5209: } 5209: return *this; 5209: } 5209: 5209: template 5209: typename basic_istream<_CharT, _Traits>::int_type 5209: basic_istream<_CharT, _Traits>:: 5209: peek(void) 5209: { 5209: int_type __c = traits_type::eof(); 5209: _M_gcount = 0; 5209: sentry __cerb(*this, true); 5209: if (__cerb) 5209: { 5209: ios_base::iostate __err = ios_base::goodbit; 5209: try 5209: { 5209: __c = this->rdbuf()->sgetc(); 5209: if (traits_type::eq_int_type(__c, traits_type::eof())) 5209: __err |= ios_base::eofbit; 5209: } 5209: catch(__cxxabiv1::__forced_unwind&) 5209: { 5209: this->_M_setstate(ios_base::badbit); 5209: throw; 5209: } 5209: catch(...) 5209: { this->_M_setstate(ios_base::badbit); } 5209: if (__err) 5209: this->setstate(__err); 5209: } 5209: return __c; 5209: } 5209: 5209: template 5209: basic_istream<_CharT, _Traits>& 5209: basic_istream<_CharT, _Traits>:: 5209: read(char_type* __s, streamsize __n) 5209: { 5209: _M_gcount = 0; 5209: sentry __cerb(*this, true); 5209: if (__cerb) 5209: { 5209: ios_base::iostate __err = ios_base::goodbit; 5209: try 5209: { 5209: _M_gcount = this->rdbuf()->sgetn(__s, __n); 5209: if (_M_gcount != __n) 5209: __err |= (ios_base::eofbit | ios_base::failbit); 5209: } 5209: catch(__cxxabiv1::__forced_unwind&) 5209: { 5209: this->_M_setstate(ios_base::badbit); 5209: throw; 5209: } 5209: catch(...) 5209: { this->_M_setstate(ios_base::badbit); } 5209: if (__err) 5209: this->setstate(__err); 5209: } 5209: return *this; 5209: } 5209: 5209: template 5209: streamsize 5209: basic_istream<_CharT, _Traits>:: 5209: readsome(char_type* __s, streamsize __n) 5209: { 5209: _M_gcount = 0; 5209: sentry __cerb(*this, true); 5209: if (__cerb) 5209: { 5209: ios_base::iostate __err = ios_base::goodbit; 5209: try 5209: { 5209: 5209: const streamsize __num = this->rdbuf()->in_avail(); 5209: if (__num > 0) 5209: _M_gcount = this->rdbuf()->sgetn(__s, std::min(__num, __n)); 5209: else if (__num == -1) 5209: __err |= ios_base::eofbit; 5209: } 5209: catch(__cxxabiv1::__forced_unwind&) 5209: { 5209: this->_M_setstate(ios_base::badbit); 5209: throw; 5209: } 5209: catch(...) 5209: { this->_M_setstate(ios_base::badbit); } 5209: if (__err) 5209: this->setstate(__err); 5209: } 5209: return _M_gcount; 5209: } 5209: 5209: template 5209: basic_istream<_CharT, _Traits>& 5209: basic_istream<_CharT, _Traits>:: 5209: putback(char_type __c) 5209: { 5209: 5209: 5209: _M_gcount = 0; 5209: 5209: this->clear(this->rdstate() & ~ios_base::eofbit); 5209: sentry __cerb(*this, true); 5209: if (__cerb) 5209: { 5209: ios_base::iostate __err = ios_base::goodbit; 5209: try 5209: { 5209: const int_type __eof = traits_type::eof(); 5209: __streambuf_type* __sb = this->rdbuf(); 5209: if (!__sb 5209: || traits_type::eq_int_type(__sb->sputbackc(__c), __eof)) 5209: __err |= ios_base::badbit; 5209: } 5209: catch(__cxxabiv1::__forced_unwind&) 5209: { 5209: this->_M_setstate(ios_base::badbit); 5209: throw; 5209: } 5209: catch(...) 5209: { this->_M_setstate(ios_base::badbit); } 5209: if (__err) 5209: this->setstate(__err); 5209: } 5209: return *this; 5209: } 5209: 5209: template 5209: basic_istream<_CharT, _Traits>& 5209: basic_istream<_CharT, _Traits>:: 5209: unget(void) 5209: { 5209: 5209: 5209: _M_gcount = 0; 5209: 5209: this->clear(this->rdstate() & ~ios_base::eofbit); 5209: sentry __cerb(*this, true); 5209: if (__cerb) 5209: { 5209: ios_base::iostate __err = ios_base::goodbit; 5209: try 5209: { 5209: const int_type __eof = traits_type::eof(); 5209: __streambuf_type* __sb = this->rdbuf(); 5209: if (!__sb 5209: || traits_type::eq_int_type(__sb->sungetc(), __eof)) 5209: __err |= ios_base::badbit; 5209: } 5209: catch(__cxxabiv1::__forced_unwind&) 5209: { 5209: this->_M_setstate(ios_base::badbit); 5209: throw; 5209: } 5209: catch(...) 5209: { this->_M_setstate(ios_base::badbit); } 5209: if (__err) 5209: this->setstate(__err); 5209: } 5209: return *this; 5209: } 5209: 5209: template 5209: int 5209: basic_istream<_CharT, _Traits>:: 5209: sync(void) 5209: { 5209: 5209: 5209: int __ret = -1; 5209: sentry __cerb(*this, true); 5209: if (__cerb) 5209: { 5209: ios_base::iostate __err = ios_base::goodbit; 5209: try 5209: { 5209: __streambuf_type* __sb = this->rdbuf(); 5209: if (__sb) 5209: { 5209: if (__sb->pubsync() == -1) 5209: __err |= ios_base::badbit; 5209: else 5209: __ret = 0; 5209: } 5209: } 5209: catch(__cxxabiv1::__forced_unwind&) 5209: { 5209: this->_M_setstate(ios_base::badbit); 5209: throw; 5209: } 5209: catch(...) 5209: { this->_M_setstate(ios_base::badbit); } 5209: if (__err) 5209: this->setstate(__err); 5209: } 5209: return __ret; 5209: } 5209: 5209: template 5209: typename basic_istream<_CharT, _Traits>::pos_type 5209: basic_istream<_CharT, _Traits>:: 5209: tellg(void) 5209: { 5209: 5209: 5209: pos_type __ret = pos_type(-1); 5209: sentry __cerb(*this, true); 5209: if (__cerb) 5209: { 5209: try 5209: { 5209: if (!this->fail()) 5209: __ret = this->rdbuf()->pubseekoff(0, ios_base::cur, 5209: ios_base::in); 5209: } 5209: catch(__cxxabiv1::__forced_unwind&) 5209: { 5209: this->_M_setstate(ios_base::badbit); 5209: throw; 5209: } 5209: catch(...) 5209: { this->_M_setstate(ios_base::badbit); } 5209: } 5209: return __ret; 5209: } 5209: 5209: template 5209: basic_istream<_CharT, _Traits>& 5209: basic_istream<_CharT, _Traits>:: 5209: seekg(pos_type __pos) 5209: { 5209: 5209: 5209: 5209: this->clear(this->rdstate() & ~ios_base::eofbit); 5209: sentry __cerb(*this, true); 5209: if (__cerb) 5209: { 5209: ios_base::iostate __err = ios_base::goodbit; 5209: try 5209: { 5209: if (!this->fail()) 5209: { 5209: 5209: const pos_type __p = this->rdbuf()->pubseekpos(__pos, 5209: ios_base::in); 5209: 5209: 5209: if (__p == pos_type(off_type(-1))) 5209: __err |= ios_base::failbit; 5209: } 5209: } 5209: catch(__cxxabiv1::__forced_unwind&) 5209: { 5209: this->_M_setstate(ios_base::badbit); 5209: throw; 5209: } 5209: catch(...) 5209: { this->_M_setstate(ios_base::badbit); } 5209: if (__err) 5209: this->setstate(__err); 5209: } 5209: return *this; 5209: } 5209: 5209: template 5209: basic_istream<_CharT, _Traits>& 5209: basic_istream<_CharT, _Traits>:: 5209: seekg(off_type __off, ios_base::seekdir __dir) 5209: { 5209: 5209: 5209: 5209: this->clear(this->rdstate() & ~ios_base::eofbit); 5209: sentry __cerb(*this, true); 5209: if (__cerb) 5209: { 5209: ios_base::iostate __err = ios_base::goodbit; 5209: try 5209: { 5209: if (!this->fail()) 5209: { 5209: 5209: const pos_type __p = this->rdbuf()->pubseekoff(__off, __dir, 5209: ios_base::in); 5209: 5209: 5209: if (__p == pos_type(off_type(-1))) 5209: __err |= ios_base::failbit; 5209: } 5209: } 5209: catch(__cxxabiv1::__forced_unwind&) 5209: { 5209: this->_M_setstate(ios_base::badbit); 5209: throw; 5209: } 5209: catch(...) 5209: { this->_M_setstate(ios_base::badbit); } 5209: if (__err) 5209: this->setstate(__err); 5209: } 5209: return *this; 5209: } 5209: 5209: 5209: template 5209: basic_istream<_CharT, _Traits>& 5209: operator>>(basic_istream<_CharT, _Traits>& __in, _CharT& __c) 5209: { 5209: typedef basic_istream<_CharT, _Traits> __istream_type; 5209: typedef typename __istream_type::int_type __int_type; 5209: 5209: typename __istream_type::sentry __cerb(__in, false); 5209: if (__cerb) 5209: { 5209: ios_base::iostate __err = ios_base::goodbit; 5209: try 5209: { 5209: const __int_type __cb = __in.rdbuf()->sbumpc(); 5209: if (!_Traits::eq_int_type(__cb, _Traits::eof())) 5209: __c = _Traits::to_char_type(__cb); 5209: else 5209: __err |= (ios_base::eofbit | ios_base::failbit); 5209: } 5209: catch(__cxxabiv1::__forced_unwind&) 5209: { 5209: __in._M_setstate(ios_base::badbit); 5209: throw; 5209: } 5209: catch(...) 5209: { __in._M_setstate(ios_base::badbit); } 5209: if (__err) 5209: __in.setstate(__err); 5209: } 5209: return __in; 5209: } 5209: 5209: template 5209: basic_istream<_CharT, _Traits>& 5209: operator>>(basic_istream<_CharT, _Traits>& __in, _CharT* __s) 5209: { 5209: typedef basic_istream<_CharT, _Traits> __istream_type; 5209: typedef basic_streambuf<_CharT, _Traits> __streambuf_type; 5209: typedef typename _Traits::int_type int_type; 5209: typedef _CharT char_type; 5209: typedef ctype<_CharT> __ctype_type; 5209: 5209: streamsize __extracted = 0; 5209: ios_base::iostate __err = ios_base::goodbit; 5209: typename __istream_type::sentry __cerb(__in, false); 5209: if (__cerb) 5209: { 5209: try 5209: { 5209: 5209: streamsize __num = __in.width(); 5209: if (__num <= 0) 5209: __num = __gnu_cxx::__numeric_traits::__max; 5209: 5209: const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc()); 5209: 5209: const int_type __eof = _Traits::eof(); 5209: __streambuf_type* __sb = __in.rdbuf(); 5209: int_type __c = __sb->sgetc(); 5209: 5209: while (__extracted < __num - 1 5209: && !_Traits::eq_int_type(__c, __eof) 5209: && !__ct.is(ctype_base::space, 5209: _Traits::to_char_type(__c))) 5209: { 5209: *__s++ = _Traits::to_char_type(__c); 5209: ++__extracted; 5209: __c = __sb->snextc(); 5209: } 5209: if (_Traits::eq_int_type(__c, __eof)) 5209: __err |= ios_base::eofbit; 5209: 5209: 5209: 5209: *__s = char_type(); 5209: __in.width(0); 5209: } 5209: catch(__cxxabiv1::__forced_unwind&) 5209: { 5209: __in._M_setstate(ios_base::badbit); 5209: throw; 5209: } 5209: catch(...) 5209: { __in._M_setstate(ios_base::badbit); } 5209: } 5209: if (!__extracted) 5209: __err |= ios_base::failbit; 5209: if (__err) 5209: __in.setstate(__err); 5209: return __in; 5209: } 5209: 5209: 5209: template 5209: basic_istream<_CharT, _Traits>& 5209: ws(basic_istream<_CharT, _Traits>& __in) 5209: { 5209: typedef basic_istream<_CharT, _Traits> __istream_type; 5209: typedef basic_streambuf<_CharT, _Traits> __streambuf_type; 5209: typedef typename __istream_type::int_type __int_type; 5209: typedef ctype<_CharT> __ctype_type; 5209: 5209: const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc()); 5209: const __int_type __eof = _Traits::eof(); 5209: __streambuf_type* __sb = __in.rdbuf(); 5209: __int_type __c = __sb->sgetc(); 5209: 5209: while (!_Traits::eq_int_type(__c, __eof) 5209: && __ct.is(ctype_base::space, _Traits::to_char_type(__c))) 5209: __c = __sb->snextc(); 5209: 5209: if (_Traits::eq_int_type(__c, __eof)) 5209: __in.setstate(ios_base::eofbit); 5209: return __in; 5209: } 5209: 5209: 5209: 5209: 5209: extern template class basic_istream; 5209: extern template istream& ws(istream&); 5209: extern template istream& operator>>(istream&, char&); 5209: extern template istream& operator>>(istream&, char*); 5209: extern template istream& operator>>(istream&, unsigned char&); 5209: extern template istream& operator>>(istream&, signed char&); 5209: extern template istream& operator>>(istream&, unsigned char*); 5209: extern template istream& operator>>(istream&, signed char*); 5209: 5209: extern template istream& istream::_M_extract(unsigned short&); 5209: extern template istream& istream::_M_extract(unsigned int&); 5209: extern template istream& istream::_M_extract(long&); 5209: extern template istream& istream::_M_extract(unsigned long&); 5209: extern template istream& istream::_M_extract(bool&); 5209: 5209: extern template istream& istream::_M_extract(long long&); 5209: extern template istream& istream::_M_extract(unsigned long long&); 5209: 5209: extern template istream& istream::_M_extract(float&); 5209: extern template istream& istream::_M_extract(double&); 5209: extern template istream& istream::_M_extract(long double&); 5209: extern template istream& istream::_M_extract(void*&); 5209: 5209: extern template class basic_iostream; 5209: 5209: 5209: extern template class basic_istream; 5209: extern template wistream& ws(wistream&); 5209: extern template wistream& operator>>(wistream&, wchar_t&); 5209: extern template wistream& operator>>(wistream&, wchar_t*); 5209: 5209: extern template wistream& wistream::_M_extract(unsigned short&); 5209: extern template wistream& wistream::_M_extract(unsigned int&); 5209: extern template wistream& wistream::_M_extract(long&); 5209: extern template wistream& wistream::_M_extract(unsigned long&); 5209: extern template wistream& wistream::_M_extract(bool&); 5209: 5209: extern template wistream& wistream::_M_extract(long long&); 5209: extern template wistream& wistream::_M_extract(unsigned long long&); 5209: 5209: extern template wistream& wistream::_M_extract(float&); 5209: extern template wistream& wistream::_M_extract(double&); 5209: extern template wistream& wistream::_M_extract(long double&); 5209: extern template wistream& wistream::_M_extract(void*&); 5209: 5209: extern template class basic_iostream; 5209: 5209: 5209: 5209: 5209: } 5209: # 992 "/usr/include/c++/10/istream" 2 3 5209: # 41 "/usr/include/c++/10/iostream" 2 3 5209: 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: # 60 "/usr/include/c++/10/iostream" 3 5209: extern istream cin; 5209: extern ostream cout; 5209: extern ostream cerr; 5209: extern ostream clog; 5209: 5209: 5209: extern wistream wcin; 5209: extern wostream wcout; 5209: extern wostream wcerr; 5209: extern wostream wclog; 5209: 5209: 5209: 5209: 5209: static ios_base::Init __ioinit; 5209: 5209: 5209: } 5209: # 27 "/<>/test/test.h" 2 5209: # 1 "/usr/include/c++/10/random" 1 3 5209: # 32 "/usr/include/c++/10/random" 3 5209: 5209: # 33 "/usr/include/c++/10/random" 3 5209: 5209: 5209: 5209: 5209: 5209: # 1 "/usr/include/c++/10/cmath" 1 3 5209: # 39 "/usr/include/c++/10/cmath" 3 5209: 5209: # 40 "/usr/include/c++/10/cmath" 3 5209: 5209: 5209: 5209: 5209: 5209: # 1 "/usr/include/math.h" 1 3 4 5209: # 27 "/usr/include/math.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/libc-header-start.h" 1 3 4 5209: # 28 "/usr/include/math.h" 2 3 4 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern "C" { 5209: 5209: 5209: 5209: 5209: 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/math-vector.h" 1 3 4 5209: # 27 "/usr/include/aarch64-linux-gnu/bits/math-vector.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/libm-simd-decl-stubs.h" 1 3 4 5209: # 28 "/usr/include/aarch64-linux-gnu/bits/math-vector.h" 2 3 4 5209: # 41 "/usr/include/math.h" 2 3 4 5209: # 138 "/usr/include/math.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/flt-eval-method.h" 1 3 4 5209: # 139 "/usr/include/math.h" 2 3 4 5209: # 149 "/usr/include/math.h" 3 4 5209: typedef float float_t; 5209: typedef double double_t; 5209: # 190 "/usr/include/math.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/fp-logb.h" 1 3 4 5209: # 191 "/usr/include/math.h" 2 3 4 5209: # 233 "/usr/include/math.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/fp-fast.h" 1 3 4 5209: # 234 "/usr/include/math.h" 2 3 4 5209: 5209: 5209: 5209: enum 5209: { 5209: FP_INT_UPWARD = 5209: 5209: 0, 5209: FP_INT_DOWNWARD = 5209: 5209: 1, 5209: FP_INT_TOWARDZERO = 5209: 5209: 2, 5209: FP_INT_TONEARESTFROMZERO = 5209: 5209: 3, 5209: FP_INT_TONEAREST = 5209: 5209: 4, 5209: }; 5209: # 289 "/usr/include/math.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-helper-functions.h" 1 3 4 5209: # 21 "/usr/include/aarch64-linux-gnu/bits/mathcalls-helper-functions.h" 3 4 5209: extern int __fpclassify (double __value) throw () 5209: __attribute__ ((__const__)); 5209: 5209: 5209: extern int __signbit (double __value) throw () 5209: __attribute__ ((__const__)); 5209: 5209: 5209: 5209: extern int __isinf (double __value) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern int __finite (double __value) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern int __isnan (double __value) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern int __iseqsig (double __x, double __y) throw (); 5209: 5209: 5209: extern int __issignaling (double __value) throw () 5209: __attribute__ ((__const__)); 5209: # 290 "/usr/include/math.h" 2 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 1 3 4 5209: # 53 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 5209: extern double acos (double __x) throw (); extern double __acos (double __x) throw (); 5209: 5209: extern double asin (double __x) throw (); extern double __asin (double __x) throw (); 5209: 5209: extern double atan (double __x) throw (); extern double __atan (double __x) throw (); 5209: 5209: extern double atan2 (double __y, double __x) throw (); extern double __atan2 (double __y, double __x) throw (); 5209: 5209: 5209: extern double cos (double __x) throw (); extern double __cos (double __x) throw (); 5209: 5209: extern double sin (double __x) throw (); extern double __sin (double __x) throw (); 5209: 5209: extern double tan (double __x) throw (); extern double __tan (double __x) throw (); 5209: 5209: 5209: 5209: 5209: extern double cosh (double __x) throw (); extern double __cosh (double __x) throw (); 5209: 5209: extern double sinh (double __x) throw (); extern double __sinh (double __x) throw (); 5209: 5209: extern double tanh (double __x) throw (); extern double __tanh (double __x) throw (); 5209: 5209: 5209: 5209: extern void sincos (double __x, double *__sinx, double *__cosx) throw (); extern void __sincos (double __x, double *__sinx, double *__cosx) throw () 5209: ; 5209: 5209: 5209: 5209: 5209: extern double acosh (double __x) throw (); extern double __acosh (double __x) throw (); 5209: 5209: extern double asinh (double __x) throw (); extern double __asinh (double __x) throw (); 5209: 5209: extern double atanh (double __x) throw (); extern double __atanh (double __x) throw (); 5209: 5209: 5209: 5209: 5209: 5209: extern double exp (double __x) throw (); extern double __exp (double __x) throw (); 5209: 5209: 5209: extern double frexp (double __x, int *__exponent) throw (); extern double __frexp (double __x, int *__exponent) throw (); 5209: 5209: 5209: extern double ldexp (double __x, int __exponent) throw (); extern double __ldexp (double __x, int __exponent) throw (); 5209: 5209: 5209: extern double log (double __x) throw (); extern double __log (double __x) throw (); 5209: 5209: 5209: extern double log10 (double __x) throw (); extern double __log10 (double __x) throw (); 5209: 5209: 5209: extern double modf (double __x, double *__iptr) throw (); extern double __modf (double __x, double *__iptr) throw () __attribute__ ((__nonnull__ (2))); 5209: 5209: 5209: 5209: extern double exp10 (double __x) throw (); extern double __exp10 (double __x) throw (); 5209: 5209: 5209: 5209: 5209: extern double expm1 (double __x) throw (); extern double __expm1 (double __x) throw (); 5209: 5209: 5209: extern double log1p (double __x) throw (); extern double __log1p (double __x) throw (); 5209: 5209: 5209: extern double logb (double __x) throw (); extern double __logb (double __x) throw (); 5209: 5209: 5209: 5209: 5209: extern double exp2 (double __x) throw (); extern double __exp2 (double __x) throw (); 5209: 5209: 5209: extern double log2 (double __x) throw (); extern double __log2 (double __x) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern double pow (double __x, double __y) throw (); extern double __pow (double __x, double __y) throw (); 5209: 5209: 5209: extern double sqrt (double __x) throw (); extern double __sqrt (double __x) throw (); 5209: 5209: 5209: 5209: extern double hypot (double __x, double __y) throw (); extern double __hypot (double __x, double __y) throw (); 5209: 5209: 5209: 5209: 5209: extern double cbrt (double __x) throw (); extern double __cbrt (double __x) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern double ceil (double __x) throw () __attribute__ ((__const__)); extern double __ceil (double __x) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern double fabs (double __x) throw () __attribute__ ((__const__)); extern double __fabs (double __x) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern double floor (double __x) throw () __attribute__ ((__const__)); extern double __floor (double __x) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern double fmod (double __x, double __y) throw (); extern double __fmod (double __x, double __y) throw (); 5209: # 182 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 5209: extern int finite (double __value) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern double drem (double __x, double __y) throw (); extern double __drem (double __x, double __y) throw (); 5209: 5209: 5209: 5209: extern double significand (double __x) throw (); extern double __significand (double __x) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern double copysign (double __x, double __y) throw () __attribute__ ((__const__)); extern double __copysign (double __x, double __y) throw () __attribute__ ((__const__)); 5209: 5209: 5209: 5209: 5209: extern double nan (const char *__tagb) throw (); extern double __nan (const char *__tagb) throw (); 5209: # 217 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 5209: extern double j0 (double) throw (); extern double __j0 (double) throw (); 5209: extern double j1 (double) throw (); extern double __j1 (double) throw (); 5209: extern double jn (int, double) throw (); extern double __jn (int, double) throw (); 5209: extern double y0 (double) throw (); extern double __y0 (double) throw (); 5209: extern double y1 (double) throw (); extern double __y1 (double) throw (); 5209: extern double yn (int, double) throw (); extern double __yn (int, double) throw (); 5209: 5209: 5209: 5209: 5209: 5209: extern double erf (double) throw (); extern double __erf (double) throw (); 5209: extern double erfc (double) throw (); extern double __erfc (double) throw (); 5209: extern double lgamma (double) throw (); extern double __lgamma (double) throw (); 5209: 5209: 5209: 5209: 5209: extern double tgamma (double) throw (); extern double __tgamma (double) throw (); 5209: 5209: 5209: 5209: 5209: 5209: extern double gamma (double) throw (); extern double __gamma (double) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern double lgamma_r (double, int *__signgamp) throw (); extern double __lgamma_r (double, int *__signgamp) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern double rint (double __x) throw (); extern double __rint (double __x) throw (); 5209: 5209: 5209: extern double nextafter (double __x, double __y) throw (); extern double __nextafter (double __x, double __y) throw (); 5209: 5209: extern double nexttoward (double __x, long double __y) throw (); extern double __nexttoward (double __x, long double __y) throw (); 5209: 5209: 5209: 5209: 5209: extern double nextdown (double __x) throw (); extern double __nextdown (double __x) throw (); 5209: 5209: extern double nextup (double __x) throw (); extern double __nextup (double __x) throw (); 5209: 5209: 5209: 5209: extern double remainder (double __x, double __y) throw (); extern double __remainder (double __x, double __y) throw (); 5209: 5209: 5209: 5209: extern double scalbn (double __x, int __n) throw (); extern double __scalbn (double __x, int __n) throw (); 5209: 5209: 5209: 5209: extern int ilogb (double __x) throw (); extern int __ilogb (double __x) throw (); 5209: 5209: 5209: 5209: 5209: extern long int llogb (double __x) throw (); extern long int __llogb (double __x) throw (); 5209: 5209: 5209: 5209: 5209: extern double scalbln (double __x, long int __n) throw (); extern double __scalbln (double __x, long int __n) throw (); 5209: 5209: 5209: 5209: extern double nearbyint (double __x) throw (); extern double __nearbyint (double __x) throw (); 5209: 5209: 5209: 5209: extern double round (double __x) throw () __attribute__ ((__const__)); extern double __round (double __x) throw () __attribute__ ((__const__)); 5209: 5209: 5209: 5209: extern double trunc (double __x) throw () __attribute__ ((__const__)); extern double __trunc (double __x) throw () __attribute__ ((__const__)); 5209: 5209: 5209: 5209: 5209: extern double remquo (double __x, double __y, int *__quo) throw (); extern double __remquo (double __x, double __y, int *__quo) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern long int lrint (double __x) throw (); extern long int __lrint (double __x) throw (); 5209: __extension__ 5209: extern long long int llrint (double __x) throw (); extern long long int __llrint (double __x) throw (); 5209: 5209: 5209: 5209: extern long int lround (double __x) throw (); extern long int __lround (double __x) throw (); 5209: __extension__ 5209: extern long long int llround (double __x) throw (); extern long long int __llround (double __x) throw (); 5209: 5209: 5209: 5209: extern double fdim (double __x, double __y) throw (); extern double __fdim (double __x, double __y) throw (); 5209: 5209: 5209: extern double fmax (double __x, double __y) throw () __attribute__ ((__const__)); extern double __fmax (double __x, double __y) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern double fmin (double __x, double __y) throw () __attribute__ ((__const__)); extern double __fmin (double __x, double __y) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern double fma (double __x, double __y, double __z) throw (); extern double __fma (double __x, double __y, double __z) throw (); 5209: 5209: 5209: 5209: 5209: extern double roundeven (double __x) throw () __attribute__ ((__const__)); extern double __roundeven (double __x) throw () __attribute__ ((__const__)); 5209: 5209: 5209: 5209: extern __intmax_t fromfp (double __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfp (double __x, int __round, unsigned int __width) throw () 5209: ; 5209: 5209: 5209: 5209: extern __uintmax_t ufromfp (double __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfp (double __x, int __round, unsigned int __width) throw () 5209: ; 5209: 5209: 5209: 5209: 5209: extern __intmax_t fromfpx (double __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpx (double __x, int __round, unsigned int __width) throw () 5209: ; 5209: 5209: 5209: 5209: 5209: extern __uintmax_t ufromfpx (double __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpx (double __x, int __round, unsigned int __width) throw () 5209: ; 5209: 5209: 5209: extern double fmaxmag (double __x, double __y) throw () __attribute__ ((__const__)); extern double __fmaxmag (double __x, double __y) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern double fminmag (double __x, double __y) throw () __attribute__ ((__const__)); extern double __fminmag (double __x, double __y) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern int totalorder (double __x, double __y) throw () 5209: __attribute__ ((__const__)); 5209: 5209: 5209: extern int totalordermag (double __x, double __y) throw () 5209: __attribute__ ((__const__)); 5209: 5209: 5209: extern int canonicalize (double *__cx, const double *__x) throw (); 5209: 5209: 5209: extern double getpayload (const double *__x) throw (); extern double __getpayload (const double *__x) throw (); 5209: 5209: 5209: extern int setpayload (double *__x, double __payload) throw (); 5209: 5209: 5209: extern int setpayloadsig (double *__x, double __payload) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern double scalb (double __x, double __n) throw (); extern double __scalb (double __x, double __n) throw (); 5209: # 291 "/usr/include/math.h" 2 3 4 5209: # 306 "/usr/include/math.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-helper-functions.h" 1 3 4 5209: # 21 "/usr/include/aarch64-linux-gnu/bits/mathcalls-helper-functions.h" 3 4 5209: extern int __fpclassifyf (float __value) throw () 5209: __attribute__ ((__const__)); 5209: 5209: 5209: extern int __signbitf (float __value) throw () 5209: __attribute__ ((__const__)); 5209: 5209: 5209: 5209: extern int __isinff (float __value) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern int __finitef (float __value) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern int __isnanf (float __value) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern int __iseqsigf (float __x, float __y) throw (); 5209: 5209: 5209: extern int __issignalingf (float __value) throw () 5209: __attribute__ ((__const__)); 5209: # 307 "/usr/include/math.h" 2 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 1 3 4 5209: # 53 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 5209: extern float acosf (float __x) throw (); extern float __acosf (float __x) throw (); 5209: 5209: extern float asinf (float __x) throw (); extern float __asinf (float __x) throw (); 5209: 5209: extern float atanf (float __x) throw (); extern float __atanf (float __x) throw (); 5209: 5209: extern float atan2f (float __y, float __x) throw (); extern float __atan2f (float __y, float __x) throw (); 5209: 5209: 5209: extern float cosf (float __x) throw (); extern float __cosf (float __x) throw (); 5209: 5209: extern float sinf (float __x) throw (); extern float __sinf (float __x) throw (); 5209: 5209: extern float tanf (float __x) throw (); extern float __tanf (float __x) throw (); 5209: 5209: 5209: 5209: 5209: extern float coshf (float __x) throw (); extern float __coshf (float __x) throw (); 5209: 5209: extern float sinhf (float __x) throw (); extern float __sinhf (float __x) throw (); 5209: 5209: extern float tanhf (float __x) throw (); extern float __tanhf (float __x) throw (); 5209: 5209: 5209: 5209: extern void sincosf (float __x, float *__sinx, float *__cosx) throw (); extern void __sincosf (float __x, float *__sinx, float *__cosx) throw () 5209: ; 5209: 5209: 5209: 5209: 5209: extern float acoshf (float __x) throw (); extern float __acoshf (float __x) throw (); 5209: 5209: extern float asinhf (float __x) throw (); extern float __asinhf (float __x) throw (); 5209: 5209: extern float atanhf (float __x) throw (); extern float __atanhf (float __x) throw (); 5209: 5209: 5209: 5209: 5209: 5209: extern float expf (float __x) throw (); extern float __expf (float __x) throw (); 5209: 5209: 5209: extern float frexpf (float __x, int *__exponent) throw (); extern float __frexpf (float __x, int *__exponent) throw (); 5209: 5209: 5209: extern float ldexpf (float __x, int __exponent) throw (); extern float __ldexpf (float __x, int __exponent) throw (); 5209: 5209: 5209: extern float logf (float __x) throw (); extern float __logf (float __x) throw (); 5209: 5209: 5209: extern float log10f (float __x) throw (); extern float __log10f (float __x) throw (); 5209: 5209: 5209: extern float modff (float __x, float *__iptr) throw (); extern float __modff (float __x, float *__iptr) throw () __attribute__ ((__nonnull__ (2))); 5209: 5209: 5209: 5209: extern float exp10f (float __x) throw (); extern float __exp10f (float __x) throw (); 5209: 5209: 5209: 5209: 5209: extern float expm1f (float __x) throw (); extern float __expm1f (float __x) throw (); 5209: 5209: 5209: extern float log1pf (float __x) throw (); extern float __log1pf (float __x) throw (); 5209: 5209: 5209: extern float logbf (float __x) throw (); extern float __logbf (float __x) throw (); 5209: 5209: 5209: 5209: 5209: extern float exp2f (float __x) throw (); extern float __exp2f (float __x) throw (); 5209: 5209: 5209: extern float log2f (float __x) throw (); extern float __log2f (float __x) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern float powf (float __x, float __y) throw (); extern float __powf (float __x, float __y) throw (); 5209: 5209: 5209: extern float sqrtf (float __x) throw (); extern float __sqrtf (float __x) throw (); 5209: 5209: 5209: 5209: extern float hypotf (float __x, float __y) throw (); extern float __hypotf (float __x, float __y) throw (); 5209: 5209: 5209: 5209: 5209: extern float cbrtf (float __x) throw (); extern float __cbrtf (float __x) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern float ceilf (float __x) throw () __attribute__ ((__const__)); extern float __ceilf (float __x) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern float fabsf (float __x) throw () __attribute__ ((__const__)); extern float __fabsf (float __x) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern float floorf (float __x) throw () __attribute__ ((__const__)); extern float __floorf (float __x) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern float fmodf (float __x, float __y) throw (); extern float __fmodf (float __x, float __y) throw (); 5209: # 177 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 5209: extern int isinff (float __value) throw () __attribute__ ((__const__)); 5209: 5209: 5209: 5209: 5209: extern int finitef (float __value) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern float dremf (float __x, float __y) throw (); extern float __dremf (float __x, float __y) throw (); 5209: 5209: 5209: 5209: extern float significandf (float __x) throw (); extern float __significandf (float __x) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern float copysignf (float __x, float __y) throw () __attribute__ ((__const__)); extern float __copysignf (float __x, float __y) throw () __attribute__ ((__const__)); 5209: 5209: 5209: 5209: 5209: extern float nanf (const char *__tagb) throw (); extern float __nanf (const char *__tagb) throw (); 5209: # 211 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 5209: extern int isnanf (float __value) throw () __attribute__ ((__const__)); 5209: 5209: 5209: 5209: 5209: 5209: extern float j0f (float) throw (); extern float __j0f (float) throw (); 5209: extern float j1f (float) throw (); extern float __j1f (float) throw (); 5209: extern float jnf (int, float) throw (); extern float __jnf (int, float) throw (); 5209: extern float y0f (float) throw (); extern float __y0f (float) throw (); 5209: extern float y1f (float) throw (); extern float __y1f (float) throw (); 5209: extern float ynf (int, float) throw (); extern float __ynf (int, float) throw (); 5209: 5209: 5209: 5209: 5209: 5209: extern float erff (float) throw (); extern float __erff (float) throw (); 5209: extern float erfcf (float) throw (); extern float __erfcf (float) throw (); 5209: extern float lgammaf (float) throw (); extern float __lgammaf (float) throw (); 5209: 5209: 5209: 5209: 5209: extern float tgammaf (float) throw (); extern float __tgammaf (float) throw (); 5209: 5209: 5209: 5209: 5209: 5209: extern float gammaf (float) throw (); extern float __gammaf (float) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern float lgammaf_r (float, int *__signgamp) throw (); extern float __lgammaf_r (float, int *__signgamp) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern float rintf (float __x) throw (); extern float __rintf (float __x) throw (); 5209: 5209: 5209: extern float nextafterf (float __x, float __y) throw (); extern float __nextafterf (float __x, float __y) throw (); 5209: 5209: extern float nexttowardf (float __x, long double __y) throw (); extern float __nexttowardf (float __x, long double __y) throw (); 5209: 5209: 5209: 5209: 5209: extern float nextdownf (float __x) throw (); extern float __nextdownf (float __x) throw (); 5209: 5209: extern float nextupf (float __x) throw (); extern float __nextupf (float __x) throw (); 5209: 5209: 5209: 5209: extern float remainderf (float __x, float __y) throw (); extern float __remainderf (float __x, float __y) throw (); 5209: 5209: 5209: 5209: extern float scalbnf (float __x, int __n) throw (); extern float __scalbnf (float __x, int __n) throw (); 5209: 5209: 5209: 5209: extern int ilogbf (float __x) throw (); extern int __ilogbf (float __x) throw (); 5209: 5209: 5209: 5209: 5209: extern long int llogbf (float __x) throw (); extern long int __llogbf (float __x) throw (); 5209: 5209: 5209: 5209: 5209: extern float scalblnf (float __x, long int __n) throw (); extern float __scalblnf (float __x, long int __n) throw (); 5209: 5209: 5209: 5209: extern float nearbyintf (float __x) throw (); extern float __nearbyintf (float __x) throw (); 5209: 5209: 5209: 5209: extern float roundf (float __x) throw () __attribute__ ((__const__)); extern float __roundf (float __x) throw () __attribute__ ((__const__)); 5209: 5209: 5209: 5209: extern float truncf (float __x) throw () __attribute__ ((__const__)); extern float __truncf (float __x) throw () __attribute__ ((__const__)); 5209: 5209: 5209: 5209: 5209: extern float remquof (float __x, float __y, int *__quo) throw (); extern float __remquof (float __x, float __y, int *__quo) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern long int lrintf (float __x) throw (); extern long int __lrintf (float __x) throw (); 5209: __extension__ 5209: extern long long int llrintf (float __x) throw (); extern long long int __llrintf (float __x) throw (); 5209: 5209: 5209: 5209: extern long int lroundf (float __x) throw (); extern long int __lroundf (float __x) throw (); 5209: __extension__ 5209: extern long long int llroundf (float __x) throw (); extern long long int __llroundf (float __x) throw (); 5209: 5209: 5209: 5209: extern float fdimf (float __x, float __y) throw (); extern float __fdimf (float __x, float __y) throw (); 5209: 5209: 5209: extern float fmaxf (float __x, float __y) throw () __attribute__ ((__const__)); extern float __fmaxf (float __x, float __y) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern float fminf (float __x, float __y) throw () __attribute__ ((__const__)); extern float __fminf (float __x, float __y) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern float fmaf (float __x, float __y, float __z) throw (); extern float __fmaf (float __x, float __y, float __z) throw (); 5209: 5209: 5209: 5209: 5209: extern float roundevenf (float __x) throw () __attribute__ ((__const__)); extern float __roundevenf (float __x) throw () __attribute__ ((__const__)); 5209: 5209: 5209: 5209: extern __intmax_t fromfpf (float __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpf (float __x, int __round, unsigned int __width) throw () 5209: ; 5209: 5209: 5209: 5209: extern __uintmax_t ufromfpf (float __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpf (float __x, int __round, unsigned int __width) throw () 5209: ; 5209: 5209: 5209: 5209: 5209: extern __intmax_t fromfpxf (float __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpxf (float __x, int __round, unsigned int __width) throw () 5209: ; 5209: 5209: 5209: 5209: 5209: extern __uintmax_t ufromfpxf (float __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpxf (float __x, int __round, unsigned int __width) throw () 5209: ; 5209: 5209: 5209: extern float fmaxmagf (float __x, float __y) throw () __attribute__ ((__const__)); extern float __fmaxmagf (float __x, float __y) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern float fminmagf (float __x, float __y) throw () __attribute__ ((__const__)); extern float __fminmagf (float __x, float __y) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern int totalorderf (float __x, float __y) throw () 5209: __attribute__ ((__const__)); 5209: 5209: 5209: extern int totalordermagf (float __x, float __y) throw () 5209: __attribute__ ((__const__)); 5209: 5209: 5209: extern int canonicalizef (float *__cx, const float *__x) throw (); 5209: 5209: 5209: extern float getpayloadf (const float *__x) throw (); extern float __getpayloadf (const float *__x) throw (); 5209: 5209: 5209: extern int setpayloadf (float *__x, float __payload) throw (); 5209: 5209: 5209: extern int setpayloadsigf (float *__x, float __payload) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern float scalbf (float __x, float __n) throw (); extern float __scalbf (float __x, float __n) throw (); 5209: # 308 "/usr/include/math.h" 2 3 4 5209: # 349 "/usr/include/math.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-helper-functions.h" 1 3 4 5209: # 21 "/usr/include/aarch64-linux-gnu/bits/mathcalls-helper-functions.h" 3 4 5209: extern int __fpclassifyl (long double __value) throw () 5209: __attribute__ ((__const__)); 5209: 5209: 5209: extern int __signbitl (long double __value) throw () 5209: __attribute__ ((__const__)); 5209: 5209: 5209: 5209: extern int __isinfl (long double __value) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern int __finitel (long double __value) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern int __isnanl (long double __value) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern int __iseqsigl (long double __x, long double __y) throw (); 5209: 5209: 5209: extern int __issignalingl (long double __value) throw () 5209: __attribute__ ((__const__)); 5209: # 350 "/usr/include/math.h" 2 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 1 3 4 5209: # 53 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 5209: extern long double acosl (long double __x) throw (); extern long double __acosl (long double __x) throw (); 5209: 5209: extern long double asinl (long double __x) throw (); extern long double __asinl (long double __x) throw (); 5209: 5209: extern long double atanl (long double __x) throw (); extern long double __atanl (long double __x) throw (); 5209: 5209: extern long double atan2l (long double __y, long double __x) throw (); extern long double __atan2l (long double __y, long double __x) throw (); 5209: 5209: 5209: extern long double cosl (long double __x) throw (); extern long double __cosl (long double __x) throw (); 5209: 5209: extern long double sinl (long double __x) throw (); extern long double __sinl (long double __x) throw (); 5209: 5209: extern long double tanl (long double __x) throw (); extern long double __tanl (long double __x) throw (); 5209: 5209: 5209: 5209: 5209: extern long double coshl (long double __x) throw (); extern long double __coshl (long double __x) throw (); 5209: 5209: extern long double sinhl (long double __x) throw (); extern long double __sinhl (long double __x) throw (); 5209: 5209: extern long double tanhl (long double __x) throw (); extern long double __tanhl (long double __x) throw (); 5209: 5209: 5209: 5209: extern void sincosl (long double __x, long double *__sinx, long double *__cosx) throw (); extern void __sincosl (long double __x, long double *__sinx, long double *__cosx) throw () 5209: ; 5209: 5209: 5209: 5209: 5209: extern long double acoshl (long double __x) throw (); extern long double __acoshl (long double __x) throw (); 5209: 5209: extern long double asinhl (long double __x) throw (); extern long double __asinhl (long double __x) throw (); 5209: 5209: extern long double atanhl (long double __x) throw (); extern long double __atanhl (long double __x) throw (); 5209: 5209: 5209: 5209: 5209: 5209: extern long double expl (long double __x) throw (); extern long double __expl (long double __x) throw (); 5209: 5209: 5209: extern long double frexpl (long double __x, int *__exponent) throw (); extern long double __frexpl (long double __x, int *__exponent) throw (); 5209: 5209: 5209: extern long double ldexpl (long double __x, int __exponent) throw (); extern long double __ldexpl (long double __x, int __exponent) throw (); 5209: 5209: 5209: extern long double logl (long double __x) throw (); extern long double __logl (long double __x) throw (); 5209: 5209: 5209: extern long double log10l (long double __x) throw (); extern long double __log10l (long double __x) throw (); 5209: 5209: 5209: extern long double modfl (long double __x, long double *__iptr) throw (); extern long double __modfl (long double __x, long double *__iptr) throw () __attribute__ ((__nonnull__ (2))); 5209: 5209: 5209: 5209: extern long double exp10l (long double __x) throw (); extern long double __exp10l (long double __x) throw (); 5209: 5209: 5209: 5209: 5209: extern long double expm1l (long double __x) throw (); extern long double __expm1l (long double __x) throw (); 5209: 5209: 5209: extern long double log1pl (long double __x) throw (); extern long double __log1pl (long double __x) throw (); 5209: 5209: 5209: extern long double logbl (long double __x) throw (); extern long double __logbl (long double __x) throw (); 5209: 5209: 5209: 5209: 5209: extern long double exp2l (long double __x) throw (); extern long double __exp2l (long double __x) throw (); 5209: 5209: 5209: extern long double log2l (long double __x) throw (); extern long double __log2l (long double __x) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern long double powl (long double __x, long double __y) throw (); extern long double __powl (long double __x, long double __y) throw (); 5209: 5209: 5209: extern long double sqrtl (long double __x) throw (); extern long double __sqrtl (long double __x) throw (); 5209: 5209: 5209: 5209: extern long double hypotl (long double __x, long double __y) throw (); extern long double __hypotl (long double __x, long double __y) throw (); 5209: 5209: 5209: 5209: 5209: extern long double cbrtl (long double __x) throw (); extern long double __cbrtl (long double __x) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern long double ceill (long double __x) throw () __attribute__ ((__const__)); extern long double __ceill (long double __x) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern long double fabsl (long double __x) throw () __attribute__ ((__const__)); extern long double __fabsl (long double __x) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern long double floorl (long double __x) throw () __attribute__ ((__const__)); extern long double __floorl (long double __x) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern long double fmodl (long double __x, long double __y) throw (); extern long double __fmodl (long double __x, long double __y) throw (); 5209: # 177 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 5209: extern int isinfl (long double __value) throw () __attribute__ ((__const__)); 5209: 5209: 5209: 5209: 5209: extern int finitel (long double __value) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern long double dreml (long double __x, long double __y) throw (); extern long double __dreml (long double __x, long double __y) throw (); 5209: 5209: 5209: 5209: extern long double significandl (long double __x) throw (); extern long double __significandl (long double __x) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern long double copysignl (long double __x, long double __y) throw () __attribute__ ((__const__)); extern long double __copysignl (long double __x, long double __y) throw () __attribute__ ((__const__)); 5209: 5209: 5209: 5209: 5209: extern long double nanl (const char *__tagb) throw (); extern long double __nanl (const char *__tagb) throw (); 5209: # 211 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 5209: extern int isnanl (long double __value) throw () __attribute__ ((__const__)); 5209: 5209: 5209: 5209: 5209: 5209: extern long double j0l (long double) throw (); extern long double __j0l (long double) throw (); 5209: extern long double j1l (long double) throw (); extern long double __j1l (long double) throw (); 5209: extern long double jnl (int, long double) throw (); extern long double __jnl (int, long double) throw (); 5209: extern long double y0l (long double) throw (); extern long double __y0l (long double) throw (); 5209: extern long double y1l (long double) throw (); extern long double __y1l (long double) throw (); 5209: extern long double ynl (int, long double) throw (); extern long double __ynl (int, long double) throw (); 5209: 5209: 5209: 5209: 5209: 5209: extern long double erfl (long double) throw (); extern long double __erfl (long double) throw (); 5209: extern long double erfcl (long double) throw (); extern long double __erfcl (long double) throw (); 5209: extern long double lgammal (long double) throw (); extern long double __lgammal (long double) throw (); 5209: 5209: 5209: 5209: 5209: extern long double tgammal (long double) throw (); extern long double __tgammal (long double) throw (); 5209: 5209: 5209: 5209: 5209: 5209: extern long double gammal (long double) throw (); extern long double __gammal (long double) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern long double lgammal_r (long double, int *__signgamp) throw (); extern long double __lgammal_r (long double, int *__signgamp) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern long double rintl (long double __x) throw (); extern long double __rintl (long double __x) throw (); 5209: 5209: 5209: extern long double nextafterl (long double __x, long double __y) throw (); extern long double __nextafterl (long double __x, long double __y) throw (); 5209: 5209: extern long double nexttowardl (long double __x, long double __y) throw (); extern long double __nexttowardl (long double __x, long double __y) throw (); 5209: 5209: 5209: 5209: 5209: extern long double nextdownl (long double __x) throw (); extern long double __nextdownl (long double __x) throw (); 5209: 5209: extern long double nextupl (long double __x) throw (); extern long double __nextupl (long double __x) throw (); 5209: 5209: 5209: 5209: extern long double remainderl (long double __x, long double __y) throw (); extern long double __remainderl (long double __x, long double __y) throw (); 5209: 5209: 5209: 5209: extern long double scalbnl (long double __x, int __n) throw (); extern long double __scalbnl (long double __x, int __n) throw (); 5209: 5209: 5209: 5209: extern int ilogbl (long double __x) throw (); extern int __ilogbl (long double __x) throw (); 5209: 5209: 5209: 5209: 5209: extern long int llogbl (long double __x) throw (); extern long int __llogbl (long double __x) throw (); 5209: 5209: 5209: 5209: 5209: extern long double scalblnl (long double __x, long int __n) throw (); extern long double __scalblnl (long double __x, long int __n) throw (); 5209: 5209: 5209: 5209: extern long double nearbyintl (long double __x) throw (); extern long double __nearbyintl (long double __x) throw (); 5209: 5209: 5209: 5209: extern long double roundl (long double __x) throw () __attribute__ ((__const__)); extern long double __roundl (long double __x) throw () __attribute__ ((__const__)); 5209: 5209: 5209: 5209: extern long double truncl (long double __x) throw () __attribute__ ((__const__)); extern long double __truncl (long double __x) throw () __attribute__ ((__const__)); 5209: 5209: 5209: 5209: 5209: extern long double remquol (long double __x, long double __y, int *__quo) throw (); extern long double __remquol (long double __x, long double __y, int *__quo) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern long int lrintl (long double __x) throw (); extern long int __lrintl (long double __x) throw (); 5209: __extension__ 5209: extern long long int llrintl (long double __x) throw (); extern long long int __llrintl (long double __x) throw (); 5209: 5209: 5209: 5209: extern long int lroundl (long double __x) throw (); extern long int __lroundl (long double __x) throw (); 5209: __extension__ 5209: extern long long int llroundl (long double __x) throw (); extern long long int __llroundl (long double __x) throw (); 5209: 5209: 5209: 5209: extern long double fdiml (long double __x, long double __y) throw (); extern long double __fdiml (long double __x, long double __y) throw (); 5209: 5209: 5209: extern long double fmaxl (long double __x, long double __y) throw () __attribute__ ((__const__)); extern long double __fmaxl (long double __x, long double __y) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern long double fminl (long double __x, long double __y) throw () __attribute__ ((__const__)); extern long double __fminl (long double __x, long double __y) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern long double fmal (long double __x, long double __y, long double __z) throw (); extern long double __fmal (long double __x, long double __y, long double __z) throw (); 5209: 5209: 5209: 5209: 5209: extern long double roundevenl (long double __x) throw () __attribute__ ((__const__)); extern long double __roundevenl (long double __x) throw () __attribute__ ((__const__)); 5209: 5209: 5209: 5209: extern __intmax_t fromfpl (long double __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpl (long double __x, int __round, unsigned int __width) throw () 5209: ; 5209: 5209: 5209: 5209: extern __uintmax_t ufromfpl (long double __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpl (long double __x, int __round, unsigned int __width) throw () 5209: ; 5209: 5209: 5209: 5209: 5209: extern __intmax_t fromfpxl (long double __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpxl (long double __x, int __round, unsigned int __width) throw () 5209: ; 5209: 5209: 5209: 5209: 5209: extern __uintmax_t ufromfpxl (long double __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpxl (long double __x, int __round, unsigned int __width) throw () 5209: ; 5209: 5209: 5209: extern long double fmaxmagl (long double __x, long double __y) throw () __attribute__ ((__const__)); extern long double __fmaxmagl (long double __x, long double __y) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern long double fminmagl (long double __x, long double __y) throw () __attribute__ ((__const__)); extern long double __fminmagl (long double __x, long double __y) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern int totalorderl (long double __x, long double __y) throw () 5209: __attribute__ ((__const__)); 5209: 5209: 5209: extern int totalordermagl (long double __x, long double __y) throw () 5209: __attribute__ ((__const__)); 5209: 5209: 5209: extern int canonicalizel (long double *__cx, const long double *__x) throw (); 5209: 5209: 5209: extern long double getpayloadl (const long double *__x) throw (); extern long double __getpayloadl (const long double *__x) throw (); 5209: 5209: 5209: extern int setpayloadl (long double *__x, long double __payload) throw (); 5209: 5209: 5209: extern int setpayloadsigl (long double *__x, long double __payload) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern long double scalbl (long double __x, long double __n) throw (); extern long double __scalbl (long double __x, long double __n) throw (); 5209: # 351 "/usr/include/math.h" 2 3 4 5209: # 389 "/usr/include/math.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 1 3 4 5209: # 53 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 5209: extern _Float32 acosf32 (_Float32 __x) throw (); extern _Float32 __acosf32 (_Float32 __x) throw (); 5209: 5209: extern _Float32 asinf32 (_Float32 __x) throw (); extern _Float32 __asinf32 (_Float32 __x) throw (); 5209: 5209: extern _Float32 atanf32 (_Float32 __x) throw (); extern _Float32 __atanf32 (_Float32 __x) throw (); 5209: 5209: extern _Float32 atan2f32 (_Float32 __y, _Float32 __x) throw (); extern _Float32 __atan2f32 (_Float32 __y, _Float32 __x) throw (); 5209: 5209: 5209: extern _Float32 cosf32 (_Float32 __x) throw (); extern _Float32 __cosf32 (_Float32 __x) throw (); 5209: 5209: extern _Float32 sinf32 (_Float32 __x) throw (); extern _Float32 __sinf32 (_Float32 __x) throw (); 5209: 5209: extern _Float32 tanf32 (_Float32 __x) throw (); extern _Float32 __tanf32 (_Float32 __x) throw (); 5209: 5209: 5209: 5209: 5209: extern _Float32 coshf32 (_Float32 __x) throw (); extern _Float32 __coshf32 (_Float32 __x) throw (); 5209: 5209: extern _Float32 sinhf32 (_Float32 __x) throw (); extern _Float32 __sinhf32 (_Float32 __x) throw (); 5209: 5209: extern _Float32 tanhf32 (_Float32 __x) throw (); extern _Float32 __tanhf32 (_Float32 __x) throw (); 5209: 5209: 5209: 5209: extern void sincosf32 (_Float32 __x, _Float32 *__sinx, _Float32 *__cosx) throw (); extern void __sincosf32 (_Float32 __x, _Float32 *__sinx, _Float32 *__cosx) throw () 5209: ; 5209: 5209: 5209: 5209: 5209: extern _Float32 acoshf32 (_Float32 __x) throw (); extern _Float32 __acoshf32 (_Float32 __x) throw (); 5209: 5209: extern _Float32 asinhf32 (_Float32 __x) throw (); extern _Float32 __asinhf32 (_Float32 __x) throw (); 5209: 5209: extern _Float32 atanhf32 (_Float32 __x) throw (); extern _Float32 __atanhf32 (_Float32 __x) throw (); 5209: 5209: 5209: 5209: 5209: 5209: extern _Float32 expf32 (_Float32 __x) throw (); extern _Float32 __expf32 (_Float32 __x) throw (); 5209: 5209: 5209: extern _Float32 frexpf32 (_Float32 __x, int *__exponent) throw (); extern _Float32 __frexpf32 (_Float32 __x, int *__exponent) throw (); 5209: 5209: 5209: extern _Float32 ldexpf32 (_Float32 __x, int __exponent) throw (); extern _Float32 __ldexpf32 (_Float32 __x, int __exponent) throw (); 5209: 5209: 5209: extern _Float32 logf32 (_Float32 __x) throw (); extern _Float32 __logf32 (_Float32 __x) throw (); 5209: 5209: 5209: extern _Float32 log10f32 (_Float32 __x) throw (); extern _Float32 __log10f32 (_Float32 __x) throw (); 5209: 5209: 5209: extern _Float32 modff32 (_Float32 __x, _Float32 *__iptr) throw (); extern _Float32 __modff32 (_Float32 __x, _Float32 *__iptr) throw () __attribute__ ((__nonnull__ (2))); 5209: 5209: 5209: 5209: extern _Float32 exp10f32 (_Float32 __x) throw (); extern _Float32 __exp10f32 (_Float32 __x) throw (); 5209: 5209: 5209: 5209: 5209: extern _Float32 expm1f32 (_Float32 __x) throw (); extern _Float32 __expm1f32 (_Float32 __x) throw (); 5209: 5209: 5209: extern _Float32 log1pf32 (_Float32 __x) throw (); extern _Float32 __log1pf32 (_Float32 __x) throw (); 5209: 5209: 5209: extern _Float32 logbf32 (_Float32 __x) throw (); extern _Float32 __logbf32 (_Float32 __x) throw (); 5209: 5209: 5209: 5209: 5209: extern _Float32 exp2f32 (_Float32 __x) throw (); extern _Float32 __exp2f32 (_Float32 __x) throw (); 5209: 5209: 5209: extern _Float32 log2f32 (_Float32 __x) throw (); extern _Float32 __log2f32 (_Float32 __x) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern _Float32 powf32 (_Float32 __x, _Float32 __y) throw (); extern _Float32 __powf32 (_Float32 __x, _Float32 __y) throw (); 5209: 5209: 5209: extern _Float32 sqrtf32 (_Float32 __x) throw (); extern _Float32 __sqrtf32 (_Float32 __x) throw (); 5209: 5209: 5209: 5209: extern _Float32 hypotf32 (_Float32 __x, _Float32 __y) throw (); extern _Float32 __hypotf32 (_Float32 __x, _Float32 __y) throw (); 5209: 5209: 5209: 5209: 5209: extern _Float32 cbrtf32 (_Float32 __x) throw (); extern _Float32 __cbrtf32 (_Float32 __x) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern _Float32 ceilf32 (_Float32 __x) throw () __attribute__ ((__const__)); extern _Float32 __ceilf32 (_Float32 __x) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern _Float32 fabsf32 (_Float32 __x) throw () __attribute__ ((__const__)); extern _Float32 __fabsf32 (_Float32 __x) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern _Float32 floorf32 (_Float32 __x) throw () __attribute__ ((__const__)); extern _Float32 __floorf32 (_Float32 __x) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern _Float32 fmodf32 (_Float32 __x, _Float32 __y) throw (); extern _Float32 __fmodf32 (_Float32 __x, _Float32 __y) throw (); 5209: # 196 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 5209: extern _Float32 copysignf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__)); extern _Float32 __copysignf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__)); 5209: 5209: 5209: 5209: 5209: extern _Float32 nanf32 (const char *__tagb) throw (); extern _Float32 __nanf32 (const char *__tagb) throw (); 5209: # 217 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 5209: extern _Float32 j0f32 (_Float32) throw (); extern _Float32 __j0f32 (_Float32) throw (); 5209: extern _Float32 j1f32 (_Float32) throw (); extern _Float32 __j1f32 (_Float32) throw (); 5209: extern _Float32 jnf32 (int, _Float32) throw (); extern _Float32 __jnf32 (int, _Float32) throw (); 5209: extern _Float32 y0f32 (_Float32) throw (); extern _Float32 __y0f32 (_Float32) throw (); 5209: extern _Float32 y1f32 (_Float32) throw (); extern _Float32 __y1f32 (_Float32) throw (); 5209: extern _Float32 ynf32 (int, _Float32) throw (); extern _Float32 __ynf32 (int, _Float32) throw (); 5209: 5209: 5209: 5209: 5209: 5209: extern _Float32 erff32 (_Float32) throw (); extern _Float32 __erff32 (_Float32) throw (); 5209: extern _Float32 erfcf32 (_Float32) throw (); extern _Float32 __erfcf32 (_Float32) throw (); 5209: extern _Float32 lgammaf32 (_Float32) throw (); extern _Float32 __lgammaf32 (_Float32) throw (); 5209: 5209: 5209: 5209: 5209: extern _Float32 tgammaf32 (_Float32) throw (); extern _Float32 __tgammaf32 (_Float32) throw (); 5209: # 249 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 5209: extern _Float32 lgammaf32_r (_Float32, int *__signgamp) throw (); extern _Float32 __lgammaf32_r (_Float32, int *__signgamp) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern _Float32 rintf32 (_Float32 __x) throw (); extern _Float32 __rintf32 (_Float32 __x) throw (); 5209: 5209: 5209: extern _Float32 nextafterf32 (_Float32 __x, _Float32 __y) throw (); extern _Float32 __nextafterf32 (_Float32 __x, _Float32 __y) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern _Float32 nextdownf32 (_Float32 __x) throw (); extern _Float32 __nextdownf32 (_Float32 __x) throw (); 5209: 5209: extern _Float32 nextupf32 (_Float32 __x) throw (); extern _Float32 __nextupf32 (_Float32 __x) throw (); 5209: 5209: 5209: 5209: extern _Float32 remainderf32 (_Float32 __x, _Float32 __y) throw (); extern _Float32 __remainderf32 (_Float32 __x, _Float32 __y) throw (); 5209: 5209: 5209: 5209: extern _Float32 scalbnf32 (_Float32 __x, int __n) throw (); extern _Float32 __scalbnf32 (_Float32 __x, int __n) throw (); 5209: 5209: 5209: 5209: extern int ilogbf32 (_Float32 __x) throw (); extern int __ilogbf32 (_Float32 __x) throw (); 5209: 5209: 5209: 5209: 5209: extern long int llogbf32 (_Float32 __x) throw (); extern long int __llogbf32 (_Float32 __x) throw (); 5209: 5209: 5209: 5209: 5209: extern _Float32 scalblnf32 (_Float32 __x, long int __n) throw (); extern _Float32 __scalblnf32 (_Float32 __x, long int __n) throw (); 5209: 5209: 5209: 5209: extern _Float32 nearbyintf32 (_Float32 __x) throw (); extern _Float32 __nearbyintf32 (_Float32 __x) throw (); 5209: 5209: 5209: 5209: extern _Float32 roundf32 (_Float32 __x) throw () __attribute__ ((__const__)); extern _Float32 __roundf32 (_Float32 __x) throw () __attribute__ ((__const__)); 5209: 5209: 5209: 5209: extern _Float32 truncf32 (_Float32 __x) throw () __attribute__ ((__const__)); extern _Float32 __truncf32 (_Float32 __x) throw () __attribute__ ((__const__)); 5209: 5209: 5209: 5209: 5209: extern _Float32 remquof32 (_Float32 __x, _Float32 __y, int *__quo) throw (); extern _Float32 __remquof32 (_Float32 __x, _Float32 __y, int *__quo) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern long int lrintf32 (_Float32 __x) throw (); extern long int __lrintf32 (_Float32 __x) throw (); 5209: __extension__ 5209: extern long long int llrintf32 (_Float32 __x) throw (); extern long long int __llrintf32 (_Float32 __x) throw (); 5209: 5209: 5209: 5209: extern long int lroundf32 (_Float32 __x) throw (); extern long int __lroundf32 (_Float32 __x) throw (); 5209: __extension__ 5209: extern long long int llroundf32 (_Float32 __x) throw (); extern long long int __llroundf32 (_Float32 __x) throw (); 5209: 5209: 5209: 5209: extern _Float32 fdimf32 (_Float32 __x, _Float32 __y) throw (); extern _Float32 __fdimf32 (_Float32 __x, _Float32 __y) throw (); 5209: 5209: 5209: extern _Float32 fmaxf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__)); extern _Float32 __fmaxf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern _Float32 fminf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__)); extern _Float32 __fminf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern _Float32 fmaf32 (_Float32 __x, _Float32 __y, _Float32 __z) throw (); extern _Float32 __fmaf32 (_Float32 __x, _Float32 __y, _Float32 __z) throw (); 5209: 5209: 5209: 5209: 5209: extern _Float32 roundevenf32 (_Float32 __x) throw () __attribute__ ((__const__)); extern _Float32 __roundevenf32 (_Float32 __x) throw () __attribute__ ((__const__)); 5209: 5209: 5209: 5209: extern __intmax_t fromfpf32 (_Float32 __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpf32 (_Float32 __x, int __round, unsigned int __width) throw () 5209: ; 5209: 5209: 5209: 5209: extern __uintmax_t ufromfpf32 (_Float32 __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpf32 (_Float32 __x, int __round, unsigned int __width) throw () 5209: ; 5209: 5209: 5209: 5209: 5209: extern __intmax_t fromfpxf32 (_Float32 __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpxf32 (_Float32 __x, int __round, unsigned int __width) throw () 5209: ; 5209: 5209: 5209: 5209: 5209: extern __uintmax_t ufromfpxf32 (_Float32 __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpxf32 (_Float32 __x, int __round, unsigned int __width) throw () 5209: ; 5209: 5209: 5209: extern _Float32 fmaxmagf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__)); extern _Float32 __fmaxmagf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern _Float32 fminmagf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__)); extern _Float32 __fminmagf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern int totalorderf32 (_Float32 __x, _Float32 __y) throw () 5209: __attribute__ ((__const__)); 5209: 5209: 5209: extern int totalordermagf32 (_Float32 __x, _Float32 __y) throw () 5209: __attribute__ ((__const__)); 5209: 5209: 5209: extern int canonicalizef32 (_Float32 *__cx, const _Float32 *__x) throw (); 5209: 5209: 5209: extern _Float32 getpayloadf32 (const _Float32 *__x) throw (); extern _Float32 __getpayloadf32 (const _Float32 *__x) throw (); 5209: 5209: 5209: extern int setpayloadf32 (_Float32 *__x, _Float32 __payload) throw (); 5209: 5209: 5209: extern int setpayloadsigf32 (_Float32 *__x, _Float32 __payload) throw (); 5209: # 390 "/usr/include/math.h" 2 3 4 5209: # 406 "/usr/include/math.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 1 3 4 5209: # 53 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 5209: extern _Float64 acosf64 (_Float64 __x) throw (); extern _Float64 __acosf64 (_Float64 __x) throw (); 5209: 5209: extern _Float64 asinf64 (_Float64 __x) throw (); extern _Float64 __asinf64 (_Float64 __x) throw (); 5209: 5209: extern _Float64 atanf64 (_Float64 __x) throw (); extern _Float64 __atanf64 (_Float64 __x) throw (); 5209: 5209: extern _Float64 atan2f64 (_Float64 __y, _Float64 __x) throw (); extern _Float64 __atan2f64 (_Float64 __y, _Float64 __x) throw (); 5209: 5209: 5209: extern _Float64 cosf64 (_Float64 __x) throw (); extern _Float64 __cosf64 (_Float64 __x) throw (); 5209: 5209: extern _Float64 sinf64 (_Float64 __x) throw (); extern _Float64 __sinf64 (_Float64 __x) throw (); 5209: 5209: extern _Float64 tanf64 (_Float64 __x) throw (); extern _Float64 __tanf64 (_Float64 __x) throw (); 5209: 5209: 5209: 5209: 5209: extern _Float64 coshf64 (_Float64 __x) throw (); extern _Float64 __coshf64 (_Float64 __x) throw (); 5209: 5209: extern _Float64 sinhf64 (_Float64 __x) throw (); extern _Float64 __sinhf64 (_Float64 __x) throw (); 5209: 5209: extern _Float64 tanhf64 (_Float64 __x) throw (); extern _Float64 __tanhf64 (_Float64 __x) throw (); 5209: 5209: 5209: 5209: extern void sincosf64 (_Float64 __x, _Float64 *__sinx, _Float64 *__cosx) throw (); extern void __sincosf64 (_Float64 __x, _Float64 *__sinx, _Float64 *__cosx) throw () 5209: ; 5209: 5209: 5209: 5209: 5209: extern _Float64 acoshf64 (_Float64 __x) throw (); extern _Float64 __acoshf64 (_Float64 __x) throw (); 5209: 5209: extern _Float64 asinhf64 (_Float64 __x) throw (); extern _Float64 __asinhf64 (_Float64 __x) throw (); 5209: 5209: extern _Float64 atanhf64 (_Float64 __x) throw (); extern _Float64 __atanhf64 (_Float64 __x) throw (); 5209: 5209: 5209: 5209: 5209: 5209: extern _Float64 expf64 (_Float64 __x) throw (); extern _Float64 __expf64 (_Float64 __x) throw (); 5209: 5209: 5209: extern _Float64 frexpf64 (_Float64 __x, int *__exponent) throw (); extern _Float64 __frexpf64 (_Float64 __x, int *__exponent) throw (); 5209: 5209: 5209: extern _Float64 ldexpf64 (_Float64 __x, int __exponent) throw (); extern _Float64 __ldexpf64 (_Float64 __x, int __exponent) throw (); 5209: 5209: 5209: extern _Float64 logf64 (_Float64 __x) throw (); extern _Float64 __logf64 (_Float64 __x) throw (); 5209: 5209: 5209: extern _Float64 log10f64 (_Float64 __x) throw (); extern _Float64 __log10f64 (_Float64 __x) throw (); 5209: 5209: 5209: extern _Float64 modff64 (_Float64 __x, _Float64 *__iptr) throw (); extern _Float64 __modff64 (_Float64 __x, _Float64 *__iptr) throw () __attribute__ ((__nonnull__ (2))); 5209: 5209: 5209: 5209: extern _Float64 exp10f64 (_Float64 __x) throw (); extern _Float64 __exp10f64 (_Float64 __x) throw (); 5209: 5209: 5209: 5209: 5209: extern _Float64 expm1f64 (_Float64 __x) throw (); extern _Float64 __expm1f64 (_Float64 __x) throw (); 5209: 5209: 5209: extern _Float64 log1pf64 (_Float64 __x) throw (); extern _Float64 __log1pf64 (_Float64 __x) throw (); 5209: 5209: 5209: extern _Float64 logbf64 (_Float64 __x) throw (); extern _Float64 __logbf64 (_Float64 __x) throw (); 5209: 5209: 5209: 5209: 5209: extern _Float64 exp2f64 (_Float64 __x) throw (); extern _Float64 __exp2f64 (_Float64 __x) throw (); 5209: 5209: 5209: extern _Float64 log2f64 (_Float64 __x) throw (); extern _Float64 __log2f64 (_Float64 __x) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern _Float64 powf64 (_Float64 __x, _Float64 __y) throw (); extern _Float64 __powf64 (_Float64 __x, _Float64 __y) throw (); 5209: 5209: 5209: extern _Float64 sqrtf64 (_Float64 __x) throw (); extern _Float64 __sqrtf64 (_Float64 __x) throw (); 5209: 5209: 5209: 5209: extern _Float64 hypotf64 (_Float64 __x, _Float64 __y) throw (); extern _Float64 __hypotf64 (_Float64 __x, _Float64 __y) throw (); 5209: 5209: 5209: 5209: 5209: extern _Float64 cbrtf64 (_Float64 __x) throw (); extern _Float64 __cbrtf64 (_Float64 __x) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern _Float64 ceilf64 (_Float64 __x) throw () __attribute__ ((__const__)); extern _Float64 __ceilf64 (_Float64 __x) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern _Float64 fabsf64 (_Float64 __x) throw () __attribute__ ((__const__)); extern _Float64 __fabsf64 (_Float64 __x) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern _Float64 floorf64 (_Float64 __x) throw () __attribute__ ((__const__)); extern _Float64 __floorf64 (_Float64 __x) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern _Float64 fmodf64 (_Float64 __x, _Float64 __y) throw (); extern _Float64 __fmodf64 (_Float64 __x, _Float64 __y) throw (); 5209: # 196 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 5209: extern _Float64 copysignf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__)); extern _Float64 __copysignf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__)); 5209: 5209: 5209: 5209: 5209: extern _Float64 nanf64 (const char *__tagb) throw (); extern _Float64 __nanf64 (const char *__tagb) throw (); 5209: # 217 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 5209: extern _Float64 j0f64 (_Float64) throw (); extern _Float64 __j0f64 (_Float64) throw (); 5209: extern _Float64 j1f64 (_Float64) throw (); extern _Float64 __j1f64 (_Float64) throw (); 5209: extern _Float64 jnf64 (int, _Float64) throw (); extern _Float64 __jnf64 (int, _Float64) throw (); 5209: extern _Float64 y0f64 (_Float64) throw (); extern _Float64 __y0f64 (_Float64) throw (); 5209: extern _Float64 y1f64 (_Float64) throw (); extern _Float64 __y1f64 (_Float64) throw (); 5209: extern _Float64 ynf64 (int, _Float64) throw (); extern _Float64 __ynf64 (int, _Float64) throw (); 5209: 5209: 5209: 5209: 5209: 5209: extern _Float64 erff64 (_Float64) throw (); extern _Float64 __erff64 (_Float64) throw (); 5209: extern _Float64 erfcf64 (_Float64) throw (); extern _Float64 __erfcf64 (_Float64) throw (); 5209: extern _Float64 lgammaf64 (_Float64) throw (); extern _Float64 __lgammaf64 (_Float64) throw (); 5209: 5209: 5209: 5209: 5209: extern _Float64 tgammaf64 (_Float64) throw (); extern _Float64 __tgammaf64 (_Float64) throw (); 5209: # 249 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 5209: extern _Float64 lgammaf64_r (_Float64, int *__signgamp) throw (); extern _Float64 __lgammaf64_r (_Float64, int *__signgamp) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern _Float64 rintf64 (_Float64 __x) throw (); extern _Float64 __rintf64 (_Float64 __x) throw (); 5209: 5209: 5209: extern _Float64 nextafterf64 (_Float64 __x, _Float64 __y) throw (); extern _Float64 __nextafterf64 (_Float64 __x, _Float64 __y) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern _Float64 nextdownf64 (_Float64 __x) throw (); extern _Float64 __nextdownf64 (_Float64 __x) throw (); 5209: 5209: extern _Float64 nextupf64 (_Float64 __x) throw (); extern _Float64 __nextupf64 (_Float64 __x) throw (); 5209: 5209: 5209: 5209: extern _Float64 remainderf64 (_Float64 __x, _Float64 __y) throw (); extern _Float64 __remainderf64 (_Float64 __x, _Float64 __y) throw (); 5209: 5209: 5209: 5209: extern _Float64 scalbnf64 (_Float64 __x, int __n) throw (); extern _Float64 __scalbnf64 (_Float64 __x, int __n) throw (); 5209: 5209: 5209: 5209: extern int ilogbf64 (_Float64 __x) throw (); extern int __ilogbf64 (_Float64 __x) throw (); 5209: 5209: 5209: 5209: 5209: extern long int llogbf64 (_Float64 __x) throw (); extern long int __llogbf64 (_Float64 __x) throw (); 5209: 5209: 5209: 5209: 5209: extern _Float64 scalblnf64 (_Float64 __x, long int __n) throw (); extern _Float64 __scalblnf64 (_Float64 __x, long int __n) throw (); 5209: 5209: 5209: 5209: extern _Float64 nearbyintf64 (_Float64 __x) throw (); extern _Float64 __nearbyintf64 (_Float64 __x) throw (); 5209: 5209: 5209: 5209: extern _Float64 roundf64 (_Float64 __x) throw () __attribute__ ((__const__)); extern _Float64 __roundf64 (_Float64 __x) throw () __attribute__ ((__const__)); 5209: 5209: 5209: 5209: extern _Float64 truncf64 (_Float64 __x) throw () __attribute__ ((__const__)); extern _Float64 __truncf64 (_Float64 __x) throw () __attribute__ ((__const__)); 5209: 5209: 5209: 5209: 5209: extern _Float64 remquof64 (_Float64 __x, _Float64 __y, int *__quo) throw (); extern _Float64 __remquof64 (_Float64 __x, _Float64 __y, int *__quo) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern long int lrintf64 (_Float64 __x) throw (); extern long int __lrintf64 (_Float64 __x) throw (); 5209: __extension__ 5209: extern long long int llrintf64 (_Float64 __x) throw (); extern long long int __llrintf64 (_Float64 __x) throw (); 5209: 5209: 5209: 5209: extern long int lroundf64 (_Float64 __x) throw (); extern long int __lroundf64 (_Float64 __x) throw (); 5209: __extension__ 5209: extern long long int llroundf64 (_Float64 __x) throw (); extern long long int __llroundf64 (_Float64 __x) throw (); 5209: 5209: 5209: 5209: extern _Float64 fdimf64 (_Float64 __x, _Float64 __y) throw (); extern _Float64 __fdimf64 (_Float64 __x, _Float64 __y) throw (); 5209: 5209: 5209: extern _Float64 fmaxf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__)); extern _Float64 __fmaxf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern _Float64 fminf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__)); extern _Float64 __fminf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern _Float64 fmaf64 (_Float64 __x, _Float64 __y, _Float64 __z) throw (); extern _Float64 __fmaf64 (_Float64 __x, _Float64 __y, _Float64 __z) throw (); 5209: 5209: 5209: 5209: 5209: extern _Float64 roundevenf64 (_Float64 __x) throw () __attribute__ ((__const__)); extern _Float64 __roundevenf64 (_Float64 __x) throw () __attribute__ ((__const__)); 5209: 5209: 5209: 5209: extern __intmax_t fromfpf64 (_Float64 __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpf64 (_Float64 __x, int __round, unsigned int __width) throw () 5209: ; 5209: 5209: 5209: 5209: extern __uintmax_t ufromfpf64 (_Float64 __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpf64 (_Float64 __x, int __round, unsigned int __width) throw () 5209: ; 5209: 5209: 5209: 5209: 5209: extern __intmax_t fromfpxf64 (_Float64 __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpxf64 (_Float64 __x, int __round, unsigned int __width) throw () 5209: ; 5209: 5209: 5209: 5209: 5209: extern __uintmax_t ufromfpxf64 (_Float64 __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpxf64 (_Float64 __x, int __round, unsigned int __width) throw () 5209: ; 5209: 5209: 5209: extern _Float64 fmaxmagf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__)); extern _Float64 __fmaxmagf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern _Float64 fminmagf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__)); extern _Float64 __fminmagf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern int totalorderf64 (_Float64 __x, _Float64 __y) throw () 5209: __attribute__ ((__const__)); 5209: 5209: 5209: extern int totalordermagf64 (_Float64 __x, _Float64 __y) throw () 5209: __attribute__ ((__const__)); 5209: 5209: 5209: extern int canonicalizef64 (_Float64 *__cx, const _Float64 *__x) throw (); 5209: 5209: 5209: extern _Float64 getpayloadf64 (const _Float64 *__x) throw (); extern _Float64 __getpayloadf64 (const _Float64 *__x) throw (); 5209: 5209: 5209: extern int setpayloadf64 (_Float64 *__x, _Float64 __payload) throw (); 5209: 5209: 5209: extern int setpayloadsigf64 (_Float64 *__x, _Float64 __payload) throw (); 5209: # 407 "/usr/include/math.h" 2 3 4 5209: # 423 "/usr/include/math.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 1 3 4 5209: # 53 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 5209: extern _Float128 acosf128 (_Float128 __x) throw (); extern _Float128 __acosf128 (_Float128 __x) throw (); 5209: 5209: extern _Float128 asinf128 (_Float128 __x) throw (); extern _Float128 __asinf128 (_Float128 __x) throw (); 5209: 5209: extern _Float128 atanf128 (_Float128 __x) throw (); extern _Float128 __atanf128 (_Float128 __x) throw (); 5209: 5209: extern _Float128 atan2f128 (_Float128 __y, _Float128 __x) throw (); extern _Float128 __atan2f128 (_Float128 __y, _Float128 __x) throw (); 5209: 5209: 5209: extern _Float128 cosf128 (_Float128 __x) throw (); extern _Float128 __cosf128 (_Float128 __x) throw (); 5209: 5209: extern _Float128 sinf128 (_Float128 __x) throw (); extern _Float128 __sinf128 (_Float128 __x) throw (); 5209: 5209: extern _Float128 tanf128 (_Float128 __x) throw (); extern _Float128 __tanf128 (_Float128 __x) throw (); 5209: 5209: 5209: 5209: 5209: extern _Float128 coshf128 (_Float128 __x) throw (); extern _Float128 __coshf128 (_Float128 __x) throw (); 5209: 5209: extern _Float128 sinhf128 (_Float128 __x) throw (); extern _Float128 __sinhf128 (_Float128 __x) throw (); 5209: 5209: extern _Float128 tanhf128 (_Float128 __x) throw (); extern _Float128 __tanhf128 (_Float128 __x) throw (); 5209: 5209: 5209: 5209: extern void sincosf128 (_Float128 __x, _Float128 *__sinx, _Float128 *__cosx) throw (); extern void __sincosf128 (_Float128 __x, _Float128 *__sinx, _Float128 *__cosx) throw () 5209: ; 5209: 5209: 5209: 5209: 5209: extern _Float128 acoshf128 (_Float128 __x) throw (); extern _Float128 __acoshf128 (_Float128 __x) throw (); 5209: 5209: extern _Float128 asinhf128 (_Float128 __x) throw (); extern _Float128 __asinhf128 (_Float128 __x) throw (); 5209: 5209: extern _Float128 atanhf128 (_Float128 __x) throw (); extern _Float128 __atanhf128 (_Float128 __x) throw (); 5209: 5209: 5209: 5209: 5209: 5209: extern _Float128 expf128 (_Float128 __x) throw (); extern _Float128 __expf128 (_Float128 __x) throw (); 5209: 5209: 5209: extern _Float128 frexpf128 (_Float128 __x, int *__exponent) throw (); extern _Float128 __frexpf128 (_Float128 __x, int *__exponent) throw (); 5209: 5209: 5209: extern _Float128 ldexpf128 (_Float128 __x, int __exponent) throw (); extern _Float128 __ldexpf128 (_Float128 __x, int __exponent) throw (); 5209: 5209: 5209: extern _Float128 logf128 (_Float128 __x) throw (); extern _Float128 __logf128 (_Float128 __x) throw (); 5209: 5209: 5209: extern _Float128 log10f128 (_Float128 __x) throw (); extern _Float128 __log10f128 (_Float128 __x) throw (); 5209: 5209: 5209: extern _Float128 modff128 (_Float128 __x, _Float128 *__iptr) throw (); extern _Float128 __modff128 (_Float128 __x, _Float128 *__iptr) throw () __attribute__ ((__nonnull__ (2))); 5209: 5209: 5209: 5209: extern _Float128 exp10f128 (_Float128 __x) throw (); extern _Float128 __exp10f128 (_Float128 __x) throw (); 5209: 5209: 5209: 5209: 5209: extern _Float128 expm1f128 (_Float128 __x) throw (); extern _Float128 __expm1f128 (_Float128 __x) throw (); 5209: 5209: 5209: extern _Float128 log1pf128 (_Float128 __x) throw (); extern _Float128 __log1pf128 (_Float128 __x) throw (); 5209: 5209: 5209: extern _Float128 logbf128 (_Float128 __x) throw (); extern _Float128 __logbf128 (_Float128 __x) throw (); 5209: 5209: 5209: 5209: 5209: extern _Float128 exp2f128 (_Float128 __x) throw (); extern _Float128 __exp2f128 (_Float128 __x) throw (); 5209: 5209: 5209: extern _Float128 log2f128 (_Float128 __x) throw (); extern _Float128 __log2f128 (_Float128 __x) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern _Float128 powf128 (_Float128 __x, _Float128 __y) throw (); extern _Float128 __powf128 (_Float128 __x, _Float128 __y) throw (); 5209: 5209: 5209: extern _Float128 sqrtf128 (_Float128 __x) throw (); extern _Float128 __sqrtf128 (_Float128 __x) throw (); 5209: 5209: 5209: 5209: extern _Float128 hypotf128 (_Float128 __x, _Float128 __y) throw (); extern _Float128 __hypotf128 (_Float128 __x, _Float128 __y) throw (); 5209: 5209: 5209: 5209: 5209: extern _Float128 cbrtf128 (_Float128 __x) throw (); extern _Float128 __cbrtf128 (_Float128 __x) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern _Float128 ceilf128 (_Float128 __x) throw () __attribute__ ((__const__)); extern _Float128 __ceilf128 (_Float128 __x) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern _Float128 fabsf128 (_Float128 __x) throw () __attribute__ ((__const__)); extern _Float128 __fabsf128 (_Float128 __x) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern _Float128 floorf128 (_Float128 __x) throw () __attribute__ ((__const__)); extern _Float128 __floorf128 (_Float128 __x) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern _Float128 fmodf128 (_Float128 __x, _Float128 __y) throw (); extern _Float128 __fmodf128 (_Float128 __x, _Float128 __y) throw (); 5209: # 196 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 5209: extern _Float128 copysignf128 (_Float128 __x, _Float128 __y) throw () __attribute__ ((__const__)); extern _Float128 __copysignf128 (_Float128 __x, _Float128 __y) throw () __attribute__ ((__const__)); 5209: 5209: 5209: 5209: 5209: extern _Float128 nanf128 (const char *__tagb) throw (); extern _Float128 __nanf128 (const char *__tagb) throw (); 5209: # 217 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 5209: extern _Float128 j0f128 (_Float128) throw (); extern _Float128 __j0f128 (_Float128) throw (); 5209: extern _Float128 j1f128 (_Float128) throw (); extern _Float128 __j1f128 (_Float128) throw (); 5209: extern _Float128 jnf128 (int, _Float128) throw (); extern _Float128 __jnf128 (int, _Float128) throw (); 5209: extern _Float128 y0f128 (_Float128) throw (); extern _Float128 __y0f128 (_Float128) throw (); 5209: extern _Float128 y1f128 (_Float128) throw (); extern _Float128 __y1f128 (_Float128) throw (); 5209: extern _Float128 ynf128 (int, _Float128) throw (); extern _Float128 __ynf128 (int, _Float128) throw (); 5209: 5209: 5209: 5209: 5209: 5209: extern _Float128 erff128 (_Float128) throw (); extern _Float128 __erff128 (_Float128) throw (); 5209: extern _Float128 erfcf128 (_Float128) throw (); extern _Float128 __erfcf128 (_Float128) throw (); 5209: extern _Float128 lgammaf128 (_Float128) throw (); extern _Float128 __lgammaf128 (_Float128) throw (); 5209: 5209: 5209: 5209: 5209: extern _Float128 tgammaf128 (_Float128) throw (); extern _Float128 __tgammaf128 (_Float128) throw (); 5209: # 249 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 5209: extern _Float128 lgammaf128_r (_Float128, int *__signgamp) throw (); extern _Float128 __lgammaf128_r (_Float128, int *__signgamp) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern _Float128 rintf128 (_Float128 __x) throw (); extern _Float128 __rintf128 (_Float128 __x) throw (); 5209: 5209: 5209: extern _Float128 nextafterf128 (_Float128 __x, _Float128 __y) throw (); extern _Float128 __nextafterf128 (_Float128 __x, _Float128 __y) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern _Float128 nextdownf128 (_Float128 __x) throw (); extern _Float128 __nextdownf128 (_Float128 __x) throw (); 5209: 5209: extern _Float128 nextupf128 (_Float128 __x) throw (); extern _Float128 __nextupf128 (_Float128 __x) throw (); 5209: 5209: 5209: 5209: extern _Float128 remainderf128 (_Float128 __x, _Float128 __y) throw (); extern _Float128 __remainderf128 (_Float128 __x, _Float128 __y) throw (); 5209: 5209: 5209: 5209: extern _Float128 scalbnf128 (_Float128 __x, int __n) throw (); extern _Float128 __scalbnf128 (_Float128 __x, int __n) throw (); 5209: 5209: 5209: 5209: extern int ilogbf128 (_Float128 __x) throw (); extern int __ilogbf128 (_Float128 __x) throw (); 5209: 5209: 5209: 5209: 5209: extern long int llogbf128 (_Float128 __x) throw (); extern long int __llogbf128 (_Float128 __x) throw (); 5209: 5209: 5209: 5209: 5209: extern _Float128 scalblnf128 (_Float128 __x, long int __n) throw (); extern _Float128 __scalblnf128 (_Float128 __x, long int __n) throw (); 5209: 5209: 5209: 5209: extern _Float128 nearbyintf128 (_Float128 __x) throw (); extern _Float128 __nearbyintf128 (_Float128 __x) throw (); 5209: 5209: 5209: 5209: extern _Float128 roundf128 (_Float128 __x) throw () __attribute__ ((__const__)); extern _Float128 __roundf128 (_Float128 __x) throw () __attribute__ ((__const__)); 5209: 5209: 5209: 5209: extern _Float128 truncf128 (_Float128 __x) throw () __attribute__ ((__const__)); extern _Float128 __truncf128 (_Float128 __x) throw () __attribute__ ((__const__)); 5209: 5209: 5209: 5209: 5209: extern _Float128 remquof128 (_Float128 __x, _Float128 __y, int *__quo) throw (); extern _Float128 __remquof128 (_Float128 __x, _Float128 __y, int *__quo) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern long int lrintf128 (_Float128 __x) throw (); extern long int __lrintf128 (_Float128 __x) throw (); 5209: __extension__ 5209: extern long long int llrintf128 (_Float128 __x) throw (); extern long long int __llrintf128 (_Float128 __x) throw (); 5209: 5209: 5209: 5209: extern long int lroundf128 (_Float128 __x) throw (); extern long int __lroundf128 (_Float128 __x) throw (); 5209: __extension__ 5209: extern long long int llroundf128 (_Float128 __x) throw (); extern long long int __llroundf128 (_Float128 __x) throw (); 5209: 5209: 5209: 5209: extern _Float128 fdimf128 (_Float128 __x, _Float128 __y) throw (); extern _Float128 __fdimf128 (_Float128 __x, _Float128 __y) throw (); 5209: 5209: 5209: extern _Float128 fmaxf128 (_Float128 __x, _Float128 __y) throw () __attribute__ ((__const__)); extern _Float128 __fmaxf128 (_Float128 __x, _Float128 __y) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern _Float128 fminf128 (_Float128 __x, _Float128 __y) throw () __attribute__ ((__const__)); extern _Float128 __fminf128 (_Float128 __x, _Float128 __y) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern _Float128 fmaf128 (_Float128 __x, _Float128 __y, _Float128 __z) throw (); extern _Float128 __fmaf128 (_Float128 __x, _Float128 __y, _Float128 __z) throw (); 5209: 5209: 5209: 5209: 5209: extern _Float128 roundevenf128 (_Float128 __x) throw () __attribute__ ((__const__)); extern _Float128 __roundevenf128 (_Float128 __x) throw () __attribute__ ((__const__)); 5209: 5209: 5209: 5209: extern __intmax_t fromfpf128 (_Float128 __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpf128 (_Float128 __x, int __round, unsigned int __width) throw () 5209: ; 5209: 5209: 5209: 5209: extern __uintmax_t ufromfpf128 (_Float128 __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpf128 (_Float128 __x, int __round, unsigned int __width) throw () 5209: ; 5209: 5209: 5209: 5209: 5209: extern __intmax_t fromfpxf128 (_Float128 __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpxf128 (_Float128 __x, int __round, unsigned int __width) throw () 5209: ; 5209: 5209: 5209: 5209: 5209: extern __uintmax_t ufromfpxf128 (_Float128 __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpxf128 (_Float128 __x, int __round, unsigned int __width) throw () 5209: ; 5209: 5209: 5209: extern _Float128 fmaxmagf128 (_Float128 __x, _Float128 __y) throw () __attribute__ ((__const__)); extern _Float128 __fmaxmagf128 (_Float128 __x, _Float128 __y) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern _Float128 fminmagf128 (_Float128 __x, _Float128 __y) throw () __attribute__ ((__const__)); extern _Float128 __fminmagf128 (_Float128 __x, _Float128 __y) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern int totalorderf128 (_Float128 __x, _Float128 __y) throw () 5209: __attribute__ ((__const__)); 5209: 5209: 5209: extern int totalordermagf128 (_Float128 __x, _Float128 __y) throw () 5209: __attribute__ ((__const__)); 5209: 5209: 5209: extern int canonicalizef128 (_Float128 *__cx, const _Float128 *__x) throw (); 5209: 5209: 5209: extern _Float128 getpayloadf128 (const _Float128 *__x) throw (); extern _Float128 __getpayloadf128 (const _Float128 *__x) throw (); 5209: 5209: 5209: extern int setpayloadf128 (_Float128 *__x, _Float128 __payload) throw (); 5209: 5209: 5209: extern int setpayloadsigf128 (_Float128 *__x, _Float128 __payload) throw (); 5209: # 424 "/usr/include/math.h" 2 3 4 5209: # 440 "/usr/include/math.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 1 3 4 5209: # 53 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 5209: extern _Float32x acosf32x (_Float32x __x) throw (); extern _Float32x __acosf32x (_Float32x __x) throw (); 5209: 5209: extern _Float32x asinf32x (_Float32x __x) throw (); extern _Float32x __asinf32x (_Float32x __x) throw (); 5209: 5209: extern _Float32x atanf32x (_Float32x __x) throw (); extern _Float32x __atanf32x (_Float32x __x) throw (); 5209: 5209: extern _Float32x atan2f32x (_Float32x __y, _Float32x __x) throw (); extern _Float32x __atan2f32x (_Float32x __y, _Float32x __x) throw (); 5209: 5209: 5209: extern _Float32x cosf32x (_Float32x __x) throw (); extern _Float32x __cosf32x (_Float32x __x) throw (); 5209: 5209: extern _Float32x sinf32x (_Float32x __x) throw (); extern _Float32x __sinf32x (_Float32x __x) throw (); 5209: 5209: extern _Float32x tanf32x (_Float32x __x) throw (); extern _Float32x __tanf32x (_Float32x __x) throw (); 5209: 5209: 5209: 5209: 5209: extern _Float32x coshf32x (_Float32x __x) throw (); extern _Float32x __coshf32x (_Float32x __x) throw (); 5209: 5209: extern _Float32x sinhf32x (_Float32x __x) throw (); extern _Float32x __sinhf32x (_Float32x __x) throw (); 5209: 5209: extern _Float32x tanhf32x (_Float32x __x) throw (); extern _Float32x __tanhf32x (_Float32x __x) throw (); 5209: 5209: 5209: 5209: extern void sincosf32x (_Float32x __x, _Float32x *__sinx, _Float32x *__cosx) throw (); extern void __sincosf32x (_Float32x __x, _Float32x *__sinx, _Float32x *__cosx) throw () 5209: ; 5209: 5209: 5209: 5209: 5209: extern _Float32x acoshf32x (_Float32x __x) throw (); extern _Float32x __acoshf32x (_Float32x __x) throw (); 5209: 5209: extern _Float32x asinhf32x (_Float32x __x) throw (); extern _Float32x __asinhf32x (_Float32x __x) throw (); 5209: 5209: extern _Float32x atanhf32x (_Float32x __x) throw (); extern _Float32x __atanhf32x (_Float32x __x) throw (); 5209: 5209: 5209: 5209: 5209: 5209: extern _Float32x expf32x (_Float32x __x) throw (); extern _Float32x __expf32x (_Float32x __x) throw (); 5209: 5209: 5209: extern _Float32x frexpf32x (_Float32x __x, int *__exponent) throw (); extern _Float32x __frexpf32x (_Float32x __x, int *__exponent) throw (); 5209: 5209: 5209: extern _Float32x ldexpf32x (_Float32x __x, int __exponent) throw (); extern _Float32x __ldexpf32x (_Float32x __x, int __exponent) throw (); 5209: 5209: 5209: extern _Float32x logf32x (_Float32x __x) throw (); extern _Float32x __logf32x (_Float32x __x) throw (); 5209: 5209: 5209: extern _Float32x log10f32x (_Float32x __x) throw (); extern _Float32x __log10f32x (_Float32x __x) throw (); 5209: 5209: 5209: extern _Float32x modff32x (_Float32x __x, _Float32x *__iptr) throw (); extern _Float32x __modff32x (_Float32x __x, _Float32x *__iptr) throw () __attribute__ ((__nonnull__ (2))); 5209: 5209: 5209: 5209: extern _Float32x exp10f32x (_Float32x __x) throw (); extern _Float32x __exp10f32x (_Float32x __x) throw (); 5209: 5209: 5209: 5209: 5209: extern _Float32x expm1f32x (_Float32x __x) throw (); extern _Float32x __expm1f32x (_Float32x __x) throw (); 5209: 5209: 5209: extern _Float32x log1pf32x (_Float32x __x) throw (); extern _Float32x __log1pf32x (_Float32x __x) throw (); 5209: 5209: 5209: extern _Float32x logbf32x (_Float32x __x) throw (); extern _Float32x __logbf32x (_Float32x __x) throw (); 5209: 5209: 5209: 5209: 5209: extern _Float32x exp2f32x (_Float32x __x) throw (); extern _Float32x __exp2f32x (_Float32x __x) throw (); 5209: 5209: 5209: extern _Float32x log2f32x (_Float32x __x) throw (); extern _Float32x __log2f32x (_Float32x __x) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern _Float32x powf32x (_Float32x __x, _Float32x __y) throw (); extern _Float32x __powf32x (_Float32x __x, _Float32x __y) throw (); 5209: 5209: 5209: extern _Float32x sqrtf32x (_Float32x __x) throw (); extern _Float32x __sqrtf32x (_Float32x __x) throw (); 5209: 5209: 5209: 5209: extern _Float32x hypotf32x (_Float32x __x, _Float32x __y) throw (); extern _Float32x __hypotf32x (_Float32x __x, _Float32x __y) throw (); 5209: 5209: 5209: 5209: 5209: extern _Float32x cbrtf32x (_Float32x __x) throw (); extern _Float32x __cbrtf32x (_Float32x __x) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern _Float32x ceilf32x (_Float32x __x) throw () __attribute__ ((__const__)); extern _Float32x __ceilf32x (_Float32x __x) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern _Float32x fabsf32x (_Float32x __x) throw () __attribute__ ((__const__)); extern _Float32x __fabsf32x (_Float32x __x) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern _Float32x floorf32x (_Float32x __x) throw () __attribute__ ((__const__)); extern _Float32x __floorf32x (_Float32x __x) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern _Float32x fmodf32x (_Float32x __x, _Float32x __y) throw (); extern _Float32x __fmodf32x (_Float32x __x, _Float32x __y) throw (); 5209: # 196 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 5209: extern _Float32x copysignf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__)); extern _Float32x __copysignf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__)); 5209: 5209: 5209: 5209: 5209: extern _Float32x nanf32x (const char *__tagb) throw (); extern _Float32x __nanf32x (const char *__tagb) throw (); 5209: # 217 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 5209: extern _Float32x j0f32x (_Float32x) throw (); extern _Float32x __j0f32x (_Float32x) throw (); 5209: extern _Float32x j1f32x (_Float32x) throw (); extern _Float32x __j1f32x (_Float32x) throw (); 5209: extern _Float32x jnf32x (int, _Float32x) throw (); extern _Float32x __jnf32x (int, _Float32x) throw (); 5209: extern _Float32x y0f32x (_Float32x) throw (); extern _Float32x __y0f32x (_Float32x) throw (); 5209: extern _Float32x y1f32x (_Float32x) throw (); extern _Float32x __y1f32x (_Float32x) throw (); 5209: extern _Float32x ynf32x (int, _Float32x) throw (); extern _Float32x __ynf32x (int, _Float32x) throw (); 5209: 5209: 5209: 5209: 5209: 5209: extern _Float32x erff32x (_Float32x) throw (); extern _Float32x __erff32x (_Float32x) throw (); 5209: extern _Float32x erfcf32x (_Float32x) throw (); extern _Float32x __erfcf32x (_Float32x) throw (); 5209: extern _Float32x lgammaf32x (_Float32x) throw (); extern _Float32x __lgammaf32x (_Float32x) throw (); 5209: 5209: 5209: 5209: 5209: extern _Float32x tgammaf32x (_Float32x) throw (); extern _Float32x __tgammaf32x (_Float32x) throw (); 5209: # 249 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 5209: extern _Float32x lgammaf32x_r (_Float32x, int *__signgamp) throw (); extern _Float32x __lgammaf32x_r (_Float32x, int *__signgamp) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern _Float32x rintf32x (_Float32x __x) throw (); extern _Float32x __rintf32x (_Float32x __x) throw (); 5209: 5209: 5209: extern _Float32x nextafterf32x (_Float32x __x, _Float32x __y) throw (); extern _Float32x __nextafterf32x (_Float32x __x, _Float32x __y) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern _Float32x nextdownf32x (_Float32x __x) throw (); extern _Float32x __nextdownf32x (_Float32x __x) throw (); 5209: 5209: extern _Float32x nextupf32x (_Float32x __x) throw (); extern _Float32x __nextupf32x (_Float32x __x) throw (); 5209: 5209: 5209: 5209: extern _Float32x remainderf32x (_Float32x __x, _Float32x __y) throw (); extern _Float32x __remainderf32x (_Float32x __x, _Float32x __y) throw (); 5209: 5209: 5209: 5209: extern _Float32x scalbnf32x (_Float32x __x, int __n) throw (); extern _Float32x __scalbnf32x (_Float32x __x, int __n) throw (); 5209: 5209: 5209: 5209: extern int ilogbf32x (_Float32x __x) throw (); extern int __ilogbf32x (_Float32x __x) throw (); 5209: 5209: 5209: 5209: 5209: extern long int llogbf32x (_Float32x __x) throw (); extern long int __llogbf32x (_Float32x __x) throw (); 5209: 5209: 5209: 5209: 5209: extern _Float32x scalblnf32x (_Float32x __x, long int __n) throw (); extern _Float32x __scalblnf32x (_Float32x __x, long int __n) throw (); 5209: 5209: 5209: 5209: extern _Float32x nearbyintf32x (_Float32x __x) throw (); extern _Float32x __nearbyintf32x (_Float32x __x) throw (); 5209: 5209: 5209: 5209: extern _Float32x roundf32x (_Float32x __x) throw () __attribute__ ((__const__)); extern _Float32x __roundf32x (_Float32x __x) throw () __attribute__ ((__const__)); 5209: 5209: 5209: 5209: extern _Float32x truncf32x (_Float32x __x) throw () __attribute__ ((__const__)); extern _Float32x __truncf32x (_Float32x __x) throw () __attribute__ ((__const__)); 5209: 5209: 5209: 5209: 5209: extern _Float32x remquof32x (_Float32x __x, _Float32x __y, int *__quo) throw (); extern _Float32x __remquof32x (_Float32x __x, _Float32x __y, int *__quo) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern long int lrintf32x (_Float32x __x) throw (); extern long int __lrintf32x (_Float32x __x) throw (); 5209: __extension__ 5209: extern long long int llrintf32x (_Float32x __x) throw (); extern long long int __llrintf32x (_Float32x __x) throw (); 5209: 5209: 5209: 5209: extern long int lroundf32x (_Float32x __x) throw (); extern long int __lroundf32x (_Float32x __x) throw (); 5209: __extension__ 5209: extern long long int llroundf32x (_Float32x __x) throw (); extern long long int __llroundf32x (_Float32x __x) throw (); 5209: 5209: 5209: 5209: extern _Float32x fdimf32x (_Float32x __x, _Float32x __y) throw (); extern _Float32x __fdimf32x (_Float32x __x, _Float32x __y) throw (); 5209: 5209: 5209: extern _Float32x fmaxf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__)); extern _Float32x __fmaxf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern _Float32x fminf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__)); extern _Float32x __fminf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern _Float32x fmaf32x (_Float32x __x, _Float32x __y, _Float32x __z) throw (); extern _Float32x __fmaf32x (_Float32x __x, _Float32x __y, _Float32x __z) throw (); 5209: 5209: 5209: 5209: 5209: extern _Float32x roundevenf32x (_Float32x __x) throw () __attribute__ ((__const__)); extern _Float32x __roundevenf32x (_Float32x __x) throw () __attribute__ ((__const__)); 5209: 5209: 5209: 5209: extern __intmax_t fromfpf32x (_Float32x __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpf32x (_Float32x __x, int __round, unsigned int __width) throw () 5209: ; 5209: 5209: 5209: 5209: extern __uintmax_t ufromfpf32x (_Float32x __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpf32x (_Float32x __x, int __round, unsigned int __width) throw () 5209: ; 5209: 5209: 5209: 5209: 5209: extern __intmax_t fromfpxf32x (_Float32x __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpxf32x (_Float32x __x, int __round, unsigned int __width) throw () 5209: ; 5209: 5209: 5209: 5209: 5209: extern __uintmax_t ufromfpxf32x (_Float32x __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpxf32x (_Float32x __x, int __round, unsigned int __width) throw () 5209: ; 5209: 5209: 5209: extern _Float32x fmaxmagf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__)); extern _Float32x __fmaxmagf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern _Float32x fminmagf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__)); extern _Float32x __fminmagf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern int totalorderf32x (_Float32x __x, _Float32x __y) throw () 5209: __attribute__ ((__const__)); 5209: 5209: 5209: extern int totalordermagf32x (_Float32x __x, _Float32x __y) throw () 5209: __attribute__ ((__const__)); 5209: 5209: 5209: extern int canonicalizef32x (_Float32x *__cx, const _Float32x *__x) throw (); 5209: 5209: 5209: extern _Float32x getpayloadf32x (const _Float32x *__x) throw (); extern _Float32x __getpayloadf32x (const _Float32x *__x) throw (); 5209: 5209: 5209: extern int setpayloadf32x (_Float32x *__x, _Float32x __payload) throw (); 5209: 5209: 5209: extern int setpayloadsigf32x (_Float32x *__x, _Float32x __payload) throw (); 5209: # 441 "/usr/include/math.h" 2 3 4 5209: # 457 "/usr/include/math.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 1 3 4 5209: # 53 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 5209: extern _Float64x acosf64x (_Float64x __x) throw (); extern _Float64x __acosf64x (_Float64x __x) throw (); 5209: 5209: extern _Float64x asinf64x (_Float64x __x) throw (); extern _Float64x __asinf64x (_Float64x __x) throw (); 5209: 5209: extern _Float64x atanf64x (_Float64x __x) throw (); extern _Float64x __atanf64x (_Float64x __x) throw (); 5209: 5209: extern _Float64x atan2f64x (_Float64x __y, _Float64x __x) throw (); extern _Float64x __atan2f64x (_Float64x __y, _Float64x __x) throw (); 5209: 5209: 5209: extern _Float64x cosf64x (_Float64x __x) throw (); extern _Float64x __cosf64x (_Float64x __x) throw (); 5209: 5209: extern _Float64x sinf64x (_Float64x __x) throw (); extern _Float64x __sinf64x (_Float64x __x) throw (); 5209: 5209: extern _Float64x tanf64x (_Float64x __x) throw (); extern _Float64x __tanf64x (_Float64x __x) throw (); 5209: 5209: 5209: 5209: 5209: extern _Float64x coshf64x (_Float64x __x) throw (); extern _Float64x __coshf64x (_Float64x __x) throw (); 5209: 5209: extern _Float64x sinhf64x (_Float64x __x) throw (); extern _Float64x __sinhf64x (_Float64x __x) throw (); 5209: 5209: extern _Float64x tanhf64x (_Float64x __x) throw (); extern _Float64x __tanhf64x (_Float64x __x) throw (); 5209: 5209: 5209: 5209: extern void sincosf64x (_Float64x __x, _Float64x *__sinx, _Float64x *__cosx) throw (); extern void __sincosf64x (_Float64x __x, _Float64x *__sinx, _Float64x *__cosx) throw () 5209: ; 5209: 5209: 5209: 5209: 5209: extern _Float64x acoshf64x (_Float64x __x) throw (); extern _Float64x __acoshf64x (_Float64x __x) throw (); 5209: 5209: extern _Float64x asinhf64x (_Float64x __x) throw (); extern _Float64x __asinhf64x (_Float64x __x) throw (); 5209: 5209: extern _Float64x atanhf64x (_Float64x __x) throw (); extern _Float64x __atanhf64x (_Float64x __x) throw (); 5209: 5209: 5209: 5209: 5209: 5209: extern _Float64x expf64x (_Float64x __x) throw (); extern _Float64x __expf64x (_Float64x __x) throw (); 5209: 5209: 5209: extern _Float64x frexpf64x (_Float64x __x, int *__exponent) throw (); extern _Float64x __frexpf64x (_Float64x __x, int *__exponent) throw (); 5209: 5209: 5209: extern _Float64x ldexpf64x (_Float64x __x, int __exponent) throw (); extern _Float64x __ldexpf64x (_Float64x __x, int __exponent) throw (); 5209: 5209: 5209: extern _Float64x logf64x (_Float64x __x) throw (); extern _Float64x __logf64x (_Float64x __x) throw (); 5209: 5209: 5209: extern _Float64x log10f64x (_Float64x __x) throw (); extern _Float64x __log10f64x (_Float64x __x) throw (); 5209: 5209: 5209: extern _Float64x modff64x (_Float64x __x, _Float64x *__iptr) throw (); extern _Float64x __modff64x (_Float64x __x, _Float64x *__iptr) throw () __attribute__ ((__nonnull__ (2))); 5209: 5209: 5209: 5209: extern _Float64x exp10f64x (_Float64x __x) throw (); extern _Float64x __exp10f64x (_Float64x __x) throw (); 5209: 5209: 5209: 5209: 5209: extern _Float64x expm1f64x (_Float64x __x) throw (); extern _Float64x __expm1f64x (_Float64x __x) throw (); 5209: 5209: 5209: extern _Float64x log1pf64x (_Float64x __x) throw (); extern _Float64x __log1pf64x (_Float64x __x) throw (); 5209: 5209: 5209: extern _Float64x logbf64x (_Float64x __x) throw (); extern _Float64x __logbf64x (_Float64x __x) throw (); 5209: 5209: 5209: 5209: 5209: extern _Float64x exp2f64x (_Float64x __x) throw (); extern _Float64x __exp2f64x (_Float64x __x) throw (); 5209: 5209: 5209: extern _Float64x log2f64x (_Float64x __x) throw (); extern _Float64x __log2f64x (_Float64x __x) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern _Float64x powf64x (_Float64x __x, _Float64x __y) throw (); extern _Float64x __powf64x (_Float64x __x, _Float64x __y) throw (); 5209: 5209: 5209: extern _Float64x sqrtf64x (_Float64x __x) throw (); extern _Float64x __sqrtf64x (_Float64x __x) throw (); 5209: 5209: 5209: 5209: extern _Float64x hypotf64x (_Float64x __x, _Float64x __y) throw (); extern _Float64x __hypotf64x (_Float64x __x, _Float64x __y) throw (); 5209: 5209: 5209: 5209: 5209: extern _Float64x cbrtf64x (_Float64x __x) throw (); extern _Float64x __cbrtf64x (_Float64x __x) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern _Float64x ceilf64x (_Float64x __x) throw () __attribute__ ((__const__)); extern _Float64x __ceilf64x (_Float64x __x) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern _Float64x fabsf64x (_Float64x __x) throw () __attribute__ ((__const__)); extern _Float64x __fabsf64x (_Float64x __x) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern _Float64x floorf64x (_Float64x __x) throw () __attribute__ ((__const__)); extern _Float64x __floorf64x (_Float64x __x) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern _Float64x fmodf64x (_Float64x __x, _Float64x __y) throw (); extern _Float64x __fmodf64x (_Float64x __x, _Float64x __y) throw (); 5209: # 196 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 5209: extern _Float64x copysignf64x (_Float64x __x, _Float64x __y) throw () __attribute__ ((__const__)); extern _Float64x __copysignf64x (_Float64x __x, _Float64x __y) throw () __attribute__ ((__const__)); 5209: 5209: 5209: 5209: 5209: extern _Float64x nanf64x (const char *__tagb) throw (); extern _Float64x __nanf64x (const char *__tagb) throw (); 5209: # 217 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 5209: extern _Float64x j0f64x (_Float64x) throw (); extern _Float64x __j0f64x (_Float64x) throw (); 5209: extern _Float64x j1f64x (_Float64x) throw (); extern _Float64x __j1f64x (_Float64x) throw (); 5209: extern _Float64x jnf64x (int, _Float64x) throw (); extern _Float64x __jnf64x (int, _Float64x) throw (); 5209: extern _Float64x y0f64x (_Float64x) throw (); extern _Float64x __y0f64x (_Float64x) throw (); 5209: extern _Float64x y1f64x (_Float64x) throw (); extern _Float64x __y1f64x (_Float64x) throw (); 5209: extern _Float64x ynf64x (int, _Float64x) throw (); extern _Float64x __ynf64x (int, _Float64x) throw (); 5209: 5209: 5209: 5209: 5209: 5209: extern _Float64x erff64x (_Float64x) throw (); extern _Float64x __erff64x (_Float64x) throw (); 5209: extern _Float64x erfcf64x (_Float64x) throw (); extern _Float64x __erfcf64x (_Float64x) throw (); 5209: extern _Float64x lgammaf64x (_Float64x) throw (); extern _Float64x __lgammaf64x (_Float64x) throw (); 5209: 5209: 5209: 5209: 5209: extern _Float64x tgammaf64x (_Float64x) throw (); extern _Float64x __tgammaf64x (_Float64x) throw (); 5209: # 249 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 5209: extern _Float64x lgammaf64x_r (_Float64x, int *__signgamp) throw (); extern _Float64x __lgammaf64x_r (_Float64x, int *__signgamp) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern _Float64x rintf64x (_Float64x __x) throw (); extern _Float64x __rintf64x (_Float64x __x) throw (); 5209: 5209: 5209: extern _Float64x nextafterf64x (_Float64x __x, _Float64x __y) throw (); extern _Float64x __nextafterf64x (_Float64x __x, _Float64x __y) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern _Float64x nextdownf64x (_Float64x __x) throw (); extern _Float64x __nextdownf64x (_Float64x __x) throw (); 5209: 5209: extern _Float64x nextupf64x (_Float64x __x) throw (); extern _Float64x __nextupf64x (_Float64x __x) throw (); 5209: 5209: 5209: 5209: extern _Float64x remainderf64x (_Float64x __x, _Float64x __y) throw (); extern _Float64x __remainderf64x (_Float64x __x, _Float64x __y) throw (); 5209: 5209: 5209: 5209: extern _Float64x scalbnf64x (_Float64x __x, int __n) throw (); extern _Float64x __scalbnf64x (_Float64x __x, int __n) throw (); 5209: 5209: 5209: 5209: extern int ilogbf64x (_Float64x __x) throw (); extern int __ilogbf64x (_Float64x __x) throw (); 5209: 5209: 5209: 5209: 5209: extern long int llogbf64x (_Float64x __x) throw (); extern long int __llogbf64x (_Float64x __x) throw (); 5209: 5209: 5209: 5209: 5209: extern _Float64x scalblnf64x (_Float64x __x, long int __n) throw (); extern _Float64x __scalblnf64x (_Float64x __x, long int __n) throw (); 5209: 5209: 5209: 5209: extern _Float64x nearbyintf64x (_Float64x __x) throw (); extern _Float64x __nearbyintf64x (_Float64x __x) throw (); 5209: 5209: 5209: 5209: extern _Float64x roundf64x (_Float64x __x) throw () __attribute__ ((__const__)); extern _Float64x __roundf64x (_Float64x __x) throw () __attribute__ ((__const__)); 5209: 5209: 5209: 5209: extern _Float64x truncf64x (_Float64x __x) throw () __attribute__ ((__const__)); extern _Float64x __truncf64x (_Float64x __x) throw () __attribute__ ((__const__)); 5209: 5209: 5209: 5209: 5209: extern _Float64x remquof64x (_Float64x __x, _Float64x __y, int *__quo) throw (); extern _Float64x __remquof64x (_Float64x __x, _Float64x __y, int *__quo) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern long int lrintf64x (_Float64x __x) throw (); extern long int __lrintf64x (_Float64x __x) throw (); 5209: __extension__ 5209: extern long long int llrintf64x (_Float64x __x) throw (); extern long long int __llrintf64x (_Float64x __x) throw (); 5209: 5209: 5209: 5209: extern long int lroundf64x (_Float64x __x) throw (); extern long int __lroundf64x (_Float64x __x) throw (); 5209: __extension__ 5209: extern long long int llroundf64x (_Float64x __x) throw (); extern long long int __llroundf64x (_Float64x __x) throw (); 5209: 5209: 5209: 5209: extern _Float64x fdimf64x (_Float64x __x, _Float64x __y) throw (); extern _Float64x __fdimf64x (_Float64x __x, _Float64x __y) throw (); 5209: 5209: 5209: extern _Float64x fmaxf64x (_Float64x __x, _Float64x __y) throw () __attribute__ ((__const__)); extern _Float64x __fmaxf64x (_Float64x __x, _Float64x __y) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern _Float64x fminf64x (_Float64x __x, _Float64x __y) throw () __attribute__ ((__const__)); extern _Float64x __fminf64x (_Float64x __x, _Float64x __y) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern _Float64x fmaf64x (_Float64x __x, _Float64x __y, _Float64x __z) throw (); extern _Float64x __fmaf64x (_Float64x __x, _Float64x __y, _Float64x __z) throw (); 5209: 5209: 5209: 5209: 5209: extern _Float64x roundevenf64x (_Float64x __x) throw () __attribute__ ((__const__)); extern _Float64x __roundevenf64x (_Float64x __x) throw () __attribute__ ((__const__)); 5209: 5209: 5209: 5209: extern __intmax_t fromfpf64x (_Float64x __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpf64x (_Float64x __x, int __round, unsigned int __width) throw () 5209: ; 5209: 5209: 5209: 5209: extern __uintmax_t ufromfpf64x (_Float64x __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpf64x (_Float64x __x, int __round, unsigned int __width) throw () 5209: ; 5209: 5209: 5209: 5209: 5209: extern __intmax_t fromfpxf64x (_Float64x __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpxf64x (_Float64x __x, int __round, unsigned int __width) throw () 5209: ; 5209: 5209: 5209: 5209: 5209: extern __uintmax_t ufromfpxf64x (_Float64x __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpxf64x (_Float64x __x, int __round, unsigned int __width) throw () 5209: ; 5209: 5209: 5209: extern _Float64x fmaxmagf64x (_Float64x __x, _Float64x __y) throw () __attribute__ ((__const__)); extern _Float64x __fmaxmagf64x (_Float64x __x, _Float64x __y) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern _Float64x fminmagf64x (_Float64x __x, _Float64x __y) throw () __attribute__ ((__const__)); extern _Float64x __fminmagf64x (_Float64x __x, _Float64x __y) throw () __attribute__ ((__const__)); 5209: 5209: 5209: extern int totalorderf64x (_Float64x __x, _Float64x __y) throw () 5209: __attribute__ ((__const__)); 5209: 5209: 5209: extern int totalordermagf64x (_Float64x __x, _Float64x __y) throw () 5209: __attribute__ ((__const__)); 5209: 5209: 5209: extern int canonicalizef64x (_Float64x *__cx, const _Float64x *__x) throw (); 5209: 5209: 5209: extern _Float64x getpayloadf64x (const _Float64x *__x) throw (); extern _Float64x __getpayloadf64x (const _Float64x *__x) throw (); 5209: 5209: 5209: extern int setpayloadf64x (_Float64x *__x, _Float64x __payload) throw (); 5209: 5209: 5209: extern int setpayloadsigf64x (_Float64x *__x, _Float64x __payload) throw (); 5209: # 458 "/usr/include/math.h" 2 3 4 5209: # 503 "/usr/include/math.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 1 3 4 5209: # 24 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 3 4 5209: extern float fadd (double __x, double __y) throw (); 5209: 5209: 5209: extern float fdiv (double __x, double __y) throw (); 5209: 5209: 5209: extern float fmul (double __x, double __y) throw (); 5209: 5209: 5209: extern float fsub (double __x, double __y) throw (); 5209: # 504 "/usr/include/math.h" 2 3 4 5209: # 517 "/usr/include/math.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 1 3 4 5209: # 24 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 3 4 5209: extern float faddl (long double __x, long double __y) throw (); 5209: 5209: 5209: extern float fdivl (long double __x, long double __y) throw (); 5209: 5209: 5209: extern float fmull (long double __x, long double __y) throw (); 5209: 5209: 5209: extern float fsubl (long double __x, long double __y) throw (); 5209: # 518 "/usr/include/math.h" 2 3 4 5209: # 537 "/usr/include/math.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 1 3 4 5209: # 24 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 3 4 5209: extern double daddl (long double __x, long double __y) throw (); 5209: 5209: 5209: extern double ddivl (long double __x, long double __y) throw (); 5209: 5209: 5209: extern double dmull (long double __x, long double __y) throw (); 5209: 5209: 5209: extern double dsubl (long double __x, long double __y) throw (); 5209: # 538 "/usr/include/math.h" 2 3 4 5209: # 616 "/usr/include/math.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 1 3 4 5209: # 24 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 3 4 5209: extern _Float32 f32addf32x (_Float32x __x, _Float32x __y) throw (); 5209: 5209: 5209: extern _Float32 f32divf32x (_Float32x __x, _Float32x __y) throw (); 5209: 5209: 5209: extern _Float32 f32mulf32x (_Float32x __x, _Float32x __y) throw (); 5209: 5209: 5209: extern _Float32 f32subf32x (_Float32x __x, _Float32x __y) throw (); 5209: # 617 "/usr/include/math.h" 2 3 4 5209: # 626 "/usr/include/math.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 1 3 4 5209: # 24 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 3 4 5209: extern _Float32 f32addf64 (_Float64 __x, _Float64 __y) throw (); 5209: 5209: 5209: extern _Float32 f32divf64 (_Float64 __x, _Float64 __y) throw (); 5209: 5209: 5209: extern _Float32 f32mulf64 (_Float64 __x, _Float64 __y) throw (); 5209: 5209: 5209: extern _Float32 f32subf64 (_Float64 __x, _Float64 __y) throw (); 5209: # 627 "/usr/include/math.h" 2 3 4 5209: # 636 "/usr/include/math.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 1 3 4 5209: # 24 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 3 4 5209: extern _Float32 f32addf64x (_Float64x __x, _Float64x __y) throw (); 5209: 5209: 5209: extern _Float32 f32divf64x (_Float64x __x, _Float64x __y) throw (); 5209: 5209: 5209: extern _Float32 f32mulf64x (_Float64x __x, _Float64x __y) throw (); 5209: 5209: 5209: extern _Float32 f32subf64x (_Float64x __x, _Float64x __y) throw (); 5209: # 637 "/usr/include/math.h" 2 3 4 5209: # 646 "/usr/include/math.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 1 3 4 5209: # 24 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 3 4 5209: extern _Float32 f32addf128 (_Float128 __x, _Float128 __y) throw (); 5209: 5209: 5209: extern _Float32 f32divf128 (_Float128 __x, _Float128 __y) throw (); 5209: 5209: 5209: extern _Float32 f32mulf128 (_Float128 __x, _Float128 __y) throw (); 5209: 5209: 5209: extern _Float32 f32subf128 (_Float128 __x, _Float128 __y) throw (); 5209: # 647 "/usr/include/math.h" 2 3 4 5209: # 666 "/usr/include/math.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 1 3 4 5209: # 24 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 3 4 5209: extern _Float32x f32xaddf64 (_Float64 __x, _Float64 __y) throw (); 5209: 5209: 5209: extern _Float32x f32xdivf64 (_Float64 __x, _Float64 __y) throw (); 5209: 5209: 5209: extern _Float32x f32xmulf64 (_Float64 __x, _Float64 __y) throw (); 5209: 5209: 5209: extern _Float32x f32xsubf64 (_Float64 __x, _Float64 __y) throw (); 5209: # 667 "/usr/include/math.h" 2 3 4 5209: # 676 "/usr/include/math.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 1 3 4 5209: # 24 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 3 4 5209: extern _Float32x f32xaddf64x (_Float64x __x, _Float64x __y) throw (); 5209: 5209: 5209: extern _Float32x f32xdivf64x (_Float64x __x, _Float64x __y) throw (); 5209: 5209: 5209: extern _Float32x f32xmulf64x (_Float64x __x, _Float64x __y) throw (); 5209: 5209: 5209: extern _Float32x f32xsubf64x (_Float64x __x, _Float64x __y) throw (); 5209: # 677 "/usr/include/math.h" 2 3 4 5209: # 686 "/usr/include/math.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 1 3 4 5209: # 24 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 3 4 5209: extern _Float32x f32xaddf128 (_Float128 __x, _Float128 __y) throw (); 5209: 5209: 5209: extern _Float32x f32xdivf128 (_Float128 __x, _Float128 __y) throw (); 5209: 5209: 5209: extern _Float32x f32xmulf128 (_Float128 __x, _Float128 __y) throw (); 5209: 5209: 5209: extern _Float32x f32xsubf128 (_Float128 __x, _Float128 __y) throw (); 5209: # 687 "/usr/include/math.h" 2 3 4 5209: # 706 "/usr/include/math.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 1 3 4 5209: # 24 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 3 4 5209: extern _Float64 f64addf64x (_Float64x __x, _Float64x __y) throw (); 5209: 5209: 5209: extern _Float64 f64divf64x (_Float64x __x, _Float64x __y) throw (); 5209: 5209: 5209: extern _Float64 f64mulf64x (_Float64x __x, _Float64x __y) throw (); 5209: 5209: 5209: extern _Float64 f64subf64x (_Float64x __x, _Float64x __y) throw (); 5209: # 707 "/usr/include/math.h" 2 3 4 5209: # 716 "/usr/include/math.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 1 3 4 5209: # 24 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 3 4 5209: extern _Float64 f64addf128 (_Float128 __x, _Float128 __y) throw (); 5209: 5209: 5209: extern _Float64 f64divf128 (_Float128 __x, _Float128 __y) throw (); 5209: 5209: 5209: extern _Float64 f64mulf128 (_Float128 __x, _Float128 __y) throw (); 5209: 5209: 5209: extern _Float64 f64subf128 (_Float128 __x, _Float128 __y) throw (); 5209: # 717 "/usr/include/math.h" 2 3 4 5209: # 736 "/usr/include/math.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 1 3 4 5209: # 24 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 3 4 5209: extern _Float64x f64xaddf128 (_Float128 __x, _Float128 __y) throw (); 5209: 5209: 5209: extern _Float64x f64xdivf128 (_Float128 __x, _Float128 __y) throw (); 5209: 5209: 5209: extern _Float64x f64xmulf128 (_Float128 __x, _Float128 __y) throw (); 5209: 5209: 5209: extern _Float64x f64xsubf128 (_Float128 __x, _Float128 __y) throw (); 5209: # 737 "/usr/include/math.h" 2 3 4 5209: # 773 "/usr/include/math.h" 3 4 5209: extern int signgam; 5209: # 853 "/usr/include/math.h" 3 4 5209: enum 5209: { 5209: FP_NAN = 5209: 5209: 0, 5209: FP_INFINITE = 5209: 5209: 1, 5209: FP_ZERO = 5209: 5209: 2, 5209: FP_SUBNORMAL = 5209: 5209: 3, 5209: FP_NORMAL = 5209: 5209: 4 5209: }; 5209: # 973 "/usr/include/math.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/iscanonical.h" 1 3 4 5209: # 974 "/usr/include/math.h" 2 3 4 5209: # 985 "/usr/include/math.h" 3 4 5209: extern "C++" { 5209: inline int issignaling (float __val) { return __issignalingf (__val); } 5209: inline int issignaling (double __val) { return __issignaling (__val); } 5209: inline int 5209: issignaling (long double __val) 5209: { 5209: 5209: 5209: 5209: return __issignalingl (__val); 5209: 5209: } 5209: 5209: 5209: 5209: 5209: 5209: } 5209: # 1016 "/usr/include/math.h" 3 4 5209: extern "C++" { 5209: # 1047 "/usr/include/math.h" 3 4 5209: template inline bool 5209: iszero (__T __val) 5209: { 5209: return __val == 0; 5209: } 5209: 5209: } 5209: # 1245 "/usr/include/math.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/mathinline.h" 1 3 4 5209: # 1246 "/usr/include/math.h" 2 3 4 5209: # 1498 "/usr/include/math.h" 3 4 5209: extern "C++" { 5209: template struct __iseqsig_type; 5209: 5209: template<> struct __iseqsig_type 5209: { 5209: static int __call (float __x, float __y) throw () 5209: { 5209: return __iseqsigf (__x, __y); 5209: } 5209: }; 5209: 5209: template<> struct __iseqsig_type 5209: { 5209: static int __call (double __x, double __y) throw () 5209: { 5209: return __iseqsig (__x, __y); 5209: } 5209: }; 5209: 5209: template<> struct __iseqsig_type 5209: { 5209: static int __call (long double __x, long double __y) throw () 5209: { 5209: 5209: return __iseqsigl (__x, __y); 5209: 5209: 5209: 5209: } 5209: }; 5209: # 1541 "/usr/include/math.h" 3 4 5209: template 5209: inline int 5209: iseqsig (_T1 __x, _T2 __y) throw () 5209: { 5209: 5209: typedef decltype (((__x) + (__y) + 0.0f)) _T3; 5209: 5209: 5209: 5209: return __iseqsig_type<_T3>::__call (__x, __y); 5209: } 5209: 5209: } 5209: 5209: 5209: 5209: 5209: } 5209: # 46 "/usr/include/c++/10/cmath" 2 3 5209: # 77 "/usr/include/c++/10/cmath" 3 5209: extern "C++" 5209: { 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: using ::acos; 5209: 5209: 5209: inline constexpr float 5209: acos(float __x) 5209: { return __builtin_acosf(__x); } 5209: 5209: inline constexpr long double 5209: acos(long double __x) 5209: { return __builtin_acosl(__x); } 5209: 5209: 5209: template 5209: inline constexpr 5209: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 5209: double>::__type 5209: acos(_Tp __x) 5209: { return __builtin_acos(__x); } 5209: 5209: using ::asin; 5209: 5209: 5209: inline constexpr float 5209: asin(float __x) 5209: { return __builtin_asinf(__x); } 5209: 5209: inline constexpr long double 5209: asin(long double __x) 5209: { return __builtin_asinl(__x); } 5209: 5209: 5209: template 5209: inline constexpr 5209: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 5209: double>::__type 5209: asin(_Tp __x) 5209: { return __builtin_asin(__x); } 5209: 5209: using ::atan; 5209: 5209: 5209: inline constexpr float 5209: atan(float __x) 5209: { return __builtin_atanf(__x); } 5209: 5209: inline constexpr long double 5209: atan(long double __x) 5209: { return __builtin_atanl(__x); } 5209: 5209: 5209: template 5209: inline constexpr 5209: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 5209: double>::__type 5209: atan(_Tp __x) 5209: { return __builtin_atan(__x); } 5209: 5209: using ::atan2; 5209: 5209: 5209: inline constexpr float 5209: atan2(float __y, float __x) 5209: { return __builtin_atan2f(__y, __x); } 5209: 5209: inline constexpr long double 5209: atan2(long double __y, long double __x) 5209: { return __builtin_atan2l(__y, __x); } 5209: 5209: 5209: template 5209: inline constexpr 5209: typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 5209: atan2(_Tp __y, _Up __x) 5209: { 5209: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 5209: return atan2(__type(__y), __type(__x)); 5209: } 5209: 5209: using ::ceil; 5209: 5209: 5209: inline constexpr float 5209: ceil(float __x) 5209: { return __builtin_ceilf(__x); } 5209: 5209: inline constexpr long double 5209: ceil(long double __x) 5209: { return __builtin_ceill(__x); } 5209: 5209: 5209: template 5209: inline constexpr 5209: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 5209: double>::__type 5209: ceil(_Tp __x) 5209: { return __builtin_ceil(__x); } 5209: 5209: using ::cos; 5209: 5209: 5209: inline constexpr float 5209: cos(float __x) 5209: { return __builtin_cosf(__x); } 5209: 5209: inline constexpr long double 5209: cos(long double __x) 5209: { return __builtin_cosl(__x); } 5209: 5209: 5209: template 5209: inline constexpr 5209: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 5209: double>::__type 5209: cos(_Tp __x) 5209: { return __builtin_cos(__x); } 5209: 5209: using ::cosh; 5209: 5209: 5209: inline constexpr float 5209: cosh(float __x) 5209: { return __builtin_coshf(__x); } 5209: 5209: inline constexpr long double 5209: cosh(long double __x) 5209: { return __builtin_coshl(__x); } 5209: 5209: 5209: template 5209: inline constexpr 5209: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 5209: double>::__type 5209: cosh(_Tp __x) 5209: { return __builtin_cosh(__x); } 5209: 5209: using ::exp; 5209: 5209: 5209: inline constexpr float 5209: exp(float __x) 5209: { return __builtin_expf(__x); } 5209: 5209: inline constexpr long double 5209: exp(long double __x) 5209: { return __builtin_expl(__x); } 5209: 5209: 5209: template 5209: inline constexpr 5209: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 5209: double>::__type 5209: exp(_Tp __x) 5209: { return __builtin_exp(__x); } 5209: 5209: using ::fabs; 5209: 5209: 5209: inline constexpr float 5209: fabs(float __x) 5209: { return __builtin_fabsf(__x); } 5209: 5209: inline constexpr long double 5209: fabs(long double __x) 5209: { return __builtin_fabsl(__x); } 5209: 5209: 5209: template 5209: inline constexpr 5209: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 5209: double>::__type 5209: fabs(_Tp __x) 5209: { return __builtin_fabs(__x); } 5209: 5209: using ::floor; 5209: 5209: 5209: inline constexpr float 5209: floor(float __x) 5209: { return __builtin_floorf(__x); } 5209: 5209: inline constexpr long double 5209: floor(long double __x) 5209: { return __builtin_floorl(__x); } 5209: 5209: 5209: template 5209: inline constexpr 5209: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 5209: double>::__type 5209: floor(_Tp __x) 5209: { return __builtin_floor(__x); } 5209: 5209: using ::fmod; 5209: 5209: 5209: inline constexpr float 5209: fmod(float __x, float __y) 5209: { return __builtin_fmodf(__x, __y); } 5209: 5209: inline constexpr long double 5209: fmod(long double __x, long double __y) 5209: { return __builtin_fmodl(__x, __y); } 5209: 5209: 5209: template 5209: inline constexpr 5209: typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 5209: fmod(_Tp __x, _Up __y) 5209: { 5209: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 5209: return fmod(__type(__x), __type(__y)); 5209: } 5209: 5209: using ::frexp; 5209: 5209: 5209: inline float 5209: frexp(float __x, int* __exp) 5209: { return __builtin_frexpf(__x, __exp); } 5209: 5209: inline long double 5209: frexp(long double __x, int* __exp) 5209: { return __builtin_frexpl(__x, __exp); } 5209: 5209: 5209: template 5209: inline constexpr 5209: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 5209: double>::__type 5209: frexp(_Tp __x, int* __exp) 5209: { return __builtin_frexp(__x, __exp); } 5209: 5209: using ::ldexp; 5209: 5209: 5209: inline constexpr float 5209: ldexp(float __x, int __exp) 5209: { return __builtin_ldexpf(__x, __exp); } 5209: 5209: inline constexpr long double 5209: ldexp(long double __x, int __exp) 5209: { return __builtin_ldexpl(__x, __exp); } 5209: 5209: 5209: template 5209: inline constexpr 5209: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 5209: double>::__type 5209: ldexp(_Tp __x, int __exp) 5209: { return __builtin_ldexp(__x, __exp); } 5209: 5209: using ::log; 5209: 5209: 5209: inline constexpr float 5209: log(float __x) 5209: { return __builtin_logf(__x); } 5209: 5209: inline constexpr long double 5209: log(long double __x) 5209: { return __builtin_logl(__x); } 5209: 5209: 5209: template 5209: inline constexpr 5209: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 5209: double>::__type 5209: log(_Tp __x) 5209: { return __builtin_log(__x); } 5209: 5209: using ::log10; 5209: 5209: 5209: inline constexpr float 5209: log10(float __x) 5209: { return __builtin_log10f(__x); } 5209: 5209: inline constexpr long double 5209: log10(long double __x) 5209: { return __builtin_log10l(__x); } 5209: 5209: 5209: template 5209: inline constexpr 5209: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 5209: double>::__type 5209: log10(_Tp __x) 5209: { return __builtin_log10(__x); } 5209: 5209: using ::modf; 5209: 5209: 5209: inline float 5209: modf(float __x, float* __iptr) 5209: { return __builtin_modff(__x, __iptr); } 5209: 5209: inline long double 5209: modf(long double __x, long double* __iptr) 5209: { return __builtin_modfl(__x, __iptr); } 5209: 5209: 5209: using ::pow; 5209: 5209: 5209: inline constexpr float 5209: pow(float __x, float __y) 5209: { return __builtin_powf(__x, __y); } 5209: 5209: inline constexpr long double 5209: pow(long double __x, long double __y) 5209: { return __builtin_powl(__x, __y); } 5209: # 412 "/usr/include/c++/10/cmath" 3 5209: template 5209: inline constexpr 5209: typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 5209: pow(_Tp __x, _Up __y) 5209: { 5209: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 5209: return pow(__type(__x), __type(__y)); 5209: } 5209: 5209: using ::sin; 5209: 5209: 5209: inline constexpr float 5209: sin(float __x) 5209: { return __builtin_sinf(__x); } 5209: 5209: inline constexpr long double 5209: sin(long double __x) 5209: { return __builtin_sinl(__x); } 5209: 5209: 5209: template 5209: inline constexpr 5209: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 5209: double>::__type 5209: sin(_Tp __x) 5209: { return __builtin_sin(__x); } 5209: 5209: using ::sinh; 5209: 5209: 5209: inline constexpr float 5209: sinh(float __x) 5209: { return __builtin_sinhf(__x); } 5209: 5209: inline constexpr long double 5209: sinh(long double __x) 5209: { return __builtin_sinhl(__x); } 5209: 5209: 5209: template 5209: inline constexpr 5209: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 5209: double>::__type 5209: sinh(_Tp __x) 5209: { return __builtin_sinh(__x); } 5209: 5209: using ::sqrt; 5209: 5209: 5209: inline constexpr float 5209: sqrt(float __x) 5209: { return __builtin_sqrtf(__x); } 5209: 5209: inline constexpr long double 5209: sqrt(long double __x) 5209: { return __builtin_sqrtl(__x); } 5209: 5209: 5209: template 5209: inline constexpr 5209: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 5209: double>::__type 5209: sqrt(_Tp __x) 5209: { return __builtin_sqrt(__x); } 5209: 5209: using ::tan; 5209: 5209: 5209: inline constexpr float 5209: tan(float __x) 5209: { return __builtin_tanf(__x); } 5209: 5209: inline constexpr long double 5209: tan(long double __x) 5209: { return __builtin_tanl(__x); } 5209: 5209: 5209: template 5209: inline constexpr 5209: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 5209: double>::__type 5209: tan(_Tp __x) 5209: { return __builtin_tan(__x); } 5209: 5209: using ::tanh; 5209: 5209: 5209: inline constexpr float 5209: tanh(float __x) 5209: { return __builtin_tanhf(__x); } 5209: 5209: inline constexpr long double 5209: tanh(long double __x) 5209: { return __builtin_tanhl(__x); } 5209: 5209: 5209: template 5209: inline constexpr 5209: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 5209: double>::__type 5209: tanh(_Tp __x) 5209: { return __builtin_tanh(__x); } 5209: # 536 "/usr/include/c++/10/cmath" 3 5209: constexpr int 5209: fpclassify(float __x) 5209: { return __builtin_fpclassify(0, 1, 4, 5209: 3, 2, __x); } 5209: 5209: constexpr int 5209: fpclassify(double __x) 5209: { return __builtin_fpclassify(0, 1, 4, 5209: 3, 2, __x); } 5209: 5209: constexpr int 5209: fpclassify(long double __x) 5209: { return __builtin_fpclassify(0, 1, 4, 5209: 3, 2, __x); } 5209: 5209: 5209: 5209: template 5209: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 5209: int>::__type 5209: fpclassify(_Tp __x) 5209: { return __x != 0 ? 4 : 2; } 5209: 5209: 5209: 5209: constexpr bool 5209: isfinite(float __x) 5209: { return __builtin_isfinite(__x); } 5209: 5209: constexpr bool 5209: isfinite(double __x) 5209: { return __builtin_isfinite(__x); } 5209: 5209: constexpr bool 5209: isfinite(long double __x) 5209: { return __builtin_isfinite(__x); } 5209: 5209: 5209: 5209: template 5209: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 5209: bool>::__type 5209: isfinite(_Tp __x) 5209: { return true; } 5209: 5209: 5209: 5209: constexpr bool 5209: isinf(float __x) 5209: { return __builtin_isinf(__x); } 5209: 5209: 5209: 5209: 5209: 5209: constexpr bool 5209: isinf(double __x) 5209: { return __builtin_isinf(__x); } 5209: 5209: 5209: constexpr bool 5209: isinf(long double __x) 5209: { return __builtin_isinf(__x); } 5209: 5209: 5209: 5209: template 5209: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 5209: bool>::__type 5209: isinf(_Tp __x) 5209: { return false; } 5209: 5209: 5209: 5209: constexpr bool 5209: isnan(float __x) 5209: { return __builtin_isnan(__x); } 5209: 5209: 5209: 5209: 5209: 5209: constexpr bool 5209: isnan(double __x) 5209: { return __builtin_isnan(__x); } 5209: 5209: 5209: constexpr bool 5209: isnan(long double __x) 5209: { return __builtin_isnan(__x); } 5209: 5209: 5209: 5209: template 5209: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 5209: bool>::__type 5209: isnan(_Tp __x) 5209: { return false; } 5209: 5209: 5209: 5209: constexpr bool 5209: isnormal(float __x) 5209: { return __builtin_isnormal(__x); } 5209: 5209: constexpr bool 5209: isnormal(double __x) 5209: { return __builtin_isnormal(__x); } 5209: 5209: constexpr bool 5209: isnormal(long double __x) 5209: { return __builtin_isnormal(__x); } 5209: 5209: 5209: 5209: template 5209: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 5209: bool>::__type 5209: isnormal(_Tp __x) 5209: { return __x != 0 ? true : false; } 5209: 5209: 5209: 5209: 5209: constexpr bool 5209: signbit(float __x) 5209: { return __builtin_signbit(__x); } 5209: 5209: constexpr bool 5209: signbit(double __x) 5209: { return __builtin_signbit(__x); } 5209: 5209: constexpr bool 5209: signbit(long double __x) 5209: { return __builtin_signbit(__x); } 5209: 5209: 5209: 5209: template 5209: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 5209: bool>::__type 5209: signbit(_Tp __x) 5209: { return __x < 0 ? true : false; } 5209: 5209: 5209: 5209: constexpr bool 5209: isgreater(float __x, float __y) 5209: { return __builtin_isgreater(__x, __y); } 5209: 5209: constexpr bool 5209: isgreater(double __x, double __y) 5209: { return __builtin_isgreater(__x, __y); } 5209: 5209: constexpr bool 5209: isgreater(long double __x, long double __y) 5209: { return __builtin_isgreater(__x, __y); } 5209: 5209: 5209: 5209: template 5209: constexpr typename 5209: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value 5209: && __is_arithmetic<_Up>::__value), bool>::__type 5209: isgreater(_Tp __x, _Up __y) 5209: { 5209: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 5209: return __builtin_isgreater(__type(__x), __type(__y)); 5209: } 5209: 5209: 5209: 5209: constexpr bool 5209: isgreaterequal(float __x, float __y) 5209: { return __builtin_isgreaterequal(__x, __y); } 5209: 5209: constexpr bool 5209: isgreaterequal(double __x, double __y) 5209: { return __builtin_isgreaterequal(__x, __y); } 5209: 5209: constexpr bool 5209: isgreaterequal(long double __x, long double __y) 5209: { return __builtin_isgreaterequal(__x, __y); } 5209: 5209: 5209: 5209: template 5209: constexpr typename 5209: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value 5209: && __is_arithmetic<_Up>::__value), bool>::__type 5209: isgreaterequal(_Tp __x, _Up __y) 5209: { 5209: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 5209: return __builtin_isgreaterequal(__type(__x), __type(__y)); 5209: } 5209: 5209: 5209: 5209: constexpr bool 5209: isless(float __x, float __y) 5209: { return __builtin_isless(__x, __y); } 5209: 5209: constexpr bool 5209: isless(double __x, double __y) 5209: { return __builtin_isless(__x, __y); } 5209: 5209: constexpr bool 5209: isless(long double __x, long double __y) 5209: { return __builtin_isless(__x, __y); } 5209: 5209: 5209: 5209: template 5209: constexpr typename 5209: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value 5209: && __is_arithmetic<_Up>::__value), bool>::__type 5209: isless(_Tp __x, _Up __y) 5209: { 5209: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 5209: return __builtin_isless(__type(__x), __type(__y)); 5209: } 5209: 5209: 5209: 5209: constexpr bool 5209: islessequal(float __x, float __y) 5209: { return __builtin_islessequal(__x, __y); } 5209: 5209: constexpr bool 5209: islessequal(double __x, double __y) 5209: { return __builtin_islessequal(__x, __y); } 5209: 5209: constexpr bool 5209: islessequal(long double __x, long double __y) 5209: { return __builtin_islessequal(__x, __y); } 5209: 5209: 5209: 5209: template 5209: constexpr typename 5209: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value 5209: && __is_arithmetic<_Up>::__value), bool>::__type 5209: islessequal(_Tp __x, _Up __y) 5209: { 5209: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 5209: return __builtin_islessequal(__type(__x), __type(__y)); 5209: } 5209: 5209: 5209: 5209: constexpr bool 5209: islessgreater(float __x, float __y) 5209: { return __builtin_islessgreater(__x, __y); } 5209: 5209: constexpr bool 5209: islessgreater(double __x, double __y) 5209: { return __builtin_islessgreater(__x, __y); } 5209: 5209: constexpr bool 5209: islessgreater(long double __x, long double __y) 5209: { return __builtin_islessgreater(__x, __y); } 5209: 5209: 5209: 5209: template 5209: constexpr typename 5209: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value 5209: && __is_arithmetic<_Up>::__value), bool>::__type 5209: islessgreater(_Tp __x, _Up __y) 5209: { 5209: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 5209: return __builtin_islessgreater(__type(__x), __type(__y)); 5209: } 5209: 5209: 5209: 5209: constexpr bool 5209: isunordered(float __x, float __y) 5209: { return __builtin_isunordered(__x, __y); } 5209: 5209: constexpr bool 5209: isunordered(double __x, double __y) 5209: { return __builtin_isunordered(__x, __y); } 5209: 5209: constexpr bool 5209: isunordered(long double __x, long double __y) 5209: { return __builtin_isunordered(__x, __y); } 5209: 5209: 5209: 5209: template 5209: constexpr typename 5209: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value 5209: && __is_arithmetic<_Up>::__value), bool>::__type 5209: isunordered(_Tp __x, _Up __y) 5209: { 5209: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 5209: return __builtin_isunordered(__type(__x), __type(__y)); 5209: } 5209: # 1065 "/usr/include/c++/10/cmath" 3 5209: using ::double_t; 5209: using ::float_t; 5209: 5209: 5209: using ::acosh; 5209: using ::acoshf; 5209: using ::acoshl; 5209: 5209: using ::asinh; 5209: using ::asinhf; 5209: using ::asinhl; 5209: 5209: using ::atanh; 5209: using ::atanhf; 5209: using ::atanhl; 5209: 5209: using ::cbrt; 5209: using ::cbrtf; 5209: using ::cbrtl; 5209: 5209: using ::copysign; 5209: using ::copysignf; 5209: using ::copysignl; 5209: 5209: using ::erf; 5209: using ::erff; 5209: using ::erfl; 5209: 5209: using ::erfc; 5209: using ::erfcf; 5209: using ::erfcl; 5209: 5209: using ::exp2; 5209: using ::exp2f; 5209: using ::exp2l; 5209: 5209: using ::expm1; 5209: using ::expm1f; 5209: using ::expm1l; 5209: 5209: using ::fdim; 5209: using ::fdimf; 5209: using ::fdiml; 5209: 5209: using ::fma; 5209: using ::fmaf; 5209: using ::fmal; 5209: 5209: using ::fmax; 5209: using ::fmaxf; 5209: using ::fmaxl; 5209: 5209: using ::fmin; 5209: using ::fminf; 5209: using ::fminl; 5209: 5209: using ::hypot; 5209: using ::hypotf; 5209: using ::hypotl; 5209: 5209: using ::ilogb; 5209: using ::ilogbf; 5209: using ::ilogbl; 5209: 5209: using ::lgamma; 5209: using ::lgammaf; 5209: using ::lgammal; 5209: 5209: 5209: using ::llrint; 5209: using ::llrintf; 5209: using ::llrintl; 5209: 5209: using ::llround; 5209: using ::llroundf; 5209: using ::llroundl; 5209: 5209: 5209: using ::log1p; 5209: using ::log1pf; 5209: using ::log1pl; 5209: 5209: using ::log2; 5209: using ::log2f; 5209: using ::log2l; 5209: 5209: using ::logb; 5209: using ::logbf; 5209: using ::logbl; 5209: 5209: using ::lrint; 5209: using ::lrintf; 5209: using ::lrintl; 5209: 5209: using ::lround; 5209: using ::lroundf; 5209: using ::lroundl; 5209: 5209: using ::nan; 5209: using ::nanf; 5209: using ::nanl; 5209: 5209: using ::nearbyint; 5209: using ::nearbyintf; 5209: using ::nearbyintl; 5209: 5209: using ::nextafter; 5209: using ::nextafterf; 5209: using ::nextafterl; 5209: 5209: using ::nexttoward; 5209: using ::nexttowardf; 5209: using ::nexttowardl; 5209: 5209: using ::remainder; 5209: using ::remainderf; 5209: using ::remainderl; 5209: 5209: using ::remquo; 5209: using ::remquof; 5209: using ::remquol; 5209: 5209: using ::rint; 5209: using ::rintf; 5209: using ::rintl; 5209: 5209: using ::round; 5209: using ::roundf; 5209: using ::roundl; 5209: 5209: using ::scalbln; 5209: using ::scalblnf; 5209: using ::scalblnl; 5209: 5209: using ::scalbn; 5209: using ::scalbnf; 5209: using ::scalbnl; 5209: 5209: using ::tgamma; 5209: using ::tgammaf; 5209: using ::tgammal; 5209: 5209: using ::trunc; 5209: using ::truncf; 5209: using ::truncl; 5209: 5209: 5209: 5209: constexpr float 5209: acosh(float __x) 5209: { return __builtin_acoshf(__x); } 5209: 5209: constexpr long double 5209: acosh(long double __x) 5209: { return __builtin_acoshl(__x); } 5209: 5209: 5209: 5209: template 5209: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 5209: double>::__type 5209: acosh(_Tp __x) 5209: { return __builtin_acosh(__x); } 5209: 5209: 5209: 5209: constexpr float 5209: asinh(float __x) 5209: { return __builtin_asinhf(__x); } 5209: 5209: constexpr long double 5209: asinh(long double __x) 5209: { return __builtin_asinhl(__x); } 5209: 5209: 5209: 5209: template 5209: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 5209: double>::__type 5209: asinh(_Tp __x) 5209: { return __builtin_asinh(__x); } 5209: 5209: 5209: 5209: constexpr float 5209: atanh(float __x) 5209: { return __builtin_atanhf(__x); } 5209: 5209: constexpr long double 5209: atanh(long double __x) 5209: { return __builtin_atanhl(__x); } 5209: 5209: 5209: 5209: template 5209: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 5209: double>::__type 5209: atanh(_Tp __x) 5209: { return __builtin_atanh(__x); } 5209: 5209: 5209: 5209: constexpr float 5209: cbrt(float __x) 5209: { return __builtin_cbrtf(__x); } 5209: 5209: constexpr long double 5209: cbrt(long double __x) 5209: { return __builtin_cbrtl(__x); } 5209: 5209: 5209: 5209: template 5209: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 5209: double>::__type 5209: cbrt(_Tp __x) 5209: { return __builtin_cbrt(__x); } 5209: 5209: 5209: 5209: constexpr float 5209: copysign(float __x, float __y) 5209: { return __builtin_copysignf(__x, __y); } 5209: 5209: constexpr long double 5209: copysign(long double __x, long double __y) 5209: { return __builtin_copysignl(__x, __y); } 5209: 5209: 5209: 5209: template 5209: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 5209: copysign(_Tp __x, _Up __y) 5209: { 5209: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 5209: return copysign(__type(__x), __type(__y)); 5209: } 5209: 5209: 5209: 5209: constexpr float 5209: erf(float __x) 5209: { return __builtin_erff(__x); } 5209: 5209: constexpr long double 5209: erf(long double __x) 5209: { return __builtin_erfl(__x); } 5209: 5209: 5209: 5209: template 5209: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 5209: double>::__type 5209: erf(_Tp __x) 5209: { return __builtin_erf(__x); } 5209: 5209: 5209: 5209: constexpr float 5209: erfc(float __x) 5209: { return __builtin_erfcf(__x); } 5209: 5209: constexpr long double 5209: erfc(long double __x) 5209: { return __builtin_erfcl(__x); } 5209: 5209: 5209: 5209: template 5209: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 5209: double>::__type 5209: erfc(_Tp __x) 5209: { return __builtin_erfc(__x); } 5209: 5209: 5209: 5209: constexpr float 5209: exp2(float __x) 5209: { return __builtin_exp2f(__x); } 5209: 5209: constexpr long double 5209: exp2(long double __x) 5209: { return __builtin_exp2l(__x); } 5209: 5209: 5209: 5209: template 5209: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 5209: double>::__type 5209: exp2(_Tp __x) 5209: { return __builtin_exp2(__x); } 5209: 5209: 5209: 5209: constexpr float 5209: expm1(float __x) 5209: { return __builtin_expm1f(__x); } 5209: 5209: constexpr long double 5209: expm1(long double __x) 5209: { return __builtin_expm1l(__x); } 5209: 5209: 5209: 5209: template 5209: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 5209: double>::__type 5209: expm1(_Tp __x) 5209: { return __builtin_expm1(__x); } 5209: 5209: 5209: 5209: constexpr float 5209: fdim(float __x, float __y) 5209: { return __builtin_fdimf(__x, __y); } 5209: 5209: constexpr long double 5209: fdim(long double __x, long double __y) 5209: { return __builtin_fdiml(__x, __y); } 5209: 5209: 5209: 5209: template 5209: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 5209: fdim(_Tp __x, _Up __y) 5209: { 5209: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 5209: return fdim(__type(__x), __type(__y)); 5209: } 5209: 5209: 5209: 5209: constexpr float 5209: fma(float __x, float __y, float __z) 5209: { return __builtin_fmaf(__x, __y, __z); } 5209: 5209: constexpr long double 5209: fma(long double __x, long double __y, long double __z) 5209: { return __builtin_fmal(__x, __y, __z); } 5209: 5209: 5209: 5209: template 5209: constexpr typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type 5209: fma(_Tp __x, _Up __y, _Vp __z) 5209: { 5209: typedef typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type __type; 5209: return fma(__type(__x), __type(__y), __type(__z)); 5209: } 5209: 5209: 5209: 5209: constexpr float 5209: fmax(float __x, float __y) 5209: { return __builtin_fmaxf(__x, __y); } 5209: 5209: constexpr long double 5209: fmax(long double __x, long double __y) 5209: { return __builtin_fmaxl(__x, __y); } 5209: 5209: 5209: 5209: template 5209: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 5209: fmax(_Tp __x, _Up __y) 5209: { 5209: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 5209: return fmax(__type(__x), __type(__y)); 5209: } 5209: 5209: 5209: 5209: constexpr float 5209: fmin(float __x, float __y) 5209: { return __builtin_fminf(__x, __y); } 5209: 5209: constexpr long double 5209: fmin(long double __x, long double __y) 5209: { return __builtin_fminl(__x, __y); } 5209: 5209: 5209: 5209: template 5209: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 5209: fmin(_Tp __x, _Up __y) 5209: { 5209: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 5209: return fmin(__type(__x), __type(__y)); 5209: } 5209: 5209: 5209: 5209: constexpr float 5209: hypot(float __x, float __y) 5209: { return __builtin_hypotf(__x, __y); } 5209: 5209: constexpr long double 5209: hypot(long double __x, long double __y) 5209: { return __builtin_hypotl(__x, __y); } 5209: 5209: 5209: 5209: template 5209: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 5209: hypot(_Tp __x, _Up __y) 5209: { 5209: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 5209: return hypot(__type(__x), __type(__y)); 5209: } 5209: 5209: 5209: 5209: constexpr int 5209: ilogb(float __x) 5209: { return __builtin_ilogbf(__x); } 5209: 5209: constexpr int 5209: ilogb(long double __x) 5209: { return __builtin_ilogbl(__x); } 5209: 5209: 5209: 5209: template 5209: constexpr 5209: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 5209: int>::__type 5209: ilogb(_Tp __x) 5209: { return __builtin_ilogb(__x); } 5209: 5209: 5209: 5209: constexpr float 5209: lgamma(float __x) 5209: { return __builtin_lgammaf(__x); } 5209: 5209: constexpr long double 5209: lgamma(long double __x) 5209: { return __builtin_lgammal(__x); } 5209: 5209: 5209: 5209: template 5209: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 5209: double>::__type 5209: lgamma(_Tp __x) 5209: { return __builtin_lgamma(__x); } 5209: 5209: 5209: 5209: constexpr long long 5209: llrint(float __x) 5209: { return __builtin_llrintf(__x); } 5209: 5209: constexpr long long 5209: llrint(long double __x) 5209: { return __builtin_llrintl(__x); } 5209: 5209: 5209: 5209: template 5209: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 5209: long long>::__type 5209: llrint(_Tp __x) 5209: { return __builtin_llrint(__x); } 5209: 5209: 5209: 5209: constexpr long long 5209: llround(float __x) 5209: { return __builtin_llroundf(__x); } 5209: 5209: constexpr long long 5209: llround(long double __x) 5209: { return __builtin_llroundl(__x); } 5209: 5209: 5209: 5209: template 5209: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 5209: long long>::__type 5209: llround(_Tp __x) 5209: { return __builtin_llround(__x); } 5209: 5209: 5209: 5209: constexpr float 5209: log1p(float __x) 5209: { return __builtin_log1pf(__x); } 5209: 5209: constexpr long double 5209: log1p(long double __x) 5209: { return __builtin_log1pl(__x); } 5209: 5209: 5209: 5209: template 5209: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 5209: double>::__type 5209: log1p(_Tp __x) 5209: { return __builtin_log1p(__x); } 5209: 5209: 5209: 5209: 5209: constexpr float 5209: log2(float __x) 5209: { return __builtin_log2f(__x); } 5209: 5209: constexpr long double 5209: log2(long double __x) 5209: { return __builtin_log2l(__x); } 5209: 5209: 5209: 5209: template 5209: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 5209: double>::__type 5209: log2(_Tp __x) 5209: { return __builtin_log2(__x); } 5209: 5209: 5209: 5209: constexpr float 5209: logb(float __x) 5209: { return __builtin_logbf(__x); } 5209: 5209: constexpr long double 5209: logb(long double __x) 5209: { return __builtin_logbl(__x); } 5209: 5209: 5209: 5209: template 5209: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 5209: double>::__type 5209: logb(_Tp __x) 5209: { return __builtin_logb(__x); } 5209: 5209: 5209: 5209: constexpr long 5209: lrint(float __x) 5209: { return __builtin_lrintf(__x); } 5209: 5209: constexpr long 5209: lrint(long double __x) 5209: { return __builtin_lrintl(__x); } 5209: 5209: 5209: 5209: template 5209: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 5209: long>::__type 5209: lrint(_Tp __x) 5209: { return __builtin_lrint(__x); } 5209: 5209: 5209: 5209: constexpr long 5209: lround(float __x) 5209: { return __builtin_lroundf(__x); } 5209: 5209: constexpr long 5209: lround(long double __x) 5209: { return __builtin_lroundl(__x); } 5209: 5209: 5209: 5209: template 5209: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 5209: long>::__type 5209: lround(_Tp __x) 5209: { return __builtin_lround(__x); } 5209: 5209: 5209: 5209: constexpr float 5209: nearbyint(float __x) 5209: { return __builtin_nearbyintf(__x); } 5209: 5209: constexpr long double 5209: nearbyint(long double __x) 5209: { return __builtin_nearbyintl(__x); } 5209: 5209: 5209: 5209: template 5209: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 5209: double>::__type 5209: nearbyint(_Tp __x) 5209: { return __builtin_nearbyint(__x); } 5209: 5209: 5209: 5209: constexpr float 5209: nextafter(float __x, float __y) 5209: { return __builtin_nextafterf(__x, __y); } 5209: 5209: constexpr long double 5209: nextafter(long double __x, long double __y) 5209: { return __builtin_nextafterl(__x, __y); } 5209: 5209: 5209: 5209: template 5209: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 5209: nextafter(_Tp __x, _Up __y) 5209: { 5209: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 5209: return nextafter(__type(__x), __type(__y)); 5209: } 5209: 5209: 5209: 5209: constexpr float 5209: nexttoward(float __x, long double __y) 5209: { return __builtin_nexttowardf(__x, __y); } 5209: 5209: constexpr long double 5209: nexttoward(long double __x, long double __y) 5209: { return __builtin_nexttowardl(__x, __y); } 5209: 5209: 5209: 5209: template 5209: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 5209: double>::__type 5209: nexttoward(_Tp __x, long double __y) 5209: { return __builtin_nexttoward(__x, __y); } 5209: 5209: 5209: 5209: constexpr float 5209: remainder(float __x, float __y) 5209: { return __builtin_remainderf(__x, __y); } 5209: 5209: constexpr long double 5209: remainder(long double __x, long double __y) 5209: { return __builtin_remainderl(__x, __y); } 5209: 5209: 5209: 5209: template 5209: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 5209: remainder(_Tp __x, _Up __y) 5209: { 5209: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 5209: return remainder(__type(__x), __type(__y)); 5209: } 5209: 5209: 5209: 5209: inline float 5209: remquo(float __x, float __y, int* __pquo) 5209: { return __builtin_remquof(__x, __y, __pquo); } 5209: 5209: inline long double 5209: remquo(long double __x, long double __y, int* __pquo) 5209: { return __builtin_remquol(__x, __y, __pquo); } 5209: 5209: 5209: 5209: template 5209: inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 5209: remquo(_Tp __x, _Up __y, int* __pquo) 5209: { 5209: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 5209: return remquo(__type(__x), __type(__y), __pquo); 5209: } 5209: 5209: 5209: 5209: constexpr float 5209: rint(float __x) 5209: { return __builtin_rintf(__x); } 5209: 5209: constexpr long double 5209: rint(long double __x) 5209: { return __builtin_rintl(__x); } 5209: 5209: 5209: 5209: template 5209: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 5209: double>::__type 5209: rint(_Tp __x) 5209: { return __builtin_rint(__x); } 5209: 5209: 5209: 5209: constexpr float 5209: round(float __x) 5209: { return __builtin_roundf(__x); } 5209: 5209: constexpr long double 5209: round(long double __x) 5209: { return __builtin_roundl(__x); } 5209: 5209: 5209: 5209: template 5209: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 5209: double>::__type 5209: round(_Tp __x) 5209: { return __builtin_round(__x); } 5209: 5209: 5209: 5209: constexpr float 5209: scalbln(float __x, long __ex) 5209: { return __builtin_scalblnf(__x, __ex); } 5209: 5209: constexpr long double 5209: scalbln(long double __x, long __ex) 5209: { return __builtin_scalblnl(__x, __ex); } 5209: 5209: 5209: 5209: template 5209: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 5209: double>::__type 5209: scalbln(_Tp __x, long __ex) 5209: { return __builtin_scalbln(__x, __ex); } 5209: 5209: 5209: 5209: constexpr float 5209: scalbn(float __x, int __ex) 5209: { return __builtin_scalbnf(__x, __ex); } 5209: 5209: constexpr long double 5209: scalbn(long double __x, int __ex) 5209: { return __builtin_scalbnl(__x, __ex); } 5209: 5209: 5209: 5209: template 5209: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 5209: double>::__type 5209: scalbn(_Tp __x, int __ex) 5209: { return __builtin_scalbn(__x, __ex); } 5209: 5209: 5209: 5209: constexpr float 5209: tgamma(float __x) 5209: { return __builtin_tgammaf(__x); } 5209: 5209: constexpr long double 5209: tgamma(long double __x) 5209: { return __builtin_tgammal(__x); } 5209: 5209: 5209: 5209: template 5209: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 5209: double>::__type 5209: tgamma(_Tp __x) 5209: { return __builtin_tgamma(__x); } 5209: 5209: 5209: 5209: constexpr float 5209: trunc(float __x) 5209: { return __builtin_truncf(__x); } 5209: 5209: constexpr long double 5209: trunc(long double __x) 5209: { return __builtin_truncl(__x); } 5209: 5209: 5209: 5209: template 5209: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 5209: double>::__type 5209: trunc(_Tp __x) 5209: { return __builtin_trunc(__x); } 5209: # 1923 "/usr/include/c++/10/cmath" 3 5209: 5209: } 5209: 5209: 5209: 5209: 5209: 5209: } 5209: # 39 "/usr/include/c++/10/random" 2 3 5209: # 1 "/usr/include/c++/10/cstdlib" 1 3 5209: # 39 "/usr/include/c++/10/cstdlib" 3 5209: 5209: # 40 "/usr/include/c++/10/cstdlib" 3 5209: # 40 "/usr/include/c++/10/random" 2 3 5209: 5209: 5209: # 1 "/usr/include/c++/10/limits" 1 3 5209: # 40 "/usr/include/c++/10/limits" 3 5209: 5209: # 41 "/usr/include/c++/10/limits" 3 5209: # 158 "/usr/include/c++/10/limits" 3 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: enum float_round_style 5209: { 5209: round_indeterminate = -1, 5209: round_toward_zero = 0, 5209: round_to_nearest = 1, 5209: round_toward_infinity = 2, 5209: round_toward_neg_infinity = 3 5209: }; 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: enum float_denorm_style 5209: { 5209: 5209: denorm_indeterminate = -1, 5209: 5209: denorm_absent = 0, 5209: 5209: denorm_present = 1 5209: }; 5209: # 202 "/usr/include/c++/10/limits" 3 5209: struct __numeric_limits_base 5209: { 5209: 5209: 5209: static constexpr bool is_specialized = false; 5209: 5209: 5209: 5209: 5209: static constexpr int digits = 0; 5209: 5209: 5209: static constexpr int digits10 = 0; 5209: 5209: 5209: 5209: 5209: static constexpr int max_digits10 = 0; 5209: 5209: 5209: 5209: static constexpr bool is_signed = false; 5209: 5209: 5209: static constexpr bool is_integer = false; 5209: 5209: 5209: 5209: 5209: static constexpr bool is_exact = false; 5209: 5209: 5209: 5209: static constexpr int radix = 0; 5209: 5209: 5209: 5209: static constexpr int min_exponent = 0; 5209: 5209: 5209: 5209: static constexpr int min_exponent10 = 0; 5209: 5209: 5209: 5209: 5209: static constexpr int max_exponent = 0; 5209: 5209: 5209: 5209: static constexpr int max_exponent10 = 0; 5209: 5209: 5209: static constexpr bool has_infinity = false; 5209: 5209: 5209: 5209: static constexpr bool has_quiet_NaN = false; 5209: 5209: 5209: 5209: static constexpr bool has_signaling_NaN = false; 5209: 5209: 5209: static constexpr float_denorm_style has_denorm = denorm_absent; 5209: 5209: 5209: 5209: static constexpr bool has_denorm_loss = false; 5209: 5209: 5209: 5209: static constexpr bool is_iec559 = false; 5209: 5209: 5209: 5209: 5209: static constexpr bool is_bounded = false; 5209: # 288 "/usr/include/c++/10/limits" 3 5209: static constexpr bool is_modulo = false; 5209: 5209: 5209: static constexpr bool traps = false; 5209: 5209: 5209: static constexpr bool tinyness_before = false; 5209: 5209: 5209: 5209: 5209: static constexpr float_round_style round_style = 5209: round_toward_zero; 5209: }; 5209: # 311 "/usr/include/c++/10/limits" 3 5209: template 5209: struct numeric_limits : public __numeric_limits_base 5209: { 5209: 5209: 5209: static constexpr _Tp 5209: min() noexcept { return _Tp(); } 5209: 5209: 5209: static constexpr _Tp 5209: max() noexcept { return _Tp(); } 5209: 5209: 5209: 5209: 5209: static constexpr _Tp 5209: lowest() noexcept { return _Tp(); } 5209: 5209: 5209: 5209: 5209: static constexpr _Tp 5209: epsilon() noexcept { return _Tp(); } 5209: 5209: 5209: static constexpr _Tp 5209: round_error() noexcept { return _Tp(); } 5209: 5209: 5209: static constexpr _Tp 5209: infinity() noexcept { return _Tp(); } 5209: 5209: 5209: 5209: static constexpr _Tp 5209: quiet_NaN() noexcept { return _Tp(); } 5209: 5209: 5209: 5209: static constexpr _Tp 5209: signaling_NaN() noexcept { return _Tp(); } 5209: 5209: 5209: 5209: 5209: static constexpr _Tp 5209: denorm_min() noexcept { return _Tp(); } 5209: }; 5209: 5209: 5209: 5209: 5209: template 5209: struct numeric_limits 5209: : public numeric_limits<_Tp> { }; 5209: 5209: template 5209: struct numeric_limits 5209: : public numeric_limits<_Tp> { }; 5209: 5209: template 5209: struct numeric_limits 5209: : public numeric_limits<_Tp> { }; 5209: # 383 "/usr/include/c++/10/limits" 3 5209: template<> 5209: struct numeric_limits 5209: { 5209: static constexpr bool is_specialized = true; 5209: 5209: static constexpr bool 5209: min() noexcept { return false; } 5209: 5209: static constexpr bool 5209: max() noexcept { return true; } 5209: 5209: 5209: static constexpr bool 5209: lowest() noexcept { return min(); } 5209: 5209: static constexpr int digits = 1; 5209: static constexpr int digits10 = 0; 5209: 5209: static constexpr int max_digits10 = 0; 5209: 5209: static constexpr bool is_signed = false; 5209: static constexpr bool is_integer = true; 5209: static constexpr bool is_exact = true; 5209: static constexpr int radix = 2; 5209: 5209: static constexpr bool 5209: epsilon() noexcept { return false; } 5209: 5209: static constexpr bool 5209: round_error() noexcept { return false; } 5209: 5209: static constexpr int min_exponent = 0; 5209: static constexpr int min_exponent10 = 0; 5209: static constexpr int max_exponent = 0; 5209: static constexpr int max_exponent10 = 0; 5209: 5209: static constexpr bool has_infinity = false; 5209: static constexpr bool has_quiet_NaN = false; 5209: static constexpr bool has_signaling_NaN = false; 5209: static constexpr float_denorm_style has_denorm 5209: = denorm_absent; 5209: static constexpr bool has_denorm_loss = false; 5209: 5209: static constexpr bool 5209: infinity() noexcept { return false; } 5209: 5209: static constexpr bool 5209: quiet_NaN() noexcept { return false; } 5209: 5209: static constexpr bool 5209: signaling_NaN() noexcept { return false; } 5209: 5209: static constexpr bool 5209: denorm_min() noexcept { return false; } 5209: 5209: static constexpr bool is_iec559 = false; 5209: static constexpr bool is_bounded = true; 5209: static constexpr bool is_modulo = false; 5209: 5209: 5209: 5209: 5209: static constexpr bool traps = true; 5209: static constexpr bool tinyness_before = false; 5209: static constexpr float_round_style round_style 5209: = round_toward_zero; 5209: }; 5209: 5209: 5209: template<> 5209: struct numeric_limits 5209: { 5209: static constexpr bool is_specialized = true; 5209: 5209: static constexpr char 5209: min() noexcept { return (((char)(-1) < 0) ? -(((char)(-1) < 0) ? (((((char)1 << ((sizeof(char) * 8 - ((char)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(char)0) - 1 : (char)0); } 5209: 5209: static constexpr char 5209: max() noexcept { return (((char)(-1) < 0) ? (((((char)1 << ((sizeof(char) * 8 - ((char)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(char)0); } 5209: 5209: 5209: static constexpr char 5209: lowest() noexcept { return min(); } 5209: 5209: 5209: static constexpr int digits = (sizeof(char) * 8 - ((char)(-1) < 0)); 5209: static constexpr int digits10 = ((sizeof(char) * 8 - ((char)(-1) < 0)) * 643L / 2136); 5209: 5209: static constexpr int max_digits10 = 0; 5209: 5209: static constexpr bool is_signed = ((char)(-1) < 0); 5209: static constexpr bool is_integer = true; 5209: static constexpr bool is_exact = true; 5209: static constexpr int radix = 2; 5209: 5209: static constexpr char 5209: epsilon() noexcept { return 0; } 5209: 5209: static constexpr char 5209: round_error() noexcept { return 0; } 5209: 5209: static constexpr int min_exponent = 0; 5209: static constexpr int min_exponent10 = 0; 5209: static constexpr int max_exponent = 0; 5209: static constexpr int max_exponent10 = 0; 5209: 5209: static constexpr bool has_infinity = false; 5209: static constexpr bool has_quiet_NaN = false; 5209: static constexpr bool has_signaling_NaN = false; 5209: static constexpr float_denorm_style has_denorm 5209: = denorm_absent; 5209: static constexpr bool has_denorm_loss = false; 5209: 5209: static constexpr 5209: char infinity() noexcept { return char(); } 5209: 5209: static constexpr char 5209: quiet_NaN() noexcept { return char(); } 5209: 5209: static constexpr char 5209: signaling_NaN() noexcept { return char(); } 5209: 5209: static constexpr char 5209: denorm_min() noexcept { return static_cast(0); } 5209: 5209: static constexpr bool is_iec559 = false; 5209: static constexpr bool is_bounded = true; 5209: static constexpr bool is_modulo = !is_signed; 5209: 5209: static constexpr bool traps = true; 5209: static constexpr bool tinyness_before = false; 5209: static constexpr float_round_style round_style 5209: = round_toward_zero; 5209: }; 5209: 5209: 5209: template<> 5209: struct numeric_limits 5209: { 5209: static constexpr bool is_specialized = true; 5209: 5209: static constexpr signed char 5209: min() noexcept { return -0x7f - 1; } 5209: 5209: static constexpr signed char 5209: max() noexcept { return 0x7f; } 5209: 5209: 5209: static constexpr signed char 5209: lowest() noexcept { return min(); } 5209: 5209: 5209: static constexpr int digits = (sizeof(signed char) * 8 - ((signed char)(-1) < 0)); 5209: static constexpr int digits10 5209: = ((sizeof(signed char) * 8 - ((signed char)(-1) < 0)) * 643L / 2136); 5209: 5209: static constexpr int max_digits10 = 0; 5209: 5209: static constexpr bool is_signed = true; 5209: static constexpr bool is_integer = true; 5209: static constexpr bool is_exact = true; 5209: static constexpr int radix = 2; 5209: 5209: static constexpr signed char 5209: epsilon() noexcept { return 0; } 5209: 5209: static constexpr signed char 5209: round_error() noexcept { return 0; } 5209: 5209: static constexpr int min_exponent = 0; 5209: static constexpr int min_exponent10 = 0; 5209: static constexpr int max_exponent = 0; 5209: static constexpr int max_exponent10 = 0; 5209: 5209: static constexpr bool has_infinity = false; 5209: static constexpr bool has_quiet_NaN = false; 5209: static constexpr bool has_signaling_NaN = false; 5209: static constexpr float_denorm_style has_denorm 5209: = denorm_absent; 5209: static constexpr bool has_denorm_loss = false; 5209: 5209: static constexpr signed char 5209: infinity() noexcept { return static_cast(0); } 5209: 5209: static constexpr signed char 5209: quiet_NaN() noexcept { return static_cast(0); } 5209: 5209: static constexpr signed char 5209: signaling_NaN() noexcept 5209: { return static_cast(0); } 5209: 5209: static constexpr signed char 5209: denorm_min() noexcept 5209: { return static_cast(0); } 5209: 5209: static constexpr bool is_iec559 = false; 5209: static constexpr bool is_bounded = true; 5209: static constexpr bool is_modulo = false; 5209: 5209: static constexpr bool traps = true; 5209: static constexpr bool tinyness_before = false; 5209: static constexpr float_round_style round_style 5209: = round_toward_zero; 5209: }; 5209: 5209: 5209: template<> 5209: struct numeric_limits 5209: { 5209: static constexpr bool is_specialized = true; 5209: 5209: static constexpr unsigned char 5209: min() noexcept { return 0; } 5209: 5209: static constexpr unsigned char 5209: max() noexcept { return 0x7f * 2U + 1; } 5209: 5209: 5209: static constexpr unsigned char 5209: lowest() noexcept { return min(); } 5209: 5209: 5209: static constexpr int digits 5209: = (sizeof(unsigned char) * 8 - ((unsigned char)(-1) < 0)); 5209: static constexpr int digits10 5209: = ((sizeof(unsigned char) * 8 - ((unsigned char)(-1) < 0)) * 643L / 2136); 5209: 5209: static constexpr int max_digits10 = 0; 5209: 5209: static constexpr bool is_signed = false; 5209: static constexpr bool is_integer = true; 5209: static constexpr bool is_exact = true; 5209: static constexpr int radix = 2; 5209: 5209: static constexpr unsigned char 5209: epsilon() noexcept { return 0; } 5209: 5209: static constexpr unsigned char 5209: round_error() noexcept { return 0; } 5209: 5209: static constexpr int min_exponent = 0; 5209: static constexpr int min_exponent10 = 0; 5209: static constexpr int max_exponent = 0; 5209: static constexpr int max_exponent10 = 0; 5209: 5209: static constexpr bool has_infinity = false; 5209: static constexpr bool has_quiet_NaN = false; 5209: static constexpr bool has_signaling_NaN = false; 5209: static constexpr float_denorm_style has_denorm 5209: = denorm_absent; 5209: static constexpr bool has_denorm_loss = false; 5209: 5209: static constexpr unsigned char 5209: infinity() noexcept 5209: { return static_cast(0); } 5209: 5209: static constexpr unsigned char 5209: quiet_NaN() noexcept 5209: { return static_cast(0); } 5209: 5209: static constexpr unsigned char 5209: signaling_NaN() noexcept 5209: { return static_cast(0); } 5209: 5209: static constexpr unsigned char 5209: denorm_min() noexcept 5209: { return static_cast(0); } 5209: 5209: static constexpr bool is_iec559 = false; 5209: static constexpr bool is_bounded = true; 5209: static constexpr bool is_modulo = true; 5209: 5209: static constexpr bool traps = true; 5209: static constexpr bool tinyness_before = false; 5209: static constexpr float_round_style round_style 5209: = round_toward_zero; 5209: }; 5209: 5209: 5209: template<> 5209: struct numeric_limits 5209: { 5209: static constexpr bool is_specialized = true; 5209: 5209: static constexpr wchar_t 5209: min() noexcept { return (((wchar_t)(-1) < 0) ? -(((wchar_t)(-1) < 0) ? (((((wchar_t)1 << ((sizeof(wchar_t) * 8 - ((wchar_t)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(wchar_t)0) - 1 : (wchar_t)0); } 5209: 5209: static constexpr wchar_t 5209: max() noexcept { return (((wchar_t)(-1) < 0) ? (((((wchar_t)1 << ((sizeof(wchar_t) * 8 - ((wchar_t)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(wchar_t)0); } 5209: 5209: 5209: static constexpr wchar_t 5209: lowest() noexcept { return min(); } 5209: 5209: 5209: static constexpr int digits = (sizeof(wchar_t) * 8 - ((wchar_t)(-1) < 0)); 5209: static constexpr int digits10 5209: = ((sizeof(wchar_t) * 8 - ((wchar_t)(-1) < 0)) * 643L / 2136); 5209: 5209: static constexpr int max_digits10 = 0; 5209: 5209: static constexpr bool is_signed = ((wchar_t)(-1) < 0); 5209: static constexpr bool is_integer = true; 5209: static constexpr bool is_exact = true; 5209: static constexpr int radix = 2; 5209: 5209: static constexpr wchar_t 5209: epsilon() noexcept { return 0; } 5209: 5209: static constexpr wchar_t 5209: round_error() noexcept { return 0; } 5209: 5209: static constexpr int min_exponent = 0; 5209: static constexpr int min_exponent10 = 0; 5209: static constexpr int max_exponent = 0; 5209: static constexpr int max_exponent10 = 0; 5209: 5209: static constexpr bool has_infinity = false; 5209: static constexpr bool has_quiet_NaN = false; 5209: static constexpr bool has_signaling_NaN = false; 5209: static constexpr float_denorm_style has_denorm 5209: = denorm_absent; 5209: static constexpr bool has_denorm_loss = false; 5209: 5209: static constexpr wchar_t 5209: infinity() noexcept { return wchar_t(); } 5209: 5209: static constexpr wchar_t 5209: quiet_NaN() noexcept { return wchar_t(); } 5209: 5209: static constexpr wchar_t 5209: signaling_NaN() noexcept { return wchar_t(); } 5209: 5209: static constexpr wchar_t 5209: denorm_min() noexcept { return wchar_t(); } 5209: 5209: static constexpr bool is_iec559 = false; 5209: static constexpr bool is_bounded = true; 5209: static constexpr bool is_modulo = !is_signed; 5209: 5209: static constexpr bool traps = true; 5209: static constexpr bool tinyness_before = false; 5209: static constexpr float_round_style round_style 5209: = round_toward_zero; 5209: }; 5209: # 796 "/usr/include/c++/10/limits" 3 5209: template<> 5209: struct numeric_limits 5209: { 5209: static constexpr bool is_specialized = true; 5209: 5209: static constexpr char16_t 5209: min() noexcept { return (((char16_t)(-1) < 0) ? -(((char16_t)(-1) < 0) ? (((((char16_t)1 << ((sizeof(char16_t) * 8 - ((char16_t)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(char16_t)0) - 1 : (char16_t)0); } 5209: 5209: static constexpr char16_t 5209: max() noexcept { return (((char16_t)(-1) < 0) ? (((((char16_t)1 << ((sizeof(char16_t) * 8 - ((char16_t)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(char16_t)0); } 5209: 5209: static constexpr char16_t 5209: lowest() noexcept { return min(); } 5209: 5209: static constexpr int digits = (sizeof(char16_t) * 8 - ((char16_t)(-1) < 0)); 5209: static constexpr int digits10 = ((sizeof(char16_t) * 8 - ((char16_t)(-1) < 0)) * 643L / 2136); 5209: static constexpr int max_digits10 = 0; 5209: static constexpr bool is_signed = ((char16_t)(-1) < 0); 5209: static constexpr bool is_integer = true; 5209: static constexpr bool is_exact = true; 5209: static constexpr int radix = 2; 5209: 5209: static constexpr char16_t 5209: epsilon() noexcept { return 0; } 5209: 5209: static constexpr char16_t 5209: round_error() noexcept { return 0; } 5209: 5209: static constexpr int min_exponent = 0; 5209: static constexpr int min_exponent10 = 0; 5209: static constexpr int max_exponent = 0; 5209: static constexpr int max_exponent10 = 0; 5209: 5209: static constexpr bool has_infinity = false; 5209: static constexpr bool has_quiet_NaN = false; 5209: static constexpr bool has_signaling_NaN = false; 5209: static constexpr float_denorm_style has_denorm = denorm_absent; 5209: static constexpr bool has_denorm_loss = false; 5209: 5209: static constexpr char16_t 5209: infinity() noexcept { return char16_t(); } 5209: 5209: static constexpr char16_t 5209: quiet_NaN() noexcept { return char16_t(); } 5209: 5209: static constexpr char16_t 5209: signaling_NaN() noexcept { return char16_t(); } 5209: 5209: static constexpr char16_t 5209: denorm_min() noexcept { return char16_t(); } 5209: 5209: static constexpr bool is_iec559 = false; 5209: static constexpr bool is_bounded = true; 5209: static constexpr bool is_modulo = !is_signed; 5209: 5209: static constexpr bool traps = true; 5209: static constexpr bool tinyness_before = false; 5209: static constexpr float_round_style round_style = round_toward_zero; 5209: }; 5209: 5209: 5209: template<> 5209: struct numeric_limits 5209: { 5209: static constexpr bool is_specialized = true; 5209: 5209: static constexpr char32_t 5209: min() noexcept { return (((char32_t)(-1) < 0) ? -(((char32_t)(-1) < 0) ? (((((char32_t)1 << ((sizeof(char32_t) * 8 - ((char32_t)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(char32_t)0) - 1 : (char32_t)0); } 5209: 5209: static constexpr char32_t 5209: max() noexcept { return (((char32_t)(-1) < 0) ? (((((char32_t)1 << ((sizeof(char32_t) * 8 - ((char32_t)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(char32_t)0); } 5209: 5209: static constexpr char32_t 5209: lowest() noexcept { return min(); } 5209: 5209: static constexpr int digits = (sizeof(char32_t) * 8 - ((char32_t)(-1) < 0)); 5209: static constexpr int digits10 = ((sizeof(char32_t) * 8 - ((char32_t)(-1) < 0)) * 643L / 2136); 5209: static constexpr int max_digits10 = 0; 5209: static constexpr bool is_signed = ((char32_t)(-1) < 0); 5209: static constexpr bool is_integer = true; 5209: static constexpr bool is_exact = true; 5209: static constexpr int radix = 2; 5209: 5209: static constexpr char32_t 5209: epsilon() noexcept { return 0; } 5209: 5209: static constexpr char32_t 5209: round_error() noexcept { return 0; } 5209: 5209: static constexpr int min_exponent = 0; 5209: static constexpr int min_exponent10 = 0; 5209: static constexpr int max_exponent = 0; 5209: static constexpr int max_exponent10 = 0; 5209: 5209: static constexpr bool has_infinity = false; 5209: static constexpr bool has_quiet_NaN = false; 5209: static constexpr bool has_signaling_NaN = false; 5209: static constexpr float_denorm_style has_denorm = denorm_absent; 5209: static constexpr bool has_denorm_loss = false; 5209: 5209: static constexpr char32_t 5209: infinity() noexcept { return char32_t(); } 5209: 5209: static constexpr char32_t 5209: quiet_NaN() noexcept { return char32_t(); } 5209: 5209: static constexpr char32_t 5209: signaling_NaN() noexcept { return char32_t(); } 5209: 5209: static constexpr char32_t 5209: denorm_min() noexcept { return char32_t(); } 5209: 5209: static constexpr bool is_iec559 = false; 5209: static constexpr bool is_bounded = true; 5209: static constexpr bool is_modulo = !is_signed; 5209: 5209: static constexpr bool traps = true; 5209: static constexpr bool tinyness_before = false; 5209: static constexpr float_round_style round_style = round_toward_zero; 5209: }; 5209: 5209: 5209: 5209: template<> 5209: struct numeric_limits 5209: { 5209: static constexpr bool is_specialized = true; 5209: 5209: static constexpr short 5209: min() noexcept { return -0x7fff - 1; } 5209: 5209: static constexpr short 5209: max() noexcept { return 0x7fff; } 5209: 5209: 5209: static constexpr short 5209: lowest() noexcept { return min(); } 5209: 5209: 5209: static constexpr int digits = (sizeof(short) * 8 - ((short)(-1) < 0)); 5209: static constexpr int digits10 = ((sizeof(short) * 8 - ((short)(-1) < 0)) * 643L / 2136); 5209: 5209: static constexpr int max_digits10 = 0; 5209: 5209: static constexpr bool is_signed = true; 5209: static constexpr bool is_integer = true; 5209: static constexpr bool is_exact = true; 5209: static constexpr int radix = 2; 5209: 5209: static constexpr short 5209: epsilon() noexcept { return 0; } 5209: 5209: static constexpr short 5209: round_error() noexcept { return 0; } 5209: 5209: static constexpr int min_exponent = 0; 5209: static constexpr int min_exponent10 = 0; 5209: static constexpr int max_exponent = 0; 5209: static constexpr int max_exponent10 = 0; 5209: 5209: static constexpr bool has_infinity = false; 5209: static constexpr bool has_quiet_NaN = false; 5209: static constexpr bool has_signaling_NaN = false; 5209: static constexpr float_denorm_style has_denorm 5209: = denorm_absent; 5209: static constexpr bool has_denorm_loss = false; 5209: 5209: static constexpr short 5209: infinity() noexcept { return short(); } 5209: 5209: static constexpr short 5209: quiet_NaN() noexcept { return short(); } 5209: 5209: static constexpr short 5209: signaling_NaN() noexcept { return short(); } 5209: 5209: static constexpr short 5209: denorm_min() noexcept { return short(); } 5209: 5209: static constexpr bool is_iec559 = false; 5209: static constexpr bool is_bounded = true; 5209: static constexpr bool is_modulo = false; 5209: 5209: static constexpr bool traps = true; 5209: static constexpr bool tinyness_before = false; 5209: static constexpr float_round_style round_style 5209: = round_toward_zero; 5209: }; 5209: 5209: 5209: template<> 5209: struct numeric_limits 5209: { 5209: static constexpr bool is_specialized = true; 5209: 5209: static constexpr unsigned short 5209: min() noexcept { return 0; } 5209: 5209: static constexpr unsigned short 5209: max() noexcept { return 0x7fff * 2U + 1; } 5209: 5209: 5209: static constexpr unsigned short 5209: lowest() noexcept { return min(); } 5209: 5209: 5209: static constexpr int digits 5209: = (sizeof(unsigned short) * 8 - ((unsigned short)(-1) < 0)); 5209: static constexpr int digits10 5209: = ((sizeof(unsigned short) * 8 - ((unsigned short)(-1) < 0)) * 643L / 2136); 5209: 5209: static constexpr int max_digits10 = 0; 5209: 5209: static constexpr bool is_signed = false; 5209: static constexpr bool is_integer = true; 5209: static constexpr bool is_exact = true; 5209: static constexpr int radix = 2; 5209: 5209: static constexpr unsigned short 5209: epsilon() noexcept { return 0; } 5209: 5209: static constexpr unsigned short 5209: round_error() noexcept { return 0; } 5209: 5209: static constexpr int min_exponent = 0; 5209: static constexpr int min_exponent10 = 0; 5209: static constexpr int max_exponent = 0; 5209: static constexpr int max_exponent10 = 0; 5209: 5209: static constexpr bool has_infinity = false; 5209: static constexpr bool has_quiet_NaN = false; 5209: static constexpr bool has_signaling_NaN = false; 5209: static constexpr float_denorm_style has_denorm 5209: = denorm_absent; 5209: static constexpr bool has_denorm_loss = false; 5209: 5209: static constexpr unsigned short 5209: infinity() noexcept 5209: { return static_cast(0); } 5209: 5209: static constexpr unsigned short 5209: quiet_NaN() noexcept 5209: { return static_cast(0); } 5209: 5209: static constexpr unsigned short 5209: signaling_NaN() noexcept 5209: { return static_cast(0); } 5209: 5209: static constexpr unsigned short 5209: denorm_min() noexcept 5209: { return static_cast(0); } 5209: 5209: static constexpr bool is_iec559 = false; 5209: static constexpr bool is_bounded = true; 5209: static constexpr bool is_modulo = true; 5209: 5209: static constexpr bool traps = true; 5209: static constexpr bool tinyness_before = false; 5209: static constexpr float_round_style round_style 5209: = round_toward_zero; 5209: }; 5209: 5209: 5209: template<> 5209: struct numeric_limits 5209: { 5209: static constexpr bool is_specialized = true; 5209: 5209: static constexpr int 5209: min() noexcept { return -0x7fffffff - 1; } 5209: 5209: static constexpr int 5209: max() noexcept { return 0x7fffffff; } 5209: 5209: 5209: static constexpr int 5209: lowest() noexcept { return min(); } 5209: 5209: 5209: static constexpr int digits = (sizeof(int) * 8 - ((int)(-1) < 0)); 5209: static constexpr int digits10 = ((sizeof(int) * 8 - ((int)(-1) < 0)) * 643L / 2136); 5209: 5209: static constexpr int max_digits10 = 0; 5209: 5209: static constexpr bool is_signed = true; 5209: static constexpr bool is_integer = true; 5209: static constexpr bool is_exact = true; 5209: static constexpr int radix = 2; 5209: 5209: static constexpr int 5209: epsilon() noexcept { return 0; } 5209: 5209: static constexpr int 5209: round_error() noexcept { return 0; } 5209: 5209: static constexpr int min_exponent = 0; 5209: static constexpr int min_exponent10 = 0; 5209: static constexpr int max_exponent = 0; 5209: static constexpr int max_exponent10 = 0; 5209: 5209: static constexpr bool has_infinity = false; 5209: static constexpr bool has_quiet_NaN = false; 5209: static constexpr bool has_signaling_NaN = false; 5209: static constexpr float_denorm_style has_denorm 5209: = denorm_absent; 5209: static constexpr bool has_denorm_loss = false; 5209: 5209: static constexpr int 5209: infinity() noexcept { return static_cast(0); } 5209: 5209: static constexpr int 5209: quiet_NaN() noexcept { return static_cast(0); } 5209: 5209: static constexpr int 5209: signaling_NaN() noexcept { return static_cast(0); } 5209: 5209: static constexpr int 5209: denorm_min() noexcept { return static_cast(0); } 5209: 5209: static constexpr bool is_iec559 = false; 5209: static constexpr bool is_bounded = true; 5209: static constexpr bool is_modulo = false; 5209: 5209: static constexpr bool traps = true; 5209: static constexpr bool tinyness_before = false; 5209: static constexpr float_round_style round_style 5209: = round_toward_zero; 5209: }; 5209: 5209: 5209: template<> 5209: struct numeric_limits 5209: { 5209: static constexpr bool is_specialized = true; 5209: 5209: static constexpr unsigned int 5209: min() noexcept { return 0; } 5209: 5209: static constexpr unsigned int 5209: max() noexcept { return 0x7fffffff * 2U + 1; } 5209: 5209: 5209: static constexpr unsigned int 5209: lowest() noexcept { return min(); } 5209: 5209: 5209: static constexpr int digits 5209: = (sizeof(unsigned int) * 8 - ((unsigned int)(-1) < 0)); 5209: static constexpr int digits10 5209: = ((sizeof(unsigned int) * 8 - ((unsigned int)(-1) < 0)) * 643L / 2136); 5209: 5209: static constexpr int max_digits10 = 0; 5209: 5209: static constexpr bool is_signed = false; 5209: static constexpr bool is_integer = true; 5209: static constexpr bool is_exact = true; 5209: static constexpr int radix = 2; 5209: 5209: static constexpr unsigned int 5209: epsilon() noexcept { return 0; } 5209: 5209: static constexpr unsigned int 5209: round_error() noexcept { return 0; } 5209: 5209: static constexpr int min_exponent = 0; 5209: static constexpr int min_exponent10 = 0; 5209: static constexpr int max_exponent = 0; 5209: static constexpr int max_exponent10 = 0; 5209: 5209: static constexpr bool has_infinity = false; 5209: static constexpr bool has_quiet_NaN = false; 5209: static constexpr bool has_signaling_NaN = false; 5209: static constexpr float_denorm_style has_denorm 5209: = denorm_absent; 5209: static constexpr bool has_denorm_loss = false; 5209: 5209: static constexpr unsigned int 5209: infinity() noexcept { return static_cast(0); } 5209: 5209: static constexpr unsigned int 5209: quiet_NaN() noexcept 5209: { return static_cast(0); } 5209: 5209: static constexpr unsigned int 5209: signaling_NaN() noexcept 5209: { return static_cast(0); } 5209: 5209: static constexpr unsigned int 5209: denorm_min() noexcept 5209: { return static_cast(0); } 5209: 5209: static constexpr bool is_iec559 = false; 5209: static constexpr bool is_bounded = true; 5209: static constexpr bool is_modulo = true; 5209: 5209: static constexpr bool traps = true; 5209: static constexpr bool tinyness_before = false; 5209: static constexpr float_round_style round_style 5209: = round_toward_zero; 5209: }; 5209: 5209: 5209: template<> 5209: struct numeric_limits 5209: { 5209: static constexpr bool is_specialized = true; 5209: 5209: static constexpr long 5209: min() noexcept { return -0x7fffffffffffffffL - 1; } 5209: 5209: static constexpr long 5209: max() noexcept { return 0x7fffffffffffffffL; } 5209: 5209: 5209: static constexpr long 5209: lowest() noexcept { return min(); } 5209: 5209: 5209: static constexpr int digits = (sizeof(long) * 8 - ((long)(-1) < 0)); 5209: static constexpr int digits10 = ((sizeof(long) * 8 - ((long)(-1) < 0)) * 643L / 2136); 5209: 5209: static constexpr int max_digits10 = 0; 5209: 5209: static constexpr bool is_signed = true; 5209: static constexpr bool is_integer = true; 5209: static constexpr bool is_exact = true; 5209: static constexpr int radix = 2; 5209: 5209: static constexpr long 5209: epsilon() noexcept { return 0; } 5209: 5209: static constexpr long 5209: round_error() noexcept { return 0; } 5209: 5209: static constexpr int min_exponent = 0; 5209: static constexpr int min_exponent10 = 0; 5209: static constexpr int max_exponent = 0; 5209: static constexpr int max_exponent10 = 0; 5209: 5209: static constexpr bool has_infinity = false; 5209: static constexpr bool has_quiet_NaN = false; 5209: static constexpr bool has_signaling_NaN = false; 5209: static constexpr float_denorm_style has_denorm 5209: = denorm_absent; 5209: static constexpr bool has_denorm_loss = false; 5209: 5209: static constexpr long 5209: infinity() noexcept { return static_cast(0); } 5209: 5209: static constexpr long 5209: quiet_NaN() noexcept { return static_cast(0); } 5209: 5209: static constexpr long 5209: signaling_NaN() noexcept { return static_cast(0); } 5209: 5209: static constexpr long 5209: denorm_min() noexcept { return static_cast(0); } 5209: 5209: static constexpr bool is_iec559 = false; 5209: static constexpr bool is_bounded = true; 5209: static constexpr bool is_modulo = false; 5209: 5209: static constexpr bool traps = true; 5209: static constexpr bool tinyness_before = false; 5209: static constexpr float_round_style round_style 5209: = round_toward_zero; 5209: }; 5209: 5209: 5209: template<> 5209: struct numeric_limits 5209: { 5209: static constexpr bool is_specialized = true; 5209: 5209: static constexpr unsigned long 5209: min() noexcept { return 0; } 5209: 5209: static constexpr unsigned long 5209: max() noexcept { return 0x7fffffffffffffffL * 2UL + 1; } 5209: 5209: 5209: static constexpr unsigned long 5209: lowest() noexcept { return min(); } 5209: 5209: 5209: static constexpr int digits 5209: = (sizeof(unsigned long) * 8 - ((unsigned long)(-1) < 0)); 5209: static constexpr int digits10 5209: = ((sizeof(unsigned long) * 8 - ((unsigned long)(-1) < 0)) * 643L / 2136); 5209: 5209: static constexpr int max_digits10 = 0; 5209: 5209: static constexpr bool is_signed = false; 5209: static constexpr bool is_integer = true; 5209: static constexpr bool is_exact = true; 5209: static constexpr int radix = 2; 5209: 5209: static constexpr unsigned long 5209: epsilon() noexcept { return 0; } 5209: 5209: static constexpr unsigned long 5209: round_error() noexcept { return 0; } 5209: 5209: static constexpr int min_exponent = 0; 5209: static constexpr int min_exponent10 = 0; 5209: static constexpr int max_exponent = 0; 5209: static constexpr int max_exponent10 = 0; 5209: 5209: static constexpr bool has_infinity = false; 5209: static constexpr bool has_quiet_NaN = false; 5209: static constexpr bool has_signaling_NaN = false; 5209: static constexpr float_denorm_style has_denorm 5209: = denorm_absent; 5209: static constexpr bool has_denorm_loss = false; 5209: 5209: static constexpr unsigned long 5209: infinity() noexcept 5209: { return static_cast(0); } 5209: 5209: static constexpr unsigned long 5209: quiet_NaN() noexcept 5209: { return static_cast(0); } 5209: 5209: static constexpr unsigned long 5209: signaling_NaN() noexcept 5209: { return static_cast(0); } 5209: 5209: static constexpr unsigned long 5209: denorm_min() noexcept 5209: { return static_cast(0); } 5209: 5209: static constexpr bool is_iec559 = false; 5209: static constexpr bool is_bounded = true; 5209: static constexpr bool is_modulo = true; 5209: 5209: static constexpr bool traps = true; 5209: static constexpr bool tinyness_before = false; 5209: static constexpr float_round_style round_style 5209: = round_toward_zero; 5209: }; 5209: 5209: 5209: template<> 5209: struct numeric_limits 5209: { 5209: static constexpr bool is_specialized = true; 5209: 5209: static constexpr long long 5209: min() noexcept { return -0x7fffffffffffffffLL - 1; } 5209: 5209: static constexpr long long 5209: max() noexcept { return 0x7fffffffffffffffLL; } 5209: 5209: 5209: static constexpr long long 5209: lowest() noexcept { return min(); } 5209: 5209: 5209: static constexpr int digits 5209: = (sizeof(long long) * 8 - ((long long)(-1) < 0)); 5209: static constexpr int digits10 5209: = ((sizeof(long long) * 8 - ((long long)(-1) < 0)) * 643L / 2136); 5209: 5209: static constexpr int max_digits10 = 0; 5209: 5209: static constexpr bool is_signed = true; 5209: static constexpr bool is_integer = true; 5209: static constexpr bool is_exact = true; 5209: static constexpr int radix = 2; 5209: 5209: static constexpr long long 5209: epsilon() noexcept { return 0; } 5209: 5209: static constexpr long long 5209: round_error() noexcept { return 0; } 5209: 5209: static constexpr int min_exponent = 0; 5209: static constexpr int min_exponent10 = 0; 5209: static constexpr int max_exponent = 0; 5209: static constexpr int max_exponent10 = 0; 5209: 5209: static constexpr bool has_infinity = false; 5209: static constexpr bool has_quiet_NaN = false; 5209: static constexpr bool has_signaling_NaN = false; 5209: static constexpr float_denorm_style has_denorm 5209: = denorm_absent; 5209: static constexpr bool has_denorm_loss = false; 5209: 5209: static constexpr long long 5209: infinity() noexcept { return static_cast(0); } 5209: 5209: static constexpr long long 5209: quiet_NaN() noexcept { return static_cast(0); } 5209: 5209: static constexpr long long 5209: signaling_NaN() noexcept 5209: { return static_cast(0); } 5209: 5209: static constexpr long long 5209: denorm_min() noexcept { return static_cast(0); } 5209: 5209: static constexpr bool is_iec559 = false; 5209: static constexpr bool is_bounded = true; 5209: static constexpr bool is_modulo = false; 5209: 5209: static constexpr bool traps = true; 5209: static constexpr bool tinyness_before = false; 5209: static constexpr float_round_style round_style 5209: = round_toward_zero; 5209: }; 5209: 5209: 5209: template<> 5209: struct numeric_limits 5209: { 5209: static constexpr bool is_specialized = true; 5209: 5209: static constexpr unsigned long long 5209: min() noexcept { return 0; } 5209: 5209: static constexpr unsigned long long 5209: max() noexcept { return 0x7fffffffffffffffLL * 2ULL + 1; } 5209: 5209: 5209: static constexpr unsigned long long 5209: lowest() noexcept { return min(); } 5209: 5209: 5209: static constexpr int digits 5209: = (sizeof(unsigned long long) * 8 - ((unsigned long long)(-1) < 0)); 5209: static constexpr int digits10 5209: = ((sizeof(unsigned long long) * 8 - ((unsigned long long)(-1) < 0)) * 643L / 2136); 5209: 5209: static constexpr int max_digits10 = 0; 5209: 5209: static constexpr bool is_signed = false; 5209: static constexpr bool is_integer = true; 5209: static constexpr bool is_exact = true; 5209: static constexpr int radix = 2; 5209: 5209: static constexpr unsigned long long 5209: epsilon() noexcept { return 0; } 5209: 5209: static constexpr unsigned long long 5209: round_error() noexcept { return 0; } 5209: 5209: static constexpr int min_exponent = 0; 5209: static constexpr int min_exponent10 = 0; 5209: static constexpr int max_exponent = 0; 5209: static constexpr int max_exponent10 = 0; 5209: 5209: static constexpr bool has_infinity = false; 5209: static constexpr bool has_quiet_NaN = false; 5209: static constexpr bool has_signaling_NaN = false; 5209: static constexpr float_denorm_style has_denorm 5209: = denorm_absent; 5209: static constexpr bool has_denorm_loss = false; 5209: 5209: static constexpr unsigned long long 5209: infinity() noexcept 5209: { return static_cast(0); } 5209: 5209: static constexpr unsigned long long 5209: quiet_NaN() noexcept 5209: { return static_cast(0); } 5209: 5209: static constexpr unsigned long long 5209: signaling_NaN() noexcept 5209: { return static_cast(0); } 5209: 5209: static constexpr unsigned long long 5209: denorm_min() noexcept 5209: { return static_cast(0); } 5209: 5209: static constexpr bool is_iec559 = false; 5209: static constexpr bool is_bounded = true; 5209: static constexpr bool is_modulo = true; 5209: 5209: static constexpr bool traps = true; 5209: static constexpr bool tinyness_before = false; 5209: static constexpr float_round_style round_style 5209: = round_toward_zero; 5209: }; 5209: # 1636 "/usr/include/c++/10/limits" 3 5209: template<> struct numeric_limits<__int128> { static constexpr bool is_specialized = true; static constexpr __int128 min() noexcept { return (((__int128)(-1) < 0) ? -(((__int128)(-1) < 0) ? (((((__int128)1 << ((128 - ((__int128)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(__int128)0) - 1 : (__int128)0); } static constexpr __int128 max() noexcept { return (((__int128)(-1) < 0) ? (((((__int128)1 << ((128 - ((__int128)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(__int128)0); } static constexpr int digits = 128 - 1; static constexpr int digits10 = (128 - 1) * 643L / 2136; static constexpr bool is_signed = true; static constexpr bool is_integer = true; static constexpr bool is_exact = true; static constexpr int radix = 2; static constexpr __int128 epsilon() noexcept { return 0; } static constexpr __int128 round_error() noexcept { return 0; } static constexpr __int128 lowest() noexcept { return min(); } static constexpr int max_digits10 = 0; static constexpr int min_exponent = 0; static constexpr int min_exponent10 = 0; static constexpr int max_exponent = 0; static constexpr int max_exponent10 = 0; static constexpr bool has_infinity = false; static constexpr bool has_quiet_NaN = false; static constexpr bool has_signaling_NaN = false; static constexpr float_denorm_style has_denorm = denorm_absent; static constexpr bool has_denorm_loss = false; static constexpr __int128 infinity() noexcept { return static_cast<__int128>(0); } static constexpr __int128 quiet_NaN() noexcept { return static_cast<__int128>(0); } static constexpr __int128 signaling_NaN() noexcept { return static_cast<__int128>(0); } static constexpr __int128 denorm_min() noexcept { return static_cast<__int128>(0); } static constexpr bool is_iec559 = false; static constexpr bool is_bounded = true; static constexpr bool is_modulo = false; static constexpr bool traps = true; static constexpr bool tinyness_before = false; static constexpr float_round_style round_style = round_toward_zero; }; template<> struct numeric_limits { static constexpr bool is_specialized = true; static constexpr unsigned __int128 min() noexcept { return 0; } static constexpr unsigned __int128 max() noexcept { return (((unsigned __int128)(-1) < 0) ? (((((unsigned __int128)1 << ((128 - ((unsigned __int128)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(unsigned __int128)0); } static constexpr unsigned __int128 lowest() noexcept { return min(); } static constexpr int max_digits10 = 0; static constexpr int digits = 128; static constexpr int digits10 = 128 * 643L / 2136; static constexpr bool is_signed = false; static constexpr bool is_integer = true; static constexpr bool is_exact = true; static constexpr int radix = 2; static constexpr unsigned __int128 epsilon() noexcept { return 0; } static constexpr unsigned __int128 round_error() noexcept { return 0; } static constexpr int min_exponent = 0; static constexpr int min_exponent10 = 0; static constexpr int max_exponent = 0; static constexpr int max_exponent10 = 0; static constexpr bool has_infinity = false; static constexpr bool has_quiet_NaN = false; static constexpr bool has_signaling_NaN = false; static constexpr float_denorm_style has_denorm = denorm_absent; static constexpr bool has_denorm_loss = false; static constexpr unsigned __int128 infinity() noexcept { return static_cast(0); } static constexpr unsigned __int128 quiet_NaN() noexcept { return static_cast(0); } static constexpr unsigned __int128 signaling_NaN() noexcept { return static_cast(0); } static constexpr unsigned __int128 denorm_min() noexcept { return static_cast(0); } static constexpr bool is_iec559 = false; static constexpr bool is_bounded = true; static constexpr bool is_modulo = true; static constexpr bool traps = true; static constexpr bool tinyness_before = false; static constexpr float_round_style round_style = round_toward_zero; }; 5209: # 1659 "/usr/include/c++/10/limits" 3 5209: template<> 5209: struct numeric_limits 5209: { 5209: static constexpr bool is_specialized = true; 5209: 5209: static constexpr float 5209: min() noexcept { return 1.17549435082228750796873653722224568e-38F; } 5209: 5209: static constexpr float 5209: max() noexcept { return 3.40282346638528859811704183484516925e+38F; } 5209: 5209: 5209: static constexpr float 5209: lowest() noexcept { return -3.40282346638528859811704183484516925e+38F; } 5209: 5209: 5209: static constexpr int digits = 24; 5209: static constexpr int digits10 = 6; 5209: 5209: static constexpr int max_digits10 5209: = (2 + (24) * 643L / 2136); 5209: 5209: static constexpr bool is_signed = true; 5209: static constexpr bool is_integer = false; 5209: static constexpr bool is_exact = false; 5209: static constexpr int radix = 2; 5209: 5209: static constexpr float 5209: epsilon() noexcept { return 1.19209289550781250000000000000000000e-7F; } 5209: 5209: static constexpr float 5209: round_error() noexcept { return 0.5F; } 5209: 5209: static constexpr int min_exponent = (-125); 5209: static constexpr int min_exponent10 = (-37); 5209: static constexpr int max_exponent = 128; 5209: static constexpr int max_exponent10 = 38; 5209: 5209: static constexpr bool has_infinity = 1; 5209: static constexpr bool has_quiet_NaN = 1; 5209: static constexpr bool has_signaling_NaN = has_quiet_NaN; 5209: static constexpr float_denorm_style has_denorm 5209: = bool(1) ? denorm_present : denorm_absent; 5209: static constexpr bool has_denorm_loss 5209: = false; 5209: 5209: static constexpr float 5209: infinity() noexcept { return __builtin_huge_valf(); } 5209: 5209: static constexpr float 5209: quiet_NaN() noexcept { return __builtin_nanf(""); } 5209: 5209: static constexpr float 5209: signaling_NaN() noexcept { return __builtin_nansf(""); } 5209: 5209: static constexpr float 5209: denorm_min() noexcept { return 1.40129846432481707092372958328991613e-45F; } 5209: 5209: static constexpr bool is_iec559 5209: = has_infinity && has_quiet_NaN && has_denorm == denorm_present; 5209: static constexpr bool is_bounded = true; 5209: static constexpr bool is_modulo = false; 5209: 5209: static constexpr bool traps = false; 5209: static constexpr bool tinyness_before 5209: = false; 5209: static constexpr float_round_style round_style 5209: = round_to_nearest; 5209: }; 5209: 5209: 5209: 5209: 5209: 5209: 5209: template<> 5209: struct numeric_limits 5209: { 5209: static constexpr bool is_specialized = true; 5209: 5209: static constexpr double 5209: min() noexcept { return double(2.22507385850720138309023271733240406e-308L); } 5209: 5209: static constexpr double 5209: max() noexcept { return double(1.79769313486231570814527423731704357e+308L); } 5209: 5209: 5209: static constexpr double 5209: lowest() noexcept { return -double(1.79769313486231570814527423731704357e+308L); } 5209: 5209: 5209: static constexpr int digits = 53; 5209: static constexpr int digits10 = 15; 5209: 5209: static constexpr int max_digits10 5209: = (2 + (53) * 643L / 2136); 5209: 5209: static constexpr bool is_signed = true; 5209: static constexpr bool is_integer = false; 5209: static constexpr bool is_exact = false; 5209: static constexpr int radix = 2; 5209: 5209: static constexpr double 5209: epsilon() noexcept { return double(2.22044604925031308084726333618164062e-16L); } 5209: 5209: static constexpr double 5209: round_error() noexcept { return 0.5; } 5209: 5209: static constexpr int min_exponent = (-1021); 5209: static constexpr int min_exponent10 = (-307); 5209: static constexpr int max_exponent = 1024; 5209: static constexpr int max_exponent10 = 308; 5209: 5209: static constexpr bool has_infinity = 1; 5209: static constexpr bool has_quiet_NaN = 1; 5209: static constexpr bool has_signaling_NaN = has_quiet_NaN; 5209: static constexpr float_denorm_style has_denorm 5209: = bool(1) ? denorm_present : denorm_absent; 5209: static constexpr bool has_denorm_loss 5209: = false; 5209: 5209: static constexpr double 5209: infinity() noexcept { return __builtin_huge_val(); } 5209: 5209: static constexpr double 5209: quiet_NaN() noexcept { return __builtin_nan(""); } 5209: 5209: static constexpr double 5209: signaling_NaN() noexcept { return __builtin_nans(""); } 5209: 5209: static constexpr double 5209: denorm_min() noexcept { return double(4.94065645841246544176568792868221372e-324L); } 5209: 5209: static constexpr bool is_iec559 5209: = has_infinity && has_quiet_NaN && has_denorm == denorm_present; 5209: static constexpr bool is_bounded = true; 5209: static constexpr bool is_modulo = false; 5209: 5209: static constexpr bool traps = false; 5209: static constexpr bool tinyness_before 5209: = false; 5209: static constexpr float_round_style round_style 5209: = round_to_nearest; 5209: }; 5209: 5209: 5209: 5209: 5209: 5209: 5209: template<> 5209: struct numeric_limits 5209: { 5209: static constexpr bool is_specialized = true; 5209: 5209: static constexpr long double 5209: min() noexcept { return 3.36210314311209350626267781732175260e-4932L; } 5209: 5209: static constexpr long double 5209: max() noexcept { return 1.18973149535723176508575932662800702e+4932L; } 5209: 5209: 5209: static constexpr long double 5209: lowest() noexcept { return -1.18973149535723176508575932662800702e+4932L; } 5209: 5209: 5209: static constexpr int digits = 113; 5209: static constexpr int digits10 = 33; 5209: 5209: static constexpr int max_digits10 5209: = (2 + (113) * 643L / 2136); 5209: 5209: static constexpr bool is_signed = true; 5209: static constexpr bool is_integer = false; 5209: static constexpr bool is_exact = false; 5209: static constexpr int radix = 2; 5209: 5209: static constexpr long double 5209: epsilon() noexcept { return 1.92592994438723585305597794258492732e-34L; } 5209: 5209: static constexpr long double 5209: round_error() noexcept { return 0.5L; } 5209: 5209: static constexpr int min_exponent = (-16381); 5209: static constexpr int min_exponent10 = (-4931); 5209: static constexpr int max_exponent = 16384; 5209: static constexpr int max_exponent10 = 4932; 5209: 5209: static constexpr bool has_infinity = 1; 5209: static constexpr bool has_quiet_NaN = 1; 5209: static constexpr bool has_signaling_NaN = has_quiet_NaN; 5209: static constexpr float_denorm_style has_denorm 5209: = bool(1) ? denorm_present : denorm_absent; 5209: static constexpr bool has_denorm_loss 5209: = false; 5209: 5209: static constexpr long double 5209: infinity() noexcept { return __builtin_huge_vall(); } 5209: 5209: static constexpr long double 5209: quiet_NaN() noexcept { return __builtin_nanl(""); } 5209: 5209: static constexpr long double 5209: signaling_NaN() noexcept { return __builtin_nansl(""); } 5209: 5209: static constexpr long double 5209: denorm_min() noexcept { return 6.47517511943802511092443895822764655e-4966L; } 5209: 5209: static constexpr bool is_iec559 5209: = has_infinity && has_quiet_NaN && has_denorm == denorm_present; 5209: static constexpr bool is_bounded = true; 5209: static constexpr bool is_modulo = false; 5209: 5209: static constexpr bool traps = false; 5209: static constexpr bool tinyness_before = 5209: false; 5209: static constexpr float_round_style round_style = 5209: round_to_nearest; 5209: }; 5209: 5209: 5209: 5209: 5209: 5209: 5209: } 5209: # 43 "/usr/include/c++/10/random" 2 3 5209: 5209: 5209: 5209: 5209: 5209: 5209: # 1 "/usr/include/c++/10/bits/random.h" 1 3 5209: # 34 "/usr/include/c++/10/bits/random.h" 3 5209: # 1 "/usr/include/c++/10/vector" 1 3 5209: # 58 "/usr/include/c++/10/vector" 3 5209: 5209: # 59 "/usr/include/c++/10/vector" 3 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: # 1 "/usr/include/c++/10/bits/stl_uninitialized.h" 1 3 5209: # 69 "/usr/include/c++/10/bits/stl_uninitialized.h" 3 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: struct __uninitialized_copy 5209: { 5209: template 5209: static _ForwardIterator 5209: __uninit_copy(_InputIterator __first, _InputIterator __last, 5209: _ForwardIterator __result) 5209: { 5209: _ForwardIterator __cur = __result; 5209: try 5209: { 5209: for (; __first != __last; ++__first, (void)++__cur) 5209: std::_Construct(std::__addressof(*__cur), *__first); 5209: return __cur; 5209: } 5209: catch(...) 5209: { 5209: std::_Destroy(__result, __cur); 5209: throw; 5209: } 5209: } 5209: }; 5209: 5209: template<> 5209: struct __uninitialized_copy 5209: { 5209: template 5209: static _ForwardIterator 5209: __uninit_copy(_InputIterator __first, _InputIterator __last, 5209: _ForwardIterator __result) 5209: { return std::copy(__first, __last, __result); } 5209: }; 5209: # 123 "/usr/include/c++/10/bits/stl_uninitialized.h" 3 5209: template 5209: inline _ForwardIterator 5209: uninitialized_copy(_InputIterator __first, _InputIterator __last, 5209: _ForwardIterator __result) 5209: { 5209: typedef typename iterator_traits<_InputIterator>::value_type 5209: _ValueType1; 5209: typedef typename iterator_traits<_ForwardIterator>::value_type 5209: _ValueType2; 5209: 5209: 5209: 5209: 5209: 5209: static_assert(is_constructible<_ValueType2, decltype(*__first)>::value, 5209: "result type must be constructible from value type of input range"); 5209: 5209: typedef typename iterator_traits<_InputIterator>::reference _RefType1; 5209: typedef typename iterator_traits<_ForwardIterator>::reference _RefType2; 5209: 5209: 5209: const bool __assignable = is_assignable<_RefType2, _RefType1>::value; 5209: 5209: 5209: return std::__uninitialized_copy<__is_trivial(_ValueType1) 5209: && __is_trivial(_ValueType2) 5209: && __assignable>:: 5209: __uninit_copy(__first, __last, __result); 5209: } 5209: 5209: 5209: 5209: template 5209: struct __uninitialized_fill 5209: { 5209: template 5209: static void 5209: __uninit_fill(_ForwardIterator __first, _ForwardIterator __last, 5209: const _Tp& __x) 5209: { 5209: _ForwardIterator __cur = __first; 5209: try 5209: { 5209: for (; __cur != __last; ++__cur) 5209: std::_Construct(std::__addressof(*__cur), __x); 5209: } 5209: catch(...) 5209: { 5209: std::_Destroy(__first, __cur); 5209: throw; 5209: } 5209: } 5209: }; 5209: 5209: template<> 5209: struct __uninitialized_fill 5209: { 5209: template 5209: static void 5209: __uninit_fill(_ForwardIterator __first, _ForwardIterator __last, 5209: const _Tp& __x) 5209: { std::fill(__first, __last, __x); } 5209: }; 5209: # 198 "/usr/include/c++/10/bits/stl_uninitialized.h" 3 5209: template 5209: inline void 5209: uninitialized_fill(_ForwardIterator __first, _ForwardIterator __last, 5209: const _Tp& __x) 5209: { 5209: typedef typename iterator_traits<_ForwardIterator>::value_type 5209: _ValueType; 5209: 5209: 5209: 5209: 5209: 5209: static_assert(is_constructible<_ValueType, const _Tp&>::value, 5209: "result type must be constructible from input type"); 5209: 5209: 5209: 5209: const bool __assignable = is_copy_assignable<_ValueType>::value; 5209: 5209: 5209: std::__uninitialized_fill<__is_trivial(_ValueType) && __assignable>:: 5209: __uninit_fill(__first, __last, __x); 5209: } 5209: 5209: 5209: 5209: template 5209: struct __uninitialized_fill_n 5209: { 5209: template 5209: static _ForwardIterator 5209: __uninit_fill_n(_ForwardIterator __first, _Size __n, 5209: const _Tp& __x) 5209: { 5209: _ForwardIterator __cur = __first; 5209: try 5209: { 5209: for (; __n > 0; --__n, (void) ++__cur) 5209: std::_Construct(std::__addressof(*__cur), __x); 5209: return __cur; 5209: } 5209: catch(...) 5209: { 5209: std::_Destroy(__first, __cur); 5209: throw; 5209: } 5209: } 5209: }; 5209: 5209: template<> 5209: struct __uninitialized_fill_n 5209: { 5209: template 5209: static _ForwardIterator 5209: __uninit_fill_n(_ForwardIterator __first, _Size __n, 5209: const _Tp& __x) 5209: { return std::fill_n(__first, __n, __x); } 5209: }; 5209: # 270 "/usr/include/c++/10/bits/stl_uninitialized.h" 3 5209: template 5209: inline _ForwardIterator 5209: uninitialized_fill_n(_ForwardIterator __first, _Size __n, const _Tp& __x) 5209: { 5209: typedef typename iterator_traits<_ForwardIterator>::value_type 5209: _ValueType; 5209: 5209: 5209: 5209: 5209: 5209: static_assert(is_constructible<_ValueType, const _Tp&>::value, 5209: "result type must be constructible from input type"); 5209: 5209: 5209: 5209: const bool __assignable = is_copy_assignable<_ValueType>::value; 5209: 5209: return __uninitialized_fill_n<__is_trivial(_ValueType) && __assignable>:: 5209: __uninit_fill_n(__first, __n, __x); 5209: } 5209: # 300 "/usr/include/c++/10/bits/stl_uninitialized.h" 3 5209: template 5209: _ForwardIterator 5209: __uninitialized_copy_a(_InputIterator __first, _InputIterator __last, 5209: _ForwardIterator __result, _Allocator& __alloc) 5209: { 5209: _ForwardIterator __cur = __result; 5209: try 5209: { 5209: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; 5209: for (; __first != __last; ++__first, (void)++__cur) 5209: __traits::construct(__alloc, std::__addressof(*__cur), *__first); 5209: return __cur; 5209: } 5209: catch(...) 5209: { 5209: std::_Destroy(__result, __cur, __alloc); 5209: throw; 5209: } 5209: } 5209: 5209: template 5209: inline _ForwardIterator 5209: __uninitialized_copy_a(_InputIterator __first, _InputIterator __last, 5209: _ForwardIterator __result, allocator<_Tp>&) 5209: { return std::uninitialized_copy(__first, __last, __result); } 5209: 5209: template 5209: inline _ForwardIterator 5209: __uninitialized_move_a(_InputIterator __first, _InputIterator __last, 5209: _ForwardIterator __result, _Allocator& __alloc) 5209: { 5209: return std::__uninitialized_copy_a(std::make_move_iterator(__first), 5209: std::make_move_iterator(__last), 5209: __result, __alloc); 5209: } 5209: 5209: template 5209: inline _ForwardIterator 5209: __uninitialized_move_if_noexcept_a(_InputIterator __first, 5209: _InputIterator __last, 5209: _ForwardIterator __result, 5209: _Allocator& __alloc) 5209: { 5209: return std::__uninitialized_copy_a 5209: (std::__make_move_if_noexcept_iterator(__first), 5209: std::__make_move_if_noexcept_iterator(__last), __result, __alloc); 5209: } 5209: 5209: template 5209: void 5209: __uninitialized_fill_a(_ForwardIterator __first, _ForwardIterator __last, 5209: const _Tp& __x, _Allocator& __alloc) 5209: { 5209: _ForwardIterator __cur = __first; 5209: try 5209: { 5209: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; 5209: for (; __cur != __last; ++__cur) 5209: __traits::construct(__alloc, std::__addressof(*__cur), __x); 5209: } 5209: catch(...) 5209: { 5209: std::_Destroy(__first, __cur, __alloc); 5209: throw; 5209: } 5209: } 5209: 5209: template 5209: inline void 5209: __uninitialized_fill_a(_ForwardIterator __first, _ForwardIterator __last, 5209: const _Tp& __x, allocator<_Tp2>&) 5209: { std::uninitialized_fill(__first, __last, __x); } 5209: 5209: template 5209: _ForwardIterator 5209: __uninitialized_fill_n_a(_ForwardIterator __first, _Size __n, 5209: const _Tp& __x, _Allocator& __alloc) 5209: { 5209: _ForwardIterator __cur = __first; 5209: try 5209: { 5209: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; 5209: for (; __n > 0; --__n, (void) ++__cur) 5209: __traits::construct(__alloc, std::__addressof(*__cur), __x); 5209: return __cur; 5209: } 5209: catch(...) 5209: { 5209: std::_Destroy(__first, __cur, __alloc); 5209: throw; 5209: } 5209: } 5209: 5209: template 5209: inline _ForwardIterator 5209: __uninitialized_fill_n_a(_ForwardIterator __first, _Size __n, 5209: const _Tp& __x, allocator<_Tp2>&) 5209: { return std::uninitialized_fill_n(__first, __n, __x); } 5209: # 414 "/usr/include/c++/10/bits/stl_uninitialized.h" 3 5209: template 5209: inline _ForwardIterator 5209: __uninitialized_copy_move(_InputIterator1 __first1, 5209: _InputIterator1 __last1, 5209: _InputIterator2 __first2, 5209: _InputIterator2 __last2, 5209: _ForwardIterator __result, 5209: _Allocator& __alloc) 5209: { 5209: _ForwardIterator __mid = std::__uninitialized_copy_a(__first1, __last1, 5209: __result, 5209: __alloc); 5209: try 5209: { 5209: return std::__uninitialized_move_a(__first2, __last2, __mid, __alloc); 5209: } 5209: catch(...) 5209: { 5209: std::_Destroy(__result, __mid, __alloc); 5209: throw; 5209: } 5209: } 5209: 5209: 5209: 5209: 5209: 5209: template 5209: inline _ForwardIterator 5209: __uninitialized_move_copy(_InputIterator1 __first1, 5209: _InputIterator1 __last1, 5209: _InputIterator2 __first2, 5209: _InputIterator2 __last2, 5209: _ForwardIterator __result, 5209: _Allocator& __alloc) 5209: { 5209: _ForwardIterator __mid = std::__uninitialized_move_a(__first1, __last1, 5209: __result, 5209: __alloc); 5209: try 5209: { 5209: return std::__uninitialized_copy_a(__first2, __last2, __mid, __alloc); 5209: } 5209: catch(...) 5209: { 5209: std::_Destroy(__result, __mid, __alloc); 5209: throw; 5209: } 5209: } 5209: 5209: 5209: 5209: 5209: template 5209: inline _ForwardIterator 5209: __uninitialized_fill_move(_ForwardIterator __result, _ForwardIterator __mid, 5209: const _Tp& __x, _InputIterator __first, 5209: _InputIterator __last, _Allocator& __alloc) 5209: { 5209: std::__uninitialized_fill_a(__result, __mid, __x, __alloc); 5209: try 5209: { 5209: return std::__uninitialized_move_a(__first, __last, __mid, __alloc); 5209: } 5209: catch(...) 5209: { 5209: std::_Destroy(__result, __mid, __alloc); 5209: throw; 5209: } 5209: } 5209: 5209: 5209: 5209: 5209: template 5209: inline void 5209: __uninitialized_move_fill(_InputIterator __first1, _InputIterator __last1, 5209: _ForwardIterator __first2, 5209: _ForwardIterator __last2, const _Tp& __x, 5209: _Allocator& __alloc) 5209: { 5209: _ForwardIterator __mid2 = std::__uninitialized_move_a(__first1, __last1, 5209: __first2, 5209: __alloc); 5209: try 5209: { 5209: std::__uninitialized_fill_a(__mid2, __last2, __x, __alloc); 5209: } 5209: catch(...) 5209: { 5209: std::_Destroy(__first2, __mid2, __alloc); 5209: throw; 5209: } 5209: } 5209: # 521 "/usr/include/c++/10/bits/stl_uninitialized.h" 3 5209: template 5209: struct __uninitialized_default_1 5209: { 5209: template 5209: static void 5209: __uninit_default(_ForwardIterator __first, _ForwardIterator __last) 5209: { 5209: _ForwardIterator __cur = __first; 5209: try 5209: { 5209: for (; __cur != __last; ++__cur) 5209: std::_Construct(std::__addressof(*__cur)); 5209: } 5209: catch(...) 5209: { 5209: std::_Destroy(__first, __cur); 5209: throw; 5209: } 5209: } 5209: }; 5209: 5209: template<> 5209: struct __uninitialized_default_1 5209: { 5209: template 5209: static void 5209: __uninit_default(_ForwardIterator __first, _ForwardIterator __last) 5209: { 5209: typedef typename iterator_traits<_ForwardIterator>::value_type 5209: _ValueType; 5209: 5209: std::fill(__first, __last, _ValueType()); 5209: } 5209: }; 5209: 5209: template 5209: struct __uninitialized_default_n_1 5209: { 5209: template 5209: static _ForwardIterator 5209: __uninit_default_n(_ForwardIterator __first, _Size __n) 5209: { 5209: _ForwardIterator __cur = __first; 5209: try 5209: { 5209: for (; __n > 0; --__n, (void) ++__cur) 5209: std::_Construct(std::__addressof(*__cur)); 5209: return __cur; 5209: } 5209: catch(...) 5209: { 5209: std::_Destroy(__first, __cur); 5209: throw; 5209: } 5209: } 5209: }; 5209: 5209: template<> 5209: struct __uninitialized_default_n_1 5209: { 5209: template 5209: static _ForwardIterator 5209: __uninit_default_n(_ForwardIterator __first, _Size __n) 5209: { 5209: typedef typename iterator_traits<_ForwardIterator>::value_type 5209: _ValueType; 5209: 5209: return std::fill_n(__first, __n, _ValueType()); 5209: } 5209: }; 5209: 5209: 5209: 5209: 5209: template 5209: inline void 5209: __uninitialized_default(_ForwardIterator __first, 5209: _ForwardIterator __last) 5209: { 5209: typedef typename iterator_traits<_ForwardIterator>::value_type 5209: _ValueType; 5209: 5209: const bool __assignable = is_copy_assignable<_ValueType>::value; 5209: 5209: std::__uninitialized_default_1<__is_trivial(_ValueType) 5209: && __assignable>:: 5209: __uninit_default(__first, __last); 5209: } 5209: 5209: 5209: 5209: template 5209: inline _ForwardIterator 5209: __uninitialized_default_n(_ForwardIterator __first, _Size __n) 5209: { 5209: typedef typename iterator_traits<_ForwardIterator>::value_type 5209: _ValueType; 5209: 5209: const bool __assignable = is_copy_assignable<_ValueType>::value; 5209: 5209: return __uninitialized_default_n_1<__is_trivial(_ValueType) 5209: && __assignable>:: 5209: __uninit_default_n(__first, __n); 5209: } 5209: 5209: 5209: 5209: 5209: 5209: template 5209: void 5209: __uninitialized_default_a(_ForwardIterator __first, 5209: _ForwardIterator __last, 5209: _Allocator& __alloc) 5209: { 5209: _ForwardIterator __cur = __first; 5209: try 5209: { 5209: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; 5209: for (; __cur != __last; ++__cur) 5209: __traits::construct(__alloc, std::__addressof(*__cur)); 5209: } 5209: catch(...) 5209: { 5209: std::_Destroy(__first, __cur, __alloc); 5209: throw; 5209: } 5209: } 5209: 5209: template 5209: inline void 5209: __uninitialized_default_a(_ForwardIterator __first, 5209: _ForwardIterator __last, 5209: allocator<_Tp>&) 5209: { std::__uninitialized_default(__first, __last); } 5209: 5209: 5209: 5209: 5209: 5209: template 5209: _ForwardIterator 5209: __uninitialized_default_n_a(_ForwardIterator __first, _Size __n, 5209: _Allocator& __alloc) 5209: { 5209: _ForwardIterator __cur = __first; 5209: try 5209: { 5209: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; 5209: for (; __n > 0; --__n, (void) ++__cur) 5209: __traits::construct(__alloc, std::__addressof(*__cur)); 5209: return __cur; 5209: } 5209: catch(...) 5209: { 5209: std::_Destroy(__first, __cur, __alloc); 5209: throw; 5209: } 5209: } 5209: 5209: template 5209: inline _ForwardIterator 5209: __uninitialized_default_n_a(_ForwardIterator __first, _Size __n, 5209: allocator<_Tp>&) 5209: { return std::__uninitialized_default_n(__first, __n); } 5209: 5209: template 5209: struct __uninitialized_default_novalue_1 5209: { 5209: template 5209: static void 5209: __uninit_default_novalue(_ForwardIterator __first, 5209: _ForwardIterator __last) 5209: { 5209: _ForwardIterator __cur = __first; 5209: try 5209: { 5209: for (; __cur != __last; ++__cur) 5209: std::_Construct_novalue(std::__addressof(*__cur)); 5209: } 5209: catch(...) 5209: { 5209: std::_Destroy(__first, __cur); 5209: throw; 5209: } 5209: } 5209: }; 5209: 5209: template<> 5209: struct __uninitialized_default_novalue_1 5209: { 5209: template 5209: static void 5209: __uninit_default_novalue(_ForwardIterator __first, 5209: _ForwardIterator __last) 5209: { 5209: } 5209: }; 5209: 5209: template 5209: struct __uninitialized_default_novalue_n_1 5209: { 5209: template 5209: static _ForwardIterator 5209: __uninit_default_novalue_n(_ForwardIterator __first, _Size __n) 5209: { 5209: _ForwardIterator __cur = __first; 5209: try 5209: { 5209: for (; __n > 0; --__n, (void) ++__cur) 5209: std::_Construct_novalue(std::__addressof(*__cur)); 5209: return __cur; 5209: } 5209: catch(...) 5209: { 5209: std::_Destroy(__first, __cur); 5209: throw; 5209: } 5209: } 5209: }; 5209: 5209: template<> 5209: struct __uninitialized_default_novalue_n_1 5209: { 5209: template 5209: static _ForwardIterator 5209: __uninit_default_novalue_n(_ForwardIterator __first, _Size __n) 5209: { return std::next(__first, __n); } 5209: }; 5209: 5209: 5209: 5209: 5209: template 5209: inline void 5209: __uninitialized_default_novalue(_ForwardIterator __first, 5209: _ForwardIterator __last) 5209: { 5209: typedef typename iterator_traits<_ForwardIterator>::value_type 5209: _ValueType; 5209: 5209: std::__uninitialized_default_novalue_1< 5209: is_trivially_default_constructible<_ValueType>::value>:: 5209: __uninit_default_novalue(__first, __last); 5209: } 5209: 5209: 5209: 5209: template 5209: inline _ForwardIterator 5209: __uninitialized_default_novalue_n(_ForwardIterator __first, _Size __n) 5209: { 5209: typedef typename iterator_traits<_ForwardIterator>::value_type 5209: _ValueType; 5209: 5209: return __uninitialized_default_novalue_n_1< 5209: is_trivially_default_constructible<_ValueType>::value>:: 5209: __uninit_default_novalue_n(__first, __n); 5209: } 5209: 5209: template 5209: _ForwardIterator 5209: __uninitialized_copy_n(_InputIterator __first, _Size __n, 5209: _ForwardIterator __result, input_iterator_tag) 5209: { 5209: _ForwardIterator __cur = __result; 5209: try 5209: { 5209: for (; __n > 0; --__n, (void) ++__first, ++__cur) 5209: std::_Construct(std::__addressof(*__cur), *__first); 5209: return __cur; 5209: } 5209: catch(...) 5209: { 5209: std::_Destroy(__result, __cur); 5209: throw; 5209: } 5209: } 5209: 5209: template 5209: inline _ForwardIterator 5209: __uninitialized_copy_n(_RandomAccessIterator __first, _Size __n, 5209: _ForwardIterator __result, 5209: random_access_iterator_tag) 5209: { return std::uninitialized_copy(__first, __first + __n, __result); } 5209: 5209: template 5209: pair<_InputIterator, _ForwardIterator> 5209: __uninitialized_copy_n_pair(_InputIterator __first, _Size __n, 5209: _ForwardIterator __result, input_iterator_tag) 5209: { 5209: _ForwardIterator __cur = __result; 5209: try 5209: { 5209: for (; __n > 0; --__n, (void) ++__first, ++__cur) 5209: std::_Construct(std::__addressof(*__cur), *__first); 5209: return {__first, __cur}; 5209: } 5209: catch(...) 5209: { 5209: std::_Destroy(__result, __cur); 5209: throw; 5209: } 5209: } 5209: 5209: template 5209: inline pair<_RandomAccessIterator, _ForwardIterator> 5209: __uninitialized_copy_n_pair(_RandomAccessIterator __first, _Size __n, 5209: _ForwardIterator __result, 5209: random_access_iterator_tag) 5209: { 5209: auto __second_res = uninitialized_copy(__first, __first + __n, __result); 5209: auto __first_res = std::next(__first, __n); 5209: return {__first_res, __second_res}; 5209: } 5209: # 852 "/usr/include/c++/10/bits/stl_uninitialized.h" 3 5209: template 5209: inline _ForwardIterator 5209: uninitialized_copy_n(_InputIterator __first, _Size __n, 5209: _ForwardIterator __result) 5209: { return std::__uninitialized_copy_n(__first, __n, __result, 5209: std::__iterator_category(__first)); } 5209: 5209: 5209: template 5209: inline pair<_InputIterator, _ForwardIterator> 5209: __uninitialized_copy_n_pair(_InputIterator __first, _Size __n, 5209: _ForwardIterator __result) 5209: { 5209: return 5209: std::__uninitialized_copy_n_pair(__first, __n, __result, 5209: std::__iterator_category(__first)); 5209: } 5209: # 966 "/usr/include/c++/10/bits/stl_uninitialized.h" 3 5209: template 5209: inline void 5209: __relocate_object_a(_Tp* __restrict __dest, _Up* __restrict __orig, 5209: _Allocator& __alloc) 5209: noexcept(noexcept(std::allocator_traits<_Allocator>::construct(__alloc, 5209: __dest, std::move(*__orig))) 5209: && noexcept(std::allocator_traits<_Allocator>::destroy( 5209: __alloc, std::__addressof(*__orig)))) 5209: { 5209: typedef std::allocator_traits<_Allocator> __traits; 5209: __traits::construct(__alloc, __dest, std::move(*__orig)); 5209: __traits::destroy(__alloc, std::__addressof(*__orig)); 5209: } 5209: 5209: 5209: 5209: template 5209: struct __is_bitwise_relocatable 5209: : is_trivial<_Tp> { }; 5209: 5209: template 5209: inline __enable_if_t::value, _Tp*> 5209: __relocate_a_1(_Tp* __first, _Tp* __last, 5209: _Tp* __result, allocator<_Up>&) noexcept 5209: { 5209: ptrdiff_t __count = __last - __first; 5209: if (__count > 0) 5209: __builtin_memmove(__result, __first, __count * sizeof(_Tp)); 5209: return __result + __count; 5209: } 5209: 5209: template 5209: inline _ForwardIterator 5209: __relocate_a_1(_InputIterator __first, _InputIterator __last, 5209: _ForwardIterator __result, _Allocator& __alloc) 5209: noexcept(noexcept(std::__relocate_object_a(std::addressof(*__result), 5209: std::addressof(*__first), 5209: __alloc))) 5209: { 5209: typedef typename iterator_traits<_InputIterator>::value_type 5209: _ValueType; 5209: typedef typename iterator_traits<_ForwardIterator>::value_type 5209: _ValueType2; 5209: static_assert(std::is_same<_ValueType, _ValueType2>::value, 5209: "relocation is only possible for values of the same type"); 5209: _ForwardIterator __cur = __result; 5209: for (; __first != __last; ++__first, (void)++__cur) 5209: std::__relocate_object_a(std::__addressof(*__cur), 5209: std::__addressof(*__first), __alloc); 5209: return __cur; 5209: } 5209: 5209: template 5209: inline _ForwardIterator 5209: __relocate_a(_InputIterator __first, _InputIterator __last, 5209: _ForwardIterator __result, _Allocator& __alloc) 5209: noexcept(noexcept(__relocate_a_1(std::__niter_base(__first), 5209: std::__niter_base(__last), 5209: std::__niter_base(__result), __alloc))) 5209: { 5209: return __relocate_a_1(std::__niter_base(__first), 5209: std::__niter_base(__last), 5209: std::__niter_base(__result), __alloc); 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: } 5209: # 67 "/usr/include/c++/10/vector" 2 3 5209: # 1 "/usr/include/c++/10/bits/stl_vector.h" 1 3 5209: # 74 "/usr/include/c++/10/bits/stl_vector.h" 3 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: 5209: 5209: template 5209: struct _Vector_base 5209: { 5209: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template 5209: rebind<_Tp>::other _Tp_alloc_type; 5209: typedef typename __gnu_cxx::__alloc_traits<_Tp_alloc_type>::pointer 5209: pointer; 5209: 5209: struct _Vector_impl_data 5209: { 5209: pointer _M_start; 5209: pointer _M_finish; 5209: pointer _M_end_of_storage; 5209: 5209: _Vector_impl_data() noexcept 5209: : _M_start(), _M_finish(), _M_end_of_storage() 5209: { } 5209: 5209: 5209: _Vector_impl_data(_Vector_impl_data&& __x) noexcept 5209: : _M_start(__x._M_start), _M_finish(__x._M_finish), 5209: _M_end_of_storage(__x._M_end_of_storage) 5209: { __x._M_start = __x._M_finish = __x._M_end_of_storage = pointer(); } 5209: 5209: 5209: void 5209: _M_copy_data(_Vector_impl_data const& __x) noexcept 5209: { 5209: _M_start = __x._M_start; 5209: _M_finish = __x._M_finish; 5209: _M_end_of_storage = __x._M_end_of_storage; 5209: } 5209: 5209: void 5209: _M_swap_data(_Vector_impl_data& __x) noexcept 5209: { 5209: 5209: 5209: _Vector_impl_data __tmp; 5209: __tmp._M_copy_data(*this); 5209: _M_copy_data(__x); 5209: __x._M_copy_data(__tmp); 5209: } 5209: }; 5209: 5209: struct _Vector_impl 5209: : public _Tp_alloc_type, public _Vector_impl_data 5209: { 5209: _Vector_impl() noexcept(is_nothrow_default_constructible<_Tp_alloc_type>::value) 5209: 5209: : _Tp_alloc_type() 5209: { } 5209: 5209: _Vector_impl(_Tp_alloc_type const& __a) noexcept 5209: : _Tp_alloc_type(__a) 5209: { } 5209: 5209: 5209: 5209: 5209: _Vector_impl(_Vector_impl&& __x) noexcept 5209: : _Tp_alloc_type(std::move(__x)), _Vector_impl_data(std::move(__x)) 5209: { } 5209: 5209: _Vector_impl(_Tp_alloc_type&& __a) noexcept 5209: : _Tp_alloc_type(std::move(__a)) 5209: { } 5209: 5209: _Vector_impl(_Tp_alloc_type&& __a, _Vector_impl&& __rv) noexcept 5209: : _Tp_alloc_type(std::move(__a)), _Vector_impl_data(std::move(__rv)) 5209: { } 5209: # 267 "/usr/include/c++/10/bits/stl_vector.h" 3 5209: }; 5209: 5209: public: 5209: typedef _Alloc allocator_type; 5209: 5209: _Tp_alloc_type& 5209: _M_get_Tp_allocator() noexcept 5209: { return this->_M_impl; } 5209: 5209: const _Tp_alloc_type& 5209: _M_get_Tp_allocator() const noexcept 5209: { return this->_M_impl; } 5209: 5209: allocator_type 5209: get_allocator() const noexcept 5209: { return allocator_type(_M_get_Tp_allocator()); } 5209: 5209: 5209: _Vector_base() = default; 5209: 5209: 5209: 5209: 5209: _Vector_base(const allocator_type& __a) noexcept 5209: : _M_impl(__a) { } 5209: 5209: 5209: 5209: _Vector_base(size_t __n) 5209: : _M_impl() 5209: { _M_create_storage(__n); } 5209: 5209: 5209: _Vector_base(size_t __n, const allocator_type& __a) 5209: : _M_impl(__a) 5209: { _M_create_storage(__n); } 5209: 5209: 5209: _Vector_base(_Vector_base&&) = default; 5209: 5209: 5209: 5209: _Vector_base(_Tp_alloc_type&& __a) noexcept 5209: : _M_impl(std::move(__a)) { } 5209: 5209: _Vector_base(_Vector_base&& __x, const allocator_type& __a) 5209: : _M_impl(__a) 5209: { 5209: if (__x.get_allocator() == __a) 5209: this->_M_impl._M_swap_data(__x._M_impl); 5209: else 5209: { 5209: size_t __n = __x._M_impl._M_finish - __x._M_impl._M_start; 5209: _M_create_storage(__n); 5209: } 5209: } 5209: 5209: 5209: _Vector_base(const allocator_type& __a, _Vector_base&& __x) 5209: : _M_impl(_Tp_alloc_type(__a), std::move(__x._M_impl)) 5209: { } 5209: 5209: 5209: ~_Vector_base() noexcept 5209: { 5209: _M_deallocate(_M_impl._M_start, 5209: _M_impl._M_end_of_storage - _M_impl._M_start); 5209: } 5209: 5209: public: 5209: _Vector_impl _M_impl; 5209: 5209: pointer 5209: _M_allocate(size_t __n) 5209: { 5209: typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Tr; 5209: return __n != 0 ? _Tr::allocate(_M_impl, __n) : pointer(); 5209: } 5209: 5209: void 5209: _M_deallocate(pointer __p, size_t __n) 5209: { 5209: typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Tr; 5209: if (__p) 5209: _Tr::deallocate(_M_impl, __p, __n); 5209: } 5209: 5209: protected: 5209: void 5209: _M_create_storage(size_t __n) 5209: { 5209: this->_M_impl._M_start = this->_M_allocate(__n); 5209: this->_M_impl._M_finish = this->_M_impl._M_start; 5209: this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n; 5209: } 5209: }; 5209: # 385 "/usr/include/c++/10/bits/stl_vector.h" 3 5209: template > 5209: class vector : protected _Vector_base<_Tp, _Alloc> 5209: { 5209: # 398 "/usr/include/c++/10/bits/stl_vector.h" 3 5209: static_assert(is_same::type, _Tp>::value, 5209: "std::vector must have a non-const, non-volatile value_type"); 5209: 5209: 5209: 5209: 5209: 5209: 5209: typedef _Vector_base<_Tp, _Alloc> _Base; 5209: typedef typename _Base::_Tp_alloc_type _Tp_alloc_type; 5209: typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Alloc_traits; 5209: 5209: public: 5209: typedef _Tp value_type; 5209: typedef typename _Base::pointer pointer; 5209: typedef typename _Alloc_traits::const_pointer const_pointer; 5209: typedef typename _Alloc_traits::reference reference; 5209: typedef typename _Alloc_traits::const_reference const_reference; 5209: typedef __gnu_cxx::__normal_iterator iterator; 5209: typedef __gnu_cxx::__normal_iterator 5209: const_iterator; 5209: typedef std::reverse_iterator const_reverse_iterator; 5209: typedef std::reverse_iterator reverse_iterator; 5209: typedef size_t size_type; 5209: typedef ptrdiff_t difference_type; 5209: typedef _Alloc allocator_type; 5209: 5209: private: 5209: 5209: static constexpr bool 5209: _S_nothrow_relocate(true_type) 5209: { 5209: return noexcept(std::__relocate_a(std::declval(), 5209: std::declval(), 5209: std::declval(), 5209: std::declval<_Tp_alloc_type&>())); 5209: } 5209: 5209: static constexpr bool 5209: _S_nothrow_relocate(false_type) 5209: { return false; } 5209: 5209: static constexpr bool 5209: _S_use_relocate() 5209: { 5209: 5209: 5209: 5209: return _S_nothrow_relocate(__is_move_insertable<_Tp_alloc_type>{}); 5209: } 5209: 5209: static pointer 5209: _S_do_relocate(pointer __first, pointer __last, pointer __result, 5209: _Tp_alloc_type& __alloc, true_type) noexcept 5209: { 5209: return std::__relocate_a(__first, __last, __result, __alloc); 5209: } 5209: 5209: static pointer 5209: _S_do_relocate(pointer, pointer, pointer __result, 5209: _Tp_alloc_type&, false_type) noexcept 5209: { return __result; } 5209: 5209: static pointer 5209: _S_relocate(pointer __first, pointer __last, pointer __result, 5209: _Tp_alloc_type& __alloc) noexcept 5209: { 5209: using __do_it = __bool_constant<_S_use_relocate()>; 5209: return _S_do_relocate(__first, __last, __result, __alloc, __do_it{}); 5209: } 5209: 5209: 5209: protected: 5209: using _Base::_M_allocate; 5209: using _Base::_M_deallocate; 5209: using _Base::_M_impl; 5209: using _Base::_M_get_Tp_allocator; 5209: 5209: public: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: vector() = default; 5209: # 493 "/usr/include/c++/10/bits/stl_vector.h" 3 5209: explicit 5209: vector(const allocator_type& __a) noexcept 5209: : _Base(__a) { } 5209: # 506 "/usr/include/c++/10/bits/stl_vector.h" 3 5209: explicit 5209: vector(size_type __n, const allocator_type& __a = allocator_type()) 5209: : _Base(_S_check_init_len(__n, __a), __a) 5209: { _M_default_initialize(__n); } 5209: # 519 "/usr/include/c++/10/bits/stl_vector.h" 3 5209: vector(size_type __n, const value_type& __value, 5209: const allocator_type& __a = allocator_type()) 5209: : _Base(_S_check_init_len(__n, __a), __a) 5209: { _M_fill_initialize(__n, __value); } 5209: # 550 "/usr/include/c++/10/bits/stl_vector.h" 3 5209: vector(const vector& __x) 5209: : _Base(__x.size(), 5209: _Alloc_traits::_S_select_on_copy(__x._M_get_Tp_allocator())) 5209: { 5209: this->_M_impl._M_finish = 5209: std::__uninitialized_copy_a(__x.begin(), __x.end(), 5209: this->_M_impl._M_start, 5209: _M_get_Tp_allocator()); 5209: } 5209: # 569 "/usr/include/c++/10/bits/stl_vector.h" 3 5209: vector(vector&&) noexcept = default; 5209: 5209: 5209: vector(const vector& __x, const allocator_type& __a) 5209: : _Base(__x.size(), __a) 5209: { 5209: this->_M_impl._M_finish = 5209: std::__uninitialized_copy_a(__x.begin(), __x.end(), 5209: this->_M_impl._M_start, 5209: _M_get_Tp_allocator()); 5209: } 5209: 5209: private: 5209: vector(vector&& __rv, const allocator_type& __m, true_type) noexcept 5209: : _Base(__m, std::move(__rv)) 5209: { } 5209: 5209: vector(vector&& __rv, const allocator_type& __m, false_type) 5209: : _Base(__m) 5209: { 5209: if (__rv.get_allocator() == __m) 5209: this->_M_impl._M_swap_data(__rv._M_impl); 5209: else if (!__rv.empty()) 5209: { 5209: this->_M_create_storage(__rv.size()); 5209: this->_M_impl._M_finish = 5209: std::__uninitialized_move_a(__rv.begin(), __rv.end(), 5209: this->_M_impl._M_start, 5209: _M_get_Tp_allocator()); 5209: __rv.clear(); 5209: } 5209: } 5209: 5209: public: 5209: 5209: vector(vector&& __rv, const allocator_type& __m) 5209: noexcept( noexcept( 5209: vector(std::declval(), std::declval(), 5209: std::declval())) ) 5209: : vector(std::move(__rv), __m, typename _Alloc_traits::is_always_equal{}) 5209: { } 5209: # 622 "/usr/include/c++/10/bits/stl_vector.h" 3 5209: vector(initializer_list __l, 5209: const allocator_type& __a = allocator_type()) 5209: : _Base(__a) 5209: { 5209: _M_range_initialize(__l.begin(), __l.end(), 5209: random_access_iterator_tag()); 5209: } 5209: # 648 "/usr/include/c++/10/bits/stl_vector.h" 3 5209: template> 5209: vector(_InputIterator __first, _InputIterator __last, 5209: const allocator_type& __a = allocator_type()) 5209: : _Base(__a) 5209: { 5209: _M_range_initialize(__first, __last, 5209: std::__iterator_category(__first)); 5209: } 5209: # 675 "/usr/include/c++/10/bits/stl_vector.h" 3 5209: ~vector() noexcept 5209: { 5209: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, 5209: _M_get_Tp_allocator()); 5209: ; 5209: } 5209: # 691 "/usr/include/c++/10/bits/stl_vector.h" 3 5209: vector& 5209: operator=(const vector& __x); 5209: # 705 "/usr/include/c++/10/bits/stl_vector.h" 3 5209: vector& 5209: operator=(vector&& __x) noexcept(_Alloc_traits::_S_nothrow_move()) 5209: { 5209: constexpr bool __move_storage = 5209: _Alloc_traits::_S_propagate_on_move_assign() 5209: || _Alloc_traits::_S_always_equal(); 5209: _M_move_assign(std::move(__x), __bool_constant<__move_storage>()); 5209: return *this; 5209: } 5209: # 726 "/usr/include/c++/10/bits/stl_vector.h" 3 5209: vector& 5209: operator=(initializer_list __l) 5209: { 5209: this->_M_assign_aux(__l.begin(), __l.end(), 5209: random_access_iterator_tag()); 5209: return *this; 5209: } 5209: # 745 "/usr/include/c++/10/bits/stl_vector.h" 3 5209: void 5209: assign(size_type __n, const value_type& __val) 5209: { _M_fill_assign(__n, __val); } 5209: # 762 "/usr/include/c++/10/bits/stl_vector.h" 3 5209: template> 5209: void 5209: assign(_InputIterator __first, _InputIterator __last) 5209: { _M_assign_dispatch(__first, __last, __false_type()); } 5209: # 790 "/usr/include/c++/10/bits/stl_vector.h" 3 5209: void 5209: assign(initializer_list __l) 5209: { 5209: this->_M_assign_aux(__l.begin(), __l.end(), 5209: random_access_iterator_tag()); 5209: } 5209: 5209: 5209: 5209: using _Base::get_allocator; 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: iterator 5209: begin() noexcept 5209: { return iterator(this->_M_impl._M_start); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: const_iterator 5209: begin() const noexcept 5209: { return const_iterator(this->_M_impl._M_start); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: iterator 5209: end() noexcept 5209: { return iterator(this->_M_impl._M_finish); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: const_iterator 5209: end() const noexcept 5209: { return const_iterator(this->_M_impl._M_finish); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: reverse_iterator 5209: rbegin() noexcept 5209: { return reverse_iterator(end()); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: const_reverse_iterator 5209: rbegin() const noexcept 5209: { return const_reverse_iterator(end()); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: reverse_iterator 5209: rend() noexcept 5209: { return reverse_iterator(begin()); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: const_reverse_iterator 5209: rend() const noexcept 5209: { return const_reverse_iterator(begin()); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: const_iterator 5209: cbegin() const noexcept 5209: { return const_iterator(this->_M_impl._M_start); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: const_iterator 5209: cend() const noexcept 5209: { return const_iterator(this->_M_impl._M_finish); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: const_reverse_iterator 5209: crbegin() const noexcept 5209: { return const_reverse_iterator(end()); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: const_reverse_iterator 5209: crend() const noexcept 5209: { return const_reverse_iterator(begin()); } 5209: 5209: 5209: 5209: 5209: size_type 5209: size() const noexcept 5209: { return size_type(this->_M_impl._M_finish - this->_M_impl._M_start); } 5209: 5209: 5209: size_type 5209: max_size() const noexcept 5209: { return _S_max_size(_M_get_Tp_allocator()); } 5209: # 933 "/usr/include/c++/10/bits/stl_vector.h" 3 5209: void 5209: resize(size_type __new_size) 5209: { 5209: if (__new_size > size()) 5209: _M_default_append(__new_size - size()); 5209: else if (__new_size < size()) 5209: _M_erase_at_end(this->_M_impl._M_start + __new_size); 5209: } 5209: # 953 "/usr/include/c++/10/bits/stl_vector.h" 3 5209: void 5209: resize(size_type __new_size, const value_type& __x) 5209: { 5209: if (__new_size > size()) 5209: _M_fill_insert(end(), __new_size - size(), __x); 5209: else if (__new_size < size()) 5209: _M_erase_at_end(this->_M_impl._M_start + __new_size); 5209: } 5209: # 985 "/usr/include/c++/10/bits/stl_vector.h" 3 5209: void 5209: shrink_to_fit() 5209: { _M_shrink_to_fit(); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: size_type 5209: capacity() const noexcept 5209: { return size_type(this->_M_impl._M_end_of_storage 5209: - this->_M_impl._M_start); } 5209: 5209: 5209: 5209: 5209: 5209: bool 5209: empty() const noexcept 5209: { return begin() == end(); } 5209: # 1024 "/usr/include/c++/10/bits/stl_vector.h" 3 5209: void 5209: reserve(size_type __n); 5209: # 1039 "/usr/include/c++/10/bits/stl_vector.h" 3 5209: reference 5209: operator[](size_type __n) noexcept 5209: { 5209: ; 5209: return *(this->_M_impl._M_start + __n); 5209: } 5209: # 1057 "/usr/include/c++/10/bits/stl_vector.h" 3 5209: const_reference 5209: operator[](size_type __n) const noexcept 5209: { 5209: ; 5209: return *(this->_M_impl._M_start + __n); 5209: } 5209: 5209: protected: 5209: 5209: void 5209: _M_range_check(size_type __n) const 5209: { 5209: if (__n >= this->size()) 5209: __throw_out_of_range_fmt(("vector::_M_range_check: __n " "(which is %zu) >= this->size() " "(which is %zu)") 5209: 5209: , 5209: __n, this->size()); 5209: } 5209: 5209: public: 5209: # 1088 "/usr/include/c++/10/bits/stl_vector.h" 3 5209: reference 5209: at(size_type __n) 5209: { 5209: _M_range_check(__n); 5209: return (*this)[__n]; 5209: } 5209: # 1106 "/usr/include/c++/10/bits/stl_vector.h" 3 5209: const_reference 5209: at(size_type __n) const 5209: { 5209: _M_range_check(__n); 5209: return (*this)[__n]; 5209: } 5209: 5209: 5209: 5209: 5209: 5209: reference 5209: front() noexcept 5209: { 5209: ; 5209: return *begin(); 5209: } 5209: 5209: 5209: 5209: 5209: 5209: const_reference 5209: front() const noexcept 5209: { 5209: ; 5209: return *begin(); 5209: } 5209: 5209: 5209: 5209: 5209: 5209: reference 5209: back() noexcept 5209: { 5209: ; 5209: return *(end() - 1); 5209: } 5209: 5209: 5209: 5209: 5209: 5209: const_reference 5209: back() const noexcept 5209: { 5209: ; 5209: return *(end() - 1); 5209: } 5209: # 1164 "/usr/include/c++/10/bits/stl_vector.h" 3 5209: _Tp* 5209: data() noexcept 5209: { return _M_data_ptr(this->_M_impl._M_start); } 5209: 5209: const _Tp* 5209: data() const noexcept 5209: { return _M_data_ptr(this->_M_impl._M_start); } 5209: # 1183 "/usr/include/c++/10/bits/stl_vector.h" 3 5209: void 5209: push_back(const value_type& __x) 5209: { 5209: if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) 5209: { 5209: ; 5209: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, 5209: __x); 5209: ++this->_M_impl._M_finish; 5209: ; 5209: } 5209: else 5209: _M_realloc_insert(end(), __x); 5209: } 5209: 5209: 5209: void 5209: push_back(value_type&& __x) 5209: { emplace_back(std::move(__x)); } 5209: 5209: template 5209: 5209: 5209: 5209: void 5209: 5209: emplace_back(_Args&&... __args); 5209: # 1221 "/usr/include/c++/10/bits/stl_vector.h" 3 5209: void 5209: pop_back() noexcept 5209: { 5209: ; 5209: --this->_M_impl._M_finish; 5209: _Alloc_traits::destroy(this->_M_impl, this->_M_impl._M_finish); 5209: ; 5209: } 5209: # 1243 "/usr/include/c++/10/bits/stl_vector.h" 3 5209: template 5209: iterator 5209: emplace(const_iterator __position, _Args&&... __args) 5209: { return _M_emplace_aux(__position, std::forward<_Args>(__args)...); } 5209: # 1259 "/usr/include/c++/10/bits/stl_vector.h" 3 5209: iterator 5209: insert(const_iterator __position, const value_type& __x); 5209: # 1289 "/usr/include/c++/10/bits/stl_vector.h" 3 5209: iterator 5209: insert(const_iterator __position, value_type&& __x) 5209: { return _M_insert_rval(__position, std::move(__x)); } 5209: # 1306 "/usr/include/c++/10/bits/stl_vector.h" 3 5209: iterator 5209: insert(const_iterator __position, initializer_list __l) 5209: { 5209: auto __offset = __position - cbegin(); 5209: _M_range_insert(begin() + __offset, __l.begin(), __l.end(), 5209: std::random_access_iterator_tag()); 5209: return begin() + __offset; 5209: } 5209: # 1331 "/usr/include/c++/10/bits/stl_vector.h" 3 5209: iterator 5209: insert(const_iterator __position, size_type __n, const value_type& __x) 5209: { 5209: difference_type __offset = __position - cbegin(); 5209: _M_fill_insert(begin() + __offset, __n, __x); 5209: return begin() + __offset; 5209: } 5209: # 1373 "/usr/include/c++/10/bits/stl_vector.h" 3 5209: template> 5209: iterator 5209: insert(const_iterator __position, _InputIterator __first, 5209: _InputIterator __last) 5209: { 5209: difference_type __offset = __position - cbegin(); 5209: _M_insert_dispatch(begin() + __offset, 5209: __first, __last, __false_type()); 5209: return begin() + __offset; 5209: } 5209: # 1425 "/usr/include/c++/10/bits/stl_vector.h" 3 5209: iterator 5209: 5209: erase(const_iterator __position) 5209: { return _M_erase(begin() + (__position - cbegin())); } 5209: # 1452 "/usr/include/c++/10/bits/stl_vector.h" 3 5209: iterator 5209: 5209: erase(const_iterator __first, const_iterator __last) 5209: { 5209: const auto __beg = begin(); 5209: const auto __cbeg = cbegin(); 5209: return _M_erase(__beg + (__first - __cbeg), __beg + (__last - __cbeg)); 5209: } 5209: # 1476 "/usr/include/c++/10/bits/stl_vector.h" 3 5209: void 5209: swap(vector& __x) noexcept 5209: { 5209: 5209: 5209: ; 5209: 5209: this->_M_impl._M_swap_data(__x._M_impl); 5209: _Alloc_traits::_S_on_swap(_M_get_Tp_allocator(), 5209: __x._M_get_Tp_allocator()); 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: void 5209: clear() noexcept 5209: { _M_erase_at_end(this->_M_impl._M_start); } 5209: 5209: protected: 5209: 5209: 5209: 5209: 5209: template 5209: pointer 5209: _M_allocate_and_copy(size_type __n, 5209: _ForwardIterator __first, _ForwardIterator __last) 5209: { 5209: pointer __result = this->_M_allocate(__n); 5209: try 5209: { 5209: std::__uninitialized_copy_a(__first, __last, __result, 5209: _M_get_Tp_allocator()); 5209: return __result; 5209: } 5209: catch(...) 5209: { 5209: _M_deallocate(__result, __n); 5209: throw; 5209: } 5209: } 5209: # 1553 "/usr/include/c++/10/bits/stl_vector.h" 3 5209: template 5209: void 5209: _M_range_initialize(_InputIterator __first, _InputIterator __last, 5209: std::input_iterator_tag) 5209: { 5209: try { 5209: for (; __first != __last; ++__first) 5209: 5209: emplace_back(*__first); 5209: 5209: 5209: 5209: } catch(...) { 5209: clear(); 5209: throw; 5209: } 5209: } 5209: 5209: 5209: template 5209: void 5209: _M_range_initialize(_ForwardIterator __first, _ForwardIterator __last, 5209: std::forward_iterator_tag) 5209: { 5209: const size_type __n = std::distance(__first, __last); 5209: this->_M_impl._M_start 5209: = this->_M_allocate(_S_check_init_len(__n, _M_get_Tp_allocator())); 5209: this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n; 5209: this->_M_impl._M_finish = 5209: std::__uninitialized_copy_a(__first, __last, 5209: this->_M_impl._M_start, 5209: _M_get_Tp_allocator()); 5209: } 5209: 5209: 5209: 5209: void 5209: _M_fill_initialize(size_type __n, const value_type& __value) 5209: { 5209: this->_M_impl._M_finish = 5209: std::__uninitialized_fill_n_a(this->_M_impl._M_start, __n, __value, 5209: _M_get_Tp_allocator()); 5209: } 5209: 5209: 5209: 5209: void 5209: _M_default_initialize(size_type __n) 5209: { 5209: this->_M_impl._M_finish = 5209: std::__uninitialized_default_n_a(this->_M_impl._M_start, __n, 5209: _M_get_Tp_allocator()); 5209: } 5209: # 1615 "/usr/include/c++/10/bits/stl_vector.h" 3 5209: template 5209: void 5209: _M_assign_dispatch(_Integer __n, _Integer __val, __true_type) 5209: { _M_fill_assign(__n, __val); } 5209: 5209: 5209: template 5209: void 5209: _M_assign_dispatch(_InputIterator __first, _InputIterator __last, 5209: __false_type) 5209: { _M_assign_aux(__first, __last, std::__iterator_category(__first)); } 5209: 5209: 5209: template 5209: void 5209: _M_assign_aux(_InputIterator __first, _InputIterator __last, 5209: std::input_iterator_tag); 5209: 5209: 5209: template 5209: void 5209: _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last, 5209: std::forward_iterator_tag); 5209: 5209: 5209: 5209: void 5209: _M_fill_assign(size_type __n, const value_type& __val); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: void 5209: _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __val, 5209: __true_type) 5209: { _M_fill_insert(__pos, __n, __val); } 5209: 5209: 5209: template 5209: void 5209: _M_insert_dispatch(iterator __pos, _InputIterator __first, 5209: _InputIterator __last, __false_type) 5209: { 5209: _M_range_insert(__pos, __first, __last, 5209: std::__iterator_category(__first)); 5209: } 5209: 5209: 5209: template 5209: void 5209: _M_range_insert(iterator __pos, _InputIterator __first, 5209: _InputIterator __last, std::input_iterator_tag); 5209: 5209: 5209: template 5209: void 5209: _M_range_insert(iterator __pos, _ForwardIterator __first, 5209: _ForwardIterator __last, std::forward_iterator_tag); 5209: 5209: 5209: 5209: void 5209: _M_fill_insert(iterator __pos, size_type __n, const value_type& __x); 5209: 5209: 5209: 5209: void 5209: _M_default_append(size_type __n); 5209: 5209: bool 5209: _M_shrink_to_fit(); 5209: # 1702 "/usr/include/c++/10/bits/stl_vector.h" 3 5209: struct _Temporary_value 5209: { 5209: template 5209: explicit 5209: _Temporary_value(vector* __vec, _Args&&... __args) : _M_this(__vec) 5209: { 5209: _Alloc_traits::construct(_M_this->_M_impl, _M_ptr(), 5209: std::forward<_Args>(__args)...); 5209: } 5209: 5209: ~_Temporary_value() 5209: { _Alloc_traits::destroy(_M_this->_M_impl, _M_ptr()); } 5209: 5209: value_type& 5209: _M_val() { return *_M_ptr(); } 5209: 5209: private: 5209: _Tp* 5209: _M_ptr() { return reinterpret_cast<_Tp*>(&__buf); } 5209: 5209: vector* _M_this; 5209: typename aligned_storage::type __buf; 5209: }; 5209: 5209: 5209: 5209: template 5209: void 5209: _M_insert_aux(iterator __position, _Arg&& __arg); 5209: 5209: template 5209: void 5209: _M_realloc_insert(iterator __position, _Args&&... __args); 5209: 5209: 5209: iterator 5209: _M_insert_rval(const_iterator __position, value_type&& __v); 5209: 5209: 5209: template 5209: iterator 5209: _M_emplace_aux(const_iterator __position, _Args&&... __args); 5209: 5209: 5209: iterator 5209: _M_emplace_aux(const_iterator __position, value_type&& __v) 5209: { return _M_insert_rval(__position, std::move(__v)); } 5209: 5209: 5209: 5209: size_type 5209: _M_check_len(size_type __n, const char* __s) const 5209: { 5209: if (max_size() - size() < __n) 5209: __throw_length_error((__s)); 5209: 5209: const size_type __len = size() + (std::max)(size(), __n); 5209: return (__len < size() || __len > max_size()) ? max_size() : __len; 5209: } 5209: 5209: 5209: static size_type 5209: _S_check_init_len(size_type __n, const allocator_type& __a) 5209: { 5209: if (__n > _S_max_size(_Tp_alloc_type(__a))) 5209: __throw_length_error( 5209: ("cannot create std::vector larger than max_size()")); 5209: return __n; 5209: } 5209: 5209: static size_type 5209: _S_max_size(const _Tp_alloc_type& __a) noexcept 5209: { 5209: 5209: 5209: 5209: const size_t __diffmax 5209: = __gnu_cxx::__numeric_traits::__max / sizeof(_Tp); 5209: const size_t __allocmax = _Alloc_traits::max_size(__a); 5209: return (std::min)(__diffmax, __allocmax); 5209: } 5209: 5209: 5209: 5209: 5209: 5209: void 5209: _M_erase_at_end(pointer __pos) noexcept 5209: { 5209: if (size_type __n = this->_M_impl._M_finish - __pos) 5209: { 5209: std::_Destroy(__pos, this->_M_impl._M_finish, 5209: _M_get_Tp_allocator()); 5209: this->_M_impl._M_finish = __pos; 5209: ; 5209: } 5209: } 5209: 5209: iterator 5209: _M_erase(iterator __position); 5209: 5209: iterator 5209: _M_erase(iterator __first, iterator __last); 5209: 5209: 5209: private: 5209: 5209: 5209: 5209: void 5209: _M_move_assign(vector&& __x, true_type) noexcept 5209: { 5209: vector __tmp(get_allocator()); 5209: this->_M_impl._M_swap_data(__x._M_impl); 5209: __tmp._M_impl._M_swap_data(__x._M_impl); 5209: std::__alloc_on_move(_M_get_Tp_allocator(), __x._M_get_Tp_allocator()); 5209: } 5209: 5209: 5209: 5209: void 5209: _M_move_assign(vector&& __x, false_type) 5209: { 5209: if (__x._M_get_Tp_allocator() == this->_M_get_Tp_allocator()) 5209: _M_move_assign(std::move(__x), true_type()); 5209: else 5209: { 5209: 5209: 5209: this->_M_assign_aux(std::make_move_iterator(__x.begin()), 5209: std::make_move_iterator(__x.end()), 5209: std::random_access_iterator_tag()); 5209: __x.clear(); 5209: } 5209: } 5209: 5209: 5209: template 5209: _Up* 5209: _M_data_ptr(_Up* __ptr) const noexcept 5209: { return __ptr; } 5209: 5209: 5209: template 5209: typename std::pointer_traits<_Ptr>::element_type* 5209: _M_data_ptr(_Ptr __ptr) const 5209: { return empty() ? nullptr : std::__to_address(__ptr); } 5209: # 1865 "/usr/include/c++/10/bits/stl_vector.h" 3 5209: }; 5209: # 1887 "/usr/include/c++/10/bits/stl_vector.h" 3 5209: template 5209: inline bool 5209: operator==(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) 5209: { return (__x.size() == __y.size() 5209: && std::equal(__x.begin(), __x.end(), __y.begin())); } 5209: # 1904 "/usr/include/c++/10/bits/stl_vector.h" 3 5209: template 5209: inline bool 5209: operator<(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) 5209: { return std::lexicographical_compare(__x.begin(), __x.end(), 5209: __y.begin(), __y.end()); } 5209: 5209: 5209: template 5209: inline bool 5209: operator!=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) 5209: { return !(__x == __y); } 5209: 5209: 5209: template 5209: inline bool 5209: operator>(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) 5209: { return __y < __x; } 5209: 5209: 5209: template 5209: inline bool 5209: operator<=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) 5209: { return !(__y < __x); } 5209: 5209: 5209: template 5209: inline bool 5209: operator>=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) 5209: { return !(__x < __y); } 5209: 5209: 5209: template 5209: inline void 5209: swap(vector<_Tp, _Alloc>& __x, vector<_Tp, _Alloc>& __y) 5209: noexcept(noexcept(__x.swap(__y))) 5209: { __x.swap(__y); } 5209: 5209: 5209: # 1957 "/usr/include/c++/10/bits/stl_vector.h" 3 5209: 5209: } 5209: # 68 "/usr/include/c++/10/vector" 2 3 5209: # 1 "/usr/include/c++/10/bits/stl_bvector.h" 1 3 5209: # 64 "/usr/include/c++/10/bits/stl_bvector.h" 3 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: 5209: typedef unsigned long _Bit_type; 5209: enum { _S_word_bit = int(8 * sizeof(_Bit_type)) }; 5209: 5209: struct _Bit_reference 5209: { 5209: _Bit_type * _M_p; 5209: _Bit_type _M_mask; 5209: 5209: _Bit_reference(_Bit_type * __x, _Bit_type __y) 5209: : _M_p(__x), _M_mask(__y) { } 5209: 5209: _Bit_reference() noexcept : _M_p(0), _M_mask(0) { } 5209: 5209: 5209: _Bit_reference(const _Bit_reference&) = default; 5209: 5209: 5209: operator bool() const noexcept 5209: { return !!(*_M_p & _M_mask); } 5209: 5209: _Bit_reference& 5209: operator=(bool __x) noexcept 5209: { 5209: if (__x) 5209: *_M_p |= _M_mask; 5209: else 5209: *_M_p &= ~_M_mask; 5209: return *this; 5209: } 5209: 5209: _Bit_reference& 5209: operator=(const _Bit_reference& __x) noexcept 5209: { return *this = bool(__x); } 5209: 5209: bool 5209: operator==(const _Bit_reference& __x) const 5209: { return bool(*this) == bool(__x); } 5209: 5209: bool 5209: operator<(const _Bit_reference& __x) const 5209: { return !bool(*this) && bool(__x); } 5209: 5209: void 5209: flip() noexcept 5209: { *_M_p ^= _M_mask; } 5209: }; 5209: 5209: 5209: inline void 5209: swap(_Bit_reference __x, _Bit_reference __y) noexcept 5209: { 5209: bool __tmp = __x; 5209: __x = __y; 5209: __y = __tmp; 5209: } 5209: 5209: inline void 5209: swap(_Bit_reference __x, bool& __y) noexcept 5209: { 5209: bool __tmp = __x; 5209: __x = __y; 5209: __y = __tmp; 5209: } 5209: 5209: inline void 5209: swap(bool& __x, _Bit_reference __y) noexcept 5209: { 5209: bool __tmp = __x; 5209: __x = __y; 5209: __y = __tmp; 5209: } 5209: 5209: 5209: struct _Bit_iterator_base 5209: : public std::iterator 5209: { 5209: _Bit_type * _M_p; 5209: unsigned int _M_offset; 5209: 5209: _Bit_iterator_base(_Bit_type * __x, unsigned int __y) 5209: : _M_p(__x), _M_offset(__y) { } 5209: 5209: void 5209: _M_bump_up() 5209: { 5209: if (_M_offset++ == int(_S_word_bit) - 1) 5209: { 5209: _M_offset = 0; 5209: ++_M_p; 5209: } 5209: } 5209: 5209: void 5209: _M_bump_down() 5209: { 5209: if (_M_offset-- == 0) 5209: { 5209: _M_offset = int(_S_word_bit) - 1; 5209: --_M_p; 5209: } 5209: } 5209: 5209: void 5209: _M_incr(ptrdiff_t __i) 5209: { 5209: difference_type __n = __i + _M_offset; 5209: _M_p += __n / int(_S_word_bit); 5209: __n = __n % int(_S_word_bit); 5209: if (__n < 0) 5209: { 5209: __n += int(_S_word_bit); 5209: --_M_p; 5209: } 5209: _M_offset = static_cast(__n); 5209: } 5209: 5209: friend bool 5209: operator==(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) 5209: { return __x._M_p == __y._M_p && __x._M_offset == __y._M_offset; } 5209: 5209: friend bool 5209: operator<(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) 5209: { 5209: return __x._M_p < __y._M_p 5209: || (__x._M_p == __y._M_p && __x._M_offset < __y._M_offset); 5209: } 5209: 5209: friend bool 5209: operator!=(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) 5209: { return !(__x == __y); } 5209: 5209: friend bool 5209: operator>(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) 5209: { return __y < __x; } 5209: 5209: friend bool 5209: operator<=(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) 5209: { return !(__y < __x); } 5209: 5209: friend bool 5209: operator>=(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) 5209: { return !(__x < __y); } 5209: 5209: friend ptrdiff_t 5209: operator-(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) 5209: { 5209: return (int(_S_word_bit) * (__x._M_p - __y._M_p) 5209: + __x._M_offset - __y._M_offset); 5209: } 5209: }; 5209: 5209: struct _Bit_iterator : public _Bit_iterator_base 5209: { 5209: typedef _Bit_reference reference; 5209: 5209: 5209: 5209: typedef _Bit_reference* pointer; 5209: 5209: typedef _Bit_iterator iterator; 5209: 5209: _Bit_iterator() : _Bit_iterator_base(0, 0) { } 5209: 5209: _Bit_iterator(_Bit_type * __x, unsigned int __y) 5209: : _Bit_iterator_base(__x, __y) { } 5209: 5209: iterator 5209: _M_const_cast() const 5209: { return *this; } 5209: 5209: reference 5209: operator*() const 5209: { return reference(_M_p, 1UL << _M_offset); } 5209: 5209: iterator& 5209: operator++() 5209: { 5209: _M_bump_up(); 5209: return *this; 5209: } 5209: 5209: iterator 5209: operator++(int) 5209: { 5209: iterator __tmp = *this; 5209: _M_bump_up(); 5209: return __tmp; 5209: } 5209: 5209: iterator& 5209: operator--() 5209: { 5209: _M_bump_down(); 5209: return *this; 5209: } 5209: 5209: iterator 5209: operator--(int) 5209: { 5209: iterator __tmp = *this; 5209: _M_bump_down(); 5209: return __tmp; 5209: } 5209: 5209: iterator& 5209: operator+=(difference_type __i) 5209: { 5209: _M_incr(__i); 5209: return *this; 5209: } 5209: 5209: iterator& 5209: operator-=(difference_type __i) 5209: { 5209: *this += -__i; 5209: return *this; 5209: } 5209: 5209: reference 5209: operator[](difference_type __i) const 5209: { return *(*this + __i); } 5209: 5209: friend iterator 5209: operator+(const iterator& __x, difference_type __n) 5209: { 5209: iterator __tmp = __x; 5209: __tmp += __n; 5209: return __tmp; 5209: } 5209: 5209: friend iterator 5209: operator+(difference_type __n, const iterator& __x) 5209: { return __x + __n; } 5209: 5209: friend iterator 5209: operator-(const iterator& __x, difference_type __n) 5209: { 5209: iterator __tmp = __x; 5209: __tmp -= __n; 5209: return __tmp; 5209: } 5209: }; 5209: 5209: struct _Bit_const_iterator : public _Bit_iterator_base 5209: { 5209: typedef bool reference; 5209: typedef bool const_reference; 5209: 5209: 5209: 5209: typedef const bool* pointer; 5209: 5209: typedef _Bit_const_iterator const_iterator; 5209: 5209: _Bit_const_iterator() : _Bit_iterator_base(0, 0) { } 5209: 5209: _Bit_const_iterator(_Bit_type * __x, unsigned int __y) 5209: : _Bit_iterator_base(__x, __y) { } 5209: 5209: _Bit_const_iterator(const _Bit_iterator& __x) 5209: : _Bit_iterator_base(__x._M_p, __x._M_offset) { } 5209: 5209: _Bit_iterator 5209: _M_const_cast() const 5209: { return _Bit_iterator(_M_p, _M_offset); } 5209: 5209: const_reference 5209: operator*() const 5209: { return _Bit_reference(_M_p, 1UL << _M_offset); } 5209: 5209: const_iterator& 5209: operator++() 5209: { 5209: _M_bump_up(); 5209: return *this; 5209: } 5209: 5209: const_iterator 5209: operator++(int) 5209: { 5209: const_iterator __tmp = *this; 5209: _M_bump_up(); 5209: return __tmp; 5209: } 5209: 5209: const_iterator& 5209: operator--() 5209: { 5209: _M_bump_down(); 5209: return *this; 5209: } 5209: 5209: const_iterator 5209: operator--(int) 5209: { 5209: const_iterator __tmp = *this; 5209: _M_bump_down(); 5209: return __tmp; 5209: } 5209: 5209: const_iterator& 5209: operator+=(difference_type __i) 5209: { 5209: _M_incr(__i); 5209: return *this; 5209: } 5209: 5209: const_iterator& 5209: operator-=(difference_type __i) 5209: { 5209: *this += -__i; 5209: return *this; 5209: } 5209: 5209: const_reference 5209: operator[](difference_type __i) const 5209: { return *(*this + __i); } 5209: 5209: friend const_iterator 5209: operator+(const const_iterator& __x, difference_type __n) 5209: { 5209: const_iterator __tmp = __x; 5209: __tmp += __n; 5209: return __tmp; 5209: } 5209: 5209: friend const_iterator 5209: operator-(const const_iterator& __x, difference_type __n) 5209: { 5209: const_iterator __tmp = __x; 5209: __tmp -= __n; 5209: return __tmp; 5209: } 5209: 5209: friend const_iterator 5209: operator+(difference_type __n, const const_iterator& __x) 5209: { return __x + __n; } 5209: }; 5209: 5209: inline void 5209: __fill_bvector(_Bit_type * __v, 5209: unsigned int __first, unsigned int __last, bool __x) 5209: { 5209: const _Bit_type __fmask = ~0ul << __first; 5209: const _Bit_type __lmask = ~0ul >> (_S_word_bit - __last); 5209: const _Bit_type __mask = __fmask & __lmask; 5209: 5209: if (__x) 5209: *__v |= __mask; 5209: else 5209: *__v &= ~__mask; 5209: } 5209: 5209: inline void 5209: fill(_Bit_iterator __first, _Bit_iterator __last, const bool& __x) 5209: { 5209: if (__first._M_p != __last._M_p) 5209: { 5209: _Bit_type* __first_p = __first._M_p; 5209: if (__first._M_offset != 0) 5209: __fill_bvector(__first_p++, __first._M_offset, _S_word_bit, __x); 5209: 5209: __builtin_memset(__first_p, __x ? ~0 : 0, 5209: (__last._M_p - __first_p) * sizeof(_Bit_type)); 5209: 5209: if (__last._M_offset != 0) 5209: __fill_bvector(__last._M_p, 0, __last._M_offset, __x); 5209: } 5209: else if (__first._M_offset != __last._M_offset) 5209: __fill_bvector(__first._M_p, __first._M_offset, __last._M_offset, __x); 5209: } 5209: 5209: template 5209: struct _Bvector_base 5209: { 5209: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template 5209: rebind<_Bit_type>::other _Bit_alloc_type; 5209: typedef typename __gnu_cxx::__alloc_traits<_Bit_alloc_type> 5209: _Bit_alloc_traits; 5209: typedef typename _Bit_alloc_traits::pointer _Bit_pointer; 5209: 5209: struct _Bvector_impl_data 5209: { 5209: _Bit_iterator _M_start; 5209: _Bit_iterator _M_finish; 5209: _Bit_pointer _M_end_of_storage; 5209: 5209: _Bvector_impl_data() noexcept 5209: : _M_start(), _M_finish(), _M_end_of_storage() 5209: { } 5209: 5209: 5209: _Bvector_impl_data(_Bvector_impl_data&& __x) noexcept 5209: : _M_start(__x._M_start), _M_finish(__x._M_finish) 5209: , _M_end_of_storage(__x._M_end_of_storage) 5209: { __x._M_reset(); } 5209: 5209: void 5209: _M_move_data(_Bvector_impl_data&& __x) noexcept 5209: { 5209: this->_M_start = __x._M_start; 5209: this->_M_finish = __x._M_finish; 5209: this->_M_end_of_storage = __x._M_end_of_storage; 5209: __x._M_reset(); 5209: } 5209: 5209: 5209: void 5209: _M_reset() noexcept 5209: { 5209: _M_start = _M_finish = _Bit_iterator(); 5209: _M_end_of_storage = _Bit_pointer(); 5209: } 5209: }; 5209: 5209: struct _Bvector_impl 5209: : public _Bit_alloc_type, public _Bvector_impl_data 5209: { 5209: public: 5209: _Bvector_impl() noexcept(is_nothrow_default_constructible<_Bit_alloc_type>::value) 5209: 5209: : _Bit_alloc_type() 5209: { } 5209: 5209: _Bvector_impl(const _Bit_alloc_type& __a) noexcept 5209: : _Bit_alloc_type(__a) 5209: { } 5209: 5209: 5209: _Bvector_impl(_Bvector_impl&&) = default; 5209: 5209: 5209: _Bit_type* 5209: _M_end_addr() const noexcept 5209: { 5209: if (this->_M_end_of_storage) 5209: return std::__addressof(this->_M_end_of_storage[-1]) + 1; 5209: return 0; 5209: } 5209: }; 5209: 5209: public: 5209: typedef _Alloc allocator_type; 5209: 5209: _Bit_alloc_type& 5209: _M_get_Bit_allocator() noexcept 5209: { return this->_M_impl; } 5209: 5209: const _Bit_alloc_type& 5209: _M_get_Bit_allocator() const noexcept 5209: { return this->_M_impl; } 5209: 5209: allocator_type 5209: get_allocator() const noexcept 5209: { return allocator_type(_M_get_Bit_allocator()); } 5209: 5209: 5209: _Bvector_base() = default; 5209: 5209: 5209: 5209: 5209: _Bvector_base(const allocator_type& __a) 5209: : _M_impl(__a) { } 5209: 5209: 5209: _Bvector_base(_Bvector_base&&) = default; 5209: 5209: 5209: ~_Bvector_base() 5209: { this->_M_deallocate(); } 5209: 5209: protected: 5209: _Bvector_impl _M_impl; 5209: 5209: _Bit_pointer 5209: _M_allocate(size_t __n) 5209: { return _Bit_alloc_traits::allocate(_M_impl, _S_nword(__n)); } 5209: 5209: void 5209: _M_deallocate() 5209: { 5209: if (_M_impl._M_start._M_p) 5209: { 5209: const size_t __n = _M_impl._M_end_addr() - _M_impl._M_start._M_p; 5209: _Bit_alloc_traits::deallocate(_M_impl, 5209: _M_impl._M_end_of_storage - __n, 5209: __n); 5209: _M_impl._M_reset(); 5209: } 5209: } 5209: 5209: 5209: void 5209: _M_move_data(_Bvector_base&& __x) noexcept 5209: { _M_impl._M_move_data(std::move(__x._M_impl)); } 5209: 5209: 5209: static size_t 5209: _S_nword(size_t __n) 5209: { return (__n + int(_S_word_bit) - 1) / int(_S_word_bit); } 5209: }; 5209: 5209: 5209: 5209: } 5209: 5209: 5209: 5209: 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: # 603 "/usr/include/c++/10/bits/stl_bvector.h" 3 5209: template 5209: class vector : protected _Bvector_base<_Alloc> 5209: { 5209: typedef _Bvector_base<_Alloc> _Base; 5209: typedef typename _Base::_Bit_pointer _Bit_pointer; 5209: typedef typename _Base::_Bit_alloc_traits _Bit_alloc_traits; 5209: 5209: 5209: friend struct std::hash; 5209: 5209: 5209: public: 5209: typedef bool value_type; 5209: typedef size_t size_type; 5209: typedef ptrdiff_t difference_type; 5209: typedef _Bit_reference reference; 5209: typedef bool const_reference; 5209: typedef _Bit_reference* pointer; 5209: typedef const bool* const_pointer; 5209: typedef _Bit_iterator iterator; 5209: typedef _Bit_const_iterator const_iterator; 5209: typedef std::reverse_iterator const_reverse_iterator; 5209: typedef std::reverse_iterator reverse_iterator; 5209: typedef _Alloc allocator_type; 5209: 5209: allocator_type 5209: get_allocator() const 5209: { return _Base::get_allocator(); } 5209: 5209: protected: 5209: using _Base::_M_allocate; 5209: using _Base::_M_deallocate; 5209: using _Base::_S_nword; 5209: using _Base::_M_get_Bit_allocator; 5209: 5209: public: 5209: 5209: vector() = default; 5209: 5209: 5209: 5209: 5209: explicit 5209: vector(const allocator_type& __a) 5209: : _Base(__a) { } 5209: 5209: 5209: explicit 5209: vector(size_type __n, const allocator_type& __a = allocator_type()) 5209: : vector(__n, false, __a) 5209: { } 5209: 5209: vector(size_type __n, const bool& __value, 5209: const allocator_type& __a = allocator_type()) 5209: 5209: 5209: 5209: 5209: 5209: : _Base(__a) 5209: { 5209: _M_initialize(__n); 5209: _M_initialize_value(__value); 5209: } 5209: 5209: vector(const vector& __x) 5209: : _Base(_Bit_alloc_traits::_S_select_on_copy(__x._M_get_Bit_allocator())) 5209: { 5209: _M_initialize(__x.size()); 5209: _M_copy_aligned(__x.begin(), __x.end(), this->_M_impl._M_start); 5209: } 5209: 5209: 5209: vector(vector&&) = default; 5209: 5209: vector(vector&& __x, const allocator_type& __a) 5209: noexcept(_Bit_alloc_traits::_S_always_equal()) 5209: : _Base(__a) 5209: { 5209: if (__x.get_allocator() == __a) 5209: this->_M_move_data(std::move(__x)); 5209: else 5209: { 5209: _M_initialize(__x.size()); 5209: _M_copy_aligned(__x.begin(), __x.end(), begin()); 5209: __x.clear(); 5209: } 5209: } 5209: 5209: vector(const vector& __x, const allocator_type& __a) 5209: : _Base(__a) 5209: { 5209: _M_initialize(__x.size()); 5209: _M_copy_aligned(__x.begin(), __x.end(), this->_M_impl._M_start); 5209: } 5209: 5209: vector(initializer_list __l, 5209: const allocator_type& __a = allocator_type()) 5209: : _Base(__a) 5209: { 5209: _M_initialize_range(__l.begin(), __l.end(), 5209: random_access_iterator_tag()); 5209: } 5209: 5209: 5209: 5209: template> 5209: vector(_InputIterator __first, _InputIterator __last, 5209: const allocator_type& __a = allocator_type()) 5209: : _Base(__a) 5209: { _M_initialize_dispatch(__first, __last, __false_type()); } 5209: # 726 "/usr/include/c++/10/bits/stl_bvector.h" 3 5209: ~vector() noexcept { } 5209: 5209: vector& 5209: operator=(const vector& __x) 5209: { 5209: if (&__x == this) 5209: return *this; 5209: 5209: if (_Bit_alloc_traits::_S_propagate_on_copy_assign()) 5209: { 5209: if (this->_M_get_Bit_allocator() != __x._M_get_Bit_allocator()) 5209: { 5209: this->_M_deallocate(); 5209: std::__alloc_on_copy(_M_get_Bit_allocator(), 5209: __x._M_get_Bit_allocator()); 5209: _M_initialize(__x.size()); 5209: } 5209: else 5209: std::__alloc_on_copy(_M_get_Bit_allocator(), 5209: __x._M_get_Bit_allocator()); 5209: } 5209: 5209: if (__x.size() > capacity()) 5209: { 5209: this->_M_deallocate(); 5209: _M_initialize(__x.size()); 5209: } 5209: this->_M_impl._M_finish = _M_copy_aligned(__x.begin(), __x.end(), 5209: begin()); 5209: return *this; 5209: } 5209: 5209: 5209: vector& 5209: operator=(vector&& __x) noexcept(_Bit_alloc_traits::_S_nothrow_move()) 5209: { 5209: if (_Bit_alloc_traits::_S_propagate_on_move_assign() 5209: || this->_M_get_Bit_allocator() == __x._M_get_Bit_allocator()) 5209: { 5209: this->_M_deallocate(); 5209: this->_M_move_data(std::move(__x)); 5209: std::__alloc_on_move(_M_get_Bit_allocator(), 5209: __x._M_get_Bit_allocator()); 5209: } 5209: else 5209: { 5209: if (__x.size() > capacity()) 5209: { 5209: this->_M_deallocate(); 5209: _M_initialize(__x.size()); 5209: } 5209: this->_M_impl._M_finish = _M_copy_aligned(__x.begin(), __x.end(), 5209: begin()); 5209: __x.clear(); 5209: } 5209: return *this; 5209: } 5209: 5209: vector& 5209: operator=(initializer_list __l) 5209: { 5209: this->assign (__l.begin(), __l.end()); 5209: return *this; 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: void 5209: assign(size_type __n, const bool& __x) 5209: { _M_fill_assign(__n, __x); } 5209: 5209: 5209: template> 5209: void 5209: assign(_InputIterator __first, _InputIterator __last) 5209: { _M_assign_aux(__first, __last, std::__iterator_category(__first)); } 5209: # 817 "/usr/include/c++/10/bits/stl_bvector.h" 3 5209: void 5209: assign(initializer_list __l) 5209: { _M_assign_aux(__l.begin(), __l.end(), random_access_iterator_tag()); } 5209: 5209: 5209: iterator 5209: begin() noexcept 5209: { return iterator(this->_M_impl._M_start._M_p, 0); } 5209: 5209: const_iterator 5209: begin() const noexcept 5209: { return const_iterator(this->_M_impl._M_start._M_p, 0); } 5209: 5209: iterator 5209: end() noexcept 5209: { return this->_M_impl._M_finish; } 5209: 5209: const_iterator 5209: end() const noexcept 5209: { return this->_M_impl._M_finish; } 5209: 5209: reverse_iterator 5209: rbegin() noexcept 5209: { return reverse_iterator(end()); } 5209: 5209: const_reverse_iterator 5209: rbegin() const noexcept 5209: { return const_reverse_iterator(end()); } 5209: 5209: reverse_iterator 5209: rend() noexcept 5209: { return reverse_iterator(begin()); } 5209: 5209: const_reverse_iterator 5209: rend() const noexcept 5209: { return const_reverse_iterator(begin()); } 5209: 5209: 5209: const_iterator 5209: cbegin() const noexcept 5209: { return const_iterator(this->_M_impl._M_start._M_p, 0); } 5209: 5209: const_iterator 5209: cend() const noexcept 5209: { return this->_M_impl._M_finish; } 5209: 5209: const_reverse_iterator 5209: crbegin() const noexcept 5209: { return const_reverse_iterator(end()); } 5209: 5209: const_reverse_iterator 5209: crend() const noexcept 5209: { return const_reverse_iterator(begin()); } 5209: 5209: 5209: size_type 5209: size() const noexcept 5209: { return size_type(end() - begin()); } 5209: 5209: size_type 5209: max_size() const noexcept 5209: { 5209: const size_type __isize = 5209: __gnu_cxx::__numeric_traits::__max 5209: - int(_S_word_bit) + 1; 5209: const size_type __asize 5209: = _Bit_alloc_traits::max_size(_M_get_Bit_allocator()); 5209: return (__asize <= __isize / int(_S_word_bit) 5209: ? __asize * int(_S_word_bit) : __isize); 5209: } 5209: 5209: size_type 5209: capacity() const noexcept 5209: { return size_type(const_iterator(this->_M_impl._M_end_addr(), 0) 5209: - begin()); } 5209: 5209: bool 5209: empty() const noexcept 5209: { return begin() == end(); } 5209: 5209: reference 5209: operator[](size_type __n) 5209: { 5209: return *iterator(this->_M_impl._M_start._M_p 5209: + __n / int(_S_word_bit), __n % int(_S_word_bit)); 5209: } 5209: 5209: const_reference 5209: operator[](size_type __n) const 5209: { 5209: return *const_iterator(this->_M_impl._M_start._M_p 5209: + __n / int(_S_word_bit), __n % int(_S_word_bit)); 5209: } 5209: 5209: protected: 5209: void 5209: _M_range_check(size_type __n) const 5209: { 5209: if (__n >= this->size()) 5209: __throw_out_of_range_fmt(("vector::_M_range_check: __n " "(which is %zu) >= this->size() " "(which is %zu)") 5209: 5209: , 5209: __n, this->size()); 5209: } 5209: 5209: public: 5209: reference 5209: at(size_type __n) 5209: { _M_range_check(__n); return (*this)[__n]; } 5209: 5209: const_reference 5209: at(size_type __n) const 5209: { _M_range_check(__n); return (*this)[__n]; } 5209: 5209: void 5209: reserve(size_type __n) 5209: { 5209: if (__n > max_size()) 5209: __throw_length_error(("vector::reserve")); 5209: if (capacity() < __n) 5209: _M_reallocate(__n); 5209: } 5209: 5209: reference 5209: front() 5209: { return *begin(); } 5209: 5209: const_reference 5209: front() const 5209: { return *begin(); } 5209: 5209: reference 5209: back() 5209: { return *(end() - 1); } 5209: 5209: const_reference 5209: back() const 5209: { return *(end() - 1); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: void 5209: data() noexcept { } 5209: 5209: void 5209: push_back(bool __x) 5209: { 5209: if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_addr()) 5209: *this->_M_impl._M_finish++ = __x; 5209: else 5209: _M_insert_aux(end(), __x); 5209: } 5209: 5209: void 5209: swap(vector& __x) noexcept 5209: { 5209: std::swap(this->_M_impl._M_start, __x._M_impl._M_start); 5209: std::swap(this->_M_impl._M_finish, __x._M_impl._M_finish); 5209: std::swap(this->_M_impl._M_end_of_storage, 5209: __x._M_impl._M_end_of_storage); 5209: _Bit_alloc_traits::_S_on_swap(_M_get_Bit_allocator(), 5209: __x._M_get_Bit_allocator()); 5209: } 5209: 5209: 5209: static void 5209: swap(reference __x, reference __y) noexcept 5209: { 5209: bool __tmp = __x; 5209: __x = __y; 5209: __y = __tmp; 5209: } 5209: 5209: iterator 5209: 5209: insert(const_iterator __position, const bool& __x = bool()) 5209: 5209: 5209: 5209: { 5209: const difference_type __n = __position - begin(); 5209: if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_addr() 5209: && __position == end()) 5209: *this->_M_impl._M_finish++ = __x; 5209: else 5209: _M_insert_aux(__position._M_const_cast(), __x); 5209: return begin() + __n; 5209: } 5209: 5209: 5209: template> 5209: iterator 5209: insert(const_iterator __position, 5209: _InputIterator __first, _InputIterator __last) 5209: { 5209: difference_type __offset = __position - cbegin(); 5209: _M_insert_dispatch(__position._M_const_cast(), 5209: __first, __last, __false_type()); 5209: return begin() + __offset; 5209: } 5209: # 1033 "/usr/include/c++/10/bits/stl_bvector.h" 3 5209: iterator 5209: insert(const_iterator __position, size_type __n, const bool& __x) 5209: { 5209: difference_type __offset = __position - cbegin(); 5209: _M_fill_insert(__position._M_const_cast(), __n, __x); 5209: return begin() + __offset; 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: iterator 5209: insert(const_iterator __p, initializer_list __l) 5209: { return this->insert(__p, __l.begin(), __l.end()); } 5209: 5209: 5209: void 5209: pop_back() 5209: { --this->_M_impl._M_finish; } 5209: 5209: iterator 5209: 5209: erase(const_iterator __position) 5209: 5209: 5209: 5209: { return _M_erase(__position._M_const_cast()); } 5209: 5209: iterator 5209: 5209: erase(const_iterator __first, const_iterator __last) 5209: 5209: 5209: 5209: { return _M_erase(__first._M_const_cast(), __last._M_const_cast()); } 5209: 5209: void 5209: resize(size_type __new_size, bool __x = bool()) 5209: { 5209: if (__new_size < size()) 5209: _M_erase_at_end(begin() + difference_type(__new_size)); 5209: else 5209: insert(end(), __new_size - size(), __x); 5209: } 5209: 5209: 5209: void 5209: shrink_to_fit() 5209: { _M_shrink_to_fit(); } 5209: 5209: 5209: void 5209: flip() noexcept 5209: { 5209: _Bit_type * const __end = this->_M_impl._M_end_addr(); 5209: for (_Bit_type * __p = this->_M_impl._M_start._M_p; __p != __end; ++__p) 5209: *__p = ~*__p; 5209: } 5209: 5209: void 5209: clear() noexcept 5209: { _M_erase_at_end(begin()); } 5209: 5209: 5209: template 5209: 5209: 5209: 5209: void 5209: 5209: emplace_back(_Args&&... __args) 5209: { 5209: push_back(bool(__args...)); 5209: 5209: 5209: 5209: } 5209: 5209: template 5209: iterator 5209: emplace(const_iterator __pos, _Args&&... __args) 5209: { return insert(__pos, bool(__args...)); } 5209: 5209: 5209: protected: 5209: 5209: iterator 5209: _M_copy_aligned(const_iterator __first, const_iterator __last, 5209: iterator __result) 5209: { 5209: _Bit_type* __q = std::copy(__first._M_p, __last._M_p, __result._M_p); 5209: return std::copy(const_iterator(__last._M_p, 0), __last, 5209: iterator(__q, 0)); 5209: } 5209: 5209: void 5209: _M_initialize(size_type __n) 5209: { 5209: if (__n) 5209: { 5209: _Bit_pointer __q = this->_M_allocate(__n); 5209: this->_M_impl._M_end_of_storage = __q + _S_nword(__n); 5209: this->_M_impl._M_start = iterator(std::__addressof(*__q), 0); 5209: } 5209: else 5209: { 5209: this->_M_impl._M_end_of_storage = _Bit_pointer(); 5209: this->_M_impl._M_start = iterator(0, 0); 5209: } 5209: this->_M_impl._M_finish = this->_M_impl._M_start + difference_type(__n); 5209: 5209: } 5209: 5209: void 5209: _M_initialize_value(bool __x) 5209: { 5209: if (_Bit_type* __p = this->_M_impl._M_start._M_p) 5209: __builtin_memset(__p, __x ? ~0 : 0, 5209: (this->_M_impl._M_end_addr() - __p) 5209: * sizeof(_Bit_type)); 5209: } 5209: 5209: void 5209: _M_reallocate(size_type __n); 5209: 5209: 5209: bool 5209: _M_shrink_to_fit(); 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: void 5209: _M_initialize_dispatch(_Integer __n, _Integer __x, __true_type) 5209: { 5209: _M_initialize(static_cast(__n)); 5209: _M_initialize_value(__x); 5209: } 5209: 5209: template 5209: void 5209: _M_initialize_dispatch(_InputIterator __first, _InputIterator __last, 5209: __false_type) 5209: { _M_initialize_range(__first, __last, 5209: std::__iterator_category(__first)); } 5209: 5209: template 5209: void 5209: _M_initialize_range(_InputIterator __first, _InputIterator __last, 5209: std::input_iterator_tag) 5209: { 5209: for (; __first != __last; ++__first) 5209: push_back(*__first); 5209: } 5209: 5209: template 5209: void 5209: _M_initialize_range(_ForwardIterator __first, _ForwardIterator __last, 5209: std::forward_iterator_tag) 5209: { 5209: const size_type __n = std::distance(__first, __last); 5209: _M_initialize(__n); 5209: std::copy(__first, __last, this->_M_impl._M_start); 5209: } 5209: # 1219 "/usr/include/c++/10/bits/stl_bvector.h" 3 5209: void 5209: _M_fill_assign(size_t __n, bool __x) 5209: { 5209: if (__n > size()) 5209: { 5209: _M_initialize_value(__x); 5209: insert(end(), __n - size(), __x); 5209: } 5209: else 5209: { 5209: _M_erase_at_end(begin() + __n); 5209: _M_initialize_value(__x); 5209: } 5209: } 5209: 5209: template 5209: void 5209: _M_assign_aux(_InputIterator __first, _InputIterator __last, 5209: std::input_iterator_tag) 5209: { 5209: iterator __cur = begin(); 5209: for (; __first != __last && __cur != end(); ++__cur, (void)++__first) 5209: *__cur = *__first; 5209: if (__first == __last) 5209: _M_erase_at_end(__cur); 5209: else 5209: insert(end(), __first, __last); 5209: } 5209: 5209: template 5209: void 5209: _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last, 5209: std::forward_iterator_tag) 5209: { 5209: const size_type __len = std::distance(__first, __last); 5209: if (__len < size()) 5209: _M_erase_at_end(std::copy(__first, __last, begin())); 5209: else 5209: { 5209: _ForwardIterator __mid = __first; 5209: std::advance(__mid, size()); 5209: std::copy(__first, __mid, begin()); 5209: insert(end(), __mid, __last); 5209: } 5209: } 5209: 5209: 5209: 5209: 5209: 5209: template 5209: void 5209: _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __x, 5209: __true_type) 5209: { _M_fill_insert(__pos, __n, __x); } 5209: 5209: template 5209: void 5209: _M_insert_dispatch(iterator __pos, 5209: _InputIterator __first, _InputIterator __last, 5209: __false_type) 5209: { _M_insert_range(__pos, __first, __last, 5209: std::__iterator_category(__first)); } 5209: 5209: void 5209: _M_fill_insert(iterator __position, size_type __n, bool __x); 5209: 5209: template 5209: void 5209: _M_insert_range(iterator __pos, _InputIterator __first, 5209: _InputIterator __last, std::input_iterator_tag) 5209: { 5209: for (; __first != __last; ++__first) 5209: { 5209: __pos = insert(__pos, *__first); 5209: ++__pos; 5209: } 5209: } 5209: 5209: template 5209: void 5209: _M_insert_range(iterator __position, _ForwardIterator __first, 5209: _ForwardIterator __last, std::forward_iterator_tag); 5209: 5209: void 5209: _M_insert_aux(iterator __position, bool __x); 5209: 5209: size_type 5209: _M_check_len(size_type __n, const char* __s) const 5209: { 5209: if (max_size() - size() < __n) 5209: __throw_length_error((__s)); 5209: 5209: const size_type __len = size() + std::max(size(), __n); 5209: return (__len < size() || __len > max_size()) ? max_size() : __len; 5209: } 5209: 5209: void 5209: _M_erase_at_end(iterator __pos) 5209: { this->_M_impl._M_finish = __pos; } 5209: 5209: iterator 5209: _M_erase(iterator __pos); 5209: 5209: iterator 5209: _M_erase(iterator __first, iterator __last); 5209: }; 5209: 5209: 5209: 5209: } 5209: 5209: 5209: 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: 5209: 5209: template 5209: struct hash> 5209: : public __hash_base> 5209: { 5209: size_t 5209: operator()(const std::vector&) const noexcept; 5209: }; 5209: 5209: 5209: } 5209: # 69 "/usr/include/c++/10/vector" 2 3 5209: 5209: 5209: 5209: # 1 "/usr/include/c++/10/bits/vector.tcc" 1 3 5209: # 59 "/usr/include/c++/10/bits/vector.tcc" 3 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: 5209: template 5209: void 5209: vector<_Tp, _Alloc>:: 5209: reserve(size_type __n) 5209: { 5209: if (__n > this->max_size()) 5209: __throw_length_error(("vector::reserve")); 5209: if (this->capacity() < __n) 5209: { 5209: const size_type __old_size = size(); 5209: pointer __tmp; 5209: 5209: if (_S_use_relocate()) 5209: { 5209: __tmp = this->_M_allocate(__n); 5209: _S_relocate(this->_M_impl._M_start, this->_M_impl._M_finish, 5209: __tmp, _M_get_Tp_allocator()); 5209: } 5209: else 5209: 5209: { 5209: __tmp = _M_allocate_and_copy(__n, 5209: std::__make_move_if_noexcept_iterator(this->_M_impl._M_start), 5209: std::__make_move_if_noexcept_iterator(this->_M_impl._M_finish)); 5209: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, 5209: _M_get_Tp_allocator()); 5209: } 5209: ; 5209: _M_deallocate(this->_M_impl._M_start, 5209: this->_M_impl._M_end_of_storage 5209: - this->_M_impl._M_start); 5209: this->_M_impl._M_start = __tmp; 5209: this->_M_impl._M_finish = __tmp + __old_size; 5209: this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n; 5209: } 5209: } 5209: 5209: 5209: template 5209: template 5209: 5209: 5209: 5209: void 5209: 5209: vector<_Tp, _Alloc>:: 5209: emplace_back(_Args&&... __args) 5209: { 5209: if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) 5209: { 5209: ; 5209: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, 5209: std::forward<_Args>(__args)...); 5209: ++this->_M_impl._M_finish; 5209: ; 5209: } 5209: else 5209: _M_realloc_insert(end(), std::forward<_Args>(__args)...); 5209: 5209: 5209: 5209: } 5209: 5209: 5209: template 5209: typename vector<_Tp, _Alloc>::iterator 5209: vector<_Tp, _Alloc>:: 5209: 5209: insert(const_iterator __position, const value_type& __x) 5209: 5209: 5209: 5209: { 5209: const size_type __n = __position - begin(); 5209: if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) 5209: if (__position == end()) 5209: { 5209: ; 5209: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, 5209: __x); 5209: ++this->_M_impl._M_finish; 5209: ; 5209: } 5209: else 5209: { 5209: 5209: const auto __pos = begin() + (__position - cbegin()); 5209: 5209: 5209: _Temporary_value __x_copy(this, __x); 5209: _M_insert_aux(__pos, std::move(__x_copy._M_val())); 5209: 5209: 5209: 5209: } 5209: else 5209: 5209: _M_realloc_insert(begin() + (__position - cbegin()), __x); 5209: 5209: 5209: 5209: 5209: return iterator(this->_M_impl._M_start + __n); 5209: } 5209: 5209: template 5209: typename vector<_Tp, _Alloc>::iterator 5209: vector<_Tp, _Alloc>:: 5209: _M_erase(iterator __position) 5209: { 5209: if (__position + 1 != end()) 5209: std::move(__position + 1, end(), __position); 5209: --this->_M_impl._M_finish; 5209: _Alloc_traits::destroy(this->_M_impl, this->_M_impl._M_finish); 5209: ; 5209: return __position; 5209: } 5209: 5209: template 5209: typename vector<_Tp, _Alloc>::iterator 5209: vector<_Tp, _Alloc>:: 5209: _M_erase(iterator __first, iterator __last) 5209: { 5209: if (__first != __last) 5209: { 5209: if (__last != end()) 5209: std::move(__last, end(), __first); 5209: _M_erase_at_end(__first.base() + (end() - __last)); 5209: } 5209: return __first; 5209: } 5209: 5209: template 5209: vector<_Tp, _Alloc>& 5209: vector<_Tp, _Alloc>:: 5209: operator=(const vector<_Tp, _Alloc>& __x) 5209: { 5209: if (&__x != this) 5209: { 5209: ; 5209: 5209: if (_Alloc_traits::_S_propagate_on_copy_assign()) 5209: { 5209: if (!_Alloc_traits::_S_always_equal() 5209: && _M_get_Tp_allocator() != __x._M_get_Tp_allocator()) 5209: { 5209: 5209: this->clear(); 5209: _M_deallocate(this->_M_impl._M_start, 5209: this->_M_impl._M_end_of_storage 5209: - this->_M_impl._M_start); 5209: this->_M_impl._M_start = nullptr; 5209: this->_M_impl._M_finish = nullptr; 5209: this->_M_impl._M_end_of_storage = nullptr; 5209: } 5209: std::__alloc_on_copy(_M_get_Tp_allocator(), 5209: __x._M_get_Tp_allocator()); 5209: } 5209: 5209: const size_type __xlen = __x.size(); 5209: if (__xlen > capacity()) 5209: { 5209: pointer __tmp = _M_allocate_and_copy(__xlen, __x.begin(), 5209: __x.end()); 5209: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, 5209: _M_get_Tp_allocator()); 5209: _M_deallocate(this->_M_impl._M_start, 5209: this->_M_impl._M_end_of_storage 5209: - this->_M_impl._M_start); 5209: this->_M_impl._M_start = __tmp; 5209: this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __xlen; 5209: } 5209: else if (size() >= __xlen) 5209: { 5209: std::_Destroy(std::copy(__x.begin(), __x.end(), begin()), 5209: end(), _M_get_Tp_allocator()); 5209: } 5209: else 5209: { 5209: std::copy(__x._M_impl._M_start, __x._M_impl._M_start + size(), 5209: this->_M_impl._M_start); 5209: std::__uninitialized_copy_a(__x._M_impl._M_start + size(), 5209: __x._M_impl._M_finish, 5209: this->_M_impl._M_finish, 5209: _M_get_Tp_allocator()); 5209: } 5209: this->_M_impl._M_finish = this->_M_impl._M_start + __xlen; 5209: } 5209: return *this; 5209: } 5209: 5209: template 5209: void 5209: vector<_Tp, _Alloc>:: 5209: _M_fill_assign(size_t __n, const value_type& __val) 5209: { 5209: if (__n > capacity()) 5209: { 5209: vector __tmp(__n, __val, _M_get_Tp_allocator()); 5209: __tmp._M_impl._M_swap_data(this->_M_impl); 5209: } 5209: else if (__n > size()) 5209: { 5209: std::fill(begin(), end(), __val); 5209: const size_type __add = __n - size(); 5209: ; 5209: this->_M_impl._M_finish = 5209: std::__uninitialized_fill_n_a(this->_M_impl._M_finish, 5209: __add, __val, _M_get_Tp_allocator()); 5209: ; 5209: } 5209: else 5209: _M_erase_at_end(std::fill_n(this->_M_impl._M_start, __n, __val)); 5209: } 5209: 5209: template 5209: template 5209: void 5209: vector<_Tp, _Alloc>:: 5209: _M_assign_aux(_InputIterator __first, _InputIterator __last, 5209: std::input_iterator_tag) 5209: { 5209: pointer __cur(this->_M_impl._M_start); 5209: for (; __first != __last && __cur != this->_M_impl._M_finish; 5209: ++__cur, (void)++__first) 5209: *__cur = *__first; 5209: if (__first == __last) 5209: _M_erase_at_end(__cur); 5209: else 5209: _M_range_insert(end(), __first, __last, 5209: std::__iterator_category(__first)); 5209: } 5209: 5209: template 5209: template 5209: void 5209: vector<_Tp, _Alloc>:: 5209: _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last, 5209: std::forward_iterator_tag) 5209: { 5209: const size_type __len = std::distance(__first, __last); 5209: 5209: if (__len > capacity()) 5209: { 5209: _S_check_init_len(__len, _M_get_Tp_allocator()); 5209: pointer __tmp(_M_allocate_and_copy(__len, __first, __last)); 5209: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, 5209: _M_get_Tp_allocator()); 5209: ; 5209: _M_deallocate(this->_M_impl._M_start, 5209: this->_M_impl._M_end_of_storage 5209: - this->_M_impl._M_start); 5209: this->_M_impl._M_start = __tmp; 5209: this->_M_impl._M_finish = this->_M_impl._M_start + __len; 5209: this->_M_impl._M_end_of_storage = this->_M_impl._M_finish; 5209: } 5209: else if (size() >= __len) 5209: _M_erase_at_end(std::copy(__first, __last, this->_M_impl._M_start)); 5209: else 5209: { 5209: _ForwardIterator __mid = __first; 5209: std::advance(__mid, size()); 5209: std::copy(__first, __mid, this->_M_impl._M_start); 5209: const size_type __attribute__((__unused__)) __n = __len - size(); 5209: ; 5209: this->_M_impl._M_finish = 5209: std::__uninitialized_copy_a(__mid, __last, 5209: this->_M_impl._M_finish, 5209: _M_get_Tp_allocator()); 5209: ; 5209: } 5209: } 5209: 5209: 5209: template 5209: auto 5209: vector<_Tp, _Alloc>:: 5209: _M_insert_rval(const_iterator __position, value_type&& __v) -> iterator 5209: { 5209: const auto __n = __position - cbegin(); 5209: if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) 5209: if (__position == cend()) 5209: { 5209: ; 5209: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, 5209: std::move(__v)); 5209: ++this->_M_impl._M_finish; 5209: ; 5209: } 5209: else 5209: _M_insert_aux(begin() + __n, std::move(__v)); 5209: else 5209: _M_realloc_insert(begin() + __n, std::move(__v)); 5209: 5209: return iterator(this->_M_impl._M_start + __n); 5209: } 5209: 5209: template 5209: template 5209: auto 5209: vector<_Tp, _Alloc>:: 5209: _M_emplace_aux(const_iterator __position, _Args&&... __args) 5209: -> iterator 5209: { 5209: const auto __n = __position - cbegin(); 5209: if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) 5209: if (__position == cend()) 5209: { 5209: ; 5209: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, 5209: std::forward<_Args>(__args)...); 5209: ++this->_M_impl._M_finish; 5209: ; 5209: } 5209: else 5209: { 5209: 5209: 5209: 5209: _Temporary_value __tmp(this, std::forward<_Args>(__args)...); 5209: _M_insert_aux(begin() + __n, std::move(__tmp._M_val())); 5209: } 5209: else 5209: _M_realloc_insert(begin() + __n, std::forward<_Args>(__args)...); 5209: 5209: return iterator(this->_M_impl._M_start + __n); 5209: } 5209: 5209: template 5209: template 5209: void 5209: vector<_Tp, _Alloc>:: 5209: _M_insert_aux(iterator __position, _Arg&& __arg) 5209: 5209: 5209: 5209: 5209: 5209: 5209: { 5209: ; 5209: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, 5209: std::move(*(this->_M_impl._M_finish - 1))); 5209: ++this->_M_impl._M_finish; 5209: ; 5209: 5209: 5209: 5209: std::move_backward(__position.base(), this->_M_impl._M_finish - 2, this->_M_impl._M_finish - 1) 5209: 5209: ; 5209: 5209: 5209: 5209: *__position = std::forward<_Arg>(__arg); 5209: 5209: } 5209: 5209: 5209: template 5209: template 5209: void 5209: vector<_Tp, _Alloc>:: 5209: _M_realloc_insert(iterator __position, _Args&&... __args) 5209: 5209: 5209: 5209: 5209: 5209: 5209: { 5209: const size_type __len = 5209: _M_check_len(size_type(1), "vector::_M_realloc_insert"); 5209: pointer __old_start = this->_M_impl._M_start; 5209: pointer __old_finish = this->_M_impl._M_finish; 5209: const size_type __elems_before = __position - begin(); 5209: pointer __new_start(this->_M_allocate(__len)); 5209: pointer __new_finish(__new_start); 5209: try 5209: { 5209: 5209: 5209: 5209: 5209: 5209: _Alloc_traits::construct(this->_M_impl, 5209: __new_start + __elems_before, 5209: 5209: std::forward<_Args>(__args)...); 5209: 5209: 5209: 5209: __new_finish = pointer(); 5209: 5209: 5209: if (_S_use_relocate()) 5209: { 5209: __new_finish = _S_relocate(__old_start, __position.base(), 5209: __new_start, _M_get_Tp_allocator()); 5209: 5209: ++__new_finish; 5209: 5209: __new_finish = _S_relocate(__position.base(), __old_finish, 5209: __new_finish, _M_get_Tp_allocator()); 5209: } 5209: else 5209: 5209: { 5209: __new_finish 5209: = std::__uninitialized_move_if_noexcept_a 5209: (__old_start, __position.base(), 5209: __new_start, _M_get_Tp_allocator()); 5209: 5209: ++__new_finish; 5209: 5209: __new_finish 5209: = std::__uninitialized_move_if_noexcept_a 5209: (__position.base(), __old_finish, 5209: __new_finish, _M_get_Tp_allocator()); 5209: } 5209: } 5209: catch(...) 5209: { 5209: if (!__new_finish) 5209: _Alloc_traits::destroy(this->_M_impl, 5209: __new_start + __elems_before); 5209: else 5209: std::_Destroy(__new_start, __new_finish, _M_get_Tp_allocator()); 5209: _M_deallocate(__new_start, __len); 5209: throw; 5209: } 5209: 5209: if (!_S_use_relocate()) 5209: 5209: std::_Destroy(__old_start, __old_finish, _M_get_Tp_allocator()); 5209: ; 5209: _M_deallocate(__old_start, 5209: this->_M_impl._M_end_of_storage - __old_start); 5209: this->_M_impl._M_start = __new_start; 5209: this->_M_impl._M_finish = __new_finish; 5209: this->_M_impl._M_end_of_storage = __new_start + __len; 5209: } 5209: 5209: template 5209: void 5209: vector<_Tp, _Alloc>:: 5209: _M_fill_insert(iterator __position, size_type __n, const value_type& __x) 5209: { 5209: if (__n != 0) 5209: { 5209: if (size_type(this->_M_impl._M_end_of_storage 5209: - this->_M_impl._M_finish) >= __n) 5209: { 5209: 5209: 5209: 5209: _Temporary_value __tmp(this, __x); 5209: value_type& __x_copy = __tmp._M_val(); 5209: 5209: const size_type __elems_after = end() - __position; 5209: pointer __old_finish(this->_M_impl._M_finish); 5209: if (__elems_after > __n) 5209: { 5209: ; 5209: std::__uninitialized_move_a(this->_M_impl._M_finish - __n, 5209: this->_M_impl._M_finish, 5209: this->_M_impl._M_finish, 5209: _M_get_Tp_allocator()); 5209: this->_M_impl._M_finish += __n; 5209: ; 5209: std::move_backward(__position.base(), __old_finish - __n, __old_finish) 5209: ; 5209: std::fill(__position.base(), __position.base() + __n, 5209: __x_copy); 5209: } 5209: else 5209: { 5209: ; 5209: this->_M_impl._M_finish = 5209: std::__uninitialized_fill_n_a(this->_M_impl._M_finish, 5209: __n - __elems_after, 5209: __x_copy, 5209: _M_get_Tp_allocator()); 5209: ; 5209: std::__uninitialized_move_a(__position.base(), __old_finish, 5209: this->_M_impl._M_finish, 5209: _M_get_Tp_allocator()); 5209: this->_M_impl._M_finish += __elems_after; 5209: ; 5209: std::fill(__position.base(), __old_finish, __x_copy); 5209: } 5209: } 5209: else 5209: { 5209: const size_type __len = 5209: _M_check_len(__n, "vector::_M_fill_insert"); 5209: const size_type __elems_before = __position - begin(); 5209: pointer __new_start(this->_M_allocate(__len)); 5209: pointer __new_finish(__new_start); 5209: try 5209: { 5209: 5209: std::__uninitialized_fill_n_a(__new_start + __elems_before, 5209: __n, __x, 5209: _M_get_Tp_allocator()); 5209: __new_finish = pointer(); 5209: 5209: __new_finish 5209: = std::__uninitialized_move_if_noexcept_a 5209: (this->_M_impl._M_start, __position.base(), 5209: __new_start, _M_get_Tp_allocator()); 5209: 5209: __new_finish += __n; 5209: 5209: __new_finish 5209: = std::__uninitialized_move_if_noexcept_a 5209: (__position.base(), this->_M_impl._M_finish, 5209: __new_finish, _M_get_Tp_allocator()); 5209: } 5209: catch(...) 5209: { 5209: if (!__new_finish) 5209: std::_Destroy(__new_start + __elems_before, 5209: __new_start + __elems_before + __n, 5209: _M_get_Tp_allocator()); 5209: else 5209: std::_Destroy(__new_start, __new_finish, 5209: _M_get_Tp_allocator()); 5209: _M_deallocate(__new_start, __len); 5209: throw; 5209: } 5209: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, 5209: _M_get_Tp_allocator()); 5209: ; 5209: _M_deallocate(this->_M_impl._M_start, 5209: this->_M_impl._M_end_of_storage 5209: - this->_M_impl._M_start); 5209: this->_M_impl._M_start = __new_start; 5209: this->_M_impl._M_finish = __new_finish; 5209: this->_M_impl._M_end_of_storage = __new_start + __len; 5209: } 5209: } 5209: } 5209: 5209: 5209: template 5209: void 5209: vector<_Tp, _Alloc>:: 5209: _M_default_append(size_type __n) 5209: { 5209: if (__n != 0) 5209: { 5209: const size_type __size = size(); 5209: size_type __navail = size_type(this->_M_impl._M_end_of_storage 5209: - this->_M_impl._M_finish); 5209: 5209: if (__size > max_size() || __navail > max_size() - __size) 5209: __builtin_unreachable(); 5209: 5209: if (__navail >= __n) 5209: { 5209: ; 5209: this->_M_impl._M_finish = 5209: std::__uninitialized_default_n_a(this->_M_impl._M_finish, 5209: __n, _M_get_Tp_allocator()); 5209: ; 5209: } 5209: else 5209: { 5209: const size_type __len = 5209: _M_check_len(__n, "vector::_M_default_append"); 5209: pointer __new_start(this->_M_allocate(__len)); 5209: if (_S_use_relocate()) 5209: { 5209: try 5209: { 5209: std::__uninitialized_default_n_a(__new_start + __size, 5209: __n, _M_get_Tp_allocator()); 5209: } 5209: catch(...) 5209: { 5209: _M_deallocate(__new_start, __len); 5209: throw; 5209: } 5209: _S_relocate(this->_M_impl._M_start, this->_M_impl._M_finish, 5209: __new_start, _M_get_Tp_allocator()); 5209: } 5209: else 5209: { 5209: pointer __destroy_from = pointer(); 5209: try 5209: { 5209: std::__uninitialized_default_n_a(__new_start + __size, 5209: __n, _M_get_Tp_allocator()); 5209: __destroy_from = __new_start + __size; 5209: std::__uninitialized_move_if_noexcept_a( 5209: this->_M_impl._M_start, this->_M_impl._M_finish, 5209: __new_start, _M_get_Tp_allocator()); 5209: } 5209: catch(...) 5209: { 5209: if (__destroy_from) 5209: std::_Destroy(__destroy_from, __destroy_from + __n, 5209: _M_get_Tp_allocator()); 5209: _M_deallocate(__new_start, __len); 5209: throw; 5209: } 5209: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, 5209: _M_get_Tp_allocator()); 5209: } 5209: ; 5209: _M_deallocate(this->_M_impl._M_start, 5209: this->_M_impl._M_end_of_storage 5209: - this->_M_impl._M_start); 5209: this->_M_impl._M_start = __new_start; 5209: this->_M_impl._M_finish = __new_start + __size + __n; 5209: this->_M_impl._M_end_of_storage = __new_start + __len; 5209: } 5209: } 5209: } 5209: 5209: template 5209: bool 5209: vector<_Tp, _Alloc>:: 5209: _M_shrink_to_fit() 5209: { 5209: if (capacity() == size()) 5209: return false; 5209: ; 5209: return std::__shrink_to_fit_aux::_S_do_it(*this); 5209: } 5209: 5209: 5209: template 5209: template 5209: void 5209: vector<_Tp, _Alloc>:: 5209: _M_range_insert(iterator __pos, _InputIterator __first, 5209: _InputIterator __last, std::input_iterator_tag) 5209: { 5209: if (__pos == end()) 5209: { 5209: for (; __first != __last; ++__first) 5209: insert(end(), *__first); 5209: } 5209: else if (__first != __last) 5209: { 5209: vector __tmp(__first, __last, _M_get_Tp_allocator()); 5209: insert(__pos, 5209: std::make_move_iterator(__tmp.begin()), 5209: std::make_move_iterator(__tmp.end())); 5209: } 5209: } 5209: 5209: template 5209: template 5209: void 5209: vector<_Tp, _Alloc>:: 5209: _M_range_insert(iterator __position, _ForwardIterator __first, 5209: _ForwardIterator __last, std::forward_iterator_tag) 5209: { 5209: if (__first != __last) 5209: { 5209: const size_type __n = std::distance(__first, __last); 5209: if (size_type(this->_M_impl._M_end_of_storage 5209: - this->_M_impl._M_finish) >= __n) 5209: { 5209: const size_type __elems_after = end() - __position; 5209: pointer __old_finish(this->_M_impl._M_finish); 5209: if (__elems_after > __n) 5209: { 5209: ; 5209: std::__uninitialized_move_a(this->_M_impl._M_finish - __n, 5209: this->_M_impl._M_finish, 5209: this->_M_impl._M_finish, 5209: _M_get_Tp_allocator()); 5209: this->_M_impl._M_finish += __n; 5209: ; 5209: std::move_backward(__position.base(), __old_finish - __n, __old_finish) 5209: ; 5209: std::copy(__first, __last, __position); 5209: } 5209: else 5209: { 5209: _ForwardIterator __mid = __first; 5209: std::advance(__mid, __elems_after); 5209: ; 5209: std::__uninitialized_copy_a(__mid, __last, 5209: this->_M_impl._M_finish, 5209: _M_get_Tp_allocator()); 5209: this->_M_impl._M_finish += __n - __elems_after; 5209: ; 5209: std::__uninitialized_move_a(__position.base(), 5209: __old_finish, 5209: this->_M_impl._M_finish, 5209: _M_get_Tp_allocator()); 5209: this->_M_impl._M_finish += __elems_after; 5209: ; 5209: std::copy(__first, __mid, __position); 5209: } 5209: } 5209: else 5209: { 5209: const size_type __len = 5209: _M_check_len(__n, "vector::_M_range_insert"); 5209: pointer __new_start(this->_M_allocate(__len)); 5209: pointer __new_finish(__new_start); 5209: try 5209: { 5209: __new_finish 5209: = std::__uninitialized_move_if_noexcept_a 5209: (this->_M_impl._M_start, __position.base(), 5209: __new_start, _M_get_Tp_allocator()); 5209: __new_finish 5209: = std::__uninitialized_copy_a(__first, __last, 5209: __new_finish, 5209: _M_get_Tp_allocator()); 5209: __new_finish 5209: = std::__uninitialized_move_if_noexcept_a 5209: (__position.base(), this->_M_impl._M_finish, 5209: __new_finish, _M_get_Tp_allocator()); 5209: } 5209: catch(...) 5209: { 5209: std::_Destroy(__new_start, __new_finish, 5209: _M_get_Tp_allocator()); 5209: _M_deallocate(__new_start, __len); 5209: throw; 5209: } 5209: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, 5209: _M_get_Tp_allocator()); 5209: ; 5209: _M_deallocate(this->_M_impl._M_start, 5209: this->_M_impl._M_end_of_storage 5209: - this->_M_impl._M_start); 5209: this->_M_impl._M_start = __new_start; 5209: this->_M_impl._M_finish = __new_finish; 5209: this->_M_impl._M_end_of_storage = __new_start + __len; 5209: } 5209: } 5209: } 5209: 5209: 5209: 5209: template 5209: void 5209: vector:: 5209: _M_reallocate(size_type __n) 5209: { 5209: _Bit_pointer __q = this->_M_allocate(__n); 5209: iterator __start(std::__addressof(*__q), 0); 5209: iterator __finish(_M_copy_aligned(begin(), end(), __start)); 5209: this->_M_deallocate(); 5209: this->_M_impl._M_start = __start; 5209: this->_M_impl._M_finish = __finish; 5209: this->_M_impl._M_end_of_storage = __q + _S_nword(__n); 5209: } 5209: 5209: template 5209: void 5209: vector:: 5209: _M_fill_insert(iterator __position, size_type __n, bool __x) 5209: { 5209: if (__n == 0) 5209: return; 5209: if (capacity() - size() >= __n) 5209: { 5209: std::copy_backward(__position, end(), 5209: this->_M_impl._M_finish + difference_type(__n)); 5209: std::fill(__position, __position + difference_type(__n), __x); 5209: this->_M_impl._M_finish += difference_type(__n); 5209: } 5209: else 5209: { 5209: const size_type __len = 5209: _M_check_len(__n, "vector::_M_fill_insert"); 5209: _Bit_pointer __q = this->_M_allocate(__len); 5209: iterator __start(std::__addressof(*__q), 0); 5209: iterator __i = _M_copy_aligned(begin(), __position, __start); 5209: std::fill(__i, __i + difference_type(__n), __x); 5209: iterator __finish = std::copy(__position, end(), 5209: __i + difference_type(__n)); 5209: this->_M_deallocate(); 5209: this->_M_impl._M_end_of_storage = __q + _S_nword(__len); 5209: this->_M_impl._M_start = __start; 5209: this->_M_impl._M_finish = __finish; 5209: } 5209: } 5209: 5209: template 5209: template 5209: void 5209: vector:: 5209: _M_insert_range(iterator __position, _ForwardIterator __first, 5209: _ForwardIterator __last, std::forward_iterator_tag) 5209: { 5209: if (__first != __last) 5209: { 5209: size_type __n = std::distance(__first, __last); 5209: if (capacity() - size() >= __n) 5209: { 5209: std::copy_backward(__position, end(), 5209: this->_M_impl._M_finish 5209: + difference_type(__n)); 5209: std::copy(__first, __last, __position); 5209: this->_M_impl._M_finish += difference_type(__n); 5209: } 5209: else 5209: { 5209: const size_type __len = 5209: _M_check_len(__n, "vector::_M_insert_range"); 5209: _Bit_pointer __q = this->_M_allocate(__len); 5209: iterator __start(std::__addressof(*__q), 0); 5209: iterator __i = _M_copy_aligned(begin(), __position, __start); 5209: __i = std::copy(__first, __last, __i); 5209: iterator __finish = std::copy(__position, end(), __i); 5209: this->_M_deallocate(); 5209: this->_M_impl._M_end_of_storage = __q + _S_nword(__len); 5209: this->_M_impl._M_start = __start; 5209: this->_M_impl._M_finish = __finish; 5209: } 5209: } 5209: } 5209: 5209: template 5209: void 5209: vector:: 5209: _M_insert_aux(iterator __position, bool __x) 5209: { 5209: if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_addr()) 5209: { 5209: std::copy_backward(__position, this->_M_impl._M_finish, 5209: this->_M_impl._M_finish + 1); 5209: *__position = __x; 5209: ++this->_M_impl._M_finish; 5209: } 5209: else 5209: { 5209: const size_type __len = 5209: _M_check_len(size_type(1), "vector::_M_insert_aux"); 5209: _Bit_pointer __q = this->_M_allocate(__len); 5209: iterator __start(std::__addressof(*__q), 0); 5209: iterator __i = _M_copy_aligned(begin(), __position, __start); 5209: *__i++ = __x; 5209: iterator __finish = std::copy(__position, end(), __i); 5209: this->_M_deallocate(); 5209: this->_M_impl._M_end_of_storage = __q + _S_nword(__len); 5209: this->_M_impl._M_start = __start; 5209: this->_M_impl._M_finish = __finish; 5209: } 5209: } 5209: 5209: template 5209: typename vector::iterator 5209: vector:: 5209: _M_erase(iterator __position) 5209: { 5209: if (__position + 1 != end()) 5209: std::copy(__position + 1, end(), __position); 5209: --this->_M_impl._M_finish; 5209: return __position; 5209: } 5209: 5209: template 5209: typename vector::iterator 5209: vector:: 5209: _M_erase(iterator __first, iterator __last) 5209: { 5209: if (__first != __last) 5209: _M_erase_at_end(std::copy(__last, end(), __first)); 5209: return __first; 5209: } 5209: 5209: 5209: template 5209: bool 5209: vector:: 5209: _M_shrink_to_fit() 5209: { 5209: if (capacity() - size() < int(_S_word_bit)) 5209: return false; 5209: try 5209: { 5209: _M_reallocate(size()); 5209: return true; 5209: } 5209: catch(...) 5209: { return false; } 5209: } 5209: 5209: 5209: 5209: 5209: } 5209: 5209: 5209: 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: template 5209: size_t 5209: hash>:: 5209: operator()(const std::vector& __b) const noexcept 5209: { 5209: size_t __hash = 0; 5209: using std::_S_word_bit; 5209: using std::_Bit_type; 5209: 5209: const size_t __words = __b.size() / _S_word_bit; 5209: if (__words) 5209: { 5209: const size_t __clength = __words * sizeof(_Bit_type); 5209: __hash = std::_Hash_impl::hash(__b._M_impl._M_start._M_p, __clength); 5209: } 5209: 5209: const size_t __extrabits = __b.size() % _S_word_bit; 5209: if (__extrabits) 5209: { 5209: _Bit_type __hiword = *__b._M_impl._M_finish._M_p; 5209: __hiword &= ~((~static_cast<_Bit_type>(0)) << __extrabits); 5209: 5209: const size_t __clength 5209: = (__extrabits + 8 - 1) / 8; 5209: if (__words) 5209: __hash = std::_Hash_impl::hash(&__hiword, __clength, __hash); 5209: else 5209: __hash = std::_Hash_impl::hash(&__hiword, __clength); 5209: } 5209: 5209: return __hash; 5209: } 5209: 5209: 5209: } 5209: # 73 "/usr/include/c++/10/vector" 2 3 5209: # 35 "/usr/include/c++/10/bits/random.h" 2 3 5209: # 1 "/usr/include/c++/10/bits/uniform_int_dist.h" 1 3 5209: # 37 "/usr/include/c++/10/bits/uniform_int_dist.h" 3 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: namespace __detail 5209: { 5209: 5209: template 5209: inline bool 5209: _Power_of_2(_Tp __x) 5209: { 5209: return ((__x - 1) & __x) == 0; 5209: } 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: class uniform_int_distribution 5209: { 5209: static_assert(std::is_integral<_IntType>::value, 5209: "template argument must be an integral type"); 5209: 5209: public: 5209: 5209: typedef _IntType result_type; 5209: 5209: struct param_type 5209: { 5209: typedef uniform_int_distribution<_IntType> distribution_type; 5209: 5209: param_type() : param_type(0) { } 5209: 5209: explicit 5209: param_type(_IntType __a, 5209: _IntType __b = numeric_limits<_IntType>::max()) 5209: : _M_a(__a), _M_b(__b) 5209: { 5209: ; 5209: } 5209: 5209: result_type 5209: a() const 5209: { return _M_a; } 5209: 5209: result_type 5209: b() const 5209: { return _M_b; } 5209: 5209: friend bool 5209: operator==(const param_type& __p1, const param_type& __p2) 5209: { return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; } 5209: 5209: friend bool 5209: operator!=(const param_type& __p1, const param_type& __p2) 5209: { return !(__p1 == __p2); } 5209: 5209: private: 5209: _IntType _M_a; 5209: _IntType _M_b; 5209: }; 5209: 5209: public: 5209: 5209: 5209: 5209: uniform_int_distribution() : uniform_int_distribution(0) { } 5209: 5209: 5209: 5209: 5209: explicit 5209: uniform_int_distribution(_IntType __a, 5209: _IntType __b = numeric_limits<_IntType>::max()) 5209: : _M_param(__a, __b) 5209: { } 5209: 5209: explicit 5209: uniform_int_distribution(const param_type& __p) 5209: : _M_param(__p) 5209: { } 5209: 5209: 5209: 5209: 5209: 5209: 5209: void 5209: reset() { } 5209: 5209: result_type 5209: a() const 5209: { return _M_param.a(); } 5209: 5209: result_type 5209: b() const 5209: { return _M_param.b(); } 5209: 5209: 5209: 5209: 5209: param_type 5209: param() const 5209: { return _M_param; } 5209: 5209: 5209: 5209: 5209: 5209: void 5209: param(const param_type& __param) 5209: { _M_param = __param; } 5209: 5209: 5209: 5209: 5209: result_type 5209: min() const 5209: { return this->a(); } 5209: 5209: 5209: 5209: 5209: result_type 5209: max() const 5209: { return this->b(); } 5209: 5209: 5209: 5209: 5209: template 5209: result_type 5209: operator()(_UniformRandomNumberGenerator& __urng) 5209: { return this->operator()(__urng, _M_param); } 5209: 5209: template 5209: result_type 5209: operator()(_UniformRandomNumberGenerator& __urng, 5209: const param_type& __p); 5209: 5209: template 5209: void 5209: __generate(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng) 5209: { this->__generate(__f, __t, __urng, _M_param); } 5209: 5209: template 5209: void 5209: __generate(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { this->__generate_impl(__f, __t, __urng, __p); } 5209: 5209: template 5209: void 5209: __generate(result_type* __f, result_type* __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { this->__generate_impl(__f, __t, __urng, __p); } 5209: 5209: 5209: 5209: 5209: 5209: friend bool 5209: operator==(const uniform_int_distribution& __d1, 5209: const uniform_int_distribution& __d2) 5209: { return __d1._M_param == __d2._M_param; } 5209: 5209: private: 5209: template 5209: void 5209: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p); 5209: 5209: param_type _M_param; 5209: }; 5209: 5209: template 5209: template 5209: typename uniform_int_distribution<_IntType>::result_type 5209: uniform_int_distribution<_IntType>:: 5209: operator()(_UniformRandomNumberGenerator& __urng, 5209: const param_type& __param) 5209: { 5209: typedef typename _UniformRandomNumberGenerator::result_type 5209: _Gresult_type; 5209: typedef typename std::make_unsigned::type __utype; 5209: typedef typename std::common_type<_Gresult_type, __utype>::type 5209: __uctype; 5209: 5209: const __uctype __urngmin = __urng.min(); 5209: const __uctype __urngmax = __urng.max(); 5209: const __uctype __urngrange = __urngmax - __urngmin; 5209: const __uctype __urange 5209: = __uctype(__param.b()) - __uctype(__param.a()); 5209: 5209: __uctype __ret; 5209: 5209: if (__urngrange > __urange) 5209: { 5209: 5209: const __uctype __uerange = __urange + 1; 5209: const __uctype __scaling = __urngrange / __uerange; 5209: const __uctype __past = __uerange * __scaling; 5209: do 5209: __ret = __uctype(__urng()) - __urngmin; 5209: while (__ret >= __past); 5209: __ret /= __scaling; 5209: } 5209: else if (__urngrange < __urange) 5209: { 5209: # 271 "/usr/include/c++/10/bits/uniform_int_dist.h" 3 5209: __uctype __tmp; 5209: do 5209: { 5209: const __uctype __uerngrange = __urngrange + 1; 5209: __tmp = (__uerngrange * operator() 5209: (__urng, param_type(0, __urange / __uerngrange))); 5209: __ret = __tmp + (__uctype(__urng()) - __urngmin); 5209: } 5209: while (__ret > __urange || __ret < __tmp); 5209: } 5209: else 5209: __ret = __uctype(__urng()) - __urngmin; 5209: 5209: return __ret + __param.a(); 5209: } 5209: 5209: 5209: template 5209: template 5209: void 5209: uniform_int_distribution<_IntType>:: 5209: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __param) 5209: { 5209: 5209: typedef typename _UniformRandomNumberGenerator::result_type 5209: _Gresult_type; 5209: typedef typename std::make_unsigned::type __utype; 5209: typedef typename std::common_type<_Gresult_type, __utype>::type 5209: __uctype; 5209: 5209: const __uctype __urngmin = __urng.min(); 5209: const __uctype __urngmax = __urng.max(); 5209: const __uctype __urngrange = __urngmax - __urngmin; 5209: const __uctype __urange 5209: = __uctype(__param.b()) - __uctype(__param.a()); 5209: 5209: __uctype __ret; 5209: 5209: if (__urngrange > __urange) 5209: { 5209: if (__detail::_Power_of_2(__urngrange + 1) 5209: && __detail::_Power_of_2(__urange + 1)) 5209: { 5209: while (__f != __t) 5209: { 5209: __ret = __uctype(__urng()) - __urngmin; 5209: *__f++ = (__ret & __urange) + __param.a(); 5209: } 5209: } 5209: else 5209: { 5209: 5209: const __uctype __uerange = __urange + 1; 5209: const __uctype __scaling = __urngrange / __uerange; 5209: const __uctype __past = __uerange * __scaling; 5209: while (__f != __t) 5209: { 5209: do 5209: __ret = __uctype(__urng()) - __urngmin; 5209: while (__ret >= __past); 5209: *__f++ = __ret / __scaling + __param.a(); 5209: } 5209: } 5209: } 5209: else if (__urngrange < __urange) 5209: { 5209: # 355 "/usr/include/c++/10/bits/uniform_int_dist.h" 3 5209: __uctype __tmp; 5209: while (__f != __t) 5209: { 5209: do 5209: { 5209: const __uctype __uerngrange = __urngrange + 1; 5209: __tmp = (__uerngrange * operator() 5209: (__urng, param_type(0, __urange / __uerngrange))); 5209: __ret = __tmp + (__uctype(__urng()) - __urngmin); 5209: } 5209: while (__ret > __urange || __ret < __tmp); 5209: *__f++ = __ret; 5209: } 5209: } 5209: else 5209: while (__f != __t) 5209: *__f++ = __uctype(__urng()) - __urngmin + __param.a(); 5209: } 5209: 5209: 5209: 5209: 5209: } 5209: # 36 "/usr/include/c++/10/bits/random.h" 2 3 5209: 5209: 5209: 5209: 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: # 71 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: _RealType 5209: generate_canonical(_UniformRandomNumberGenerator& __g); 5209: 5209: 5209: 5209: 5209: namespace __detail 5209: { 5209: template 5209: (std::numeric_limits<_UIntType>::digits)> 5209: struct _Shift 5209: { static const _UIntType __value = 0; }; 5209: 5209: template 5209: struct _Shift<_UIntType, __w, true> 5209: { static const _UIntType __value = _UIntType(1) << __w; }; 5209: 5209: template 5209: struct _Select_uint_least_t 5209: { 5209: static_assert(__which < 0, 5209: "sorry, would be too much trouble for a slow result"); 5209: }; 5209: 5209: template 5209: struct _Select_uint_least_t<__s, 4> 5209: { typedef unsigned int type; }; 5209: 5209: template 5209: struct _Select_uint_least_t<__s, 3> 5209: { typedef unsigned long type; }; 5209: 5209: template 5209: struct _Select_uint_least_t<__s, 2> 5209: { typedef unsigned long long type; }; 5209: 5209: 5209: template 5209: struct _Select_uint_least_t<__s, 1> 5209: { typedef unsigned __int128 type; }; 5209: 5209: 5209: 5209: template= __m - 1), 5209: bool __schrage_ok = __m % __a < __m / __a> 5209: struct _Mod 5209: { 5209: typedef typename _Select_uint_least_t::type _Tp2; 5209: static _Tp 5209: __calc(_Tp __x) 5209: { return static_cast<_Tp>((_Tp2(__a) * __x + __c) % __m); } 5209: }; 5209: 5209: 5209: template 5209: struct _Mod<_Tp, __m, __a, __c, false, true> 5209: { 5209: static _Tp 5209: __calc(_Tp __x); 5209: }; 5209: 5209: 5209: 5209: 5209: template 5209: struct _Mod<_Tp, __m, __a, __c, true, __s> 5209: { 5209: static _Tp 5209: __calc(_Tp __x) 5209: { 5209: _Tp __res = __a * __x + __c; 5209: if (__m) 5209: __res %= __m; 5209: return __res; 5209: } 5209: }; 5209: 5209: template 5209: inline _Tp 5209: __mod(_Tp __x) 5209: { return _Mod<_Tp, __m, __a, __c>::__calc(__x); } 5209: 5209: 5209: 5209: 5209: 5209: template 5209: struct _Adaptor 5209: { 5209: static_assert(std::is_floating_point<_DInputType>::value, 5209: "template argument must be a floating point type"); 5209: 5209: public: 5209: _Adaptor(_Engine& __g) 5209: : _M_g(__g) { } 5209: 5209: _DInputType 5209: min() const 5209: { return _DInputType(0); } 5209: 5209: _DInputType 5209: max() const 5209: { return _DInputType(1); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: _DInputType 5209: operator()() 5209: { 5209: return std::generate_canonical<_DInputType, 5209: std::numeric_limits<_DInputType>::digits, 5209: _Engine>(_M_g); 5209: } 5209: 5209: private: 5209: _Engine& _M_g; 5209: }; 5209: 5209: template 5209: using __seed_seq_generate_t = decltype( 5209: std::declval<_Sseq&>().generate(std::declval(), 5209: std::declval())); 5209: 5209: 5209: 5209: template> 5209: using __is_seed_seq = __and_< 5209: __not_, _Engine>>, 5209: is_unsigned, 5209: __not_> 5209: >; 5209: 5209: } 5209: # 258 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: class linear_congruential_engine 5209: { 5209: static_assert(std::is_unsigned<_UIntType>::value, 5209: "result_type must be an unsigned integral type"); 5209: static_assert(__m == 0u || (__a < __m && __c < __m), 5209: "template argument substituting __m out of bounds"); 5209: 5209: template 5209: using _If_seed_seq = typename enable_if<__detail::__is_seed_seq< 5209: _Sseq, linear_congruential_engine, _UIntType>::value>::type; 5209: 5209: public: 5209: 5209: typedef _UIntType result_type; 5209: 5209: 5209: static constexpr result_type multiplier = __a; 5209: 5209: static constexpr result_type increment = __c; 5209: 5209: static constexpr result_type modulus = __m; 5209: static constexpr result_type default_seed = 1u; 5209: 5209: 5209: 5209: 5209: 5209: linear_congruential_engine() : linear_congruential_engine(default_seed) 5209: { } 5209: # 296 "/usr/include/c++/10/bits/random.h" 3 5209: explicit 5209: linear_congruential_engine(result_type __s) 5209: { seed(__s); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: template> 5209: explicit 5209: linear_congruential_engine(_Sseq& __q) 5209: { seed(__q); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: void 5209: seed(result_type __s = default_seed); 5209: # 327 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: _If_seed_seq<_Sseq> 5209: seed(_Sseq& __q); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: static constexpr result_type 5209: min() 5209: { return __c == 0u ? 1u : 0u; } 5209: 5209: 5209: 5209: 5209: static constexpr result_type 5209: max() 5209: { return __m - 1u; } 5209: 5209: 5209: 5209: 5209: void 5209: discard(unsigned long long __z) 5209: { 5209: for (; __z != 0ULL; --__z) 5209: (*this)(); 5209: } 5209: 5209: 5209: 5209: 5209: result_type 5209: operator()() 5209: { 5209: _M_x = __detail::__mod<_UIntType, __m, __a, __c>(_M_x); 5209: return _M_x; 5209: } 5209: # 379 "/usr/include/c++/10/bits/random.h" 3 5209: friend bool 5209: operator==(const linear_congruential_engine& __lhs, 5209: const linear_congruential_engine& __rhs) 5209: { return __lhs._M_x == __rhs._M_x; } 5209: # 392 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: friend std::basic_ostream<_CharT, _Traits>& 5209: operator<<(std::basic_ostream<_CharT, _Traits>& __os, 5209: const std::linear_congruential_engine<_UIntType1, 5209: __a1, __c1, __m1>& __lcr); 5209: # 412 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: friend std::basic_istream<_CharT, _Traits>& 5209: operator>>(std::basic_istream<_CharT, _Traits>& __is, 5209: std::linear_congruential_engine<_UIntType1, __a1, 5209: __c1, __m1>& __lcr); 5209: 5209: private: 5209: _UIntType _M_x; 5209: }; 5209: # 434 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: inline bool 5209: operator!=(const std::linear_congruential_engine<_UIntType, __a, 5209: __c, __m>& __lhs, 5209: const std::linear_congruential_engine<_UIntType, __a, 5209: __c, __m>& __rhs) 5209: { return !(__lhs == __rhs); } 5209: # 471 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: class mersenne_twister_engine 5209: { 5209: static_assert(std::is_unsigned<_UIntType>::value, 5209: "result_type must be an unsigned integral type"); 5209: static_assert(1u <= __m && __m <= __n, 5209: "template argument substituting __m out of bounds"); 5209: static_assert(__r <= __w, "template argument substituting " 5209: "__r out of bound"); 5209: static_assert(__u <= __w, "template argument substituting " 5209: "__u out of bound"); 5209: static_assert(__s <= __w, "template argument substituting " 5209: "__s out of bound"); 5209: static_assert(__t <= __w, "template argument substituting " 5209: "__t out of bound"); 5209: static_assert(__l <= __w, "template argument substituting " 5209: "__l out of bound"); 5209: static_assert(__w <= std::numeric_limits<_UIntType>::digits, 5209: "template argument substituting __w out of bound"); 5209: static_assert(__a <= (__detail::_Shift<_UIntType, __w>::__value - 1), 5209: "template argument substituting __a out of bound"); 5209: static_assert(__b <= (__detail::_Shift<_UIntType, __w>::__value - 1), 5209: "template argument substituting __b out of bound"); 5209: static_assert(__c <= (__detail::_Shift<_UIntType, __w>::__value - 1), 5209: "template argument substituting __c out of bound"); 5209: static_assert(__d <= (__detail::_Shift<_UIntType, __w>::__value - 1), 5209: "template argument substituting __d out of bound"); 5209: static_assert(__f <= (__detail::_Shift<_UIntType, __w>::__value - 1), 5209: "template argument substituting __f out of bound"); 5209: 5209: template 5209: using _If_seed_seq = typename enable_if<__detail::__is_seed_seq< 5209: _Sseq, mersenne_twister_engine, _UIntType>::value>::type; 5209: 5209: public: 5209: 5209: typedef _UIntType result_type; 5209: 5209: 5209: static constexpr size_t word_size = __w; 5209: static constexpr size_t state_size = __n; 5209: static constexpr size_t shift_size = __m; 5209: static constexpr size_t mask_bits = __r; 5209: static constexpr result_type xor_mask = __a; 5209: static constexpr size_t tempering_u = __u; 5209: static constexpr result_type tempering_d = __d; 5209: static constexpr size_t tempering_s = __s; 5209: static constexpr result_type tempering_b = __b; 5209: static constexpr size_t tempering_t = __t; 5209: static constexpr result_type tempering_c = __c; 5209: static constexpr size_t tempering_l = __l; 5209: static constexpr result_type initialization_multiplier = __f; 5209: static constexpr result_type default_seed = 5489u; 5209: 5209: 5209: 5209: mersenne_twister_engine() : mersenne_twister_engine(default_seed) { } 5209: 5209: explicit 5209: mersenne_twister_engine(result_type __sd) 5209: { seed(__sd); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: template> 5209: explicit 5209: mersenne_twister_engine(_Sseq& __q) 5209: { seed(__q); } 5209: 5209: void 5209: seed(result_type __sd = default_seed); 5209: 5209: template 5209: _If_seed_seq<_Sseq> 5209: seed(_Sseq& __q); 5209: 5209: 5209: 5209: 5209: static constexpr result_type 5209: min() 5209: { return 0; } 5209: 5209: 5209: 5209: 5209: static constexpr result_type 5209: max() 5209: { return __detail::_Shift<_UIntType, __w>::__value - 1; } 5209: 5209: 5209: 5209: 5209: void 5209: discard(unsigned long long __z); 5209: 5209: result_type 5209: operator()(); 5209: # 590 "/usr/include/c++/10/bits/random.h" 3 5209: friend bool 5209: operator==(const mersenne_twister_engine& __lhs, 5209: const mersenne_twister_engine& __rhs) 5209: { return (std::equal(__lhs._M_x, __lhs._M_x + state_size, __rhs._M_x) 5209: && __lhs._M_p == __rhs._M_p); } 5209: # 608 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: friend std::basic_ostream<_CharT, _Traits>& 5209: operator<<(std::basic_ostream<_CharT, _Traits>& __os, 5209: const std::mersenne_twister_engine<_UIntType1, __w1, __n1, 5209: __m1, __r1, __a1, __u1, __d1, __s1, __b1, __t1, __c1, 5209: __l1, __f1>& __x); 5209: # 634 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: friend std::basic_istream<_CharT, _Traits>& 5209: operator>>(std::basic_istream<_CharT, _Traits>& __is, 5209: std::mersenne_twister_engine<_UIntType1, __w1, __n1, __m1, 5209: __r1, __a1, __u1, __d1, __s1, __b1, __t1, __c1, 5209: __l1, __f1>& __x); 5209: 5209: private: 5209: void _M_gen_rand(); 5209: 5209: _UIntType _M_x[state_size]; 5209: size_t _M_p; 5209: }; 5209: # 667 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: inline bool 5209: operator!=(const std::mersenne_twister_engine<_UIntType, __w, __n, __m, 5209: __r, __a, __u, __d, __s, __b, __t, __c, __l, __f>& __lhs, 5209: const std::mersenne_twister_engine<_UIntType, __w, __n, __m, 5209: __r, __a, __u, __d, __s, __b, __t, __c, __l, __f>& __rhs) 5209: { return !(__lhs == __rhs); } 5209: # 695 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: class subtract_with_carry_engine 5209: { 5209: static_assert(std::is_unsigned<_UIntType>::value, 5209: "result_type must be an unsigned integral type"); 5209: static_assert(0u < __s && __s < __r, 5209: "0 < s < r"); 5209: static_assert(0u < __w && __w <= std::numeric_limits<_UIntType>::digits, 5209: "template argument substituting __w out of bounds"); 5209: 5209: template 5209: using _If_seed_seq = typename enable_if<__detail::__is_seed_seq< 5209: _Sseq, subtract_with_carry_engine, _UIntType>::value>::type; 5209: 5209: public: 5209: 5209: typedef _UIntType result_type; 5209: 5209: 5209: static constexpr size_t word_size = __w; 5209: static constexpr size_t short_lag = __s; 5209: static constexpr size_t long_lag = __r; 5209: static constexpr result_type default_seed = 19780503u; 5209: 5209: subtract_with_carry_engine() : subtract_with_carry_engine(default_seed) 5209: { } 5209: 5209: 5209: 5209: 5209: 5209: explicit 5209: subtract_with_carry_engine(result_type __sd) 5209: { seed(__sd); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: template> 5209: explicit 5209: subtract_with_carry_engine(_Sseq& __q) 5209: { seed(__q); } 5209: # 753 "/usr/include/c++/10/bits/random.h" 3 5209: void 5209: seed(result_type __sd = default_seed); 5209: 5209: 5209: 5209: 5209: 5209: template 5209: _If_seed_seq<_Sseq> 5209: seed(_Sseq& __q); 5209: 5209: 5209: 5209: 5209: 5209: static constexpr result_type 5209: min() 5209: { return 0; } 5209: 5209: 5209: 5209: 5209: 5209: static constexpr result_type 5209: max() 5209: { return __detail::_Shift<_UIntType, __w>::__value - 1; } 5209: 5209: 5209: 5209: 5209: void 5209: discard(unsigned long long __z) 5209: { 5209: for (; __z != 0ULL; --__z) 5209: (*this)(); 5209: } 5209: 5209: 5209: 5209: 5209: result_type 5209: operator()(); 5209: # 808 "/usr/include/c++/10/bits/random.h" 3 5209: friend bool 5209: operator==(const subtract_with_carry_engine& __lhs, 5209: const subtract_with_carry_engine& __rhs) 5209: { return (std::equal(__lhs._M_x, __lhs._M_x + long_lag, __rhs._M_x) 5209: && __lhs._M_carry == __rhs._M_carry 5209: && __lhs._M_p == __rhs._M_p); } 5209: # 827 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: friend std::basic_ostream<_CharT, _Traits>& 5209: operator<<(std::basic_ostream<_CharT, _Traits>& __os, 5209: const std::subtract_with_carry_engine<_UIntType1, __w1, 5209: __s1, __r1>& __x); 5209: # 846 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: friend std::basic_istream<_CharT, _Traits>& 5209: operator>>(std::basic_istream<_CharT, _Traits>& __is, 5209: std::subtract_with_carry_engine<_UIntType1, __w1, 5209: __s1, __r1>& __x); 5209: 5209: private: 5209: 5209: _UIntType _M_x[long_lag]; 5209: _UIntType _M_carry; 5209: size_t _M_p; 5209: }; 5209: # 872 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: inline bool 5209: operator!=(const std::subtract_with_carry_engine<_UIntType, __w, 5209: __s, __r>& __lhs, 5209: const std::subtract_with_carry_engine<_UIntType, __w, 5209: __s, __r>& __rhs) 5209: { return !(__lhs == __rhs); } 5209: # 887 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: class discard_block_engine 5209: { 5209: static_assert(1 <= __r && __r <= __p, 5209: "template argument substituting __r out of bounds"); 5209: 5209: public: 5209: 5209: typedef typename _RandomNumberEngine::result_type result_type; 5209: 5209: template 5209: using _If_seed_seq = typename enable_if<__detail::__is_seed_seq< 5209: _Sseq, discard_block_engine, result_type>::value>::type; 5209: 5209: 5209: static constexpr size_t block_size = __p; 5209: static constexpr size_t used_block = __r; 5209: 5209: 5209: 5209: 5209: 5209: 5209: discard_block_engine() 5209: : _M_b(), _M_n(0) { } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: explicit 5209: discard_block_engine(const _RandomNumberEngine& __rng) 5209: : _M_b(__rng), _M_n(0) { } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: explicit 5209: discard_block_engine(_RandomNumberEngine&& __rng) 5209: : _M_b(std::move(__rng)), _M_n(0) { } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: explicit 5209: discard_block_engine(result_type __s) 5209: : _M_b(__s), _M_n(0) { } 5209: 5209: 5209: 5209: 5209: 5209: 5209: template> 5209: explicit 5209: discard_block_engine(_Sseq& __q) 5209: : _M_b(__q), _M_n(0) 5209: { } 5209: 5209: 5209: 5209: 5209: 5209: void 5209: seed() 5209: { 5209: _M_b.seed(); 5209: _M_n = 0; 5209: } 5209: 5209: 5209: 5209: 5209: 5209: void 5209: seed(result_type __s) 5209: { 5209: _M_b.seed(__s); 5209: _M_n = 0; 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: _If_seed_seq<_Sseq> 5209: seed(_Sseq& __q) 5209: { 5209: _M_b.seed(__q); 5209: _M_n = 0; 5209: } 5209: 5209: 5209: 5209: 5209: 5209: const _RandomNumberEngine& 5209: base() const noexcept 5209: { return _M_b; } 5209: 5209: 5209: 5209: 5209: static constexpr result_type 5209: min() 5209: { return _RandomNumberEngine::min(); } 5209: 5209: 5209: 5209: 5209: static constexpr result_type 5209: max() 5209: { return _RandomNumberEngine::max(); } 5209: 5209: 5209: 5209: 5209: void 5209: discard(unsigned long long __z) 5209: { 5209: for (; __z != 0ULL; --__z) 5209: (*this)(); 5209: } 5209: 5209: 5209: 5209: 5209: result_type 5209: operator()(); 5209: # 1038 "/usr/include/c++/10/bits/random.h" 3 5209: friend bool 5209: operator==(const discard_block_engine& __lhs, 5209: const discard_block_engine& __rhs) 5209: { return __lhs._M_b == __rhs._M_b && __lhs._M_n == __rhs._M_n; } 5209: # 1054 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: friend std::basic_ostream<_CharT, _Traits>& 5209: operator<<(std::basic_ostream<_CharT, _Traits>& __os, 5209: const std::discard_block_engine<_RandomNumberEngine1, 5209: __p1, __r1>& __x); 5209: # 1072 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: friend std::basic_istream<_CharT, _Traits>& 5209: operator>>(std::basic_istream<_CharT, _Traits>& __is, 5209: std::discard_block_engine<_RandomNumberEngine1, 5209: __p1, __r1>& __x); 5209: 5209: private: 5209: _RandomNumberEngine _M_b; 5209: size_t _M_n; 5209: }; 5209: # 1095 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: inline bool 5209: operator!=(const std::discard_block_engine<_RandomNumberEngine, __p, 5209: __r>& __lhs, 5209: const std::discard_block_engine<_RandomNumberEngine, __p, 5209: __r>& __rhs) 5209: { return !(__lhs == __rhs); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: class independent_bits_engine 5209: { 5209: static_assert(std::is_unsigned<_UIntType>::value, 5209: "result_type must be an unsigned integral type"); 5209: static_assert(0u < __w && __w <= std::numeric_limits<_UIntType>::digits, 5209: "template argument substituting __w out of bounds"); 5209: 5209: template 5209: using _If_seed_seq = typename enable_if<__detail::__is_seed_seq< 5209: _Sseq, independent_bits_engine, _UIntType>::value>::type; 5209: 5209: public: 5209: 5209: typedef _UIntType result_type; 5209: 5209: 5209: 5209: 5209: 5209: 5209: independent_bits_engine() 5209: : _M_b() { } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: explicit 5209: independent_bits_engine(const _RandomNumberEngine& __rng) 5209: : _M_b(__rng) { } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: explicit 5209: independent_bits_engine(_RandomNumberEngine&& __rng) 5209: : _M_b(std::move(__rng)) { } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: explicit 5209: independent_bits_engine(result_type __s) 5209: : _M_b(__s) { } 5209: 5209: 5209: 5209: 5209: 5209: 5209: template> 5209: explicit 5209: independent_bits_engine(_Sseq& __q) 5209: : _M_b(__q) 5209: { } 5209: 5209: 5209: 5209: 5209: 5209: void 5209: seed() 5209: { _M_b.seed(); } 5209: 5209: 5209: 5209: 5209: 5209: void 5209: seed(result_type __s) 5209: { _M_b.seed(__s); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: _If_seed_seq<_Sseq> 5209: seed(_Sseq& __q) 5209: { _M_b.seed(__q); } 5209: 5209: 5209: 5209: 5209: 5209: const _RandomNumberEngine& 5209: base() const noexcept 5209: { return _M_b; } 5209: 5209: 5209: 5209: 5209: static constexpr result_type 5209: min() 5209: { return 0U; } 5209: 5209: 5209: 5209: 5209: static constexpr result_type 5209: max() 5209: { return __detail::_Shift<_UIntType, __w>::__value - 1; } 5209: 5209: 5209: 5209: 5209: void 5209: discard(unsigned long long __z) 5209: { 5209: for (; __z != 0ULL; --__z) 5209: (*this)(); 5209: } 5209: 5209: 5209: 5209: 5209: result_type 5209: operator()(); 5209: # 1249 "/usr/include/c++/10/bits/random.h" 3 5209: friend bool 5209: operator==(const independent_bits_engine& __lhs, 5209: const independent_bits_engine& __rhs) 5209: { return __lhs._M_b == __rhs._M_b; } 5209: # 1266 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: friend std::basic_istream<_CharT, _Traits>& 5209: operator>>(std::basic_istream<_CharT, _Traits>& __is, 5209: std::independent_bits_engine<_RandomNumberEngine, 5209: __w, _UIntType>& __x) 5209: { 5209: __is >> __x._M_b; 5209: return __is; 5209: } 5209: 5209: private: 5209: _RandomNumberEngine _M_b; 5209: }; 5209: # 1292 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: inline bool 5209: operator!=(const std::independent_bits_engine<_RandomNumberEngine, __w, 5209: _UIntType>& __lhs, 5209: const std::independent_bits_engine<_RandomNumberEngine, __w, 5209: _UIntType>& __rhs) 5209: { return !(__lhs == __rhs); } 5209: # 1310 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: std::basic_ostream<_CharT, _Traits>& 5209: operator<<(std::basic_ostream<_CharT, _Traits>& __os, 5209: const std::independent_bits_engine<_RandomNumberEngine, 5209: __w, _UIntType>& __x) 5209: { 5209: __os << __x.base(); 5209: return __os; 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: class shuffle_order_engine 5209: { 5209: static_assert(1u <= __k, "template argument substituting " 5209: "__k out of bound"); 5209: 5209: public: 5209: 5209: typedef typename _RandomNumberEngine::result_type result_type; 5209: 5209: template 5209: using _If_seed_seq = typename enable_if<__detail::__is_seed_seq< 5209: _Sseq, shuffle_order_engine, result_type>::value>::type; 5209: 5209: static constexpr size_t table_size = __k; 5209: 5209: 5209: 5209: 5209: 5209: 5209: shuffle_order_engine() 5209: : _M_b() 5209: { _M_initialize(); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: explicit 5209: shuffle_order_engine(const _RandomNumberEngine& __rng) 5209: : _M_b(__rng) 5209: { _M_initialize(); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: explicit 5209: shuffle_order_engine(_RandomNumberEngine&& __rng) 5209: : _M_b(std::move(__rng)) 5209: { _M_initialize(); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: explicit 5209: shuffle_order_engine(result_type __s) 5209: : _M_b(__s) 5209: { _M_initialize(); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: template> 5209: explicit 5209: shuffle_order_engine(_Sseq& __q) 5209: : _M_b(__q) 5209: { _M_initialize(); } 5209: 5209: 5209: 5209: 5209: 5209: void 5209: seed() 5209: { 5209: _M_b.seed(); 5209: _M_initialize(); 5209: } 5209: 5209: 5209: 5209: 5209: 5209: void 5209: seed(result_type __s) 5209: { 5209: _M_b.seed(__s); 5209: _M_initialize(); 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: _If_seed_seq<_Sseq> 5209: seed(_Sseq& __q) 5209: { 5209: _M_b.seed(__q); 5209: _M_initialize(); 5209: } 5209: 5209: 5209: 5209: 5209: const _RandomNumberEngine& 5209: base() const noexcept 5209: { return _M_b; } 5209: 5209: 5209: 5209: 5209: static constexpr result_type 5209: min() 5209: { return _RandomNumberEngine::min(); } 5209: 5209: 5209: 5209: 5209: static constexpr result_type 5209: max() 5209: { return _RandomNumberEngine::max(); } 5209: 5209: 5209: 5209: 5209: void 5209: discard(unsigned long long __z) 5209: { 5209: for (; __z != 0ULL; --__z) 5209: (*this)(); 5209: } 5209: 5209: 5209: 5209: 5209: result_type 5209: operator()(); 5209: # 1479 "/usr/include/c++/10/bits/random.h" 3 5209: friend bool 5209: operator==(const shuffle_order_engine& __lhs, 5209: const shuffle_order_engine& __rhs) 5209: { return (__lhs._M_b == __rhs._M_b 5209: && std::equal(__lhs._M_v, __lhs._M_v + __k, __rhs._M_v) 5209: && __lhs._M_y == __rhs._M_y); } 5209: # 1497 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: friend std::basic_ostream<_CharT, _Traits>& 5209: operator<<(std::basic_ostream<_CharT, _Traits>& __os, 5209: const std::shuffle_order_engine<_RandomNumberEngine1, 5209: __k1>& __x); 5209: # 1515 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: friend std::basic_istream<_CharT, _Traits>& 5209: operator>>(std::basic_istream<_CharT, _Traits>& __is, 5209: std::shuffle_order_engine<_RandomNumberEngine1, __k1>& __x); 5209: 5209: private: 5209: void _M_initialize() 5209: { 5209: for (size_t __i = 0; __i < __k; ++__i) 5209: _M_v[__i] = _M_b(); 5209: _M_y = _M_b(); 5209: } 5209: 5209: _RandomNumberEngine _M_b; 5209: result_type _M_v[__k]; 5209: result_type _M_y; 5209: }; 5209: # 1545 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: inline bool 5209: operator!=(const std::shuffle_order_engine<_RandomNumberEngine, 5209: __k>& __lhs, 5209: const std::shuffle_order_engine<_RandomNumberEngine, 5209: __k>& __rhs) 5209: { return !(__lhs == __rhs); } 5209: 5209: 5209: 5209: 5209: 5209: typedef linear_congruential_engine 5209: minstd_rand0; 5209: 5209: 5209: 5209: 5209: typedef linear_congruential_engine 5209: minstd_rand; 5209: # 1574 "/usr/include/c++/10/bits/random.h" 3 5209: typedef mersenne_twister_engine< 5209: uint_fast32_t, 5209: 32, 624, 397, 31, 5209: 0x9908b0dfUL, 11, 5209: 0xffffffffUL, 7, 5209: 0x9d2c5680UL, 15, 5209: 0xefc60000UL, 18, 1812433253UL> mt19937; 5209: 5209: 5209: 5209: 5209: typedef mersenne_twister_engine< 5209: uint_fast64_t, 5209: 64, 312, 156, 31, 5209: 0xb5026f5aa96619e9ULL, 29, 5209: 0x5555555555555555ULL, 17, 5209: 0x71d67fffeda60000ULL, 37, 5209: 0xfff7eee000000000ULL, 43, 5209: 6364136223846793005ULL> mt19937_64; 5209: 5209: typedef subtract_with_carry_engine 5209: ranlux24_base; 5209: 5209: typedef subtract_with_carry_engine 5209: ranlux48_base; 5209: 5209: typedef discard_block_engine ranlux24; 5209: 5209: typedef discard_block_engine ranlux48; 5209: 5209: typedef shuffle_order_engine knuth_b; 5209: 5209: typedef minstd_rand0 default_random_engine; 5209: 5209: 5209: 5209: 5209: 5209: class random_device 5209: { 5209: public: 5209: 5209: typedef unsigned int result_type; 5209: 5209: 5209: 5209: random_device() { _M_init("default"); } 5209: 5209: explicit 5209: random_device(const std::string& __token) { _M_init(__token); } 5209: 5209: 5209: ~random_device() 5209: { _M_fini(); } 5209: 5209: 5209: static constexpr result_type 5209: min() 5209: { return std::numeric_limits::min(); } 5209: 5209: static constexpr result_type 5209: max() 5209: { return std::numeric_limits::max(); } 5209: 5209: double 5209: entropy() const noexcept 5209: { 5209: 5209: return this->_M_getentropy(); 5209: 5209: 5209: 5209: } 5209: 5209: result_type 5209: operator()() 5209: { return this->_M_getval(); } 5209: 5209: 5209: random_device(const random_device&) = delete; 5209: void operator=(const random_device&) = delete; 5209: 5209: private: 5209: 5209: void _M_init(const std::string& __token); 5209: void _M_init_pretr1(const std::string& __token); 5209: void _M_fini(); 5209: 5209: result_type _M_getval(); 5209: result_type _M_getval_pretr1(); 5209: double _M_getentropy() const noexcept; 5209: 5209: void _M_init(const char*, size_t); 5209: 5209: union 5209: { 5209: struct 5209: { 5209: void* _M_file; 5209: result_type (*_M_func)(void*); 5209: int _M_fd; 5209: }; 5209: mt19937 _M_mt; 5209: }; 5209: }; 5209: # 1700 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: inline bool 5209: operator!=(const std::uniform_int_distribution<_IntType>& __d1, 5209: const std::uniform_int_distribution<_IntType>& __d2) 5209: { return !(__d1 == __d2); } 5209: # 1716 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: std::basic_ostream<_CharT, _Traits>& 5209: operator<<(std::basic_ostream<_CharT, _Traits>&, 5209: const std::uniform_int_distribution<_IntType>&); 5209: # 1730 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: std::basic_istream<_CharT, _Traits>& 5209: operator>>(std::basic_istream<_CharT, _Traits>&, 5209: std::uniform_int_distribution<_IntType>&); 5209: # 1743 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: class uniform_real_distribution 5209: { 5209: static_assert(std::is_floating_point<_RealType>::value, 5209: "result_type must be a floating point type"); 5209: 5209: public: 5209: 5209: typedef _RealType result_type; 5209: 5209: 5209: struct param_type 5209: { 5209: typedef uniform_real_distribution<_RealType> distribution_type; 5209: 5209: param_type() : param_type(0) { } 5209: 5209: explicit 5209: param_type(_RealType __a, _RealType __b = _RealType(1)) 5209: : _M_a(__a), _M_b(__b) 5209: { 5209: ; 5209: } 5209: 5209: result_type 5209: a() const 5209: { return _M_a; } 5209: 5209: result_type 5209: b() const 5209: { return _M_b; } 5209: 5209: friend bool 5209: operator==(const param_type& __p1, const param_type& __p2) 5209: { return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; } 5209: 5209: friend bool 5209: operator!=(const param_type& __p1, const param_type& __p2) 5209: { return !(__p1 == __p2); } 5209: 5209: private: 5209: _RealType _M_a; 5209: _RealType _M_b; 5209: }; 5209: 5209: public: 5209: 5209: 5209: 5209: 5209: 5209: uniform_real_distribution() : uniform_real_distribution(0.0) { } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: explicit 5209: uniform_real_distribution(_RealType __a, _RealType __b = _RealType(1)) 5209: : _M_param(__a, __b) 5209: { } 5209: 5209: explicit 5209: uniform_real_distribution(const param_type& __p) 5209: : _M_param(__p) 5209: { } 5209: 5209: 5209: 5209: 5209: 5209: 5209: void 5209: reset() { } 5209: 5209: result_type 5209: a() const 5209: { return _M_param.a(); } 5209: 5209: result_type 5209: b() const 5209: { return _M_param.b(); } 5209: 5209: 5209: 5209: 5209: param_type 5209: param() const 5209: { return _M_param; } 5209: 5209: 5209: 5209: 5209: 5209: void 5209: param(const param_type& __param) 5209: { _M_param = __param; } 5209: 5209: 5209: 5209: 5209: result_type 5209: min() const 5209: { return this->a(); } 5209: 5209: 5209: 5209: 5209: result_type 5209: max() const 5209: { return this->b(); } 5209: 5209: 5209: 5209: 5209: template 5209: result_type 5209: operator()(_UniformRandomNumberGenerator& __urng) 5209: { return this->operator()(__urng, _M_param); } 5209: 5209: template 5209: result_type 5209: operator()(_UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { 5209: __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> 5209: __aurng(__urng); 5209: return (__aurng() * (__p.b() - __p.a())) + __p.a(); 5209: } 5209: 5209: template 5209: void 5209: __generate(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng) 5209: { this->__generate(__f, __t, __urng, _M_param); } 5209: 5209: template 5209: void 5209: __generate(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { this->__generate_impl(__f, __t, __urng, __p); } 5209: 5209: template 5209: void 5209: __generate(result_type* __f, result_type* __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { this->__generate_impl(__f, __t, __urng, __p); } 5209: 5209: 5209: 5209: 5209: 5209: friend bool 5209: operator==(const uniform_real_distribution& __d1, 5209: const uniform_real_distribution& __d2) 5209: { return __d1._M_param == __d2._M_param; } 5209: 5209: private: 5209: template 5209: void 5209: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p); 5209: 5209: param_type _M_param; 5209: }; 5209: 5209: 5209: 5209: 5209: 5209: template 5209: inline bool 5209: operator!=(const std::uniform_real_distribution<_IntType>& __d1, 5209: const std::uniform_real_distribution<_IntType>& __d2) 5209: { return !(__d1 == __d2); } 5209: # 1937 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: std::basic_ostream<_CharT, _Traits>& 5209: operator<<(std::basic_ostream<_CharT, _Traits>&, 5209: const std::uniform_real_distribution<_RealType>&); 5209: # 1951 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: std::basic_istream<_CharT, _Traits>& 5209: operator>>(std::basic_istream<_CharT, _Traits>&, 5209: std::uniform_real_distribution<_RealType>&); 5209: # 1973 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: class normal_distribution 5209: { 5209: static_assert(std::is_floating_point<_RealType>::value, 5209: "result_type must be a floating point type"); 5209: 5209: public: 5209: 5209: typedef _RealType result_type; 5209: 5209: 5209: struct param_type 5209: { 5209: typedef normal_distribution<_RealType> distribution_type; 5209: 5209: param_type() : param_type(0.0) { } 5209: 5209: explicit 5209: param_type(_RealType __mean, _RealType __stddev = _RealType(1)) 5209: : _M_mean(__mean), _M_stddev(__stddev) 5209: { 5209: ; 5209: } 5209: 5209: _RealType 5209: mean() const 5209: { return _M_mean; } 5209: 5209: _RealType 5209: stddev() const 5209: { return _M_stddev; } 5209: 5209: friend bool 5209: operator==(const param_type& __p1, const param_type& __p2) 5209: { return (__p1._M_mean == __p2._M_mean 5209: && __p1._M_stddev == __p2._M_stddev); } 5209: 5209: friend bool 5209: operator!=(const param_type& __p1, const param_type& __p2) 5209: { return !(__p1 == __p2); } 5209: 5209: private: 5209: _RealType _M_mean; 5209: _RealType _M_stddev; 5209: }; 5209: 5209: public: 5209: normal_distribution() : normal_distribution(0.0) { } 5209: 5209: 5209: 5209: 5209: 5209: explicit 5209: normal_distribution(result_type __mean, 5209: result_type __stddev = result_type(1)) 5209: : _M_param(__mean, __stddev), _M_saved_available(false) 5209: { } 5209: 5209: explicit 5209: normal_distribution(const param_type& __p) 5209: : _M_param(__p), _M_saved_available(false) 5209: { } 5209: 5209: 5209: 5209: 5209: void 5209: reset() 5209: { _M_saved_available = false; } 5209: 5209: 5209: 5209: 5209: _RealType 5209: mean() const 5209: { return _M_param.mean(); } 5209: 5209: 5209: 5209: 5209: _RealType 5209: stddev() const 5209: { return _M_param.stddev(); } 5209: 5209: 5209: 5209: 5209: param_type 5209: param() const 5209: { return _M_param; } 5209: 5209: 5209: 5209: 5209: 5209: void 5209: param(const param_type& __param) 5209: { _M_param = __param; } 5209: 5209: 5209: 5209: 5209: result_type 5209: min() const 5209: { return std::numeric_limits::lowest(); } 5209: 5209: 5209: 5209: 5209: result_type 5209: max() const 5209: { return std::numeric_limits::max(); } 5209: 5209: 5209: 5209: 5209: template 5209: result_type 5209: operator()(_UniformRandomNumberGenerator& __urng) 5209: { return this->operator()(__urng, _M_param); } 5209: 5209: template 5209: result_type 5209: operator()(_UniformRandomNumberGenerator& __urng, 5209: const param_type& __p); 5209: 5209: template 5209: void 5209: __generate(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng) 5209: { this->__generate(__f, __t, __urng, _M_param); } 5209: 5209: template 5209: void 5209: __generate(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { this->__generate_impl(__f, __t, __urng, __p); } 5209: 5209: template 5209: void 5209: __generate(result_type* __f, result_type* __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { this->__generate_impl(__f, __t, __urng, __p); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: friend bool 5209: operator==(const std::normal_distribution<_RealType1>& __d1, 5209: const std::normal_distribution<_RealType1>& __d2); 5209: # 2142 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: friend std::basic_ostream<_CharT, _Traits>& 5209: operator<<(std::basic_ostream<_CharT, _Traits>& __os, 5209: const std::normal_distribution<_RealType1>& __x); 5209: # 2157 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: friend std::basic_istream<_CharT, _Traits>& 5209: operator>>(std::basic_istream<_CharT, _Traits>& __is, 5209: std::normal_distribution<_RealType1>& __x); 5209: 5209: private: 5209: template 5209: void 5209: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p); 5209: 5209: param_type _M_param; 5209: result_type _M_saved; 5209: bool _M_saved_available; 5209: }; 5209: 5209: 5209: 5209: 5209: template 5209: inline bool 5209: operator!=(const std::normal_distribution<_RealType>& __d1, 5209: const std::normal_distribution<_RealType>& __d2) 5209: { return !(__d1 == __d2); } 5209: # 2194 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: class lognormal_distribution 5209: { 5209: static_assert(std::is_floating_point<_RealType>::value, 5209: "result_type must be a floating point type"); 5209: 5209: public: 5209: 5209: typedef _RealType result_type; 5209: 5209: 5209: struct param_type 5209: { 5209: typedef lognormal_distribution<_RealType> distribution_type; 5209: 5209: param_type() : param_type(0.0) { } 5209: 5209: explicit 5209: param_type(_RealType __m, _RealType __s = _RealType(1)) 5209: : _M_m(__m), _M_s(__s) 5209: { } 5209: 5209: _RealType 5209: m() const 5209: { return _M_m; } 5209: 5209: _RealType 5209: s() const 5209: { return _M_s; } 5209: 5209: friend bool 5209: operator==(const param_type& __p1, const param_type& __p2) 5209: { return __p1._M_m == __p2._M_m && __p1._M_s == __p2._M_s; } 5209: 5209: friend bool 5209: operator!=(const param_type& __p1, const param_type& __p2) 5209: { return !(__p1 == __p2); } 5209: 5209: private: 5209: _RealType _M_m; 5209: _RealType _M_s; 5209: }; 5209: 5209: lognormal_distribution() : lognormal_distribution(0.0) { } 5209: 5209: explicit 5209: lognormal_distribution(_RealType __m, _RealType __s = _RealType(1)) 5209: : _M_param(__m, __s), _M_nd() 5209: { } 5209: 5209: explicit 5209: lognormal_distribution(const param_type& __p) 5209: : _M_param(__p), _M_nd() 5209: { } 5209: 5209: 5209: 5209: 5209: void 5209: reset() 5209: { _M_nd.reset(); } 5209: 5209: 5209: 5209: 5209: _RealType 5209: m() const 5209: { return _M_param.m(); } 5209: 5209: _RealType 5209: s() const 5209: { return _M_param.s(); } 5209: 5209: 5209: 5209: 5209: param_type 5209: param() const 5209: { return _M_param; } 5209: 5209: 5209: 5209: 5209: 5209: void 5209: param(const param_type& __param) 5209: { _M_param = __param; } 5209: 5209: 5209: 5209: 5209: result_type 5209: min() const 5209: { return result_type(0); } 5209: 5209: 5209: 5209: 5209: result_type 5209: max() const 5209: { return std::numeric_limits::max(); } 5209: 5209: 5209: 5209: 5209: template 5209: result_type 5209: operator()(_UniformRandomNumberGenerator& __urng) 5209: { return this->operator()(__urng, _M_param); } 5209: 5209: template 5209: result_type 5209: operator()(_UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { return std::exp(__p.s() * _M_nd(__urng) + __p.m()); } 5209: 5209: template 5209: void 5209: __generate(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng) 5209: { this->__generate(__f, __t, __urng, _M_param); } 5209: 5209: template 5209: void 5209: __generate(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { this->__generate_impl(__f, __t, __urng, __p); } 5209: 5209: template 5209: void 5209: __generate(result_type* __f, result_type* __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { this->__generate_impl(__f, __t, __urng, __p); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: friend bool 5209: operator==(const lognormal_distribution& __d1, 5209: const lognormal_distribution& __d2) 5209: { return (__d1._M_param == __d2._M_param 5209: && __d1._M_nd == __d2._M_nd); } 5209: # 2353 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: friend std::basic_ostream<_CharT, _Traits>& 5209: operator<<(std::basic_ostream<_CharT, _Traits>& __os, 5209: const std::lognormal_distribution<_RealType1>& __x); 5209: # 2368 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: friend std::basic_istream<_CharT, _Traits>& 5209: operator>>(std::basic_istream<_CharT, _Traits>& __is, 5209: std::lognormal_distribution<_RealType1>& __x); 5209: 5209: private: 5209: template 5209: void 5209: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p); 5209: 5209: param_type _M_param; 5209: 5209: std::normal_distribution _M_nd; 5209: }; 5209: 5209: 5209: 5209: 5209: template 5209: inline bool 5209: operator!=(const std::lognormal_distribution<_RealType>& __d1, 5209: const std::lognormal_distribution<_RealType>& __d2) 5209: { return !(__d1 == __d2); } 5209: # 2405 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: class gamma_distribution 5209: { 5209: static_assert(std::is_floating_point<_RealType>::value, 5209: "result_type must be a floating point type"); 5209: 5209: public: 5209: 5209: typedef _RealType result_type; 5209: 5209: 5209: struct param_type 5209: { 5209: typedef gamma_distribution<_RealType> distribution_type; 5209: friend class gamma_distribution<_RealType>; 5209: 5209: param_type() : param_type(1.0) { } 5209: 5209: explicit 5209: param_type(_RealType __alpha_val, _RealType __beta_val = _RealType(1)) 5209: : _M_alpha(__alpha_val), _M_beta(__beta_val) 5209: { 5209: ; 5209: _M_initialize(); 5209: } 5209: 5209: _RealType 5209: alpha() const 5209: { return _M_alpha; } 5209: 5209: _RealType 5209: beta() const 5209: { return _M_beta; } 5209: 5209: friend bool 5209: operator==(const param_type& __p1, const param_type& __p2) 5209: { return (__p1._M_alpha == __p2._M_alpha 5209: && __p1._M_beta == __p2._M_beta); } 5209: 5209: friend bool 5209: operator!=(const param_type& __p1, const param_type& __p2) 5209: { return !(__p1 == __p2); } 5209: 5209: private: 5209: void 5209: _M_initialize(); 5209: 5209: _RealType _M_alpha; 5209: _RealType _M_beta; 5209: 5209: _RealType _M_malpha, _M_a2; 5209: }; 5209: 5209: public: 5209: 5209: 5209: 5209: gamma_distribution() : gamma_distribution(1.0) { } 5209: 5209: 5209: 5209: 5209: 5209: explicit 5209: gamma_distribution(_RealType __alpha_val, 5209: _RealType __beta_val = _RealType(1)) 5209: : _M_param(__alpha_val, __beta_val), _M_nd() 5209: { } 5209: 5209: explicit 5209: gamma_distribution(const param_type& __p) 5209: : _M_param(__p), _M_nd() 5209: { } 5209: 5209: 5209: 5209: 5209: void 5209: reset() 5209: { _M_nd.reset(); } 5209: 5209: 5209: 5209: 5209: _RealType 5209: alpha() const 5209: { return _M_param.alpha(); } 5209: 5209: 5209: 5209: 5209: _RealType 5209: beta() const 5209: { return _M_param.beta(); } 5209: 5209: 5209: 5209: 5209: param_type 5209: param() const 5209: { return _M_param; } 5209: 5209: 5209: 5209: 5209: 5209: void 5209: param(const param_type& __param) 5209: { _M_param = __param; } 5209: 5209: 5209: 5209: 5209: result_type 5209: min() const 5209: { return result_type(0); } 5209: 5209: 5209: 5209: 5209: result_type 5209: max() const 5209: { return std::numeric_limits::max(); } 5209: 5209: 5209: 5209: 5209: template 5209: result_type 5209: operator()(_UniformRandomNumberGenerator& __urng) 5209: { return this->operator()(__urng, _M_param); } 5209: 5209: template 5209: result_type 5209: operator()(_UniformRandomNumberGenerator& __urng, 5209: const param_type& __p); 5209: 5209: template 5209: void 5209: __generate(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng) 5209: { this->__generate(__f, __t, __urng, _M_param); } 5209: 5209: template 5209: void 5209: __generate(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { this->__generate_impl(__f, __t, __urng, __p); } 5209: 5209: template 5209: void 5209: __generate(result_type* __f, result_type* __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { this->__generate_impl(__f, __t, __urng, __p); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: friend bool 5209: operator==(const gamma_distribution& __d1, 5209: const gamma_distribution& __d2) 5209: { return (__d1._M_param == __d2._M_param 5209: && __d1._M_nd == __d2._M_nd); } 5209: # 2585 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: friend std::basic_ostream<_CharT, _Traits>& 5209: operator<<(std::basic_ostream<_CharT, _Traits>& __os, 5209: const std::gamma_distribution<_RealType1>& __x); 5209: # 2599 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: friend std::basic_istream<_CharT, _Traits>& 5209: operator>>(std::basic_istream<_CharT, _Traits>& __is, 5209: std::gamma_distribution<_RealType1>& __x); 5209: 5209: private: 5209: template 5209: void 5209: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p); 5209: 5209: param_type _M_param; 5209: 5209: std::normal_distribution _M_nd; 5209: }; 5209: 5209: 5209: 5209: 5209: template 5209: inline bool 5209: operator!=(const std::gamma_distribution<_RealType>& __d1, 5209: const std::gamma_distribution<_RealType>& __d2) 5209: { return !(__d1 == __d2); } 5209: # 2633 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: class chi_squared_distribution 5209: { 5209: static_assert(std::is_floating_point<_RealType>::value, 5209: "result_type must be a floating point type"); 5209: 5209: public: 5209: 5209: typedef _RealType result_type; 5209: 5209: 5209: struct param_type 5209: { 5209: typedef chi_squared_distribution<_RealType> distribution_type; 5209: 5209: param_type() : param_type(1) { } 5209: 5209: explicit 5209: param_type(_RealType __n) 5209: : _M_n(__n) 5209: { } 5209: 5209: _RealType 5209: n() const 5209: { return _M_n; } 5209: 5209: friend bool 5209: operator==(const param_type& __p1, const param_type& __p2) 5209: { return __p1._M_n == __p2._M_n; } 5209: 5209: friend bool 5209: operator!=(const param_type& __p1, const param_type& __p2) 5209: { return !(__p1 == __p2); } 5209: 5209: private: 5209: _RealType _M_n; 5209: }; 5209: 5209: chi_squared_distribution() : chi_squared_distribution(1) { } 5209: 5209: explicit 5209: chi_squared_distribution(_RealType __n) 5209: : _M_param(__n), _M_gd(__n / 2) 5209: { } 5209: 5209: explicit 5209: chi_squared_distribution(const param_type& __p) 5209: : _M_param(__p), _M_gd(__p.n() / 2) 5209: { } 5209: 5209: 5209: 5209: 5209: void 5209: reset() 5209: { _M_gd.reset(); } 5209: 5209: 5209: 5209: 5209: _RealType 5209: n() const 5209: { return _M_param.n(); } 5209: 5209: 5209: 5209: 5209: param_type 5209: param() const 5209: { return _M_param; } 5209: 5209: 5209: 5209: 5209: 5209: void 5209: param(const param_type& __param) 5209: { 5209: _M_param = __param; 5209: typedef typename std::gamma_distribution::param_type 5209: param_type; 5209: _M_gd.param(param_type{__param.n() / 2}); 5209: } 5209: 5209: 5209: 5209: 5209: result_type 5209: min() const 5209: { return result_type(0); } 5209: 5209: 5209: 5209: 5209: result_type 5209: max() const 5209: { return std::numeric_limits::max(); } 5209: 5209: 5209: 5209: 5209: template 5209: result_type 5209: operator()(_UniformRandomNumberGenerator& __urng) 5209: { return 2 * _M_gd(__urng); } 5209: 5209: template 5209: result_type 5209: operator()(_UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { 5209: typedef typename std::gamma_distribution::param_type 5209: param_type; 5209: return 2 * _M_gd(__urng, param_type(__p.n() / 2)); 5209: } 5209: 5209: template 5209: void 5209: __generate(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng) 5209: { this->__generate_impl(__f, __t, __urng); } 5209: 5209: template 5209: void 5209: __generate(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { typename std::gamma_distribution::param_type 5209: __p2(__p.n() / 2); 5209: this->__generate_impl(__f, __t, __urng, __p2); } 5209: 5209: template 5209: void 5209: __generate(result_type* __f, result_type* __t, 5209: _UniformRandomNumberGenerator& __urng) 5209: { this->__generate_impl(__f, __t, __urng); } 5209: 5209: template 5209: void 5209: __generate(result_type* __f, result_type* __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { typename std::gamma_distribution::param_type 5209: __p2(__p.n() / 2); 5209: this->__generate_impl(__f, __t, __urng, __p2); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: friend bool 5209: operator==(const chi_squared_distribution& __d1, 5209: const chi_squared_distribution& __d2) 5209: { return __d1._M_param == __d2._M_param && __d1._M_gd == __d2._M_gd; } 5209: # 2801 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: friend std::basic_ostream<_CharT, _Traits>& 5209: operator<<(std::basic_ostream<_CharT, _Traits>& __os, 5209: const std::chi_squared_distribution<_RealType1>& __x); 5209: # 2816 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: friend std::basic_istream<_CharT, _Traits>& 5209: operator>>(std::basic_istream<_CharT, _Traits>& __is, 5209: std::chi_squared_distribution<_RealType1>& __x); 5209: 5209: private: 5209: template 5209: void 5209: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng); 5209: 5209: template 5209: void 5209: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const typename 5209: std::gamma_distribution::param_type& __p); 5209: 5209: param_type _M_param; 5209: 5209: std::gamma_distribution _M_gd; 5209: }; 5209: 5209: 5209: 5209: 5209: template 5209: inline bool 5209: operator!=(const std::chi_squared_distribution<_RealType>& __d1, 5209: const std::chi_squared_distribution<_RealType>& __d2) 5209: { return !(__d1 == __d2); } 5209: # 2857 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: class cauchy_distribution 5209: { 5209: static_assert(std::is_floating_point<_RealType>::value, 5209: "result_type must be a floating point type"); 5209: 5209: public: 5209: 5209: typedef _RealType result_type; 5209: 5209: 5209: struct param_type 5209: { 5209: typedef cauchy_distribution<_RealType> distribution_type; 5209: 5209: param_type() : param_type(0) { } 5209: 5209: explicit 5209: param_type(_RealType __a, _RealType __b = _RealType(1)) 5209: : _M_a(__a), _M_b(__b) 5209: { } 5209: 5209: _RealType 5209: a() const 5209: { return _M_a; } 5209: 5209: _RealType 5209: b() const 5209: { return _M_b; } 5209: 5209: friend bool 5209: operator==(const param_type& __p1, const param_type& __p2) 5209: { return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; } 5209: 5209: friend bool 5209: operator!=(const param_type& __p1, const param_type& __p2) 5209: { return !(__p1 == __p2); } 5209: 5209: private: 5209: _RealType _M_a; 5209: _RealType _M_b; 5209: }; 5209: 5209: cauchy_distribution() : cauchy_distribution(0.0) { } 5209: 5209: explicit 5209: cauchy_distribution(_RealType __a, _RealType __b = 1.0) 5209: : _M_param(__a, __b) 5209: { } 5209: 5209: explicit 5209: cauchy_distribution(const param_type& __p) 5209: : _M_param(__p) 5209: { } 5209: 5209: 5209: 5209: 5209: void 5209: reset() 5209: { } 5209: 5209: 5209: 5209: 5209: _RealType 5209: a() const 5209: { return _M_param.a(); } 5209: 5209: _RealType 5209: b() const 5209: { return _M_param.b(); } 5209: 5209: 5209: 5209: 5209: param_type 5209: param() const 5209: { return _M_param; } 5209: 5209: 5209: 5209: 5209: 5209: void 5209: param(const param_type& __param) 5209: { _M_param = __param; } 5209: 5209: 5209: 5209: 5209: result_type 5209: min() const 5209: { return std::numeric_limits::lowest(); } 5209: 5209: 5209: 5209: 5209: result_type 5209: max() const 5209: { return std::numeric_limits::max(); } 5209: 5209: 5209: 5209: 5209: template 5209: result_type 5209: operator()(_UniformRandomNumberGenerator& __urng) 5209: { return this->operator()(__urng, _M_param); } 5209: 5209: template 5209: result_type 5209: operator()(_UniformRandomNumberGenerator& __urng, 5209: const param_type& __p); 5209: 5209: template 5209: void 5209: __generate(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng) 5209: { this->__generate(__f, __t, __urng, _M_param); } 5209: 5209: template 5209: void 5209: __generate(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { this->__generate_impl(__f, __t, __urng, __p); } 5209: 5209: template 5209: void 5209: __generate(result_type* __f, result_type* __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { this->__generate_impl(__f, __t, __urng, __p); } 5209: 5209: 5209: 5209: 5209: 5209: friend bool 5209: operator==(const cauchy_distribution& __d1, 5209: const cauchy_distribution& __d2) 5209: { return __d1._M_param == __d2._M_param; } 5209: 5209: private: 5209: template 5209: void 5209: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p); 5209: 5209: param_type _M_param; 5209: }; 5209: 5209: 5209: 5209: 5209: 5209: template 5209: inline bool 5209: operator!=(const std::cauchy_distribution<_RealType>& __d1, 5209: const std::cauchy_distribution<_RealType>& __d2) 5209: { return !(__d1 == __d2); } 5209: # 3034 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: std::basic_ostream<_CharT, _Traits>& 5209: operator<<(std::basic_ostream<_CharT, _Traits>& __os, 5209: const std::cauchy_distribution<_RealType>& __x); 5209: # 3049 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: std::basic_istream<_CharT, _Traits>& 5209: operator>>(std::basic_istream<_CharT, _Traits>& __is, 5209: std::cauchy_distribution<_RealType>& __x); 5209: # 3065 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: class fisher_f_distribution 5209: { 5209: static_assert(std::is_floating_point<_RealType>::value, 5209: "result_type must be a floating point type"); 5209: 5209: public: 5209: 5209: typedef _RealType result_type; 5209: 5209: 5209: struct param_type 5209: { 5209: typedef fisher_f_distribution<_RealType> distribution_type; 5209: 5209: param_type() : param_type(1) { } 5209: 5209: explicit 5209: param_type(_RealType __m, _RealType __n = _RealType(1)) 5209: : _M_m(__m), _M_n(__n) 5209: { } 5209: 5209: _RealType 5209: m() const 5209: { return _M_m; } 5209: 5209: _RealType 5209: n() const 5209: { return _M_n; } 5209: 5209: friend bool 5209: operator==(const param_type& __p1, const param_type& __p2) 5209: { return __p1._M_m == __p2._M_m && __p1._M_n == __p2._M_n; } 5209: 5209: friend bool 5209: operator!=(const param_type& __p1, const param_type& __p2) 5209: { return !(__p1 == __p2); } 5209: 5209: private: 5209: _RealType _M_m; 5209: _RealType _M_n; 5209: }; 5209: 5209: fisher_f_distribution() : fisher_f_distribution(1.0) { } 5209: 5209: explicit 5209: fisher_f_distribution(_RealType __m, 5209: _RealType __n = _RealType(1)) 5209: : _M_param(__m, __n), _M_gd_x(__m / 2), _M_gd_y(__n / 2) 5209: { } 5209: 5209: explicit 5209: fisher_f_distribution(const param_type& __p) 5209: : _M_param(__p), _M_gd_x(__p.m() / 2), _M_gd_y(__p.n() / 2) 5209: { } 5209: 5209: 5209: 5209: 5209: void 5209: reset() 5209: { 5209: _M_gd_x.reset(); 5209: _M_gd_y.reset(); 5209: } 5209: 5209: 5209: 5209: 5209: _RealType 5209: m() const 5209: { return _M_param.m(); } 5209: 5209: _RealType 5209: n() const 5209: { return _M_param.n(); } 5209: 5209: 5209: 5209: 5209: param_type 5209: param() const 5209: { return _M_param; } 5209: 5209: 5209: 5209: 5209: 5209: void 5209: param(const param_type& __param) 5209: { _M_param = __param; } 5209: 5209: 5209: 5209: 5209: result_type 5209: min() const 5209: { return result_type(0); } 5209: 5209: 5209: 5209: 5209: result_type 5209: max() const 5209: { return std::numeric_limits::max(); } 5209: 5209: 5209: 5209: 5209: template 5209: result_type 5209: operator()(_UniformRandomNumberGenerator& __urng) 5209: { return (_M_gd_x(__urng) * n()) / (_M_gd_y(__urng) * m()); } 5209: 5209: template 5209: result_type 5209: operator()(_UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { 5209: typedef typename std::gamma_distribution::param_type 5209: param_type; 5209: return ((_M_gd_x(__urng, param_type(__p.m() / 2)) * n()) 5209: / (_M_gd_y(__urng, param_type(__p.n() / 2)) * m())); 5209: } 5209: 5209: template 5209: void 5209: __generate(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng) 5209: { this->__generate_impl(__f, __t, __urng); } 5209: 5209: template 5209: void 5209: __generate(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { this->__generate_impl(__f, __t, __urng, __p); } 5209: 5209: template 5209: void 5209: __generate(result_type* __f, result_type* __t, 5209: _UniformRandomNumberGenerator& __urng) 5209: { this->__generate_impl(__f, __t, __urng); } 5209: 5209: template 5209: void 5209: __generate(result_type* __f, result_type* __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { this->__generate_impl(__f, __t, __urng, __p); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: friend bool 5209: operator==(const fisher_f_distribution& __d1, 5209: const fisher_f_distribution& __d2) 5209: { return (__d1._M_param == __d2._M_param 5209: && __d1._M_gd_x == __d2._M_gd_x 5209: && __d1._M_gd_y == __d2._M_gd_y); } 5209: # 3240 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: friend std::basic_ostream<_CharT, _Traits>& 5209: operator<<(std::basic_ostream<_CharT, _Traits>& __os, 5209: const std::fisher_f_distribution<_RealType1>& __x); 5209: # 3255 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: friend std::basic_istream<_CharT, _Traits>& 5209: operator>>(std::basic_istream<_CharT, _Traits>& __is, 5209: std::fisher_f_distribution<_RealType1>& __x); 5209: 5209: private: 5209: template 5209: void 5209: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng); 5209: 5209: template 5209: void 5209: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p); 5209: 5209: param_type _M_param; 5209: 5209: std::gamma_distribution _M_gd_x, _M_gd_y; 5209: }; 5209: 5209: 5209: 5209: 5209: template 5209: inline bool 5209: operator!=(const std::fisher_f_distribution<_RealType>& __d1, 5209: const std::fisher_f_distribution<_RealType>& __d2) 5209: { return !(__d1 == __d2); } 5209: # 3297 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: class student_t_distribution 5209: { 5209: static_assert(std::is_floating_point<_RealType>::value, 5209: "result_type must be a floating point type"); 5209: 5209: public: 5209: 5209: typedef _RealType result_type; 5209: 5209: 5209: struct param_type 5209: { 5209: typedef student_t_distribution<_RealType> distribution_type; 5209: 5209: param_type() : param_type(1) { } 5209: 5209: explicit 5209: param_type(_RealType __n) 5209: : _M_n(__n) 5209: { } 5209: 5209: _RealType 5209: n() const 5209: { return _M_n; } 5209: 5209: friend bool 5209: operator==(const param_type& __p1, const param_type& __p2) 5209: { return __p1._M_n == __p2._M_n; } 5209: 5209: friend bool 5209: operator!=(const param_type& __p1, const param_type& __p2) 5209: { return !(__p1 == __p2); } 5209: 5209: private: 5209: _RealType _M_n; 5209: }; 5209: 5209: student_t_distribution() : student_t_distribution(1.0) { } 5209: 5209: explicit 5209: student_t_distribution(_RealType __n) 5209: : _M_param(__n), _M_nd(), _M_gd(__n / 2, 2) 5209: { } 5209: 5209: explicit 5209: student_t_distribution(const param_type& __p) 5209: : _M_param(__p), _M_nd(), _M_gd(__p.n() / 2, 2) 5209: { } 5209: 5209: 5209: 5209: 5209: void 5209: reset() 5209: { 5209: _M_nd.reset(); 5209: _M_gd.reset(); 5209: } 5209: 5209: 5209: 5209: 5209: _RealType 5209: n() const 5209: { return _M_param.n(); } 5209: 5209: 5209: 5209: 5209: param_type 5209: param() const 5209: { return _M_param; } 5209: 5209: 5209: 5209: 5209: 5209: void 5209: param(const param_type& __param) 5209: { _M_param = __param; } 5209: 5209: 5209: 5209: 5209: result_type 5209: min() const 5209: { return std::numeric_limits::lowest(); } 5209: 5209: 5209: 5209: 5209: result_type 5209: max() const 5209: { return std::numeric_limits::max(); } 5209: 5209: 5209: 5209: 5209: template 5209: result_type 5209: operator()(_UniformRandomNumberGenerator& __urng) 5209: { return _M_nd(__urng) * std::sqrt(n() / _M_gd(__urng)); } 5209: 5209: template 5209: result_type 5209: operator()(_UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { 5209: typedef typename std::gamma_distribution::param_type 5209: param_type; 5209: 5209: const result_type __g = _M_gd(__urng, param_type(__p.n() / 2, 2)); 5209: return _M_nd(__urng) * std::sqrt(__p.n() / __g); 5209: } 5209: 5209: template 5209: void 5209: __generate(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng) 5209: { this->__generate_impl(__f, __t, __urng); } 5209: 5209: template 5209: void 5209: __generate(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { this->__generate_impl(__f, __t, __urng, __p); } 5209: 5209: template 5209: void 5209: __generate(result_type* __f, result_type* __t, 5209: _UniformRandomNumberGenerator& __urng) 5209: { this->__generate_impl(__f, __t, __urng); } 5209: 5209: template 5209: void 5209: __generate(result_type* __f, result_type* __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { this->__generate_impl(__f, __t, __urng, __p); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: friend bool 5209: operator==(const student_t_distribution& __d1, 5209: const student_t_distribution& __d2) 5209: { return (__d1._M_param == __d2._M_param 5209: && __d1._M_nd == __d2._M_nd && __d1._M_gd == __d2._M_gd); } 5209: # 3462 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: friend std::basic_ostream<_CharT, _Traits>& 5209: operator<<(std::basic_ostream<_CharT, _Traits>& __os, 5209: const std::student_t_distribution<_RealType1>& __x); 5209: # 3477 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: friend std::basic_istream<_CharT, _Traits>& 5209: operator>>(std::basic_istream<_CharT, _Traits>& __is, 5209: std::student_t_distribution<_RealType1>& __x); 5209: 5209: private: 5209: template 5209: void 5209: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng); 5209: template 5209: void 5209: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p); 5209: 5209: param_type _M_param; 5209: 5209: std::normal_distribution _M_nd; 5209: std::gamma_distribution _M_gd; 5209: }; 5209: 5209: 5209: 5209: 5209: template 5209: inline bool 5209: operator!=(const std::student_t_distribution<_RealType>& __d1, 5209: const std::student_t_distribution<_RealType>& __d2) 5209: { return !(__d1 == __d2); } 5209: # 3525 "/usr/include/c++/10/bits/random.h" 3 5209: class bernoulli_distribution 5209: { 5209: public: 5209: 5209: typedef bool result_type; 5209: 5209: 5209: struct param_type 5209: { 5209: typedef bernoulli_distribution distribution_type; 5209: 5209: param_type() : param_type(0.5) { } 5209: 5209: explicit 5209: param_type(double __p) 5209: : _M_p(__p) 5209: { 5209: ; 5209: } 5209: 5209: double 5209: p() const 5209: { return _M_p; } 5209: 5209: friend bool 5209: operator==(const param_type& __p1, const param_type& __p2) 5209: { return __p1._M_p == __p2._M_p; } 5209: 5209: friend bool 5209: operator!=(const param_type& __p1, const param_type& __p2) 5209: { return !(__p1 == __p2); } 5209: 5209: private: 5209: double _M_p; 5209: }; 5209: 5209: public: 5209: 5209: 5209: 5209: bernoulli_distribution() : bernoulli_distribution(0.5) { } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: explicit 5209: bernoulli_distribution(double __p) 5209: : _M_param(__p) 5209: { } 5209: 5209: explicit 5209: bernoulli_distribution(const param_type& __p) 5209: : _M_param(__p) 5209: { } 5209: 5209: 5209: 5209: 5209: 5209: 5209: void 5209: reset() { } 5209: 5209: 5209: 5209: 5209: double 5209: p() const 5209: { return _M_param.p(); } 5209: 5209: 5209: 5209: 5209: param_type 5209: param() const 5209: { return _M_param; } 5209: 5209: 5209: 5209: 5209: 5209: void 5209: param(const param_type& __param) 5209: { _M_param = __param; } 5209: 5209: 5209: 5209: 5209: result_type 5209: min() const 5209: { return std::numeric_limits::min(); } 5209: 5209: 5209: 5209: 5209: result_type 5209: max() const 5209: { return std::numeric_limits::max(); } 5209: 5209: 5209: 5209: 5209: template 5209: result_type 5209: operator()(_UniformRandomNumberGenerator& __urng) 5209: { return this->operator()(__urng, _M_param); } 5209: 5209: template 5209: result_type 5209: operator()(_UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { 5209: __detail::_Adaptor<_UniformRandomNumberGenerator, double> 5209: __aurng(__urng); 5209: if ((__aurng() - __aurng.min()) 5209: < __p.p() * (__aurng.max() - __aurng.min())) 5209: return true; 5209: return false; 5209: } 5209: 5209: template 5209: void 5209: __generate(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng) 5209: { this->__generate(__f, __t, __urng, _M_param); } 5209: 5209: template 5209: void 5209: __generate(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, const param_type& __p) 5209: { this->__generate_impl(__f, __t, __urng, __p); } 5209: 5209: template 5209: void 5209: __generate(result_type* __f, result_type* __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { this->__generate_impl(__f, __t, __urng, __p); } 5209: 5209: 5209: 5209: 5209: 5209: friend bool 5209: operator==(const bernoulli_distribution& __d1, 5209: const bernoulli_distribution& __d2) 5209: { return __d1._M_param == __d2._M_param; } 5209: 5209: private: 5209: template 5209: void 5209: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p); 5209: 5209: param_type _M_param; 5209: }; 5209: 5209: 5209: 5209: 5209: 5209: inline bool 5209: operator!=(const std::bernoulli_distribution& __d1, 5209: const std::bernoulli_distribution& __d2) 5209: { return !(__d1 == __d2); } 5209: # 3708 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: std::basic_ostream<_CharT, _Traits>& 5209: operator<<(std::basic_ostream<_CharT, _Traits>& __os, 5209: const std::bernoulli_distribution& __x); 5209: # 3722 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: std::basic_istream<_CharT, _Traits>& 5209: operator>>(std::basic_istream<_CharT, _Traits>& __is, 5209: std::bernoulli_distribution& __x) 5209: { 5209: double __p; 5209: __is >> __p; 5209: __x.param(bernoulli_distribution::param_type(__p)); 5209: return __is; 5209: } 5209: # 3741 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: class binomial_distribution 5209: { 5209: static_assert(std::is_integral<_IntType>::value, 5209: "result_type must be an integral type"); 5209: 5209: public: 5209: 5209: typedef _IntType result_type; 5209: 5209: 5209: struct param_type 5209: { 5209: typedef binomial_distribution<_IntType> distribution_type; 5209: friend class binomial_distribution<_IntType>; 5209: 5209: param_type() : param_type(1) { } 5209: 5209: explicit 5209: param_type(_IntType __t, double __p = 0.5) 5209: : _M_t(__t), _M_p(__p) 5209: { 5209: 5209: 5209: ; 5209: _M_initialize(); 5209: } 5209: 5209: _IntType 5209: t() const 5209: { return _M_t; } 5209: 5209: double 5209: p() const 5209: { return _M_p; } 5209: 5209: friend bool 5209: operator==(const param_type& __p1, const param_type& __p2) 5209: { return __p1._M_t == __p2._M_t && __p1._M_p == __p2._M_p; } 5209: 5209: friend bool 5209: operator!=(const param_type& __p1, const param_type& __p2) 5209: { return !(__p1 == __p2); } 5209: 5209: private: 5209: void 5209: _M_initialize(); 5209: 5209: _IntType _M_t; 5209: double _M_p; 5209: 5209: double _M_q; 5209: 5209: double _M_d1, _M_d2, _M_s1, _M_s2, _M_c, 5209: _M_a1, _M_a123, _M_s, _M_lf, _M_lp1p; 5209: 5209: bool _M_easy; 5209: }; 5209: 5209: 5209: 5209: binomial_distribution() : binomial_distribution(1) { } 5209: 5209: explicit 5209: binomial_distribution(_IntType __t, double __p = 0.5) 5209: : _M_param(__t, __p), _M_nd() 5209: { } 5209: 5209: explicit 5209: binomial_distribution(const param_type& __p) 5209: : _M_param(__p), _M_nd() 5209: { } 5209: 5209: 5209: 5209: 5209: void 5209: reset() 5209: { _M_nd.reset(); } 5209: 5209: 5209: 5209: 5209: _IntType 5209: t() const 5209: { return _M_param.t(); } 5209: 5209: 5209: 5209: 5209: double 5209: p() const 5209: { return _M_param.p(); } 5209: 5209: 5209: 5209: 5209: param_type 5209: param() const 5209: { return _M_param; } 5209: 5209: 5209: 5209: 5209: 5209: void 5209: param(const param_type& __param) 5209: { _M_param = __param; } 5209: 5209: 5209: 5209: 5209: result_type 5209: min() const 5209: { return 0; } 5209: 5209: 5209: 5209: 5209: result_type 5209: max() const 5209: { return _M_param.t(); } 5209: 5209: 5209: 5209: 5209: template 5209: result_type 5209: operator()(_UniformRandomNumberGenerator& __urng) 5209: { return this->operator()(__urng, _M_param); } 5209: 5209: template 5209: result_type 5209: operator()(_UniformRandomNumberGenerator& __urng, 5209: const param_type& __p); 5209: 5209: template 5209: void 5209: __generate(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng) 5209: { this->__generate(__f, __t, __urng, _M_param); } 5209: 5209: template 5209: void 5209: __generate(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { this->__generate_impl(__f, __t, __urng, __p); } 5209: 5209: template 5209: void 5209: __generate(result_type* __f, result_type* __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { this->__generate_impl(__f, __t, __urng, __p); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: friend bool 5209: operator==(const binomial_distribution& __d1, 5209: const binomial_distribution& __d2) 5209: 5209: { return __d1._M_param == __d2._M_param && __d1._M_nd == __d2._M_nd; } 5209: # 3923 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: friend std::basic_ostream<_CharT, _Traits>& 5209: operator<<(std::basic_ostream<_CharT, _Traits>& __os, 5209: const std::binomial_distribution<_IntType1>& __x); 5209: # 3939 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: friend std::basic_istream<_CharT, _Traits>& 5209: operator>>(std::basic_istream<_CharT, _Traits>& __is, 5209: std::binomial_distribution<_IntType1>& __x); 5209: 5209: private: 5209: template 5209: void 5209: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p); 5209: 5209: template 5209: result_type 5209: _M_waiting(_UniformRandomNumberGenerator& __urng, 5209: _IntType __t, double __q); 5209: 5209: param_type _M_param; 5209: 5209: 5209: std::normal_distribution _M_nd; 5209: }; 5209: 5209: 5209: 5209: 5209: template 5209: inline bool 5209: operator!=(const std::binomial_distribution<_IntType>& __d1, 5209: const std::binomial_distribution<_IntType>& __d2) 5209: { return !(__d1 == __d2); } 5209: # 3981 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: class geometric_distribution 5209: { 5209: static_assert(std::is_integral<_IntType>::value, 5209: "result_type must be an integral type"); 5209: 5209: public: 5209: 5209: typedef _IntType result_type; 5209: 5209: 5209: struct param_type 5209: { 5209: typedef geometric_distribution<_IntType> distribution_type; 5209: friend class geometric_distribution<_IntType>; 5209: 5209: param_type() : param_type(0.5) { } 5209: 5209: explicit 5209: param_type(double __p) 5209: : _M_p(__p) 5209: { 5209: ; 5209: _M_initialize(); 5209: } 5209: 5209: double 5209: p() const 5209: { return _M_p; } 5209: 5209: friend bool 5209: operator==(const param_type& __p1, const param_type& __p2) 5209: { return __p1._M_p == __p2._M_p; } 5209: 5209: friend bool 5209: operator!=(const param_type& __p1, const param_type& __p2) 5209: { return !(__p1 == __p2); } 5209: 5209: private: 5209: void 5209: _M_initialize() 5209: { _M_log_1_p = std::log(1.0 - _M_p); } 5209: 5209: double _M_p; 5209: 5209: double _M_log_1_p; 5209: }; 5209: 5209: 5209: 5209: geometric_distribution() : geometric_distribution(0.5) { } 5209: 5209: explicit 5209: geometric_distribution(double __p) 5209: : _M_param(__p) 5209: { } 5209: 5209: explicit 5209: geometric_distribution(const param_type& __p) 5209: : _M_param(__p) 5209: { } 5209: 5209: 5209: 5209: 5209: 5209: 5209: void 5209: reset() { } 5209: 5209: 5209: 5209: 5209: double 5209: p() const 5209: { return _M_param.p(); } 5209: 5209: 5209: 5209: 5209: param_type 5209: param() const 5209: { return _M_param; } 5209: 5209: 5209: 5209: 5209: 5209: void 5209: param(const param_type& __param) 5209: { _M_param = __param; } 5209: 5209: 5209: 5209: 5209: result_type 5209: min() const 5209: { return 0; } 5209: 5209: 5209: 5209: 5209: result_type 5209: max() const 5209: { return std::numeric_limits::max(); } 5209: 5209: 5209: 5209: 5209: template 5209: result_type 5209: operator()(_UniformRandomNumberGenerator& __urng) 5209: { return this->operator()(__urng, _M_param); } 5209: 5209: template 5209: result_type 5209: operator()(_UniformRandomNumberGenerator& __urng, 5209: const param_type& __p); 5209: 5209: template 5209: void 5209: __generate(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng) 5209: { this->__generate(__f, __t, __urng, _M_param); } 5209: 5209: template 5209: void 5209: __generate(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { this->__generate_impl(__f, __t, __urng, __p); } 5209: 5209: template 5209: void 5209: __generate(result_type* __f, result_type* __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { this->__generate_impl(__f, __t, __urng, __p); } 5209: 5209: 5209: 5209: 5209: 5209: friend bool 5209: operator==(const geometric_distribution& __d1, 5209: const geometric_distribution& __d2) 5209: { return __d1._M_param == __d2._M_param; } 5209: 5209: private: 5209: template 5209: void 5209: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p); 5209: 5209: param_type _M_param; 5209: }; 5209: 5209: 5209: 5209: 5209: 5209: template 5209: inline bool 5209: operator!=(const std::geometric_distribution<_IntType>& __d1, 5209: const std::geometric_distribution<_IntType>& __d2) 5209: { return !(__d1 == __d2); } 5209: # 4162 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: std::basic_ostream<_CharT, _Traits>& 5209: operator<<(std::basic_ostream<_CharT, _Traits>& __os, 5209: const std::geometric_distribution<_IntType>& __x); 5209: # 4177 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: std::basic_istream<_CharT, _Traits>& 5209: operator>>(std::basic_istream<_CharT, _Traits>& __is, 5209: std::geometric_distribution<_IntType>& __x); 5209: # 4191 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: class negative_binomial_distribution 5209: { 5209: static_assert(std::is_integral<_IntType>::value, 5209: "result_type must be an integral type"); 5209: 5209: public: 5209: 5209: typedef _IntType result_type; 5209: 5209: 5209: struct param_type 5209: { 5209: typedef negative_binomial_distribution<_IntType> distribution_type; 5209: 5209: param_type() : param_type(1) { } 5209: 5209: explicit 5209: param_type(_IntType __k, double __p = 0.5) 5209: : _M_k(__k), _M_p(__p) 5209: { 5209: ; 5209: } 5209: 5209: _IntType 5209: k() const 5209: { return _M_k; } 5209: 5209: double 5209: p() const 5209: { return _M_p; } 5209: 5209: friend bool 5209: operator==(const param_type& __p1, const param_type& __p2) 5209: { return __p1._M_k == __p2._M_k && __p1._M_p == __p2._M_p; } 5209: 5209: friend bool 5209: operator!=(const param_type& __p1, const param_type& __p2) 5209: { return !(__p1 == __p2); } 5209: 5209: private: 5209: _IntType _M_k; 5209: double _M_p; 5209: }; 5209: 5209: negative_binomial_distribution() : negative_binomial_distribution(1) { } 5209: 5209: explicit 5209: negative_binomial_distribution(_IntType __k, double __p = 0.5) 5209: : _M_param(__k, __p), _M_gd(__k, (1.0 - __p) / __p) 5209: { } 5209: 5209: explicit 5209: negative_binomial_distribution(const param_type& __p) 5209: : _M_param(__p), _M_gd(__p.k(), (1.0 - __p.p()) / __p.p()) 5209: { } 5209: 5209: 5209: 5209: 5209: void 5209: reset() 5209: { _M_gd.reset(); } 5209: 5209: 5209: 5209: 5209: _IntType 5209: k() const 5209: { return _M_param.k(); } 5209: 5209: 5209: 5209: 5209: double 5209: p() const 5209: { return _M_param.p(); } 5209: 5209: 5209: 5209: 5209: param_type 5209: param() const 5209: { return _M_param; } 5209: 5209: 5209: 5209: 5209: 5209: void 5209: param(const param_type& __param) 5209: { _M_param = __param; } 5209: 5209: 5209: 5209: 5209: result_type 5209: min() const 5209: { return result_type(0); } 5209: 5209: 5209: 5209: 5209: result_type 5209: max() const 5209: { return std::numeric_limits::max(); } 5209: 5209: 5209: 5209: 5209: template 5209: result_type 5209: operator()(_UniformRandomNumberGenerator& __urng); 5209: 5209: template 5209: result_type 5209: operator()(_UniformRandomNumberGenerator& __urng, 5209: const param_type& __p); 5209: 5209: template 5209: void 5209: __generate(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng) 5209: { this->__generate_impl(__f, __t, __urng); } 5209: 5209: template 5209: void 5209: __generate(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { this->__generate_impl(__f, __t, __urng, __p); } 5209: 5209: template 5209: void 5209: __generate(result_type* __f, result_type* __t, 5209: _UniformRandomNumberGenerator& __urng) 5209: { this->__generate_impl(__f, __t, __urng); } 5209: 5209: template 5209: void 5209: __generate(result_type* __f, result_type* __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { this->__generate_impl(__f, __t, __urng, __p); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: friend bool 5209: operator==(const negative_binomial_distribution& __d1, 5209: const negative_binomial_distribution& __d2) 5209: { return __d1._M_param == __d2._M_param && __d1._M_gd == __d2._M_gd; } 5209: # 4359 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: friend std::basic_ostream<_CharT, _Traits>& 5209: operator<<(std::basic_ostream<_CharT, _Traits>& __os, 5209: const std::negative_binomial_distribution<_IntType1>& __x); 5209: # 4374 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: friend std::basic_istream<_CharT, _Traits>& 5209: operator>>(std::basic_istream<_CharT, _Traits>& __is, 5209: std::negative_binomial_distribution<_IntType1>& __x); 5209: 5209: private: 5209: template 5209: void 5209: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng); 5209: template 5209: void 5209: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p); 5209: 5209: param_type _M_param; 5209: 5209: std::gamma_distribution _M_gd; 5209: }; 5209: 5209: 5209: 5209: 5209: template 5209: inline bool 5209: operator!=(const std::negative_binomial_distribution<_IntType>& __d1, 5209: const std::negative_binomial_distribution<_IntType>& __d2) 5209: { return !(__d1 == __d2); } 5209: # 4422 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: class poisson_distribution 5209: { 5209: static_assert(std::is_integral<_IntType>::value, 5209: "result_type must be an integral type"); 5209: 5209: public: 5209: 5209: typedef _IntType result_type; 5209: 5209: 5209: struct param_type 5209: { 5209: typedef poisson_distribution<_IntType> distribution_type; 5209: friend class poisson_distribution<_IntType>; 5209: 5209: param_type() : param_type(1.0) { } 5209: 5209: explicit 5209: param_type(double __mean) 5209: : _M_mean(__mean) 5209: { 5209: ; 5209: _M_initialize(); 5209: } 5209: 5209: double 5209: mean() const 5209: { return _M_mean; } 5209: 5209: friend bool 5209: operator==(const param_type& __p1, const param_type& __p2) 5209: { return __p1._M_mean == __p2._M_mean; } 5209: 5209: friend bool 5209: operator!=(const param_type& __p1, const param_type& __p2) 5209: { return !(__p1 == __p2); } 5209: 5209: private: 5209: 5209: void 5209: _M_initialize(); 5209: 5209: double _M_mean; 5209: 5209: double _M_lm_thr; 5209: 5209: double _M_lfm, _M_sm, _M_d, _M_scx, _M_1cx, _M_c2b, _M_cb; 5209: 5209: }; 5209: 5209: 5209: 5209: poisson_distribution() : poisson_distribution(1.0) { } 5209: 5209: explicit 5209: poisson_distribution(double __mean) 5209: : _M_param(__mean), _M_nd() 5209: { } 5209: 5209: explicit 5209: poisson_distribution(const param_type& __p) 5209: : _M_param(__p), _M_nd() 5209: { } 5209: 5209: 5209: 5209: 5209: void 5209: reset() 5209: { _M_nd.reset(); } 5209: 5209: 5209: 5209: 5209: double 5209: mean() const 5209: { return _M_param.mean(); } 5209: 5209: 5209: 5209: 5209: param_type 5209: param() const 5209: { return _M_param; } 5209: 5209: 5209: 5209: 5209: 5209: void 5209: param(const param_type& __param) 5209: { _M_param = __param; } 5209: 5209: 5209: 5209: 5209: result_type 5209: min() const 5209: { return 0; } 5209: 5209: 5209: 5209: 5209: result_type 5209: max() const 5209: { return std::numeric_limits::max(); } 5209: 5209: 5209: 5209: 5209: template 5209: result_type 5209: operator()(_UniformRandomNumberGenerator& __urng) 5209: { return this->operator()(__urng, _M_param); } 5209: 5209: template 5209: result_type 5209: operator()(_UniformRandomNumberGenerator& __urng, 5209: const param_type& __p); 5209: 5209: template 5209: void 5209: __generate(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng) 5209: { this->__generate(__f, __t, __urng, _M_param); } 5209: 5209: template 5209: void 5209: __generate(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { this->__generate_impl(__f, __t, __urng, __p); } 5209: 5209: template 5209: void 5209: __generate(result_type* __f, result_type* __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { this->__generate_impl(__f, __t, __urng, __p); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: friend bool 5209: operator==(const poisson_distribution& __d1, 5209: const poisson_distribution& __d2) 5209: 5209: { return __d1._M_param == __d2._M_param && __d1._M_nd == __d2._M_nd; } 5209: # 4589 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: friend std::basic_ostream<_CharT, _Traits>& 5209: operator<<(std::basic_ostream<_CharT, _Traits>& __os, 5209: const std::poisson_distribution<_IntType1>& __x); 5209: # 4604 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: friend std::basic_istream<_CharT, _Traits>& 5209: operator>>(std::basic_istream<_CharT, _Traits>& __is, 5209: std::poisson_distribution<_IntType1>& __x); 5209: 5209: private: 5209: template 5209: void 5209: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p); 5209: 5209: param_type _M_param; 5209: 5209: 5209: std::normal_distribution _M_nd; 5209: }; 5209: 5209: 5209: 5209: 5209: template 5209: inline bool 5209: operator!=(const std::poisson_distribution<_IntType>& __d1, 5209: const std::poisson_distribution<_IntType>& __d2) 5209: { return !(__d1 == __d2); } 5209: # 4648 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: class exponential_distribution 5209: { 5209: static_assert(std::is_floating_point<_RealType>::value, 5209: "result_type must be a floating point type"); 5209: 5209: public: 5209: 5209: typedef _RealType result_type; 5209: 5209: 5209: struct param_type 5209: { 5209: typedef exponential_distribution<_RealType> distribution_type; 5209: 5209: param_type() : param_type(1.0) { } 5209: 5209: explicit 5209: param_type(_RealType __lambda) 5209: : _M_lambda(__lambda) 5209: { 5209: ; 5209: } 5209: 5209: _RealType 5209: lambda() const 5209: { return _M_lambda; } 5209: 5209: friend bool 5209: operator==(const param_type& __p1, const param_type& __p2) 5209: { return __p1._M_lambda == __p2._M_lambda; } 5209: 5209: friend bool 5209: operator!=(const param_type& __p1, const param_type& __p2) 5209: { return !(__p1 == __p2); } 5209: 5209: private: 5209: _RealType _M_lambda; 5209: }; 5209: 5209: public: 5209: 5209: 5209: 5209: 5209: exponential_distribution() : exponential_distribution(1.0) { } 5209: 5209: 5209: 5209: 5209: 5209: explicit 5209: exponential_distribution(_RealType __lambda) 5209: : _M_param(__lambda) 5209: { } 5209: 5209: explicit 5209: exponential_distribution(const param_type& __p) 5209: : _M_param(__p) 5209: { } 5209: 5209: 5209: 5209: 5209: 5209: 5209: void 5209: reset() { } 5209: 5209: 5209: 5209: 5209: _RealType 5209: lambda() const 5209: { return _M_param.lambda(); } 5209: 5209: 5209: 5209: 5209: param_type 5209: param() const 5209: { return _M_param; } 5209: 5209: 5209: 5209: 5209: 5209: void 5209: param(const param_type& __param) 5209: { _M_param = __param; } 5209: 5209: 5209: 5209: 5209: result_type 5209: min() const 5209: { return result_type(0); } 5209: 5209: 5209: 5209: 5209: result_type 5209: max() const 5209: { return std::numeric_limits::max(); } 5209: 5209: 5209: 5209: 5209: template 5209: result_type 5209: operator()(_UniformRandomNumberGenerator& __urng) 5209: { return this->operator()(__urng, _M_param); } 5209: 5209: template 5209: result_type 5209: operator()(_UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { 5209: __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> 5209: __aurng(__urng); 5209: return -std::log(result_type(1) - __aurng()) / __p.lambda(); 5209: } 5209: 5209: template 5209: void 5209: __generate(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng) 5209: { this->__generate(__f, __t, __urng, _M_param); } 5209: 5209: template 5209: void 5209: __generate(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { this->__generate_impl(__f, __t, __urng, __p); } 5209: 5209: template 5209: void 5209: __generate(result_type* __f, result_type* __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { this->__generate_impl(__f, __t, __urng, __p); } 5209: 5209: 5209: 5209: 5209: 5209: friend bool 5209: operator==(const exponential_distribution& __d1, 5209: const exponential_distribution& __d2) 5209: { return __d1._M_param == __d2._M_param; } 5209: 5209: private: 5209: template 5209: void 5209: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p); 5209: 5209: param_type _M_param; 5209: }; 5209: 5209: 5209: 5209: 5209: 5209: template 5209: inline bool 5209: operator!=(const std::exponential_distribution<_RealType>& __d1, 5209: const std::exponential_distribution<_RealType>& __d2) 5209: { return !(__d1 == __d2); } 5209: # 4833 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: std::basic_ostream<_CharT, _Traits>& 5209: operator<<(std::basic_ostream<_CharT, _Traits>& __os, 5209: const std::exponential_distribution<_RealType>& __x); 5209: # 4848 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: std::basic_istream<_CharT, _Traits>& 5209: operator>>(std::basic_istream<_CharT, _Traits>& __is, 5209: std::exponential_distribution<_RealType>& __x); 5209: # 4863 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: class weibull_distribution 5209: { 5209: static_assert(std::is_floating_point<_RealType>::value, 5209: "result_type must be a floating point type"); 5209: 5209: public: 5209: 5209: typedef _RealType result_type; 5209: 5209: 5209: struct param_type 5209: { 5209: typedef weibull_distribution<_RealType> distribution_type; 5209: 5209: param_type() : param_type(1.0) { } 5209: 5209: explicit 5209: param_type(_RealType __a, _RealType __b = _RealType(1.0)) 5209: : _M_a(__a), _M_b(__b) 5209: { } 5209: 5209: _RealType 5209: a() const 5209: { return _M_a; } 5209: 5209: _RealType 5209: b() const 5209: { return _M_b; } 5209: 5209: friend bool 5209: operator==(const param_type& __p1, const param_type& __p2) 5209: { return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; } 5209: 5209: friend bool 5209: operator!=(const param_type& __p1, const param_type& __p2) 5209: { return !(__p1 == __p2); } 5209: 5209: private: 5209: _RealType _M_a; 5209: _RealType _M_b; 5209: }; 5209: 5209: weibull_distribution() : weibull_distribution(1.0) { } 5209: 5209: explicit 5209: weibull_distribution(_RealType __a, _RealType __b = _RealType(1)) 5209: : _M_param(__a, __b) 5209: { } 5209: 5209: explicit 5209: weibull_distribution(const param_type& __p) 5209: : _M_param(__p) 5209: { } 5209: 5209: 5209: 5209: 5209: void 5209: reset() 5209: { } 5209: 5209: 5209: 5209: 5209: _RealType 5209: a() const 5209: { return _M_param.a(); } 5209: 5209: 5209: 5209: 5209: _RealType 5209: b() const 5209: { return _M_param.b(); } 5209: 5209: 5209: 5209: 5209: param_type 5209: param() const 5209: { return _M_param; } 5209: 5209: 5209: 5209: 5209: 5209: void 5209: param(const param_type& __param) 5209: { _M_param = __param; } 5209: 5209: 5209: 5209: 5209: result_type 5209: min() const 5209: { return result_type(0); } 5209: 5209: 5209: 5209: 5209: result_type 5209: max() const 5209: { return std::numeric_limits::max(); } 5209: 5209: 5209: 5209: 5209: template 5209: result_type 5209: operator()(_UniformRandomNumberGenerator& __urng) 5209: { return this->operator()(__urng, _M_param); } 5209: 5209: template 5209: result_type 5209: operator()(_UniformRandomNumberGenerator& __urng, 5209: const param_type& __p); 5209: 5209: template 5209: void 5209: __generate(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng) 5209: { this->__generate(__f, __t, __urng, _M_param); } 5209: 5209: template 5209: void 5209: __generate(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { this->__generate_impl(__f, __t, __urng, __p); } 5209: 5209: template 5209: void 5209: __generate(result_type* __f, result_type* __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { this->__generate_impl(__f, __t, __urng, __p); } 5209: 5209: 5209: 5209: 5209: 5209: friend bool 5209: operator==(const weibull_distribution& __d1, 5209: const weibull_distribution& __d2) 5209: { return __d1._M_param == __d2._M_param; } 5209: 5209: private: 5209: template 5209: void 5209: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p); 5209: 5209: param_type _M_param; 5209: }; 5209: 5209: 5209: 5209: 5209: 5209: template 5209: inline bool 5209: operator!=(const std::weibull_distribution<_RealType>& __d1, 5209: const std::weibull_distribution<_RealType>& __d2) 5209: { return !(__d1 == __d2); } 5209: # 5043 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: std::basic_ostream<_CharT, _Traits>& 5209: operator<<(std::basic_ostream<_CharT, _Traits>& __os, 5209: const std::weibull_distribution<_RealType>& __x); 5209: # 5058 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: std::basic_istream<_CharT, _Traits>& 5209: operator>>(std::basic_istream<_CharT, _Traits>& __is, 5209: std::weibull_distribution<_RealType>& __x); 5209: # 5073 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: class extreme_value_distribution 5209: { 5209: static_assert(std::is_floating_point<_RealType>::value, 5209: "result_type must be a floating point type"); 5209: 5209: public: 5209: 5209: typedef _RealType result_type; 5209: 5209: 5209: struct param_type 5209: { 5209: typedef extreme_value_distribution<_RealType> distribution_type; 5209: 5209: param_type() : param_type(0.0) { } 5209: 5209: explicit 5209: param_type(_RealType __a, _RealType __b = _RealType(1.0)) 5209: : _M_a(__a), _M_b(__b) 5209: { } 5209: 5209: _RealType 5209: a() const 5209: { return _M_a; } 5209: 5209: _RealType 5209: b() const 5209: { return _M_b; } 5209: 5209: friend bool 5209: operator==(const param_type& __p1, const param_type& __p2) 5209: { return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; } 5209: 5209: friend bool 5209: operator!=(const param_type& __p1, const param_type& __p2) 5209: { return !(__p1 == __p2); } 5209: 5209: private: 5209: _RealType _M_a; 5209: _RealType _M_b; 5209: }; 5209: 5209: extreme_value_distribution() : extreme_value_distribution(0.0) { } 5209: 5209: explicit 5209: extreme_value_distribution(_RealType __a, _RealType __b = _RealType(1)) 5209: : _M_param(__a, __b) 5209: { } 5209: 5209: explicit 5209: extreme_value_distribution(const param_type& __p) 5209: : _M_param(__p) 5209: { } 5209: 5209: 5209: 5209: 5209: void 5209: reset() 5209: { } 5209: 5209: 5209: 5209: 5209: _RealType 5209: a() const 5209: { return _M_param.a(); } 5209: 5209: 5209: 5209: 5209: _RealType 5209: b() const 5209: { return _M_param.b(); } 5209: 5209: 5209: 5209: 5209: param_type 5209: param() const 5209: { return _M_param; } 5209: 5209: 5209: 5209: 5209: 5209: void 5209: param(const param_type& __param) 5209: { _M_param = __param; } 5209: 5209: 5209: 5209: 5209: result_type 5209: min() const 5209: { return std::numeric_limits::lowest(); } 5209: 5209: 5209: 5209: 5209: result_type 5209: max() const 5209: { return std::numeric_limits::max(); } 5209: 5209: 5209: 5209: 5209: template 5209: result_type 5209: operator()(_UniformRandomNumberGenerator& __urng) 5209: { return this->operator()(__urng, _M_param); } 5209: 5209: template 5209: result_type 5209: operator()(_UniformRandomNumberGenerator& __urng, 5209: const param_type& __p); 5209: 5209: template 5209: void 5209: __generate(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng) 5209: { this->__generate(__f, __t, __urng, _M_param); } 5209: 5209: template 5209: void 5209: __generate(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { this->__generate_impl(__f, __t, __urng, __p); } 5209: 5209: template 5209: void 5209: __generate(result_type* __f, result_type* __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { this->__generate_impl(__f, __t, __urng, __p); } 5209: 5209: 5209: 5209: 5209: 5209: friend bool 5209: operator==(const extreme_value_distribution& __d1, 5209: const extreme_value_distribution& __d2) 5209: { return __d1._M_param == __d2._M_param; } 5209: 5209: private: 5209: template 5209: void 5209: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p); 5209: 5209: param_type _M_param; 5209: }; 5209: 5209: 5209: 5209: 5209: 5209: template 5209: inline bool 5209: operator!=(const std::extreme_value_distribution<_RealType>& __d1, 5209: const std::extreme_value_distribution<_RealType>& __d2) 5209: { return !(__d1 == __d2); } 5209: # 5253 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: std::basic_ostream<_CharT, _Traits>& 5209: operator<<(std::basic_ostream<_CharT, _Traits>& __os, 5209: const std::extreme_value_distribution<_RealType>& __x); 5209: # 5268 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: std::basic_istream<_CharT, _Traits>& 5209: operator>>(std::basic_istream<_CharT, _Traits>& __is, 5209: std::extreme_value_distribution<_RealType>& __x); 5209: # 5280 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: class discrete_distribution 5209: { 5209: static_assert(std::is_integral<_IntType>::value, 5209: "result_type must be an integral type"); 5209: 5209: public: 5209: 5209: typedef _IntType result_type; 5209: 5209: 5209: struct param_type 5209: { 5209: typedef discrete_distribution<_IntType> distribution_type; 5209: friend class discrete_distribution<_IntType>; 5209: 5209: param_type() 5209: : _M_prob(), _M_cp() 5209: { } 5209: 5209: template 5209: param_type(_InputIterator __wbegin, 5209: _InputIterator __wend) 5209: : _M_prob(__wbegin, __wend), _M_cp() 5209: { _M_initialize(); } 5209: 5209: param_type(initializer_list __wil) 5209: : _M_prob(__wil.begin(), __wil.end()), _M_cp() 5209: { _M_initialize(); } 5209: 5209: template 5209: param_type(size_t __nw, double __xmin, double __xmax, 5209: _Func __fw); 5209: 5209: 5209: param_type(const param_type&) = default; 5209: param_type& operator=(const param_type&) = default; 5209: 5209: std::vector 5209: probabilities() const 5209: { return _M_prob.empty() ? std::vector(1, 1.0) : _M_prob; } 5209: 5209: friend bool 5209: operator==(const param_type& __p1, const param_type& __p2) 5209: { return __p1._M_prob == __p2._M_prob; } 5209: 5209: friend bool 5209: operator!=(const param_type& __p1, const param_type& __p2) 5209: { return !(__p1 == __p2); } 5209: 5209: private: 5209: void 5209: _M_initialize(); 5209: 5209: std::vector _M_prob; 5209: std::vector _M_cp; 5209: }; 5209: 5209: discrete_distribution() 5209: : _M_param() 5209: { } 5209: 5209: template 5209: discrete_distribution(_InputIterator __wbegin, 5209: _InputIterator __wend) 5209: : _M_param(__wbegin, __wend) 5209: { } 5209: 5209: discrete_distribution(initializer_list __wl) 5209: : _M_param(__wl) 5209: { } 5209: 5209: template 5209: discrete_distribution(size_t __nw, double __xmin, double __xmax, 5209: _Func __fw) 5209: : _M_param(__nw, __xmin, __xmax, __fw) 5209: { } 5209: 5209: explicit 5209: discrete_distribution(const param_type& __p) 5209: : _M_param(__p) 5209: { } 5209: 5209: 5209: 5209: 5209: void 5209: reset() 5209: { } 5209: 5209: 5209: 5209: 5209: std::vector 5209: probabilities() const 5209: { 5209: return _M_param._M_prob.empty() 5209: ? std::vector(1, 1.0) : _M_param._M_prob; 5209: } 5209: 5209: 5209: 5209: 5209: param_type 5209: param() const 5209: { return _M_param; } 5209: 5209: 5209: 5209: 5209: 5209: void 5209: param(const param_type& __param) 5209: { _M_param = __param; } 5209: 5209: 5209: 5209: 5209: result_type 5209: min() const 5209: { return result_type(0); } 5209: 5209: 5209: 5209: 5209: result_type 5209: max() const 5209: { 5209: return _M_param._M_prob.empty() 5209: ? result_type(0) : result_type(_M_param._M_prob.size() - 1); 5209: } 5209: 5209: 5209: 5209: 5209: template 5209: result_type 5209: operator()(_UniformRandomNumberGenerator& __urng) 5209: { return this->operator()(__urng, _M_param); } 5209: 5209: template 5209: result_type 5209: operator()(_UniformRandomNumberGenerator& __urng, 5209: const param_type& __p); 5209: 5209: template 5209: void 5209: __generate(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng) 5209: { this->__generate(__f, __t, __urng, _M_param); } 5209: 5209: template 5209: void 5209: __generate(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { this->__generate_impl(__f, __t, __urng, __p); } 5209: 5209: template 5209: void 5209: __generate(result_type* __f, result_type* __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { this->__generate_impl(__f, __t, __urng, __p); } 5209: 5209: 5209: 5209: 5209: 5209: friend bool 5209: operator==(const discrete_distribution& __d1, 5209: const discrete_distribution& __d2) 5209: { return __d1._M_param == __d2._M_param; } 5209: # 5466 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: friend std::basic_ostream<_CharT, _Traits>& 5209: operator<<(std::basic_ostream<_CharT, _Traits>& __os, 5209: const std::discrete_distribution<_IntType1>& __x); 5209: # 5482 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: friend std::basic_istream<_CharT, _Traits>& 5209: operator>>(std::basic_istream<_CharT, _Traits>& __is, 5209: std::discrete_distribution<_IntType1>& __x); 5209: 5209: private: 5209: template 5209: void 5209: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p); 5209: 5209: param_type _M_param; 5209: }; 5209: 5209: 5209: 5209: 5209: 5209: template 5209: inline bool 5209: operator!=(const std::discrete_distribution<_IntType>& __d1, 5209: const std::discrete_distribution<_IntType>& __d2) 5209: { return !(__d1 == __d2); } 5209: # 5515 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: class piecewise_constant_distribution 5209: { 5209: static_assert(std::is_floating_point<_RealType>::value, 5209: "result_type must be a floating point type"); 5209: 5209: public: 5209: 5209: typedef _RealType result_type; 5209: 5209: 5209: struct param_type 5209: { 5209: typedef piecewise_constant_distribution<_RealType> distribution_type; 5209: friend class piecewise_constant_distribution<_RealType>; 5209: 5209: param_type() 5209: : _M_int(), _M_den(), _M_cp() 5209: { } 5209: 5209: template 5209: param_type(_InputIteratorB __bfirst, 5209: _InputIteratorB __bend, 5209: _InputIteratorW __wbegin); 5209: 5209: template 5209: param_type(initializer_list<_RealType> __bi, _Func __fw); 5209: 5209: template 5209: param_type(size_t __nw, _RealType __xmin, _RealType __xmax, 5209: _Func __fw); 5209: 5209: 5209: param_type(const param_type&) = default; 5209: param_type& operator=(const param_type&) = default; 5209: 5209: std::vector<_RealType> 5209: intervals() const 5209: { 5209: if (_M_int.empty()) 5209: { 5209: std::vector<_RealType> __tmp(2); 5209: __tmp[1] = _RealType(1); 5209: return __tmp; 5209: } 5209: else 5209: return _M_int; 5209: } 5209: 5209: std::vector 5209: densities() const 5209: { return _M_den.empty() ? std::vector(1, 1.0) : _M_den; } 5209: 5209: friend bool 5209: operator==(const param_type& __p1, const param_type& __p2) 5209: { return __p1._M_int == __p2._M_int && __p1._M_den == __p2._M_den; } 5209: 5209: friend bool 5209: operator!=(const param_type& __p1, const param_type& __p2) 5209: { return !(__p1 == __p2); } 5209: 5209: private: 5209: void 5209: _M_initialize(); 5209: 5209: std::vector<_RealType> _M_int; 5209: std::vector _M_den; 5209: std::vector _M_cp; 5209: }; 5209: 5209: piecewise_constant_distribution() 5209: : _M_param() 5209: { } 5209: 5209: template 5209: piecewise_constant_distribution(_InputIteratorB __bfirst, 5209: _InputIteratorB __bend, 5209: _InputIteratorW __wbegin) 5209: : _M_param(__bfirst, __bend, __wbegin) 5209: { } 5209: 5209: template 5209: piecewise_constant_distribution(initializer_list<_RealType> __bl, 5209: _Func __fw) 5209: : _M_param(__bl, __fw) 5209: { } 5209: 5209: template 5209: piecewise_constant_distribution(size_t __nw, 5209: _RealType __xmin, _RealType __xmax, 5209: _Func __fw) 5209: : _M_param(__nw, __xmin, __xmax, __fw) 5209: { } 5209: 5209: explicit 5209: piecewise_constant_distribution(const param_type& __p) 5209: : _M_param(__p) 5209: { } 5209: 5209: 5209: 5209: 5209: void 5209: reset() 5209: { } 5209: 5209: 5209: 5209: 5209: std::vector<_RealType> 5209: intervals() const 5209: { 5209: if (_M_param._M_int.empty()) 5209: { 5209: std::vector<_RealType> __tmp(2); 5209: __tmp[1] = _RealType(1); 5209: return __tmp; 5209: } 5209: else 5209: return _M_param._M_int; 5209: } 5209: 5209: 5209: 5209: 5209: std::vector 5209: densities() const 5209: { 5209: return _M_param._M_den.empty() 5209: ? std::vector(1, 1.0) : _M_param._M_den; 5209: } 5209: 5209: 5209: 5209: 5209: param_type 5209: param() const 5209: { return _M_param; } 5209: 5209: 5209: 5209: 5209: 5209: void 5209: param(const param_type& __param) 5209: { _M_param = __param; } 5209: 5209: 5209: 5209: 5209: result_type 5209: min() const 5209: { 5209: return _M_param._M_int.empty() 5209: ? result_type(0) : _M_param._M_int.front(); 5209: } 5209: 5209: 5209: 5209: 5209: result_type 5209: max() const 5209: { 5209: return _M_param._M_int.empty() 5209: ? result_type(1) : _M_param._M_int.back(); 5209: } 5209: 5209: 5209: 5209: 5209: template 5209: result_type 5209: operator()(_UniformRandomNumberGenerator& __urng) 5209: { return this->operator()(__urng, _M_param); } 5209: 5209: template 5209: result_type 5209: operator()(_UniformRandomNumberGenerator& __urng, 5209: const param_type& __p); 5209: 5209: template 5209: void 5209: __generate(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng) 5209: { this->__generate(__f, __t, __urng, _M_param); } 5209: 5209: template 5209: void 5209: __generate(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { this->__generate_impl(__f, __t, __urng, __p); } 5209: 5209: template 5209: void 5209: __generate(result_type* __f, result_type* __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { this->__generate_impl(__f, __t, __urng, __p); } 5209: 5209: 5209: 5209: 5209: 5209: friend bool 5209: operator==(const piecewise_constant_distribution& __d1, 5209: const piecewise_constant_distribution& __d2) 5209: { return __d1._M_param == __d2._M_param; } 5209: # 5737 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: friend std::basic_ostream<_CharT, _Traits>& 5209: operator<<(std::basic_ostream<_CharT, _Traits>& __os, 5209: const std::piecewise_constant_distribution<_RealType1>& __x); 5209: # 5753 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: friend std::basic_istream<_CharT, _Traits>& 5209: operator>>(std::basic_istream<_CharT, _Traits>& __is, 5209: std::piecewise_constant_distribution<_RealType1>& __x); 5209: 5209: private: 5209: template 5209: void 5209: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p); 5209: 5209: param_type _M_param; 5209: }; 5209: 5209: 5209: 5209: 5209: 5209: template 5209: inline bool 5209: operator!=(const std::piecewise_constant_distribution<_RealType>& __d1, 5209: const std::piecewise_constant_distribution<_RealType>& __d2) 5209: { return !(__d1 == __d2); } 5209: # 5786 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: class piecewise_linear_distribution 5209: { 5209: static_assert(std::is_floating_point<_RealType>::value, 5209: "result_type must be a floating point type"); 5209: 5209: public: 5209: 5209: typedef _RealType result_type; 5209: 5209: 5209: struct param_type 5209: { 5209: typedef piecewise_linear_distribution<_RealType> distribution_type; 5209: friend class piecewise_linear_distribution<_RealType>; 5209: 5209: param_type() 5209: : _M_int(), _M_den(), _M_cp(), _M_m() 5209: { } 5209: 5209: template 5209: param_type(_InputIteratorB __bfirst, 5209: _InputIteratorB __bend, 5209: _InputIteratorW __wbegin); 5209: 5209: template 5209: param_type(initializer_list<_RealType> __bl, _Func __fw); 5209: 5209: template 5209: param_type(size_t __nw, _RealType __xmin, _RealType __xmax, 5209: _Func __fw); 5209: 5209: 5209: param_type(const param_type&) = default; 5209: param_type& operator=(const param_type&) = default; 5209: 5209: std::vector<_RealType> 5209: intervals() const 5209: { 5209: if (_M_int.empty()) 5209: { 5209: std::vector<_RealType> __tmp(2); 5209: __tmp[1] = _RealType(1); 5209: return __tmp; 5209: } 5209: else 5209: return _M_int; 5209: } 5209: 5209: std::vector 5209: densities() const 5209: { return _M_den.empty() ? std::vector(2, 1.0) : _M_den; } 5209: 5209: friend bool 5209: operator==(const param_type& __p1, const param_type& __p2) 5209: { return __p1._M_int == __p2._M_int && __p1._M_den == __p2._M_den; } 5209: 5209: friend bool 5209: operator!=(const param_type& __p1, const param_type& __p2) 5209: { return !(__p1 == __p2); } 5209: 5209: private: 5209: void 5209: _M_initialize(); 5209: 5209: std::vector<_RealType> _M_int; 5209: std::vector _M_den; 5209: std::vector _M_cp; 5209: std::vector _M_m; 5209: }; 5209: 5209: piecewise_linear_distribution() 5209: : _M_param() 5209: { } 5209: 5209: template 5209: piecewise_linear_distribution(_InputIteratorB __bfirst, 5209: _InputIteratorB __bend, 5209: _InputIteratorW __wbegin) 5209: : _M_param(__bfirst, __bend, __wbegin) 5209: { } 5209: 5209: template 5209: piecewise_linear_distribution(initializer_list<_RealType> __bl, 5209: _Func __fw) 5209: : _M_param(__bl, __fw) 5209: { } 5209: 5209: template 5209: piecewise_linear_distribution(size_t __nw, 5209: _RealType __xmin, _RealType __xmax, 5209: _Func __fw) 5209: : _M_param(__nw, __xmin, __xmax, __fw) 5209: { } 5209: 5209: explicit 5209: piecewise_linear_distribution(const param_type& __p) 5209: : _M_param(__p) 5209: { } 5209: 5209: 5209: 5209: 5209: void 5209: reset() 5209: { } 5209: 5209: 5209: 5209: 5209: std::vector<_RealType> 5209: intervals() const 5209: { 5209: if (_M_param._M_int.empty()) 5209: { 5209: std::vector<_RealType> __tmp(2); 5209: __tmp[1] = _RealType(1); 5209: return __tmp; 5209: } 5209: else 5209: return _M_param._M_int; 5209: } 5209: 5209: 5209: 5209: 5209: 5209: std::vector 5209: densities() const 5209: { 5209: return _M_param._M_den.empty() 5209: ? std::vector(2, 1.0) : _M_param._M_den; 5209: } 5209: 5209: 5209: 5209: 5209: param_type 5209: param() const 5209: { return _M_param; } 5209: 5209: 5209: 5209: 5209: 5209: void 5209: param(const param_type& __param) 5209: { _M_param = __param; } 5209: 5209: 5209: 5209: 5209: result_type 5209: min() const 5209: { 5209: return _M_param._M_int.empty() 5209: ? result_type(0) : _M_param._M_int.front(); 5209: } 5209: 5209: 5209: 5209: 5209: result_type 5209: max() const 5209: { 5209: return _M_param._M_int.empty() 5209: ? result_type(1) : _M_param._M_int.back(); 5209: } 5209: 5209: 5209: 5209: 5209: template 5209: result_type 5209: operator()(_UniformRandomNumberGenerator& __urng) 5209: { return this->operator()(__urng, _M_param); } 5209: 5209: template 5209: result_type 5209: operator()(_UniformRandomNumberGenerator& __urng, 5209: const param_type& __p); 5209: 5209: template 5209: void 5209: __generate(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng) 5209: { this->__generate(__f, __t, __urng, _M_param); } 5209: 5209: template 5209: void 5209: __generate(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { this->__generate_impl(__f, __t, __urng, __p); } 5209: 5209: template 5209: void 5209: __generate(result_type* __f, result_type* __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { this->__generate_impl(__f, __t, __urng, __p); } 5209: 5209: 5209: 5209: 5209: 5209: friend bool 5209: operator==(const piecewise_linear_distribution& __d1, 5209: const piecewise_linear_distribution& __d2) 5209: { return __d1._M_param == __d2._M_param; } 5209: # 6010 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: friend std::basic_ostream<_CharT, _Traits>& 5209: operator<<(std::basic_ostream<_CharT, _Traits>& __os, 5209: const std::piecewise_linear_distribution<_RealType1>& __x); 5209: # 6026 "/usr/include/c++/10/bits/random.h" 3 5209: template 5209: friend std::basic_istream<_CharT, _Traits>& 5209: operator>>(std::basic_istream<_CharT, _Traits>& __is, 5209: std::piecewise_linear_distribution<_RealType1>& __x); 5209: 5209: private: 5209: template 5209: void 5209: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p); 5209: 5209: param_type _M_param; 5209: }; 5209: 5209: 5209: 5209: 5209: 5209: template 5209: inline bool 5209: operator!=(const std::piecewise_linear_distribution<_RealType>& __d1, 5209: const std::piecewise_linear_distribution<_RealType>& __d2) 5209: { return !(__d1 == __d2); } 5209: # 6067 "/usr/include/c++/10/bits/random.h" 3 5209: class seed_seq 5209: { 5209: public: 5209: 5209: typedef uint_least32_t result_type; 5209: 5209: 5209: seed_seq() noexcept 5209: : _M_v() 5209: { } 5209: 5209: template 5209: seed_seq(std::initializer_list<_IntType> il); 5209: 5209: template 5209: seed_seq(_InputIterator __begin, _InputIterator __end); 5209: 5209: 5209: template 5209: void 5209: generate(_RandomAccessIterator __begin, _RandomAccessIterator __end); 5209: 5209: 5209: size_t size() const noexcept 5209: { return _M_v.size(); } 5209: 5209: template 5209: void 5209: param(_OutputIterator __dest) const 5209: { std::copy(_M_v.begin(), _M_v.end(), __dest); } 5209: 5209: 5209: seed_seq(const seed_seq&) = delete; 5209: seed_seq& operator=(const seed_seq&) = delete; 5209: 5209: private: 5209: std::vector _M_v; 5209: }; 5209: 5209: 5209: 5209: 5209: 5209: 5209: } 5209: # 50 "/usr/include/c++/10/random" 2 3 5209: # 1 "/usr/include/aarch64-linux-gnu/c++/10/bits/opt_random.h" 1 3 5209: # 33 "/usr/include/aarch64-linux-gnu/c++/10/bits/opt_random.h" 3 5209: 5209: # 34 "/usr/include/aarch64-linux-gnu/c++/10/bits/opt_random.h" 3 5209: 5209: 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: } 5209: # 51 "/usr/include/c++/10/random" 2 3 5209: # 1 "/usr/include/c++/10/bits/random.tcc" 1 3 5209: # 33 "/usr/include/c++/10/bits/random.tcc" 3 5209: # 1 "/usr/include/c++/10/numeric" 1 3 5209: # 58 "/usr/include/c++/10/numeric" 3 5209: 5209: # 59 "/usr/include/c++/10/numeric" 3 5209: 5209: 5209: 5209: # 1 "/usr/include/c++/10/bits/stl_numeric.h" 1 3 5209: # 64 "/usr/include/c++/10/bits/stl_numeric.h" 3 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: # 85 "/usr/include/c++/10/bits/stl_numeric.h" 3 5209: template 5209: void 5209: iota(_ForwardIterator __first, _ForwardIterator __last, _Tp __value) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: 5209: for (; __first != __last; ++__first) 5209: { 5209: *__first = __value; 5209: ++__value; 5209: } 5209: } 5209: 5209: 5209: 5209: 5209: 5209: # 130 "/usr/include/c++/10/bits/stl_numeric.h" 3 5209: template 5209: inline _Tp 5209: accumulate(_InputIterator __first, _InputIterator __last, _Tp __init) 5209: { 5209: 5209: 5209: ; 5209: 5209: for (; __first != __last; ++__first) 5209: __init = __init + *__first; 5209: return __init; 5209: } 5209: # 156 "/usr/include/c++/10/bits/stl_numeric.h" 3 5209: template 5209: inline _Tp 5209: accumulate(_InputIterator __first, _InputIterator __last, _Tp __init, 5209: _BinaryOperation __binary_op) 5209: { 5209: 5209: 5209: ; 5209: 5209: for (; __first != __last; ++__first) 5209: __init = __binary_op(__init, *__first); 5209: return __init; 5209: } 5209: # 184 "/usr/include/c++/10/bits/stl_numeric.h" 3 5209: template 5209: inline _Tp 5209: inner_product(_InputIterator1 __first1, _InputIterator1 __last1, 5209: _InputIterator2 __first2, _Tp __init) 5209: { 5209: 5209: 5209: 5209: ; 5209: 5209: for (; __first1 != __last1; ++__first1, (void)++__first2) 5209: __init = __init + (*__first1 * *__first2); 5209: return __init; 5209: } 5209: # 215 "/usr/include/c++/10/bits/stl_numeric.h" 3 5209: template 5209: inline _Tp 5209: inner_product(_InputIterator1 __first1, _InputIterator1 __last1, 5209: _InputIterator2 __first2, _Tp __init, 5209: _BinaryOperation1 __binary_op1, 5209: _BinaryOperation2 __binary_op2) 5209: { 5209: 5209: 5209: 5209: ; 5209: 5209: for (; __first1 != __last1; ++__first1, (void)++__first2) 5209: __init = __binary_op1(__init, 5209: __binary_op2(*__first1, *__first2)); 5209: return __init; 5209: } 5209: # 248 "/usr/include/c++/10/bits/stl_numeric.h" 3 5209: template 5209: _OutputIterator 5209: partial_sum(_InputIterator __first, _InputIterator __last, 5209: _OutputIterator __result) 5209: { 5209: typedef typename iterator_traits<_InputIterator>::value_type _ValueType; 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: 5209: if (__first == __last) 5209: return __result; 5209: _ValueType __value = *__first; 5209: *__result = __value; 5209: while (++__first != __last) 5209: { 5209: __value = __value + *__first; 5209: *++__result = __value; 5209: } 5209: return ++__result; 5209: } 5209: # 288 "/usr/include/c++/10/bits/stl_numeric.h" 3 5209: template 5209: _OutputIterator 5209: partial_sum(_InputIterator __first, _InputIterator __last, 5209: _OutputIterator __result, _BinaryOperation __binary_op) 5209: { 5209: typedef typename iterator_traits<_InputIterator>::value_type _ValueType; 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: 5209: if (__first == __last) 5209: return __result; 5209: _ValueType __value = *__first; 5209: *__result = __value; 5209: while (++__first != __last) 5209: { 5209: __value = __binary_op(__value, *__first); 5209: *++__result = __value; 5209: } 5209: return ++__result; 5209: } 5209: # 328 "/usr/include/c++/10/bits/stl_numeric.h" 3 5209: template 5209: _OutputIterator 5209: adjacent_difference(_InputIterator __first, 5209: _InputIterator __last, _OutputIterator __result) 5209: { 5209: typedef typename iterator_traits<_InputIterator>::value_type _ValueType; 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: 5209: if (__first == __last) 5209: return __result; 5209: _ValueType __value = *__first; 5209: *__result = __value; 5209: while (++__first != __last) 5209: { 5209: _ValueType __tmp = *__first; 5209: *++__result = __tmp - __value; 5209: __value = std::move(__tmp); 5209: } 5209: return ++__result; 5209: } 5209: # 370 "/usr/include/c++/10/bits/stl_numeric.h" 3 5209: template 5209: _OutputIterator 5209: adjacent_difference(_InputIterator __first, _InputIterator __last, 5209: _OutputIterator __result, _BinaryOperation __binary_op) 5209: { 5209: typedef typename iterator_traits<_InputIterator>::value_type _ValueType; 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: 5209: if (__first == __last) 5209: return __result; 5209: _ValueType __value = *__first; 5209: *__result = __value; 5209: while (++__first != __last) 5209: { 5209: _ValueType __tmp = *__first; 5209: *++__result = __binary_op(__tmp, __value); 5209: __value = std::move(__tmp); 5209: } 5209: return ++__result; 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: } 5209: # 63 "/usr/include/c++/10/numeric" 2 3 5209: # 34 "/usr/include/c++/10/bits/random.tcc" 2 3 5209: 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: namespace __detail 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: _Tp 5209: _Mod<_Tp, __m, __a, __c, false, true>:: 5209: __calc(_Tp __x) 5209: { 5209: if (__a == 1) 5209: __x %= __m; 5209: else 5209: { 5209: static const _Tp __q = __m / __a; 5209: static const _Tp __r = __m % __a; 5209: 5209: _Tp __t1 = __a * (__x % __q); 5209: _Tp __t2 = __r * (__x / __q); 5209: if (__t1 >= __t2) 5209: __x = __t1 - __t2; 5209: else 5209: __x = __m - __t2 + __t1; 5209: } 5209: 5209: if (__c != 0) 5209: { 5209: const _Tp __d = __m - __x; 5209: if (__d > __c) 5209: __x += __c; 5209: else 5209: __x = __c - __d; 5209: } 5209: return __x; 5209: } 5209: 5209: template 5209: _OutputIterator 5209: __normalize(_InputIterator __first, _InputIterator __last, 5209: _OutputIterator __result, const _Tp& __factor) 5209: { 5209: for (; __first != __last; ++__first, ++__result) 5209: *__result = *__first / __factor; 5209: return __result; 5209: } 5209: 5209: } 5209: 5209: template 5209: constexpr _UIntType 5209: linear_congruential_engine<_UIntType, __a, __c, __m>::multiplier; 5209: 5209: template 5209: constexpr _UIntType 5209: linear_congruential_engine<_UIntType, __a, __c, __m>::increment; 5209: 5209: template 5209: constexpr _UIntType 5209: linear_congruential_engine<_UIntType, __a, __c, __m>::modulus; 5209: 5209: template 5209: constexpr _UIntType 5209: linear_congruential_engine<_UIntType, __a, __c, __m>::default_seed; 5209: 5209: 5209: 5209: 5209: 5209: template 5209: void 5209: linear_congruential_engine<_UIntType, __a, __c, __m>:: 5209: seed(result_type __s) 5209: { 5209: if ((__detail::__mod<_UIntType, __m>(__c) == 0) 5209: && (__detail::__mod<_UIntType, __m>(__s) == 0)) 5209: _M_x = 1; 5209: else 5209: _M_x = __detail::__mod<_UIntType, __m>(__s); 5209: } 5209: 5209: 5209: 5209: 5209: template 5209: template 5209: auto 5209: linear_congruential_engine<_UIntType, __a, __c, __m>:: 5209: seed(_Sseq& __q) 5209: -> _If_seed_seq<_Sseq> 5209: { 5209: const _UIntType __k0 = __m == 0 ? std::numeric_limits<_UIntType>::digits 5209: : std::__lg(__m); 5209: const _UIntType __k = (__k0 + 31) / 32; 5209: uint_least32_t __arr[__k + 3]; 5209: __q.generate(__arr + 0, __arr + __k + 3); 5209: _UIntType __factor = 1u; 5209: _UIntType __sum = 0u; 5209: for (size_t __j = 0; __j < __k; ++__j) 5209: { 5209: __sum += __arr[__j + 3] * __factor; 5209: __factor *= __detail::_Shift<_UIntType, 32>::__value; 5209: } 5209: seed(__sum); 5209: } 5209: 5209: template 5209: std::basic_ostream<_CharT, _Traits>& 5209: operator<<(std::basic_ostream<_CharT, _Traits>& __os, 5209: const linear_congruential_engine<_UIntType, 5209: __a, __c, __m>& __lcr) 5209: { 5209: typedef std::basic_ostream<_CharT, _Traits> __ostream_type; 5209: typedef typename __ostream_type::ios_base __ios_base; 5209: 5209: const typename __ios_base::fmtflags __flags = __os.flags(); 5209: const _CharT __fill = __os.fill(); 5209: __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left); 5209: __os.fill(__os.widen(' ')); 5209: 5209: __os << __lcr._M_x; 5209: 5209: __os.flags(__flags); 5209: __os.fill(__fill); 5209: return __os; 5209: } 5209: 5209: template 5209: std::basic_istream<_CharT, _Traits>& 5209: operator>>(std::basic_istream<_CharT, _Traits>& __is, 5209: linear_congruential_engine<_UIntType, __a, __c, __m>& __lcr) 5209: { 5209: typedef std::basic_istream<_CharT, _Traits> __istream_type; 5209: typedef typename __istream_type::ios_base __ios_base; 5209: 5209: const typename __ios_base::fmtflags __flags = __is.flags(); 5209: __is.flags(__ios_base::dec); 5209: 5209: __is >> __lcr._M_x; 5209: 5209: __is.flags(__flags); 5209: return __is; 5209: } 5209: 5209: 5209: template 5209: constexpr size_t 5209: mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, 5209: __s, __b, __t, __c, __l, __f>::word_size; 5209: 5209: template 5209: constexpr size_t 5209: mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, 5209: __s, __b, __t, __c, __l, __f>::state_size; 5209: 5209: template 5209: constexpr size_t 5209: mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, 5209: __s, __b, __t, __c, __l, __f>::shift_size; 5209: 5209: template 5209: constexpr size_t 5209: mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, 5209: __s, __b, __t, __c, __l, __f>::mask_bits; 5209: 5209: template 5209: constexpr _UIntType 5209: mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, 5209: __s, __b, __t, __c, __l, __f>::xor_mask; 5209: 5209: template 5209: constexpr size_t 5209: mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, 5209: __s, __b, __t, __c, __l, __f>::tempering_u; 5209: 5209: template 5209: constexpr _UIntType 5209: mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, 5209: __s, __b, __t, __c, __l, __f>::tempering_d; 5209: 5209: template 5209: constexpr size_t 5209: mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, 5209: __s, __b, __t, __c, __l, __f>::tempering_s; 5209: 5209: template 5209: constexpr _UIntType 5209: mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, 5209: __s, __b, __t, __c, __l, __f>::tempering_b; 5209: 5209: template 5209: constexpr size_t 5209: mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, 5209: __s, __b, __t, __c, __l, __f>::tempering_t; 5209: 5209: template 5209: constexpr _UIntType 5209: mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, 5209: __s, __b, __t, __c, __l, __f>::tempering_c; 5209: 5209: template 5209: constexpr size_t 5209: mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, 5209: __s, __b, __t, __c, __l, __f>::tempering_l; 5209: 5209: template 5209: constexpr _UIntType 5209: mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, 5209: __s, __b, __t, __c, __l, __f>:: 5209: initialization_multiplier; 5209: 5209: template 5209: constexpr _UIntType 5209: mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, 5209: __s, __b, __t, __c, __l, __f>::default_seed; 5209: 5209: template 5209: void 5209: mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, 5209: __s, __b, __t, __c, __l, __f>:: 5209: seed(result_type __sd) 5209: { 5209: _M_x[0] = __detail::__mod<_UIntType, 5209: __detail::_Shift<_UIntType, __w>::__value>(__sd); 5209: 5209: for (size_t __i = 1; __i < state_size; ++__i) 5209: { 5209: _UIntType __x = _M_x[__i - 1]; 5209: __x ^= __x >> (__w - 2); 5209: __x *= __f; 5209: __x += __detail::__mod<_UIntType, __n>(__i); 5209: _M_x[__i] = __detail::__mod<_UIntType, 5209: __detail::_Shift<_UIntType, __w>::__value>(__x); 5209: } 5209: _M_p = state_size; 5209: } 5209: 5209: template 5209: template 5209: auto 5209: mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, 5209: __s, __b, __t, __c, __l, __f>:: 5209: seed(_Sseq& __q) 5209: -> _If_seed_seq<_Sseq> 5209: { 5209: const _UIntType __upper_mask = (~_UIntType()) << __r; 5209: const size_t __k = (__w + 31) / 32; 5209: uint_least32_t __arr[__n * __k]; 5209: __q.generate(__arr + 0, __arr + __n * __k); 5209: 5209: bool __zero = true; 5209: for (size_t __i = 0; __i < state_size; ++__i) 5209: { 5209: _UIntType __factor = 1u; 5209: _UIntType __sum = 0u; 5209: for (size_t __j = 0; __j < __k; ++__j) 5209: { 5209: __sum += __arr[__k * __i + __j] * __factor; 5209: __factor *= __detail::_Shift<_UIntType, 32>::__value; 5209: } 5209: _M_x[__i] = __detail::__mod<_UIntType, 5209: __detail::_Shift<_UIntType, __w>::__value>(__sum); 5209: 5209: if (__zero) 5209: { 5209: if (__i == 0) 5209: { 5209: if ((_M_x[0] & __upper_mask) != 0u) 5209: __zero = false; 5209: } 5209: else if (_M_x[__i] != 0u) 5209: __zero = false; 5209: } 5209: } 5209: if (__zero) 5209: _M_x[0] = __detail::_Shift<_UIntType, __w - 1>::__value; 5209: _M_p = state_size; 5209: } 5209: 5209: template 5209: void 5209: mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, 5209: __s, __b, __t, __c, __l, __f>:: 5209: _M_gen_rand(void) 5209: { 5209: const _UIntType __upper_mask = (~_UIntType()) << __r; 5209: const _UIntType __lower_mask = ~__upper_mask; 5209: 5209: for (size_t __k = 0; __k < (__n - __m); ++__k) 5209: { 5209: _UIntType __y = ((_M_x[__k] & __upper_mask) 5209: | (_M_x[__k + 1] & __lower_mask)); 5209: _M_x[__k] = (_M_x[__k + __m] ^ (__y >> 1) 5209: ^ ((__y & 0x01) ? __a : 0)); 5209: } 5209: 5209: for (size_t __k = (__n - __m); __k < (__n - 1); ++__k) 5209: { 5209: _UIntType __y = ((_M_x[__k] & __upper_mask) 5209: | (_M_x[__k + 1] & __lower_mask)); 5209: _M_x[__k] = (_M_x[__k + (__m - __n)] ^ (__y >> 1) 5209: ^ ((__y & 0x01) ? __a : 0)); 5209: } 5209: 5209: _UIntType __y = ((_M_x[__n - 1] & __upper_mask) 5209: | (_M_x[0] & __lower_mask)); 5209: _M_x[__n - 1] = (_M_x[__m - 1] ^ (__y >> 1) 5209: ^ ((__y & 0x01) ? __a : 0)); 5209: _M_p = 0; 5209: } 5209: 5209: template 5209: void 5209: mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, 5209: __s, __b, __t, __c, __l, __f>:: 5209: discard(unsigned long long __z) 5209: { 5209: while (__z > state_size - _M_p) 5209: { 5209: __z -= state_size - _M_p; 5209: _M_gen_rand(); 5209: } 5209: _M_p += __z; 5209: } 5209: 5209: template 5209: typename 5209: mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, 5209: __s, __b, __t, __c, __l, __f>::result_type 5209: mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, 5209: __s, __b, __t, __c, __l, __f>:: 5209: operator()() 5209: { 5209: 5209: if (_M_p >= state_size) 5209: _M_gen_rand(); 5209: 5209: 5209: result_type __z = _M_x[_M_p++]; 5209: __z ^= (__z >> __u) & __d; 5209: __z ^= (__z << __s) & __b; 5209: __z ^= (__z << __t) & __c; 5209: __z ^= (__z >> __l); 5209: 5209: return __z; 5209: } 5209: 5209: template 5209: std::basic_ostream<_CharT, _Traits>& 5209: operator<<(std::basic_ostream<_CharT, _Traits>& __os, 5209: const mersenne_twister_engine<_UIntType, __w, __n, __m, 5209: __r, __a, __u, __d, __s, __b, __t, __c, __l, __f>& __x) 5209: { 5209: typedef std::basic_ostream<_CharT, _Traits> __ostream_type; 5209: typedef typename __ostream_type::ios_base __ios_base; 5209: 5209: const typename __ios_base::fmtflags __flags = __os.flags(); 5209: const _CharT __fill = __os.fill(); 5209: const _CharT __space = __os.widen(' '); 5209: __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left); 5209: __os.fill(__space); 5209: 5209: for (size_t __i = 0; __i < __n; ++__i) 5209: __os << __x._M_x[__i] << __space; 5209: __os << __x._M_p; 5209: 5209: __os.flags(__flags); 5209: __os.fill(__fill); 5209: return __os; 5209: } 5209: 5209: template 5209: std::basic_istream<_CharT, _Traits>& 5209: operator>>(std::basic_istream<_CharT, _Traits>& __is, 5209: mersenne_twister_engine<_UIntType, __w, __n, __m, 5209: __r, __a, __u, __d, __s, __b, __t, __c, __l, __f>& __x) 5209: { 5209: typedef std::basic_istream<_CharT, _Traits> __istream_type; 5209: typedef typename __istream_type::ios_base __ios_base; 5209: 5209: const typename __ios_base::fmtflags __flags = __is.flags(); 5209: __is.flags(__ios_base::dec | __ios_base::skipws); 5209: 5209: for (size_t __i = 0; __i < __n; ++__i) 5209: __is >> __x._M_x[__i]; 5209: __is >> __x._M_p; 5209: 5209: __is.flags(__flags); 5209: return __is; 5209: } 5209: 5209: 5209: template 5209: constexpr size_t 5209: subtract_with_carry_engine<_UIntType, __w, __s, __r>::word_size; 5209: 5209: template 5209: constexpr size_t 5209: subtract_with_carry_engine<_UIntType, __w, __s, __r>::short_lag; 5209: 5209: template 5209: constexpr size_t 5209: subtract_with_carry_engine<_UIntType, __w, __s, __r>::long_lag; 5209: 5209: template 5209: constexpr _UIntType 5209: subtract_with_carry_engine<_UIntType, __w, __s, __r>::default_seed; 5209: 5209: template 5209: void 5209: subtract_with_carry_engine<_UIntType, __w, __s, __r>:: 5209: seed(result_type __value) 5209: { 5209: std::linear_congruential_engine 5209: __lcg(__value == 0u ? default_seed : __value); 5209: 5209: const size_t __n = (__w + 31) / 32; 5209: 5209: for (size_t __i = 0; __i < long_lag; ++__i) 5209: { 5209: _UIntType __sum = 0u; 5209: _UIntType __factor = 1u; 5209: for (size_t __j = 0; __j < __n; ++__j) 5209: { 5209: __sum += __detail::__mod::__value> 5209: (__lcg()) * __factor; 5209: __factor *= __detail::_Shift<_UIntType, 32>::__value; 5209: } 5209: _M_x[__i] = __detail::__mod<_UIntType, 5209: __detail::_Shift<_UIntType, __w>::__value>(__sum); 5209: } 5209: _M_carry = (_M_x[long_lag - 1] == 0) ? 1 : 0; 5209: _M_p = 0; 5209: } 5209: 5209: template 5209: template 5209: auto 5209: subtract_with_carry_engine<_UIntType, __w, __s, __r>:: 5209: seed(_Sseq& __q) 5209: -> _If_seed_seq<_Sseq> 5209: { 5209: const size_t __k = (__w + 31) / 32; 5209: uint_least32_t __arr[__r * __k]; 5209: __q.generate(__arr + 0, __arr + __r * __k); 5209: 5209: for (size_t __i = 0; __i < long_lag; ++__i) 5209: { 5209: _UIntType __sum = 0u; 5209: _UIntType __factor = 1u; 5209: for (size_t __j = 0; __j < __k; ++__j) 5209: { 5209: __sum += __arr[__k * __i + __j] * __factor; 5209: __factor *= __detail::_Shift<_UIntType, 32>::__value; 5209: } 5209: _M_x[__i] = __detail::__mod<_UIntType, 5209: __detail::_Shift<_UIntType, __w>::__value>(__sum); 5209: } 5209: _M_carry = (_M_x[long_lag - 1] == 0) ? 1 : 0; 5209: _M_p = 0; 5209: } 5209: 5209: template 5209: typename subtract_with_carry_engine<_UIntType, __w, __s, __r>:: 5209: result_type 5209: subtract_with_carry_engine<_UIntType, __w, __s, __r>:: 5209: operator()() 5209: { 5209: 5209: long __ps = _M_p - short_lag; 5209: if (__ps < 0) 5209: __ps += long_lag; 5209: 5209: 5209: 5209: 5209: _UIntType __xi; 5209: if (_M_x[__ps] >= _M_x[_M_p] + _M_carry) 5209: { 5209: __xi = _M_x[__ps] - _M_x[_M_p] - _M_carry; 5209: _M_carry = 0; 5209: } 5209: else 5209: { 5209: __xi = (__detail::_Shift<_UIntType, __w>::__value 5209: - _M_x[_M_p] - _M_carry + _M_x[__ps]); 5209: _M_carry = 1; 5209: } 5209: _M_x[_M_p] = __xi; 5209: 5209: 5209: if (++_M_p >= long_lag) 5209: _M_p = 0; 5209: 5209: return __xi; 5209: } 5209: 5209: template 5209: std::basic_ostream<_CharT, _Traits>& 5209: operator<<(std::basic_ostream<_CharT, _Traits>& __os, 5209: const subtract_with_carry_engine<_UIntType, 5209: __w, __s, __r>& __x) 5209: { 5209: typedef std::basic_ostream<_CharT, _Traits> __ostream_type; 5209: typedef typename __ostream_type::ios_base __ios_base; 5209: 5209: const typename __ios_base::fmtflags __flags = __os.flags(); 5209: const _CharT __fill = __os.fill(); 5209: const _CharT __space = __os.widen(' '); 5209: __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left); 5209: __os.fill(__space); 5209: 5209: for (size_t __i = 0; __i < __r; ++__i) 5209: __os << __x._M_x[__i] << __space; 5209: __os << __x._M_carry << __space << __x._M_p; 5209: 5209: __os.flags(__flags); 5209: __os.fill(__fill); 5209: return __os; 5209: } 5209: 5209: template 5209: std::basic_istream<_CharT, _Traits>& 5209: operator>>(std::basic_istream<_CharT, _Traits>& __is, 5209: subtract_with_carry_engine<_UIntType, __w, __s, __r>& __x) 5209: { 5209: typedef std::basic_ostream<_CharT, _Traits> __istream_type; 5209: typedef typename __istream_type::ios_base __ios_base; 5209: 5209: const typename __ios_base::fmtflags __flags = __is.flags(); 5209: __is.flags(__ios_base::dec | __ios_base::skipws); 5209: 5209: for (size_t __i = 0; __i < __r; ++__i) 5209: __is >> __x._M_x[__i]; 5209: __is >> __x._M_carry; 5209: __is >> __x._M_p; 5209: 5209: __is.flags(__flags); 5209: return __is; 5209: } 5209: 5209: 5209: template 5209: constexpr size_t 5209: discard_block_engine<_RandomNumberEngine, __p, __r>::block_size; 5209: 5209: template 5209: constexpr size_t 5209: discard_block_engine<_RandomNumberEngine, __p, __r>::used_block; 5209: 5209: template 5209: typename discard_block_engine<_RandomNumberEngine, 5209: __p, __r>::result_type 5209: discard_block_engine<_RandomNumberEngine, __p, __r>:: 5209: operator()() 5209: { 5209: if (_M_n >= used_block) 5209: { 5209: _M_b.discard(block_size - _M_n); 5209: _M_n = 0; 5209: } 5209: ++_M_n; 5209: return _M_b(); 5209: } 5209: 5209: template 5209: std::basic_ostream<_CharT, _Traits>& 5209: operator<<(std::basic_ostream<_CharT, _Traits>& __os, 5209: const discard_block_engine<_RandomNumberEngine, 5209: __p, __r>& __x) 5209: { 5209: typedef std::basic_ostream<_CharT, _Traits> __ostream_type; 5209: typedef typename __ostream_type::ios_base __ios_base; 5209: 5209: const typename __ios_base::fmtflags __flags = __os.flags(); 5209: const _CharT __fill = __os.fill(); 5209: const _CharT __space = __os.widen(' '); 5209: __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left); 5209: __os.fill(__space); 5209: 5209: __os << __x.base() << __space << __x._M_n; 5209: 5209: __os.flags(__flags); 5209: __os.fill(__fill); 5209: return __os; 5209: } 5209: 5209: template 5209: std::basic_istream<_CharT, _Traits>& 5209: operator>>(std::basic_istream<_CharT, _Traits>& __is, 5209: discard_block_engine<_RandomNumberEngine, __p, __r>& __x) 5209: { 5209: typedef std::basic_istream<_CharT, _Traits> __istream_type; 5209: typedef typename __istream_type::ios_base __ios_base; 5209: 5209: const typename __ios_base::fmtflags __flags = __is.flags(); 5209: __is.flags(__ios_base::dec | __ios_base::skipws); 5209: 5209: __is >> __x._M_b >> __x._M_n; 5209: 5209: __is.flags(__flags); 5209: return __is; 5209: } 5209: 5209: 5209: template 5209: typename independent_bits_engine<_RandomNumberEngine, __w, _UIntType>:: 5209: result_type 5209: independent_bits_engine<_RandomNumberEngine, __w, _UIntType>:: 5209: operator()() 5209: { 5209: typedef typename _RandomNumberEngine::result_type _Eresult_type; 5209: const _Eresult_type __r 5209: = (_M_b.max() - _M_b.min() < std::numeric_limits<_Eresult_type>::max() 5209: ? _M_b.max() - _M_b.min() + 1 : 0); 5209: const unsigned __edig = std::numeric_limits<_Eresult_type>::digits; 5209: const unsigned __m = __r ? std::__lg(__r) : __edig; 5209: 5209: typedef typename std::common_type<_Eresult_type, result_type>::type 5209: __ctype; 5209: const unsigned __cdig = std::numeric_limits<__ctype>::digits; 5209: 5209: unsigned __n, __n0; 5209: __ctype __s0, __s1, __y0, __y1; 5209: 5209: for (size_t __i = 0; __i < 2; ++__i) 5209: { 5209: __n = (__w + __m - 1) / __m + __i; 5209: __n0 = __n - __w % __n; 5209: const unsigned __w0 = __w / __n; 5209: 5209: __s0 = 0; 5209: __s1 = 0; 5209: if (__w0 < __cdig) 5209: { 5209: __s0 = __ctype(1) << __w0; 5209: __s1 = __s0 << 1; 5209: } 5209: 5209: __y0 = 0; 5209: __y1 = 0; 5209: if (__r) 5209: { 5209: __y0 = __s0 * (__r / __s0); 5209: if (__s1) 5209: __y1 = __s1 * (__r / __s1); 5209: 5209: if (__r - __y0 <= __y0 / __n) 5209: break; 5209: } 5209: else 5209: break; 5209: } 5209: 5209: result_type __sum = 0; 5209: for (size_t __k = 0; __k < __n0; ++__k) 5209: { 5209: __ctype __u; 5209: do 5209: __u = _M_b() - _M_b.min(); 5209: while (__y0 && __u >= __y0); 5209: __sum = __s0 * __sum + (__s0 ? __u % __s0 : __u); 5209: } 5209: for (size_t __k = __n0; __k < __n; ++__k) 5209: { 5209: __ctype __u; 5209: do 5209: __u = _M_b() - _M_b.min(); 5209: while (__y1 && __u >= __y1); 5209: __sum = __s1 * __sum + (__s1 ? __u % __s1 : __u); 5209: } 5209: return __sum; 5209: } 5209: 5209: 5209: template 5209: constexpr size_t 5209: shuffle_order_engine<_RandomNumberEngine, __k>::table_size; 5209: 5209: template 5209: typename shuffle_order_engine<_RandomNumberEngine, __k>::result_type 5209: shuffle_order_engine<_RandomNumberEngine, __k>:: 5209: operator()() 5209: { 5209: size_t __j = __k * ((_M_y - _M_b.min()) 5209: / (_M_b.max() - _M_b.min() + 1.0L)); 5209: _M_y = _M_v[__j]; 5209: _M_v[__j] = _M_b(); 5209: 5209: return _M_y; 5209: } 5209: 5209: template 5209: std::basic_ostream<_CharT, _Traits>& 5209: operator<<(std::basic_ostream<_CharT, _Traits>& __os, 5209: const shuffle_order_engine<_RandomNumberEngine, __k>& __x) 5209: { 5209: typedef std::basic_ostream<_CharT, _Traits> __ostream_type; 5209: typedef typename __ostream_type::ios_base __ios_base; 5209: 5209: const typename __ios_base::fmtflags __flags = __os.flags(); 5209: const _CharT __fill = __os.fill(); 5209: const _CharT __space = __os.widen(' '); 5209: __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left); 5209: __os.fill(__space); 5209: 5209: __os << __x.base(); 5209: for (size_t __i = 0; __i < __k; ++__i) 5209: __os << __space << __x._M_v[__i]; 5209: __os << __space << __x._M_y; 5209: 5209: __os.flags(__flags); 5209: __os.fill(__fill); 5209: return __os; 5209: } 5209: 5209: template 5209: std::basic_istream<_CharT, _Traits>& 5209: operator>>(std::basic_istream<_CharT, _Traits>& __is, 5209: shuffle_order_engine<_RandomNumberEngine, __k>& __x) 5209: { 5209: typedef std::basic_istream<_CharT, _Traits> __istream_type; 5209: typedef typename __istream_type::ios_base __ios_base; 5209: 5209: const typename __ios_base::fmtflags __flags = __is.flags(); 5209: __is.flags(__ios_base::dec | __ios_base::skipws); 5209: 5209: __is >> __x._M_b; 5209: for (size_t __i = 0; __i < __k; ++__i) 5209: __is >> __x._M_v[__i]; 5209: __is >> __x._M_y; 5209: 5209: __is.flags(__flags); 5209: return __is; 5209: } 5209: 5209: 5209: template 5209: std::basic_ostream<_CharT, _Traits>& 5209: operator<<(std::basic_ostream<_CharT, _Traits>& __os, 5209: const uniform_int_distribution<_IntType>& __x) 5209: { 5209: typedef std::basic_ostream<_CharT, _Traits> __ostream_type; 5209: typedef typename __ostream_type::ios_base __ios_base; 5209: 5209: const typename __ios_base::fmtflags __flags = __os.flags(); 5209: const _CharT __fill = __os.fill(); 5209: const _CharT __space = __os.widen(' '); 5209: __os.flags(__ios_base::scientific | __ios_base::left); 5209: __os.fill(__space); 5209: 5209: __os << __x.a() << __space << __x.b(); 5209: 5209: __os.flags(__flags); 5209: __os.fill(__fill); 5209: return __os; 5209: } 5209: 5209: template 5209: std::basic_istream<_CharT, _Traits>& 5209: operator>>(std::basic_istream<_CharT, _Traits>& __is, 5209: uniform_int_distribution<_IntType>& __x) 5209: { 5209: typedef std::basic_istream<_CharT, _Traits> __istream_type; 5209: typedef typename __istream_type::ios_base __ios_base; 5209: 5209: const typename __ios_base::fmtflags __flags = __is.flags(); 5209: __is.flags(__ios_base::dec | __ios_base::skipws); 5209: 5209: _IntType __a, __b; 5209: __is >> __a >> __b; 5209: __x.param(typename uniform_int_distribution<_IntType>:: 5209: param_type(__a, __b)); 5209: 5209: __is.flags(__flags); 5209: return __is; 5209: } 5209: 5209: 5209: template 5209: template 5209: void 5209: uniform_real_distribution<_RealType>:: 5209: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { 5209: 5209: __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> 5209: __aurng(__urng); 5209: auto __range = __p.b() - __p.a(); 5209: while (__f != __t) 5209: *__f++ = __aurng() * __range + __p.a(); 5209: } 5209: 5209: template 5209: std::basic_ostream<_CharT, _Traits>& 5209: operator<<(std::basic_ostream<_CharT, _Traits>& __os, 5209: const uniform_real_distribution<_RealType>& __x) 5209: { 5209: typedef std::basic_ostream<_CharT, _Traits> __ostream_type; 5209: typedef typename __ostream_type::ios_base __ios_base; 5209: 5209: const typename __ios_base::fmtflags __flags = __os.flags(); 5209: const _CharT __fill = __os.fill(); 5209: const std::streamsize __precision = __os.precision(); 5209: const _CharT __space = __os.widen(' '); 5209: __os.flags(__ios_base::scientific | __ios_base::left); 5209: __os.fill(__space); 5209: __os.precision(std::numeric_limits<_RealType>::max_digits10); 5209: 5209: __os << __x.a() << __space << __x.b(); 5209: 5209: __os.flags(__flags); 5209: __os.fill(__fill); 5209: __os.precision(__precision); 5209: return __os; 5209: } 5209: 5209: template 5209: std::basic_istream<_CharT, _Traits>& 5209: operator>>(std::basic_istream<_CharT, _Traits>& __is, 5209: uniform_real_distribution<_RealType>& __x) 5209: { 5209: typedef std::basic_istream<_CharT, _Traits> __istream_type; 5209: typedef typename __istream_type::ios_base __ios_base; 5209: 5209: const typename __ios_base::fmtflags __flags = __is.flags(); 5209: __is.flags(__ios_base::skipws); 5209: 5209: _RealType __a, __b; 5209: __is >> __a >> __b; 5209: __x.param(typename uniform_real_distribution<_RealType>:: 5209: param_type(__a, __b)); 5209: 5209: __is.flags(__flags); 5209: return __is; 5209: } 5209: 5209: 5209: template 5209: void 5209: std::bernoulli_distribution:: 5209: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { 5209: 5209: __detail::_Adaptor<_UniformRandomNumberGenerator, double> 5209: __aurng(__urng); 5209: auto __limit = __p.p() * (__aurng.max() - __aurng.min()); 5209: 5209: while (__f != __t) 5209: *__f++ = (__aurng() - __aurng.min()) < __limit; 5209: } 5209: 5209: template 5209: std::basic_ostream<_CharT, _Traits>& 5209: operator<<(std::basic_ostream<_CharT, _Traits>& __os, 5209: const bernoulli_distribution& __x) 5209: { 5209: typedef std::basic_ostream<_CharT, _Traits> __ostream_type; 5209: typedef typename __ostream_type::ios_base __ios_base; 5209: 5209: const typename __ios_base::fmtflags __flags = __os.flags(); 5209: const _CharT __fill = __os.fill(); 5209: const std::streamsize __precision = __os.precision(); 5209: __os.flags(__ios_base::scientific | __ios_base::left); 5209: __os.fill(__os.widen(' ')); 5209: __os.precision(std::numeric_limits::max_digits10); 5209: 5209: __os << __x.p(); 5209: 5209: __os.flags(__flags); 5209: __os.fill(__fill); 5209: __os.precision(__precision); 5209: return __os; 5209: } 5209: 5209: 5209: template 5209: template 5209: typename geometric_distribution<_IntType>::result_type 5209: geometric_distribution<_IntType>:: 5209: operator()(_UniformRandomNumberGenerator& __urng, 5209: const param_type& __param) 5209: { 5209: 5209: 5209: const double __naf = 5209: (1 - std::numeric_limits::epsilon()) / 2; 5209: 5209: const double __thr = 5209: std::numeric_limits<_IntType>::max() + __naf; 5209: __detail::_Adaptor<_UniformRandomNumberGenerator, double> 5209: __aurng(__urng); 5209: 5209: double __cand; 5209: do 5209: __cand = std::floor(std::log(1.0 - __aurng()) / __param._M_log_1_p); 5209: while (__cand >= __thr); 5209: 5209: return result_type(__cand + __naf); 5209: } 5209: 5209: template 5209: template 5209: void 5209: geometric_distribution<_IntType>:: 5209: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __param) 5209: { 5209: 5209: 5209: 5209: const double __naf = 5209: (1 - std::numeric_limits::epsilon()) / 2; 5209: 5209: const double __thr = 5209: std::numeric_limits<_IntType>::max() + __naf; 5209: __detail::_Adaptor<_UniformRandomNumberGenerator, double> 5209: __aurng(__urng); 5209: 5209: while (__f != __t) 5209: { 5209: double __cand; 5209: do 5209: __cand = std::floor(std::log(1.0 - __aurng()) 5209: / __param._M_log_1_p); 5209: while (__cand >= __thr); 5209: 5209: *__f++ = __cand + __naf; 5209: } 5209: } 5209: 5209: template 5209: std::basic_ostream<_CharT, _Traits>& 5209: operator<<(std::basic_ostream<_CharT, _Traits>& __os, 5209: const geometric_distribution<_IntType>& __x) 5209: { 5209: typedef std::basic_ostream<_CharT, _Traits> __ostream_type; 5209: typedef typename __ostream_type::ios_base __ios_base; 5209: 5209: const typename __ios_base::fmtflags __flags = __os.flags(); 5209: const _CharT __fill = __os.fill(); 5209: const std::streamsize __precision = __os.precision(); 5209: __os.flags(__ios_base::scientific | __ios_base::left); 5209: __os.fill(__os.widen(' ')); 5209: __os.precision(std::numeric_limits::max_digits10); 5209: 5209: __os << __x.p(); 5209: 5209: __os.flags(__flags); 5209: __os.fill(__fill); 5209: __os.precision(__precision); 5209: return __os; 5209: } 5209: 5209: template 5209: std::basic_istream<_CharT, _Traits>& 5209: operator>>(std::basic_istream<_CharT, _Traits>& __is, 5209: geometric_distribution<_IntType>& __x) 5209: { 5209: typedef std::basic_istream<_CharT, _Traits> __istream_type; 5209: typedef typename __istream_type::ios_base __ios_base; 5209: 5209: const typename __ios_base::fmtflags __flags = __is.flags(); 5209: __is.flags(__ios_base::skipws); 5209: 5209: double __p; 5209: __is >> __p; 5209: __x.param(typename geometric_distribution<_IntType>::param_type(__p)); 5209: 5209: __is.flags(__flags); 5209: return __is; 5209: } 5209: 5209: 5209: template 5209: template 5209: typename negative_binomial_distribution<_IntType>::result_type 5209: negative_binomial_distribution<_IntType>:: 5209: operator()(_UniformRandomNumberGenerator& __urng) 5209: { 5209: const double __y = _M_gd(__urng); 5209: 5209: 5209: std::poisson_distribution __poisson(__y); 5209: return __poisson(__urng); 5209: } 5209: 5209: template 5209: template 5209: typename negative_binomial_distribution<_IntType>::result_type 5209: negative_binomial_distribution<_IntType>:: 5209: operator()(_UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { 5209: typedef typename std::gamma_distribution::param_type 5209: param_type; 5209: 5209: const double __y = 5209: _M_gd(__urng, param_type(__p.k(), (1.0 - __p.p()) / __p.p())); 5209: 5209: std::poisson_distribution __poisson(__y); 5209: return __poisson(__urng); 5209: } 5209: 5209: template 5209: template 5209: void 5209: negative_binomial_distribution<_IntType>:: 5209: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng) 5209: { 5209: 5209: while (__f != __t) 5209: { 5209: const double __y = _M_gd(__urng); 5209: 5209: 5209: std::poisson_distribution __poisson(__y); 5209: *__f++ = __poisson(__urng); 5209: } 5209: } 5209: 5209: template 5209: template 5209: void 5209: negative_binomial_distribution<_IntType>:: 5209: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { 5209: 5209: typename std::gamma_distribution::param_type 5209: __p2(__p.k(), (1.0 - __p.p()) / __p.p()); 5209: 5209: while (__f != __t) 5209: { 5209: const double __y = _M_gd(__urng, __p2); 5209: 5209: std::poisson_distribution __poisson(__y); 5209: *__f++ = __poisson(__urng); 5209: } 5209: } 5209: 5209: template 5209: std::basic_ostream<_CharT, _Traits>& 5209: operator<<(std::basic_ostream<_CharT, _Traits>& __os, 5209: const negative_binomial_distribution<_IntType>& __x) 5209: { 5209: typedef std::basic_ostream<_CharT, _Traits> __ostream_type; 5209: typedef typename __ostream_type::ios_base __ios_base; 5209: 5209: const typename __ios_base::fmtflags __flags = __os.flags(); 5209: const _CharT __fill = __os.fill(); 5209: const std::streamsize __precision = __os.precision(); 5209: const _CharT __space = __os.widen(' '); 5209: __os.flags(__ios_base::scientific | __ios_base::left); 5209: __os.fill(__os.widen(' ')); 5209: __os.precision(std::numeric_limits::max_digits10); 5209: 5209: __os << __x.k() << __space << __x.p() 5209: << __space << __x._M_gd; 5209: 5209: __os.flags(__flags); 5209: __os.fill(__fill); 5209: __os.precision(__precision); 5209: return __os; 5209: } 5209: 5209: template 5209: std::basic_istream<_CharT, _Traits>& 5209: operator>>(std::basic_istream<_CharT, _Traits>& __is, 5209: negative_binomial_distribution<_IntType>& __x) 5209: { 5209: typedef std::basic_istream<_CharT, _Traits> __istream_type; 5209: typedef typename __istream_type::ios_base __ios_base; 5209: 5209: const typename __ios_base::fmtflags __flags = __is.flags(); 5209: __is.flags(__ios_base::skipws); 5209: 5209: _IntType __k; 5209: double __p; 5209: __is >> __k >> __p >> __x._M_gd; 5209: __x.param(typename negative_binomial_distribution<_IntType>:: 5209: param_type(__k, __p)); 5209: 5209: __is.flags(__flags); 5209: return __is; 5209: } 5209: 5209: 5209: template 5209: void 5209: poisson_distribution<_IntType>::param_type:: 5209: _M_initialize() 5209: { 5209: 5209: if (_M_mean >= 12) 5209: { 5209: const double __m = std::floor(_M_mean); 5209: _M_lm_thr = std::log(_M_mean); 5209: _M_lfm = std::lgamma(__m + 1); 5209: _M_sm = std::sqrt(__m); 5209: 5209: const double __pi_4 = 0.7853981633974483096156608458198757L; 5209: const double __dx = std::sqrt(2 * __m * std::log(32 * __m 5209: / __pi_4)); 5209: _M_d = std::round(std::max(6.0, std::min(__m, __dx))); 5209: const double __cx = 2 * __m + _M_d; 5209: _M_scx = std::sqrt(__cx / 2); 5209: _M_1cx = 1 / __cx; 5209: 5209: _M_c2b = std::sqrt(__pi_4 * __cx) * std::exp(_M_1cx); 5209: _M_cb = 2 * __cx * std::exp(-_M_d * _M_1cx * (1 + _M_d / 2)) 5209: / _M_d; 5209: } 5209: else 5209: 5209: _M_lm_thr = std::exp(-_M_mean); 5209: } 5209: # 1280 "/usr/include/c++/10/bits/random.tcc" 3 5209: template 5209: template 5209: typename poisson_distribution<_IntType>::result_type 5209: poisson_distribution<_IntType>:: 5209: operator()(_UniformRandomNumberGenerator& __urng, 5209: const param_type& __param) 5209: { 5209: __detail::_Adaptor<_UniformRandomNumberGenerator, double> 5209: __aurng(__urng); 5209: 5209: if (__param.mean() >= 12) 5209: { 5209: double __x; 5209: 5209: 5209: const double __naf = 5209: (1 - std::numeric_limits::epsilon()) / 2; 5209: const double __thr = 5209: std::numeric_limits<_IntType>::max() + __naf; 5209: 5209: const double __m = std::floor(__param.mean()); 5209: 5209: const double __spi_2 = 1.2533141373155002512078826424055226L; 5209: const double __c1 = __param._M_sm * __spi_2; 5209: const double __c2 = __param._M_c2b + __c1; 5209: const double __c3 = __c2 + 1; 5209: const double __c4 = __c3 + 1; 5209: 5209: const double __178 = 0.0128205128205128205128205128205128L; 5209: 5209: const double __e178 = 1.0129030479320018583185514777512983L; 5209: const double __c5 = __c4 + __e178; 5209: const double __c = __param._M_cb + __c5; 5209: const double __2cx = 2 * (2 * __m + __param._M_d); 5209: 5209: bool __reject = true; 5209: do 5209: { 5209: const double __u = __c * __aurng(); 5209: const double __e = -std::log(1.0 - __aurng()); 5209: 5209: double __w = 0.0; 5209: 5209: if (__u <= __c1) 5209: { 5209: const double __n = _M_nd(__urng); 5209: const double __y = -std::abs(__n) * __param._M_sm - 1; 5209: __x = std::floor(__y); 5209: __w = -__n * __n / 2; 5209: if (__x < -__m) 5209: continue; 5209: } 5209: else if (__u <= __c2) 5209: { 5209: const double __n = _M_nd(__urng); 5209: const double __y = 1 + std::abs(__n) * __param._M_scx; 5209: __x = std::ceil(__y); 5209: __w = __y * (2 - __y) * __param._M_1cx; 5209: if (__x > __param._M_d) 5209: continue; 5209: } 5209: else if (__u <= __c3) 5209: 5209: 5209: __x = -1; 5209: else if (__u <= __c4) 5209: __x = 0; 5209: else if (__u <= __c5) 5209: { 5209: __x = 1; 5209: 5209: __w = __178; 5209: } 5209: else 5209: { 5209: const double __v = -std::log(1.0 - __aurng()); 5209: const double __y = __param._M_d 5209: + __v * __2cx / __param._M_d; 5209: __x = std::ceil(__y); 5209: __w = -__param._M_d * __param._M_1cx * (1 + __y / 2); 5209: } 5209: 5209: __reject = (__w - __e - __x * __param._M_lm_thr 5209: > __param._M_lfm - std::lgamma(__x + __m + 1)); 5209: 5209: __reject |= __x + __m >= __thr; 5209: 5209: } while (__reject); 5209: 5209: return result_type(__x + __m + __naf); 5209: } 5209: else 5209: 5209: { 5209: _IntType __x = 0; 5209: double __prod = 1.0; 5209: 5209: do 5209: { 5209: __prod *= __aurng(); 5209: __x += 1; 5209: } 5209: while (__prod > __param._M_lm_thr); 5209: 5209: return __x - 1; 5209: } 5209: } 5209: 5209: template 5209: template 5209: void 5209: poisson_distribution<_IntType>:: 5209: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __param) 5209: { 5209: 5209: 5209: while (__f != __t) 5209: *__f++ = this->operator()(__urng, __param); 5209: } 5209: 5209: template 5209: std::basic_ostream<_CharT, _Traits>& 5209: operator<<(std::basic_ostream<_CharT, _Traits>& __os, 5209: const poisson_distribution<_IntType>& __x) 5209: { 5209: typedef std::basic_ostream<_CharT, _Traits> __ostream_type; 5209: typedef typename __ostream_type::ios_base __ios_base; 5209: 5209: const typename __ios_base::fmtflags __flags = __os.flags(); 5209: const _CharT __fill = __os.fill(); 5209: const std::streamsize __precision = __os.precision(); 5209: const _CharT __space = __os.widen(' '); 5209: __os.flags(__ios_base::scientific | __ios_base::left); 5209: __os.fill(__space); 5209: __os.precision(std::numeric_limits::max_digits10); 5209: 5209: __os << __x.mean() << __space << __x._M_nd; 5209: 5209: __os.flags(__flags); 5209: __os.fill(__fill); 5209: __os.precision(__precision); 5209: return __os; 5209: } 5209: 5209: template 5209: std::basic_istream<_CharT, _Traits>& 5209: operator>>(std::basic_istream<_CharT, _Traits>& __is, 5209: poisson_distribution<_IntType>& __x) 5209: { 5209: typedef std::basic_istream<_CharT, _Traits> __istream_type; 5209: typedef typename __istream_type::ios_base __ios_base; 5209: 5209: const typename __ios_base::fmtflags __flags = __is.flags(); 5209: __is.flags(__ios_base::skipws); 5209: 5209: double __mean; 5209: __is >> __mean >> __x._M_nd; 5209: __x.param(typename poisson_distribution<_IntType>::param_type(__mean)); 5209: 5209: __is.flags(__flags); 5209: return __is; 5209: } 5209: 5209: 5209: template 5209: void 5209: binomial_distribution<_IntType>::param_type:: 5209: _M_initialize() 5209: { 5209: const double __p12 = _M_p <= 0.5 ? _M_p : 1.0 - _M_p; 5209: 5209: _M_easy = true; 5209: 5209: 5209: if (_M_t * __p12 >= 8) 5209: { 5209: _M_easy = false; 5209: const double __np = std::floor(_M_t * __p12); 5209: const double __pa = __np / _M_t; 5209: const double __1p = 1 - __pa; 5209: 5209: const double __pi_4 = 0.7853981633974483096156608458198757L; 5209: const double __d1x = 5209: std::sqrt(__np * __1p * std::log(32 * __np 5209: / (81 * __pi_4 * __1p))); 5209: _M_d1 = std::round(std::max(1.0, __d1x)); 5209: const double __d2x = 5209: std::sqrt(__np * __1p * std::log(32 * _M_t * __1p 5209: / (__pi_4 * __pa))); 5209: _M_d2 = std::round(std::max(1.0, __d2x)); 5209: 5209: 5209: const double __spi_2 = 1.2533141373155002512078826424055226L; 5209: _M_s1 = std::sqrt(__np * __1p) * (1 + _M_d1 / (4 * __np)); 5209: _M_s2 = std::sqrt(__np * __1p) * (1 + _M_d2 / (4 * _M_t * __1p)); 5209: _M_c = 2 * _M_d1 / __np; 5209: _M_a1 = std::exp(_M_c) * _M_s1 * __spi_2; 5209: const double __a12 = _M_a1 + _M_s2 * __spi_2; 5209: const double __s1s = _M_s1 * _M_s1; 5209: _M_a123 = __a12 + (std::exp(_M_d1 / (_M_t * __1p)) 5209: * 2 * __s1s / _M_d1 5209: * std::exp(-_M_d1 * _M_d1 / (2 * __s1s))); 5209: const double __s2s = _M_s2 * _M_s2; 5209: _M_s = (_M_a123 + 2 * __s2s / _M_d2 5209: * std::exp(-_M_d2 * _M_d2 / (2 * __s2s))); 5209: _M_lf = (std::lgamma(__np + 1) 5209: + std::lgamma(_M_t - __np + 1)); 5209: _M_lp1p = std::log(__pa / __1p); 5209: 5209: _M_q = -std::log(1 - (__p12 - __pa) / __1p); 5209: } 5209: else 5209: 5209: _M_q = -std::log(1 - __p12); 5209: } 5209: 5209: template 5209: template 5209: typename binomial_distribution<_IntType>::result_type 5209: binomial_distribution<_IntType>:: 5209: _M_waiting(_UniformRandomNumberGenerator& __urng, 5209: _IntType __t, double __q) 5209: { 5209: _IntType __x = 0; 5209: double __sum = 0.0; 5209: __detail::_Adaptor<_UniformRandomNumberGenerator, double> 5209: __aurng(__urng); 5209: 5209: do 5209: { 5209: if (__t == __x) 5209: return __x; 5209: const double __e = -std::log(1.0 - __aurng()); 5209: __sum += __e / (__t - __x); 5209: __x += 1; 5209: } 5209: while (__sum <= __q); 5209: 5209: return __x - 1; 5209: } 5209: # 1536 "/usr/include/c++/10/bits/random.tcc" 3 5209: template 5209: template 5209: typename binomial_distribution<_IntType>::result_type 5209: binomial_distribution<_IntType>:: 5209: operator()(_UniformRandomNumberGenerator& __urng, 5209: const param_type& __param) 5209: { 5209: result_type __ret; 5209: const _IntType __t = __param.t(); 5209: const double __p = __param.p(); 5209: const double __p12 = __p <= 0.5 ? __p : 1.0 - __p; 5209: __detail::_Adaptor<_UniformRandomNumberGenerator, double> 5209: __aurng(__urng); 5209: 5209: 5209: if (!__param._M_easy) 5209: { 5209: double __x; 5209: 5209: 5209: const double __naf = 5209: (1 - std::numeric_limits::epsilon()) / 2; 5209: const double __thr = 5209: std::numeric_limits<_IntType>::max() + __naf; 5209: 5209: const double __np = std::floor(__t * __p12); 5209: 5209: 5209: const double __spi_2 = 1.2533141373155002512078826424055226L; 5209: const double __a1 = __param._M_a1; 5209: const double __a12 = __a1 + __param._M_s2 * __spi_2; 5209: const double __a123 = __param._M_a123; 5209: const double __s1s = __param._M_s1 * __param._M_s1; 5209: const double __s2s = __param._M_s2 * __param._M_s2; 5209: 5209: bool __reject; 5209: do 5209: { 5209: const double __u = __param._M_s * __aurng(); 5209: 5209: double __v; 5209: 5209: if (__u <= __a1) 5209: { 5209: const double __n = _M_nd(__urng); 5209: const double __y = __param._M_s1 * std::abs(__n); 5209: __reject = __y >= __param._M_d1; 5209: if (!__reject) 5209: { 5209: const double __e = -std::log(1.0 - __aurng()); 5209: __x = std::floor(__y); 5209: __v = -__e - __n * __n / 2 + __param._M_c; 5209: } 5209: } 5209: else if (__u <= __a12) 5209: { 5209: const double __n = _M_nd(__urng); 5209: const double __y = __param._M_s2 * std::abs(__n); 5209: __reject = __y >= __param._M_d2; 5209: if (!__reject) 5209: { 5209: const double __e = -std::log(1.0 - __aurng()); 5209: __x = std::floor(-__y); 5209: __v = -__e - __n * __n / 2; 5209: } 5209: } 5209: else if (__u <= __a123) 5209: { 5209: const double __e1 = -std::log(1.0 - __aurng()); 5209: const double __e2 = -std::log(1.0 - __aurng()); 5209: 5209: const double __y = __param._M_d1 5209: + 2 * __s1s * __e1 / __param._M_d1; 5209: __x = std::floor(__y); 5209: __v = (-__e2 + __param._M_d1 * (1 / (__t - __np) 5209: -__y / (2 * __s1s))); 5209: __reject = false; 5209: } 5209: else 5209: { 5209: const double __e1 = -std::log(1.0 - __aurng()); 5209: const double __e2 = -std::log(1.0 - __aurng()); 5209: 5209: const double __y = __param._M_d2 5209: + 2 * __s2s * __e1 / __param._M_d2; 5209: __x = std::floor(-__y); 5209: __v = -__e2 - __param._M_d2 * __y / (2 * __s2s); 5209: __reject = false; 5209: } 5209: 5209: __reject = __reject || __x < -__np || __x > __t - __np; 5209: if (!__reject) 5209: { 5209: const double __lfx = 5209: std::lgamma(__np + __x + 1) 5209: + std::lgamma(__t - (__np + __x) + 1); 5209: __reject = __v > __param._M_lf - __lfx 5209: + __x * __param._M_lp1p; 5209: } 5209: 5209: __reject |= __x + __np >= __thr; 5209: } 5209: while (__reject); 5209: 5209: __x += __np + __naf; 5209: 5209: const _IntType __z = _M_waiting(__urng, __t - _IntType(__x), 5209: __param._M_q); 5209: __ret = _IntType(__x) + __z; 5209: } 5209: else 5209: 5209: __ret = _M_waiting(__urng, __t, __param._M_q); 5209: 5209: if (__p12 != __p) 5209: __ret = __t - __ret; 5209: return __ret; 5209: } 5209: 5209: template 5209: template 5209: void 5209: binomial_distribution<_IntType>:: 5209: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __param) 5209: { 5209: 5209: 5209: while (__f != __t) 5209: *__f++ = this->operator()(__urng, __param); 5209: } 5209: 5209: template 5209: std::basic_ostream<_CharT, _Traits>& 5209: operator<<(std::basic_ostream<_CharT, _Traits>& __os, 5209: const binomial_distribution<_IntType>& __x) 5209: { 5209: typedef std::basic_ostream<_CharT, _Traits> __ostream_type; 5209: typedef typename __ostream_type::ios_base __ios_base; 5209: 5209: const typename __ios_base::fmtflags __flags = __os.flags(); 5209: const _CharT __fill = __os.fill(); 5209: const std::streamsize __precision = __os.precision(); 5209: const _CharT __space = __os.widen(' '); 5209: __os.flags(__ios_base::scientific | __ios_base::left); 5209: __os.fill(__space); 5209: __os.precision(std::numeric_limits::max_digits10); 5209: 5209: __os << __x.t() << __space << __x.p() 5209: << __space << __x._M_nd; 5209: 5209: __os.flags(__flags); 5209: __os.fill(__fill); 5209: __os.precision(__precision); 5209: return __os; 5209: } 5209: 5209: template 5209: std::basic_istream<_CharT, _Traits>& 5209: operator>>(std::basic_istream<_CharT, _Traits>& __is, 5209: binomial_distribution<_IntType>& __x) 5209: { 5209: typedef std::basic_istream<_CharT, _Traits> __istream_type; 5209: typedef typename __istream_type::ios_base __ios_base; 5209: 5209: const typename __ios_base::fmtflags __flags = __is.flags(); 5209: __is.flags(__ios_base::dec | __ios_base::skipws); 5209: 5209: _IntType __t; 5209: double __p; 5209: __is >> __t >> __p >> __x._M_nd; 5209: __x.param(typename binomial_distribution<_IntType>:: 5209: param_type(__t, __p)); 5209: 5209: __is.flags(__flags); 5209: return __is; 5209: } 5209: 5209: 5209: template 5209: template 5209: void 5209: std::exponential_distribution<_RealType>:: 5209: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { 5209: 5209: __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> 5209: __aurng(__urng); 5209: while (__f != __t) 5209: *__f++ = -std::log(result_type(1) - __aurng()) / __p.lambda(); 5209: } 5209: 5209: template 5209: std::basic_ostream<_CharT, _Traits>& 5209: operator<<(std::basic_ostream<_CharT, _Traits>& __os, 5209: const exponential_distribution<_RealType>& __x) 5209: { 5209: typedef std::basic_ostream<_CharT, _Traits> __ostream_type; 5209: typedef typename __ostream_type::ios_base __ios_base; 5209: 5209: const typename __ios_base::fmtflags __flags = __os.flags(); 5209: const _CharT __fill = __os.fill(); 5209: const std::streamsize __precision = __os.precision(); 5209: __os.flags(__ios_base::scientific | __ios_base::left); 5209: __os.fill(__os.widen(' ')); 5209: __os.precision(std::numeric_limits<_RealType>::max_digits10); 5209: 5209: __os << __x.lambda(); 5209: 5209: __os.flags(__flags); 5209: __os.fill(__fill); 5209: __os.precision(__precision); 5209: return __os; 5209: } 5209: 5209: template 5209: std::basic_istream<_CharT, _Traits>& 5209: operator>>(std::basic_istream<_CharT, _Traits>& __is, 5209: exponential_distribution<_RealType>& __x) 5209: { 5209: typedef std::basic_istream<_CharT, _Traits> __istream_type; 5209: typedef typename __istream_type::ios_base __ios_base; 5209: 5209: const typename __ios_base::fmtflags __flags = __is.flags(); 5209: __is.flags(__ios_base::dec | __ios_base::skipws); 5209: 5209: _RealType __lambda; 5209: __is >> __lambda; 5209: __x.param(typename exponential_distribution<_RealType>:: 5209: param_type(__lambda)); 5209: 5209: __is.flags(__flags); 5209: return __is; 5209: } 5209: # 1785 "/usr/include/c++/10/bits/random.tcc" 3 5209: template 5209: template 5209: typename normal_distribution<_RealType>::result_type 5209: normal_distribution<_RealType>:: 5209: operator()(_UniformRandomNumberGenerator& __urng, 5209: const param_type& __param) 5209: { 5209: result_type __ret; 5209: __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> 5209: __aurng(__urng); 5209: 5209: if (_M_saved_available) 5209: { 5209: _M_saved_available = false; 5209: __ret = _M_saved; 5209: } 5209: else 5209: { 5209: result_type __x, __y, __r2; 5209: do 5209: { 5209: __x = result_type(2.0) * __aurng() - 1.0; 5209: __y = result_type(2.0) * __aurng() - 1.0; 5209: __r2 = __x * __x + __y * __y; 5209: } 5209: while (__r2 > 1.0 || __r2 == 0.0); 5209: 5209: const result_type __mult = std::sqrt(-2 * std::log(__r2) / __r2); 5209: _M_saved = __x * __mult; 5209: _M_saved_available = true; 5209: __ret = __y * __mult; 5209: } 5209: 5209: __ret = __ret * __param.stddev() + __param.mean(); 5209: return __ret; 5209: } 5209: 5209: template 5209: template 5209: void 5209: normal_distribution<_RealType>:: 5209: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __param) 5209: { 5209: 5209: 5209: if (__f == __t) 5209: return; 5209: 5209: if (_M_saved_available) 5209: { 5209: _M_saved_available = false; 5209: *__f++ = _M_saved * __param.stddev() + __param.mean(); 5209: 5209: if (__f == __t) 5209: return; 5209: } 5209: 5209: __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> 5209: __aurng(__urng); 5209: 5209: while (__f + 1 < __t) 5209: { 5209: result_type __x, __y, __r2; 5209: do 5209: { 5209: __x = result_type(2.0) * __aurng() - 1.0; 5209: __y = result_type(2.0) * __aurng() - 1.0; 5209: __r2 = __x * __x + __y * __y; 5209: } 5209: while (__r2 > 1.0 || __r2 == 0.0); 5209: 5209: const result_type __mult = std::sqrt(-2 * std::log(__r2) / __r2); 5209: *__f++ = __y * __mult * __param.stddev() + __param.mean(); 5209: *__f++ = __x * __mult * __param.stddev() + __param.mean(); 5209: } 5209: 5209: if (__f != __t) 5209: { 5209: result_type __x, __y, __r2; 5209: do 5209: { 5209: __x = result_type(2.0) * __aurng() - 1.0; 5209: __y = result_type(2.0) * __aurng() - 1.0; 5209: __r2 = __x * __x + __y * __y; 5209: } 5209: while (__r2 > 1.0 || __r2 == 0.0); 5209: 5209: const result_type __mult = std::sqrt(-2 * std::log(__r2) / __r2); 5209: _M_saved = __x * __mult; 5209: _M_saved_available = true; 5209: *__f = __y * __mult * __param.stddev() + __param.mean(); 5209: } 5209: } 5209: 5209: template 5209: bool 5209: operator==(const std::normal_distribution<_RealType>& __d1, 5209: const std::normal_distribution<_RealType>& __d2) 5209: { 5209: if (__d1._M_param == __d2._M_param 5209: && __d1._M_saved_available == __d2._M_saved_available) 5209: { 5209: if (__d1._M_saved_available 5209: && __d1._M_saved == __d2._M_saved) 5209: return true; 5209: else if(!__d1._M_saved_available) 5209: return true; 5209: else 5209: return false; 5209: } 5209: else 5209: return false; 5209: } 5209: 5209: template 5209: std::basic_ostream<_CharT, _Traits>& 5209: operator<<(std::basic_ostream<_CharT, _Traits>& __os, 5209: const normal_distribution<_RealType>& __x) 5209: { 5209: typedef std::basic_ostream<_CharT, _Traits> __ostream_type; 5209: typedef typename __ostream_type::ios_base __ios_base; 5209: 5209: const typename __ios_base::fmtflags __flags = __os.flags(); 5209: const _CharT __fill = __os.fill(); 5209: const std::streamsize __precision = __os.precision(); 5209: const _CharT __space = __os.widen(' '); 5209: __os.flags(__ios_base::scientific | __ios_base::left); 5209: __os.fill(__space); 5209: __os.precision(std::numeric_limits<_RealType>::max_digits10); 5209: 5209: __os << __x.mean() << __space << __x.stddev() 5209: << __space << __x._M_saved_available; 5209: if (__x._M_saved_available) 5209: __os << __space << __x._M_saved; 5209: 5209: __os.flags(__flags); 5209: __os.fill(__fill); 5209: __os.precision(__precision); 5209: return __os; 5209: } 5209: 5209: template 5209: std::basic_istream<_CharT, _Traits>& 5209: operator>>(std::basic_istream<_CharT, _Traits>& __is, 5209: normal_distribution<_RealType>& __x) 5209: { 5209: typedef std::basic_istream<_CharT, _Traits> __istream_type; 5209: typedef typename __istream_type::ios_base __ios_base; 5209: 5209: const typename __ios_base::fmtflags __flags = __is.flags(); 5209: __is.flags(__ios_base::dec | __ios_base::skipws); 5209: 5209: double __mean, __stddev; 5209: __is >> __mean >> __stddev 5209: >> __x._M_saved_available; 5209: if (__x._M_saved_available) 5209: __is >> __x._M_saved; 5209: __x.param(typename normal_distribution<_RealType>:: 5209: param_type(__mean, __stddev)); 5209: 5209: __is.flags(__flags); 5209: return __is; 5209: } 5209: 5209: 5209: template 5209: template 5209: void 5209: lognormal_distribution<_RealType>:: 5209: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { 5209: 5209: while (__f != __t) 5209: *__f++ = std::exp(__p.s() * _M_nd(__urng) + __p.m()); 5209: } 5209: 5209: template 5209: std::basic_ostream<_CharT, _Traits>& 5209: operator<<(std::basic_ostream<_CharT, _Traits>& __os, 5209: const lognormal_distribution<_RealType>& __x) 5209: { 5209: typedef std::basic_ostream<_CharT, _Traits> __ostream_type; 5209: typedef typename __ostream_type::ios_base __ios_base; 5209: 5209: const typename __ios_base::fmtflags __flags = __os.flags(); 5209: const _CharT __fill = __os.fill(); 5209: const std::streamsize __precision = __os.precision(); 5209: const _CharT __space = __os.widen(' '); 5209: __os.flags(__ios_base::scientific | __ios_base::left); 5209: __os.fill(__space); 5209: __os.precision(std::numeric_limits<_RealType>::max_digits10); 5209: 5209: __os << __x.m() << __space << __x.s() 5209: << __space << __x._M_nd; 5209: 5209: __os.flags(__flags); 5209: __os.fill(__fill); 5209: __os.precision(__precision); 5209: return __os; 5209: } 5209: 5209: template 5209: std::basic_istream<_CharT, _Traits>& 5209: operator>>(std::basic_istream<_CharT, _Traits>& __is, 5209: lognormal_distribution<_RealType>& __x) 5209: { 5209: typedef std::basic_istream<_CharT, _Traits> __istream_type; 5209: typedef typename __istream_type::ios_base __ios_base; 5209: 5209: const typename __ios_base::fmtflags __flags = __is.flags(); 5209: __is.flags(__ios_base::dec | __ios_base::skipws); 5209: 5209: _RealType __m, __s; 5209: __is >> __m >> __s >> __x._M_nd; 5209: __x.param(typename lognormal_distribution<_RealType>:: 5209: param_type(__m, __s)); 5209: 5209: __is.flags(__flags); 5209: return __is; 5209: } 5209: 5209: template 5209: template 5209: void 5209: std::chi_squared_distribution<_RealType>:: 5209: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng) 5209: { 5209: 5209: while (__f != __t) 5209: *__f++ = 2 * _M_gd(__urng); 5209: } 5209: 5209: template 5209: template 5209: void 5209: std::chi_squared_distribution<_RealType>:: 5209: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const typename 5209: std::gamma_distribution::param_type& __p) 5209: { 5209: 5209: while (__f != __t) 5209: *__f++ = 2 * _M_gd(__urng, __p); 5209: } 5209: 5209: template 5209: std::basic_ostream<_CharT, _Traits>& 5209: operator<<(std::basic_ostream<_CharT, _Traits>& __os, 5209: const chi_squared_distribution<_RealType>& __x) 5209: { 5209: typedef std::basic_ostream<_CharT, _Traits> __ostream_type; 5209: typedef typename __ostream_type::ios_base __ios_base; 5209: 5209: const typename __ios_base::fmtflags __flags = __os.flags(); 5209: const _CharT __fill = __os.fill(); 5209: const std::streamsize __precision = __os.precision(); 5209: const _CharT __space = __os.widen(' '); 5209: __os.flags(__ios_base::scientific | __ios_base::left); 5209: __os.fill(__space); 5209: __os.precision(std::numeric_limits<_RealType>::max_digits10); 5209: 5209: __os << __x.n() << __space << __x._M_gd; 5209: 5209: __os.flags(__flags); 5209: __os.fill(__fill); 5209: __os.precision(__precision); 5209: return __os; 5209: } 5209: 5209: template 5209: std::basic_istream<_CharT, _Traits>& 5209: operator>>(std::basic_istream<_CharT, _Traits>& __is, 5209: chi_squared_distribution<_RealType>& __x) 5209: { 5209: typedef std::basic_istream<_CharT, _Traits> __istream_type; 5209: typedef typename __istream_type::ios_base __ios_base; 5209: 5209: const typename __ios_base::fmtflags __flags = __is.flags(); 5209: __is.flags(__ios_base::dec | __ios_base::skipws); 5209: 5209: _RealType __n; 5209: __is >> __n >> __x._M_gd; 5209: __x.param(typename chi_squared_distribution<_RealType>:: 5209: param_type(__n)); 5209: 5209: __is.flags(__flags); 5209: return __is; 5209: } 5209: 5209: 5209: template 5209: template 5209: typename cauchy_distribution<_RealType>::result_type 5209: cauchy_distribution<_RealType>:: 5209: operator()(_UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { 5209: __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> 5209: __aurng(__urng); 5209: _RealType __u; 5209: do 5209: __u = __aurng(); 5209: while (__u == 0.5); 5209: 5209: const _RealType __pi = 3.1415926535897932384626433832795029L; 5209: return __p.a() + __p.b() * std::tan(__pi * __u); 5209: } 5209: 5209: template 5209: template 5209: void 5209: cauchy_distribution<_RealType>:: 5209: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { 5209: 5209: const _RealType __pi = 3.1415926535897932384626433832795029L; 5209: __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> 5209: __aurng(__urng); 5209: while (__f != __t) 5209: { 5209: _RealType __u; 5209: do 5209: __u = __aurng(); 5209: while (__u == 0.5); 5209: 5209: *__f++ = __p.a() + __p.b() * std::tan(__pi * __u); 5209: } 5209: } 5209: 5209: template 5209: std::basic_ostream<_CharT, _Traits>& 5209: operator<<(std::basic_ostream<_CharT, _Traits>& __os, 5209: const cauchy_distribution<_RealType>& __x) 5209: { 5209: typedef std::basic_ostream<_CharT, _Traits> __ostream_type; 5209: typedef typename __ostream_type::ios_base __ios_base; 5209: 5209: const typename __ios_base::fmtflags __flags = __os.flags(); 5209: const _CharT __fill = __os.fill(); 5209: const std::streamsize __precision = __os.precision(); 5209: const _CharT __space = __os.widen(' '); 5209: __os.flags(__ios_base::scientific | __ios_base::left); 5209: __os.fill(__space); 5209: __os.precision(std::numeric_limits<_RealType>::max_digits10); 5209: 5209: __os << __x.a() << __space << __x.b(); 5209: 5209: __os.flags(__flags); 5209: __os.fill(__fill); 5209: __os.precision(__precision); 5209: return __os; 5209: } 5209: 5209: template 5209: std::basic_istream<_CharT, _Traits>& 5209: operator>>(std::basic_istream<_CharT, _Traits>& __is, 5209: cauchy_distribution<_RealType>& __x) 5209: { 5209: typedef std::basic_istream<_CharT, _Traits> __istream_type; 5209: typedef typename __istream_type::ios_base __ios_base; 5209: 5209: const typename __ios_base::fmtflags __flags = __is.flags(); 5209: __is.flags(__ios_base::dec | __ios_base::skipws); 5209: 5209: _RealType __a, __b; 5209: __is >> __a >> __b; 5209: __x.param(typename cauchy_distribution<_RealType>:: 5209: param_type(__a, __b)); 5209: 5209: __is.flags(__flags); 5209: return __is; 5209: } 5209: 5209: 5209: template 5209: template 5209: void 5209: std::fisher_f_distribution<_RealType>:: 5209: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng) 5209: { 5209: 5209: while (__f != __t) 5209: *__f++ = ((_M_gd_x(__urng) * n()) / (_M_gd_y(__urng) * m())); 5209: } 5209: 5209: template 5209: template 5209: void 5209: std::fisher_f_distribution<_RealType>:: 5209: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { 5209: 5209: typedef typename std::gamma_distribution::param_type 5209: param_type; 5209: param_type __p1(__p.m() / 2); 5209: param_type __p2(__p.n() / 2); 5209: while (__f != __t) 5209: *__f++ = ((_M_gd_x(__urng, __p1) * n()) 5209: / (_M_gd_y(__urng, __p2) * m())); 5209: } 5209: 5209: template 5209: std::basic_ostream<_CharT, _Traits>& 5209: operator<<(std::basic_ostream<_CharT, _Traits>& __os, 5209: const fisher_f_distribution<_RealType>& __x) 5209: { 5209: typedef std::basic_ostream<_CharT, _Traits> __ostream_type; 5209: typedef typename __ostream_type::ios_base __ios_base; 5209: 5209: const typename __ios_base::fmtflags __flags = __os.flags(); 5209: const _CharT __fill = __os.fill(); 5209: const std::streamsize __precision = __os.precision(); 5209: const _CharT __space = __os.widen(' '); 5209: __os.flags(__ios_base::scientific | __ios_base::left); 5209: __os.fill(__space); 5209: __os.precision(std::numeric_limits<_RealType>::max_digits10); 5209: 5209: __os << __x.m() << __space << __x.n() 5209: << __space << __x._M_gd_x << __space << __x._M_gd_y; 5209: 5209: __os.flags(__flags); 5209: __os.fill(__fill); 5209: __os.precision(__precision); 5209: return __os; 5209: } 5209: 5209: template 5209: std::basic_istream<_CharT, _Traits>& 5209: operator>>(std::basic_istream<_CharT, _Traits>& __is, 5209: fisher_f_distribution<_RealType>& __x) 5209: { 5209: typedef std::basic_istream<_CharT, _Traits> __istream_type; 5209: typedef typename __istream_type::ios_base __ios_base; 5209: 5209: const typename __ios_base::fmtflags __flags = __is.flags(); 5209: __is.flags(__ios_base::dec | __ios_base::skipws); 5209: 5209: _RealType __m, __n; 5209: __is >> __m >> __n >> __x._M_gd_x >> __x._M_gd_y; 5209: __x.param(typename fisher_f_distribution<_RealType>:: 5209: param_type(__m, __n)); 5209: 5209: __is.flags(__flags); 5209: return __is; 5209: } 5209: 5209: 5209: template 5209: template 5209: void 5209: std::student_t_distribution<_RealType>:: 5209: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng) 5209: { 5209: 5209: while (__f != __t) 5209: *__f++ = _M_nd(__urng) * std::sqrt(n() / _M_gd(__urng)); 5209: } 5209: 5209: template 5209: template 5209: void 5209: std::student_t_distribution<_RealType>:: 5209: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { 5209: 5209: typename std::gamma_distribution::param_type 5209: __p2(__p.n() / 2, 2); 5209: while (__f != __t) 5209: *__f++ = _M_nd(__urng) * std::sqrt(__p.n() / _M_gd(__urng, __p2)); 5209: } 5209: 5209: template 5209: std::basic_ostream<_CharT, _Traits>& 5209: operator<<(std::basic_ostream<_CharT, _Traits>& __os, 5209: const student_t_distribution<_RealType>& __x) 5209: { 5209: typedef std::basic_ostream<_CharT, _Traits> __ostream_type; 5209: typedef typename __ostream_type::ios_base __ios_base; 5209: 5209: const typename __ios_base::fmtflags __flags = __os.flags(); 5209: const _CharT __fill = __os.fill(); 5209: const std::streamsize __precision = __os.precision(); 5209: const _CharT __space = __os.widen(' '); 5209: __os.flags(__ios_base::scientific | __ios_base::left); 5209: __os.fill(__space); 5209: __os.precision(std::numeric_limits<_RealType>::max_digits10); 5209: 5209: __os << __x.n() << __space << __x._M_nd << __space << __x._M_gd; 5209: 5209: __os.flags(__flags); 5209: __os.fill(__fill); 5209: __os.precision(__precision); 5209: return __os; 5209: } 5209: 5209: template 5209: std::basic_istream<_CharT, _Traits>& 5209: operator>>(std::basic_istream<_CharT, _Traits>& __is, 5209: student_t_distribution<_RealType>& __x) 5209: { 5209: typedef std::basic_istream<_CharT, _Traits> __istream_type; 5209: typedef typename __istream_type::ios_base __ios_base; 5209: 5209: const typename __ios_base::fmtflags __flags = __is.flags(); 5209: __is.flags(__ios_base::dec | __ios_base::skipws); 5209: 5209: _RealType __n; 5209: __is >> __n >> __x._M_nd >> __x._M_gd; 5209: __x.param(typename student_t_distribution<_RealType>::param_type(__n)); 5209: 5209: __is.flags(__flags); 5209: return __is; 5209: } 5209: 5209: 5209: template 5209: void 5209: gamma_distribution<_RealType>::param_type:: 5209: _M_initialize() 5209: { 5209: _M_malpha = _M_alpha < 1.0 ? _M_alpha + _RealType(1.0) : _M_alpha; 5209: 5209: const _RealType __a1 = _M_malpha - _RealType(1.0) / _RealType(3.0); 5209: _M_a2 = _RealType(1.0) / std::sqrt(_RealType(9.0) * __a1); 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: template 5209: typename gamma_distribution<_RealType>::result_type 5209: gamma_distribution<_RealType>:: 5209: operator()(_UniformRandomNumberGenerator& __urng, 5209: const param_type& __param) 5209: { 5209: __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> 5209: __aurng(__urng); 5209: 5209: result_type __u, __v, __n; 5209: const result_type __a1 = (__param._M_malpha 5209: - _RealType(1.0) / _RealType(3.0)); 5209: 5209: do 5209: { 5209: do 5209: { 5209: __n = _M_nd(__urng); 5209: __v = result_type(1.0) + __param._M_a2 * __n; 5209: } 5209: while (__v <= 0.0); 5209: 5209: __v = __v * __v * __v; 5209: __u = __aurng(); 5209: } 5209: while (__u > result_type(1.0) - 0.0331 * __n * __n * __n * __n 5209: && (std::log(__u) > (0.5 * __n * __n + __a1 5209: * (1.0 - __v + std::log(__v))))); 5209: 5209: if (__param.alpha() == __param._M_malpha) 5209: return __a1 * __v * __param.beta(); 5209: else 5209: { 5209: do 5209: __u = __aurng(); 5209: while (__u == 0.0); 5209: 5209: return (std::pow(__u, result_type(1.0) / __param.alpha()) 5209: * __a1 * __v * __param.beta()); 5209: } 5209: } 5209: 5209: template 5209: template 5209: void 5209: gamma_distribution<_RealType>:: 5209: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __param) 5209: { 5209: 5209: __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> 5209: __aurng(__urng); 5209: 5209: result_type __u, __v, __n; 5209: const result_type __a1 = (__param._M_malpha 5209: - _RealType(1.0) / _RealType(3.0)); 5209: 5209: if (__param.alpha() == __param._M_malpha) 5209: while (__f != __t) 5209: { 5209: do 5209: { 5209: do 5209: { 5209: __n = _M_nd(__urng); 5209: __v = result_type(1.0) + __param._M_a2 * __n; 5209: } 5209: while (__v <= 0.0); 5209: 5209: __v = __v * __v * __v; 5209: __u = __aurng(); 5209: } 5209: while (__u > result_type(1.0) - 0.0331 * __n * __n * __n * __n 5209: && (std::log(__u) > (0.5 * __n * __n + __a1 5209: * (1.0 - __v + std::log(__v))))); 5209: 5209: *__f++ = __a1 * __v * __param.beta(); 5209: } 5209: else 5209: while (__f != __t) 5209: { 5209: do 5209: { 5209: do 5209: { 5209: __n = _M_nd(__urng); 5209: __v = result_type(1.0) + __param._M_a2 * __n; 5209: } 5209: while (__v <= 0.0); 5209: 5209: __v = __v * __v * __v; 5209: __u = __aurng(); 5209: } 5209: while (__u > result_type(1.0) - 0.0331 * __n * __n * __n * __n 5209: && (std::log(__u) > (0.5 * __n * __n + __a1 5209: * (1.0 - __v + std::log(__v))))); 5209: 5209: do 5209: __u = __aurng(); 5209: while (__u == 0.0); 5209: 5209: *__f++ = (std::pow(__u, result_type(1.0) / __param.alpha()) 5209: * __a1 * __v * __param.beta()); 5209: } 5209: } 5209: 5209: template 5209: std::basic_ostream<_CharT, _Traits>& 5209: operator<<(std::basic_ostream<_CharT, _Traits>& __os, 5209: const gamma_distribution<_RealType>& __x) 5209: { 5209: typedef std::basic_ostream<_CharT, _Traits> __ostream_type; 5209: typedef typename __ostream_type::ios_base __ios_base; 5209: 5209: const typename __ios_base::fmtflags __flags = __os.flags(); 5209: const _CharT __fill = __os.fill(); 5209: const std::streamsize __precision = __os.precision(); 5209: const _CharT __space = __os.widen(' '); 5209: __os.flags(__ios_base::scientific | __ios_base::left); 5209: __os.fill(__space); 5209: __os.precision(std::numeric_limits<_RealType>::max_digits10); 5209: 5209: __os << __x.alpha() << __space << __x.beta() 5209: << __space << __x._M_nd; 5209: 5209: __os.flags(__flags); 5209: __os.fill(__fill); 5209: __os.precision(__precision); 5209: return __os; 5209: } 5209: 5209: template 5209: std::basic_istream<_CharT, _Traits>& 5209: operator>>(std::basic_istream<_CharT, _Traits>& __is, 5209: gamma_distribution<_RealType>& __x) 5209: { 5209: typedef std::basic_istream<_CharT, _Traits> __istream_type; 5209: typedef typename __istream_type::ios_base __ios_base; 5209: 5209: const typename __ios_base::fmtflags __flags = __is.flags(); 5209: __is.flags(__ios_base::dec | __ios_base::skipws); 5209: 5209: _RealType __alpha_val, __beta_val; 5209: __is >> __alpha_val >> __beta_val >> __x._M_nd; 5209: __x.param(typename gamma_distribution<_RealType>:: 5209: param_type(__alpha_val, __beta_val)); 5209: 5209: __is.flags(__flags); 5209: return __is; 5209: } 5209: 5209: 5209: template 5209: template 5209: typename weibull_distribution<_RealType>::result_type 5209: weibull_distribution<_RealType>:: 5209: operator()(_UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { 5209: __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> 5209: __aurng(__urng); 5209: return __p.b() * std::pow(-std::log(result_type(1) - __aurng()), 5209: result_type(1) / __p.a()); 5209: } 5209: 5209: template 5209: template 5209: void 5209: weibull_distribution<_RealType>:: 5209: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { 5209: 5209: __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> 5209: __aurng(__urng); 5209: auto __inv_a = result_type(1) / __p.a(); 5209: 5209: while (__f != __t) 5209: *__f++ = __p.b() * std::pow(-std::log(result_type(1) - __aurng()), 5209: __inv_a); 5209: } 5209: 5209: template 5209: std::basic_ostream<_CharT, _Traits>& 5209: operator<<(std::basic_ostream<_CharT, _Traits>& __os, 5209: const weibull_distribution<_RealType>& __x) 5209: { 5209: typedef std::basic_ostream<_CharT, _Traits> __ostream_type; 5209: typedef typename __ostream_type::ios_base __ios_base; 5209: 5209: const typename __ios_base::fmtflags __flags = __os.flags(); 5209: const _CharT __fill = __os.fill(); 5209: const std::streamsize __precision = __os.precision(); 5209: const _CharT __space = __os.widen(' '); 5209: __os.flags(__ios_base::scientific | __ios_base::left); 5209: __os.fill(__space); 5209: __os.precision(std::numeric_limits<_RealType>::max_digits10); 5209: 5209: __os << __x.a() << __space << __x.b(); 5209: 5209: __os.flags(__flags); 5209: __os.fill(__fill); 5209: __os.precision(__precision); 5209: return __os; 5209: } 5209: 5209: template 5209: std::basic_istream<_CharT, _Traits>& 5209: operator>>(std::basic_istream<_CharT, _Traits>& __is, 5209: weibull_distribution<_RealType>& __x) 5209: { 5209: typedef std::basic_istream<_CharT, _Traits> __istream_type; 5209: typedef typename __istream_type::ios_base __ios_base; 5209: 5209: const typename __ios_base::fmtflags __flags = __is.flags(); 5209: __is.flags(__ios_base::dec | __ios_base::skipws); 5209: 5209: _RealType __a, __b; 5209: __is >> __a >> __b; 5209: __x.param(typename weibull_distribution<_RealType>:: 5209: param_type(__a, __b)); 5209: 5209: __is.flags(__flags); 5209: return __is; 5209: } 5209: 5209: 5209: template 5209: template 5209: typename extreme_value_distribution<_RealType>::result_type 5209: extreme_value_distribution<_RealType>:: 5209: operator()(_UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { 5209: __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> 5209: __aurng(__urng); 5209: return __p.a() - __p.b() * std::log(-std::log(result_type(1) 5209: - __aurng())); 5209: } 5209: 5209: template 5209: template 5209: void 5209: extreme_value_distribution<_RealType>:: 5209: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __p) 5209: { 5209: 5209: __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> 5209: __aurng(__urng); 5209: 5209: while (__f != __t) 5209: *__f++ = __p.a() - __p.b() * std::log(-std::log(result_type(1) 5209: - __aurng())); 5209: } 5209: 5209: template 5209: std::basic_ostream<_CharT, _Traits>& 5209: operator<<(std::basic_ostream<_CharT, _Traits>& __os, 5209: const extreme_value_distribution<_RealType>& __x) 5209: { 5209: typedef std::basic_ostream<_CharT, _Traits> __ostream_type; 5209: typedef typename __ostream_type::ios_base __ios_base; 5209: 5209: const typename __ios_base::fmtflags __flags = __os.flags(); 5209: const _CharT __fill = __os.fill(); 5209: const std::streamsize __precision = __os.precision(); 5209: const _CharT __space = __os.widen(' '); 5209: __os.flags(__ios_base::scientific | __ios_base::left); 5209: __os.fill(__space); 5209: __os.precision(std::numeric_limits<_RealType>::max_digits10); 5209: 5209: __os << __x.a() << __space << __x.b(); 5209: 5209: __os.flags(__flags); 5209: __os.fill(__fill); 5209: __os.precision(__precision); 5209: return __os; 5209: } 5209: 5209: template 5209: std::basic_istream<_CharT, _Traits>& 5209: operator>>(std::basic_istream<_CharT, _Traits>& __is, 5209: extreme_value_distribution<_RealType>& __x) 5209: { 5209: typedef std::basic_istream<_CharT, _Traits> __istream_type; 5209: typedef typename __istream_type::ios_base __ios_base; 5209: 5209: const typename __ios_base::fmtflags __flags = __is.flags(); 5209: __is.flags(__ios_base::dec | __ios_base::skipws); 5209: 5209: _RealType __a, __b; 5209: __is >> __a >> __b; 5209: __x.param(typename extreme_value_distribution<_RealType>:: 5209: param_type(__a, __b)); 5209: 5209: __is.flags(__flags); 5209: return __is; 5209: } 5209: 5209: 5209: template 5209: void 5209: discrete_distribution<_IntType>::param_type:: 5209: _M_initialize() 5209: { 5209: if (_M_prob.size() < 2) 5209: { 5209: _M_prob.clear(); 5209: return; 5209: } 5209: 5209: const double __sum = std::accumulate(_M_prob.begin(), 5209: _M_prob.end(), 0.0); 5209: 5209: __detail::__normalize(_M_prob.begin(), _M_prob.end(), _M_prob.begin(), 5209: __sum); 5209: 5209: _M_cp.reserve(_M_prob.size()); 5209: std::partial_sum(_M_prob.begin(), _M_prob.end(), 5209: std::back_inserter(_M_cp)); 5209: 5209: _M_cp[_M_cp.size() - 1] = 1.0; 5209: } 5209: 5209: template 5209: template 5209: discrete_distribution<_IntType>::param_type:: 5209: param_type(size_t __nw, double __xmin, double __xmax, _Func __fw) 5209: : _M_prob(), _M_cp() 5209: { 5209: const size_t __n = __nw == 0 ? 1 : __nw; 5209: const double __delta = (__xmax - __xmin) / __n; 5209: 5209: _M_prob.reserve(__n); 5209: for (size_t __k = 0; __k < __nw; ++__k) 5209: _M_prob.push_back(__fw(__xmin + __k * __delta + 0.5 * __delta)); 5209: 5209: _M_initialize(); 5209: } 5209: 5209: template 5209: template 5209: typename discrete_distribution<_IntType>::result_type 5209: discrete_distribution<_IntType>:: 5209: operator()(_UniformRandomNumberGenerator& __urng, 5209: const param_type& __param) 5209: { 5209: if (__param._M_cp.empty()) 5209: return result_type(0); 5209: 5209: __detail::_Adaptor<_UniformRandomNumberGenerator, double> 5209: __aurng(__urng); 5209: 5209: const double __p = __aurng(); 5209: auto __pos = std::lower_bound(__param._M_cp.begin(), 5209: __param._M_cp.end(), __p); 5209: 5209: return __pos - __param._M_cp.begin(); 5209: } 5209: 5209: template 5209: template 5209: void 5209: discrete_distribution<_IntType>:: 5209: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __param) 5209: { 5209: 5209: 5209: if (__param._M_cp.empty()) 5209: { 5209: while (__f != __t) 5209: *__f++ = result_type(0); 5209: return; 5209: } 5209: 5209: __detail::_Adaptor<_UniformRandomNumberGenerator, double> 5209: __aurng(__urng); 5209: 5209: while (__f != __t) 5209: { 5209: const double __p = __aurng(); 5209: auto __pos = std::lower_bound(__param._M_cp.begin(), 5209: __param._M_cp.end(), __p); 5209: 5209: *__f++ = __pos - __param._M_cp.begin(); 5209: } 5209: } 5209: 5209: template 5209: std::basic_ostream<_CharT, _Traits>& 5209: operator<<(std::basic_ostream<_CharT, _Traits>& __os, 5209: const discrete_distribution<_IntType>& __x) 5209: { 5209: typedef std::basic_ostream<_CharT, _Traits> __ostream_type; 5209: typedef typename __ostream_type::ios_base __ios_base; 5209: 5209: const typename __ios_base::fmtflags __flags = __os.flags(); 5209: const _CharT __fill = __os.fill(); 5209: const std::streamsize __precision = __os.precision(); 5209: const _CharT __space = __os.widen(' '); 5209: __os.flags(__ios_base::scientific | __ios_base::left); 5209: __os.fill(__space); 5209: __os.precision(std::numeric_limits::max_digits10); 5209: 5209: std::vector __prob = __x.probabilities(); 5209: __os << __prob.size(); 5209: for (auto __dit = __prob.begin(); __dit != __prob.end(); ++__dit) 5209: __os << __space << *__dit; 5209: 5209: __os.flags(__flags); 5209: __os.fill(__fill); 5209: __os.precision(__precision); 5209: return __os; 5209: } 5209: 5209: template 5209: std::basic_istream<_CharT, _Traits>& 5209: operator>>(std::basic_istream<_CharT, _Traits>& __is, 5209: discrete_distribution<_IntType>& __x) 5209: { 5209: typedef std::basic_istream<_CharT, _Traits> __istream_type; 5209: typedef typename __istream_type::ios_base __ios_base; 5209: 5209: const typename __ios_base::fmtflags __flags = __is.flags(); 5209: __is.flags(__ios_base::dec | __ios_base::skipws); 5209: 5209: size_t __n; 5209: __is >> __n; 5209: 5209: std::vector __prob_vec; 5209: __prob_vec.reserve(__n); 5209: for (; __n != 0; --__n) 5209: { 5209: double __prob; 5209: __is >> __prob; 5209: __prob_vec.push_back(__prob); 5209: } 5209: 5209: __x.param(typename discrete_distribution<_IntType>:: 5209: param_type(__prob_vec.begin(), __prob_vec.end())); 5209: 5209: __is.flags(__flags); 5209: return __is; 5209: } 5209: 5209: 5209: template 5209: void 5209: piecewise_constant_distribution<_RealType>::param_type:: 5209: _M_initialize() 5209: { 5209: if (_M_int.size() < 2 5209: || (_M_int.size() == 2 5209: && _M_int[0] == _RealType(0) 5209: && _M_int[1] == _RealType(1))) 5209: { 5209: _M_int.clear(); 5209: _M_den.clear(); 5209: return; 5209: } 5209: 5209: const double __sum = std::accumulate(_M_den.begin(), 5209: _M_den.end(), 0.0); 5209: 5209: __detail::__normalize(_M_den.begin(), _M_den.end(), _M_den.begin(), 5209: __sum); 5209: 5209: _M_cp.reserve(_M_den.size()); 5209: std::partial_sum(_M_den.begin(), _M_den.end(), 5209: std::back_inserter(_M_cp)); 5209: 5209: 5209: _M_cp[_M_cp.size() - 1] = 1.0; 5209: 5209: for (size_t __k = 0; __k < _M_den.size(); ++__k) 5209: _M_den[__k] /= _M_int[__k + 1] - _M_int[__k]; 5209: } 5209: 5209: template 5209: template 5209: piecewise_constant_distribution<_RealType>::param_type:: 5209: param_type(_InputIteratorB __bbegin, 5209: _InputIteratorB __bend, 5209: _InputIteratorW __wbegin) 5209: : _M_int(), _M_den(), _M_cp() 5209: { 5209: if (__bbegin != __bend) 5209: { 5209: for (;;) 5209: { 5209: _M_int.push_back(*__bbegin); 5209: ++__bbegin; 5209: if (__bbegin == __bend) 5209: break; 5209: 5209: _M_den.push_back(*__wbegin); 5209: ++__wbegin; 5209: } 5209: } 5209: 5209: _M_initialize(); 5209: } 5209: 5209: template 5209: template 5209: piecewise_constant_distribution<_RealType>::param_type:: 5209: param_type(initializer_list<_RealType> __bl, _Func __fw) 5209: : _M_int(), _M_den(), _M_cp() 5209: { 5209: _M_int.reserve(__bl.size()); 5209: for (auto __biter = __bl.begin(); __biter != __bl.end(); ++__biter) 5209: _M_int.push_back(*__biter); 5209: 5209: _M_den.reserve(_M_int.size() - 1); 5209: for (size_t __k = 0; __k < _M_int.size() - 1; ++__k) 5209: _M_den.push_back(__fw(0.5 * (_M_int[__k + 1] + _M_int[__k]))); 5209: 5209: _M_initialize(); 5209: } 5209: 5209: template 5209: template 5209: piecewise_constant_distribution<_RealType>::param_type:: 5209: param_type(size_t __nw, _RealType __xmin, _RealType __xmax, _Func __fw) 5209: : _M_int(), _M_den(), _M_cp() 5209: { 5209: const size_t __n = __nw == 0 ? 1 : __nw; 5209: const _RealType __delta = (__xmax - __xmin) / __n; 5209: 5209: _M_int.reserve(__n + 1); 5209: for (size_t __k = 0; __k <= __nw; ++__k) 5209: _M_int.push_back(__xmin + __k * __delta); 5209: 5209: _M_den.reserve(__n); 5209: for (size_t __k = 0; __k < __nw; ++__k) 5209: _M_den.push_back(__fw(_M_int[__k] + 0.5 * __delta)); 5209: 5209: _M_initialize(); 5209: } 5209: 5209: template 5209: template 5209: typename piecewise_constant_distribution<_RealType>::result_type 5209: piecewise_constant_distribution<_RealType>:: 5209: operator()(_UniformRandomNumberGenerator& __urng, 5209: const param_type& __param) 5209: { 5209: __detail::_Adaptor<_UniformRandomNumberGenerator, double> 5209: __aurng(__urng); 5209: 5209: const double __p = __aurng(); 5209: if (__param._M_cp.empty()) 5209: return __p; 5209: 5209: auto __pos = std::lower_bound(__param._M_cp.begin(), 5209: __param._M_cp.end(), __p); 5209: const size_t __i = __pos - __param._M_cp.begin(); 5209: 5209: const double __pref = __i > 0 ? __param._M_cp[__i - 1] : 0.0; 5209: 5209: return __param._M_int[__i] + (__p - __pref) / __param._M_den[__i]; 5209: } 5209: 5209: template 5209: template 5209: void 5209: piecewise_constant_distribution<_RealType>:: 5209: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __param) 5209: { 5209: 5209: __detail::_Adaptor<_UniformRandomNumberGenerator, double> 5209: __aurng(__urng); 5209: 5209: if (__param._M_cp.empty()) 5209: { 5209: while (__f != __t) 5209: *__f++ = __aurng(); 5209: return; 5209: } 5209: 5209: while (__f != __t) 5209: { 5209: const double __p = __aurng(); 5209: 5209: auto __pos = std::lower_bound(__param._M_cp.begin(), 5209: __param._M_cp.end(), __p); 5209: const size_t __i = __pos - __param._M_cp.begin(); 5209: 5209: const double __pref = __i > 0 ? __param._M_cp[__i - 1] : 0.0; 5209: 5209: *__f++ = (__param._M_int[__i] 5209: + (__p - __pref) / __param._M_den[__i]); 5209: } 5209: } 5209: 5209: template 5209: std::basic_ostream<_CharT, _Traits>& 5209: operator<<(std::basic_ostream<_CharT, _Traits>& __os, 5209: const piecewise_constant_distribution<_RealType>& __x) 5209: { 5209: typedef std::basic_ostream<_CharT, _Traits> __ostream_type; 5209: typedef typename __ostream_type::ios_base __ios_base; 5209: 5209: const typename __ios_base::fmtflags __flags = __os.flags(); 5209: const _CharT __fill = __os.fill(); 5209: const std::streamsize __precision = __os.precision(); 5209: const _CharT __space = __os.widen(' '); 5209: __os.flags(__ios_base::scientific | __ios_base::left); 5209: __os.fill(__space); 5209: __os.precision(std::numeric_limits<_RealType>::max_digits10); 5209: 5209: std::vector<_RealType> __int = __x.intervals(); 5209: __os << __int.size() - 1; 5209: 5209: for (auto __xit = __int.begin(); __xit != __int.end(); ++__xit) 5209: __os << __space << *__xit; 5209: 5209: std::vector __den = __x.densities(); 5209: for (auto __dit = __den.begin(); __dit != __den.end(); ++__dit) 5209: __os << __space << *__dit; 5209: 5209: __os.flags(__flags); 5209: __os.fill(__fill); 5209: __os.precision(__precision); 5209: return __os; 5209: } 5209: 5209: template 5209: std::basic_istream<_CharT, _Traits>& 5209: operator>>(std::basic_istream<_CharT, _Traits>& __is, 5209: piecewise_constant_distribution<_RealType>& __x) 5209: { 5209: typedef std::basic_istream<_CharT, _Traits> __istream_type; 5209: typedef typename __istream_type::ios_base __ios_base; 5209: 5209: const typename __ios_base::fmtflags __flags = __is.flags(); 5209: __is.flags(__ios_base::dec | __ios_base::skipws); 5209: 5209: size_t __n; 5209: __is >> __n; 5209: 5209: std::vector<_RealType> __int_vec; 5209: __int_vec.reserve(__n + 1); 5209: for (size_t __i = 0; __i <= __n; ++__i) 5209: { 5209: _RealType __int; 5209: __is >> __int; 5209: __int_vec.push_back(__int); 5209: } 5209: 5209: std::vector __den_vec; 5209: __den_vec.reserve(__n); 5209: for (size_t __i = 0; __i < __n; ++__i) 5209: { 5209: double __den; 5209: __is >> __den; 5209: __den_vec.push_back(__den); 5209: } 5209: 5209: __x.param(typename piecewise_constant_distribution<_RealType>:: 5209: param_type(__int_vec.begin(), __int_vec.end(), __den_vec.begin())); 5209: 5209: __is.flags(__flags); 5209: return __is; 5209: } 5209: 5209: 5209: template 5209: void 5209: piecewise_linear_distribution<_RealType>::param_type:: 5209: _M_initialize() 5209: { 5209: if (_M_int.size() < 2 5209: || (_M_int.size() == 2 5209: && _M_int[0] == _RealType(0) 5209: && _M_int[1] == _RealType(1) 5209: && _M_den[0] == _M_den[1])) 5209: { 5209: _M_int.clear(); 5209: _M_den.clear(); 5209: return; 5209: } 5209: 5209: double __sum = 0.0; 5209: _M_cp.reserve(_M_int.size() - 1); 5209: _M_m.reserve(_M_int.size() - 1); 5209: for (size_t __k = 0; __k < _M_int.size() - 1; ++__k) 5209: { 5209: const _RealType __delta = _M_int[__k + 1] - _M_int[__k]; 5209: __sum += 0.5 * (_M_den[__k + 1] + _M_den[__k]) * __delta; 5209: _M_cp.push_back(__sum); 5209: _M_m.push_back((_M_den[__k + 1] - _M_den[__k]) / __delta); 5209: } 5209: 5209: 5209: __detail::__normalize(_M_den.begin(), _M_den.end(), _M_den.begin(), 5209: __sum); 5209: 5209: __detail::__normalize(_M_cp.begin(), _M_cp.end(), _M_cp.begin(), __sum); 5209: 5209: __detail::__normalize(_M_m.begin(), _M_m.end(), _M_m.begin(), __sum); 5209: 5209: 5209: _M_cp[_M_cp.size() - 1] = 1.0; 5209: } 5209: 5209: template 5209: template 5209: piecewise_linear_distribution<_RealType>::param_type:: 5209: param_type(_InputIteratorB __bbegin, 5209: _InputIteratorB __bend, 5209: _InputIteratorW __wbegin) 5209: : _M_int(), _M_den(), _M_cp(), _M_m() 5209: { 5209: for (; __bbegin != __bend; ++__bbegin, ++__wbegin) 5209: { 5209: _M_int.push_back(*__bbegin); 5209: _M_den.push_back(*__wbegin); 5209: } 5209: 5209: _M_initialize(); 5209: } 5209: 5209: template 5209: template 5209: piecewise_linear_distribution<_RealType>::param_type:: 5209: param_type(initializer_list<_RealType> __bl, _Func __fw) 5209: : _M_int(), _M_den(), _M_cp(), _M_m() 5209: { 5209: _M_int.reserve(__bl.size()); 5209: _M_den.reserve(__bl.size()); 5209: for (auto __biter = __bl.begin(); __biter != __bl.end(); ++__biter) 5209: { 5209: _M_int.push_back(*__biter); 5209: _M_den.push_back(__fw(*__biter)); 5209: } 5209: 5209: _M_initialize(); 5209: } 5209: 5209: template 5209: template 5209: piecewise_linear_distribution<_RealType>::param_type:: 5209: param_type(size_t __nw, _RealType __xmin, _RealType __xmax, _Func __fw) 5209: : _M_int(), _M_den(), _M_cp(), _M_m() 5209: { 5209: const size_t __n = __nw == 0 ? 1 : __nw; 5209: const _RealType __delta = (__xmax - __xmin) / __n; 5209: 5209: _M_int.reserve(__n + 1); 5209: _M_den.reserve(__n + 1); 5209: for (size_t __k = 0; __k <= __nw; ++__k) 5209: { 5209: _M_int.push_back(__xmin + __k * __delta); 5209: _M_den.push_back(__fw(_M_int[__k] + __delta)); 5209: } 5209: 5209: _M_initialize(); 5209: } 5209: 5209: template 5209: template 5209: typename piecewise_linear_distribution<_RealType>::result_type 5209: piecewise_linear_distribution<_RealType>:: 5209: operator()(_UniformRandomNumberGenerator& __urng, 5209: const param_type& __param) 5209: { 5209: __detail::_Adaptor<_UniformRandomNumberGenerator, double> 5209: __aurng(__urng); 5209: 5209: const double __p = __aurng(); 5209: if (__param._M_cp.empty()) 5209: return __p; 5209: 5209: auto __pos = std::lower_bound(__param._M_cp.begin(), 5209: __param._M_cp.end(), __p); 5209: const size_t __i = __pos - __param._M_cp.begin(); 5209: 5209: const double __pref = __i > 0 ? __param._M_cp[__i - 1] : 0.0; 5209: 5209: const double __a = 0.5 * __param._M_m[__i]; 5209: const double __b = __param._M_den[__i]; 5209: const double __cm = __p - __pref; 5209: 5209: _RealType __x = __param._M_int[__i]; 5209: if (__a == 0) 5209: __x += __cm / __b; 5209: else 5209: { 5209: const double __d = __b * __b + 4.0 * __a * __cm; 5209: __x += 0.5 * (std::sqrt(__d) - __b) / __a; 5209: } 5209: 5209: return __x; 5209: } 5209: 5209: template 5209: template 5209: void 5209: piecewise_linear_distribution<_RealType>:: 5209: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 5209: _UniformRandomNumberGenerator& __urng, 5209: const param_type& __param) 5209: { 5209: 5209: 5209: while (__f != __t) 5209: *__f++ = this->operator()(__urng, __param); 5209: } 5209: 5209: template 5209: std::basic_ostream<_CharT, _Traits>& 5209: operator<<(std::basic_ostream<_CharT, _Traits>& __os, 5209: const piecewise_linear_distribution<_RealType>& __x) 5209: { 5209: typedef std::basic_ostream<_CharT, _Traits> __ostream_type; 5209: typedef typename __ostream_type::ios_base __ios_base; 5209: 5209: const typename __ios_base::fmtflags __flags = __os.flags(); 5209: const _CharT __fill = __os.fill(); 5209: const std::streamsize __precision = __os.precision(); 5209: const _CharT __space = __os.widen(' '); 5209: __os.flags(__ios_base::scientific | __ios_base::left); 5209: __os.fill(__space); 5209: __os.precision(std::numeric_limits<_RealType>::max_digits10); 5209: 5209: std::vector<_RealType> __int = __x.intervals(); 5209: __os << __int.size() - 1; 5209: 5209: for (auto __xit = __int.begin(); __xit != __int.end(); ++__xit) 5209: __os << __space << *__xit; 5209: 5209: std::vector __den = __x.densities(); 5209: for (auto __dit = __den.begin(); __dit != __den.end(); ++__dit) 5209: __os << __space << *__dit; 5209: 5209: __os.flags(__flags); 5209: __os.fill(__fill); 5209: __os.precision(__precision); 5209: return __os; 5209: } 5209: 5209: template 5209: std::basic_istream<_CharT, _Traits>& 5209: operator>>(std::basic_istream<_CharT, _Traits>& __is, 5209: piecewise_linear_distribution<_RealType>& __x) 5209: { 5209: typedef std::basic_istream<_CharT, _Traits> __istream_type; 5209: typedef typename __istream_type::ios_base __ios_base; 5209: 5209: const typename __ios_base::fmtflags __flags = __is.flags(); 5209: __is.flags(__ios_base::dec | __ios_base::skipws); 5209: 5209: size_t __n; 5209: __is >> __n; 5209: 5209: std::vector<_RealType> __int_vec; 5209: __int_vec.reserve(__n + 1); 5209: for (size_t __i = 0; __i <= __n; ++__i) 5209: { 5209: _RealType __int; 5209: __is >> __int; 5209: __int_vec.push_back(__int); 5209: } 5209: 5209: std::vector __den_vec; 5209: __den_vec.reserve(__n + 1); 5209: for (size_t __i = 0; __i <= __n; ++__i) 5209: { 5209: double __den; 5209: __is >> __den; 5209: __den_vec.push_back(__den); 5209: } 5209: 5209: __x.param(typename piecewise_linear_distribution<_RealType>:: 5209: param_type(__int_vec.begin(), __int_vec.end(), __den_vec.begin())); 5209: 5209: __is.flags(__flags); 5209: return __is; 5209: } 5209: 5209: 5209: template 5209: seed_seq::seed_seq(std::initializer_list<_IntType> __il) 5209: { 5209: for (auto __iter = __il.begin(); __iter != __il.end(); ++__iter) 5209: _M_v.push_back(__detail::__mod::__value>(*__iter)); 5209: } 5209: 5209: template 5209: seed_seq::seed_seq(_InputIterator __begin, _InputIterator __end) 5209: { 5209: for (_InputIterator __iter = __begin; __iter != __end; ++__iter) 5209: _M_v.push_back(__detail::__mod::__value>(*__iter)); 5209: } 5209: 5209: template 5209: void 5209: seed_seq::generate(_RandomAccessIterator __begin, 5209: _RandomAccessIterator __end) 5209: { 5209: typedef typename iterator_traits<_RandomAccessIterator>::value_type 5209: _Type; 5209: 5209: if (__begin == __end) 5209: return; 5209: 5209: std::fill(__begin, __end, _Type(0x8b8b8b8bu)); 5209: 5209: const size_t __n = __end - __begin; 5209: const size_t __s = _M_v.size(); 5209: const size_t __t = (__n >= 623) ? 11 5209: : (__n >= 68) ? 7 5209: : (__n >= 39) ? 5 5209: : (__n >= 7) ? 3 5209: : (__n - 1) / 2; 5209: const size_t __p = (__n - __t) / 2; 5209: const size_t __q = __p + __t; 5209: const size_t __m = std::max(size_t(__s + 1), __n); 5209: 5209: for (size_t __k = 0; __k < __m; ++__k) 5209: { 5209: _Type __arg = (__begin[__k % __n] 5209: ^ __begin[(__k + __p) % __n] 5209: ^ __begin[(__k - 1) % __n]); 5209: _Type __r1 = __arg ^ (__arg >> 27); 5209: __r1 = __detail::__mod<_Type, 5209: __detail::_Shift<_Type, 32>::__value>(1664525u * __r1); 5209: _Type __r2 = __r1; 5209: if (__k == 0) 5209: __r2 += __s; 5209: else if (__k <= __s) 5209: __r2 += __k % __n + _M_v[__k - 1]; 5209: else 5209: __r2 += __k % __n; 5209: __r2 = __detail::__mod<_Type, 5209: __detail::_Shift<_Type, 32>::__value>(__r2); 5209: __begin[(__k + __p) % __n] += __r1; 5209: __begin[(__k + __q) % __n] += __r2; 5209: __begin[__k % __n] = __r2; 5209: } 5209: 5209: for (size_t __k = __m; __k < __m + __n; ++__k) 5209: { 5209: _Type __arg = (__begin[__k % __n] 5209: + __begin[(__k + __p) % __n] 5209: + __begin[(__k - 1) % __n]); 5209: _Type __r3 = __arg ^ (__arg >> 27); 5209: __r3 = __detail::__mod<_Type, 5209: __detail::_Shift<_Type, 32>::__value>(1566083941u * __r3); 5209: _Type __r4 = __r3 - __k % __n; 5209: __r4 = __detail::__mod<_Type, 5209: __detail::_Shift<_Type, 32>::__value>(__r4); 5209: __begin[(__k + __p) % __n] ^= __r3; 5209: __begin[(__k + __q) % __n] ^= __r4; 5209: __begin[__k % __n] = __r4; 5209: } 5209: } 5209: 5209: template 5209: _RealType 5209: generate_canonical(_UniformRandomNumberGenerator& __urng) 5209: { 5209: static_assert(std::is_floating_point<_RealType>::value, 5209: "template argument must be a floating point type"); 5209: 5209: const size_t __b 5209: = std::min(static_cast(std::numeric_limits<_RealType>::digits), 5209: __bits); 5209: const long double __r = static_cast(__urng.max()) 5209: - static_cast(__urng.min()) + 1.0L; 5209: const size_t __log2r = std::log(__r) / std::log(2.0L); 5209: const size_t __m = std::max(1UL, 5209: (__b + __log2r - 1UL) / __log2r); 5209: _RealType __ret; 5209: _RealType __sum = _RealType(0); 5209: _RealType __tmp = _RealType(1); 5209: for (size_t __k = __m; __k != 0; --__k) 5209: { 5209: __sum += _RealType(__urng() - __urng.min()) * __tmp; 5209: __tmp *= __r; 5209: } 5209: __ret = __sum / __tmp; 5209: if (__builtin_expect(__ret >= _RealType(1), 0)) 5209: { 5209: 5209: __ret = std::nextafter(_RealType(1), _RealType(0)); 5209: 5209: 5209: 5209: 5209: } 5209: return __ret; 5209: } 5209: 5209: 5209: } 5209: # 52 "/usr/include/c++/10/random" 2 3 5209: # 28 "/<>/test/test.h" 2 5209: 5209: 5209: # 1 "/<>/test/../public/gemmlowp.h" 1 5209: # 19 "/<>/test/../public/gemmlowp.h" 5209: # 1 "/<>/test/../public/../internal/dispatch_gemm_shape.h" 1 5209: # 20 "/<>/test/../public/../internal/dispatch_gemm_shape.h" 5209: # 1 "/<>/test/../public/../internal/../internal/kernel_default.h" 1 5209: # 21 "/<>/test/../public/../internal/../internal/kernel_default.h" 5209: # 1 "/<>/test/../public/../internal/../internal/../public/bit_depth.h" 1 5209: # 20 "/<>/test/../public/../internal/../internal/../public/bit_depth.h" 5209: 5209: # 20 "/<>/test/../public/../internal/../internal/../public/bit_depth.h" 5209: namespace gemmlowp { 5209: 5209: 5209: template 5209: struct OperandRange { 5209: static const int kMinValue = tMinValue; 5209: static const int kMaxValue = tMaxValue; 5209: static_assert(kMinValue < kMaxValue, ""); 5209: }; 5209: 5209: using Uint8Range = OperandRange<0, 255>; 5209: using Uint8RangeExcludingZero = OperandRange<1, 255>; 5209: 5209: using Int8Range = OperandRange<-128, 127>; 5209: using Int8RangeExcludingLow = OperandRange<-127, 127>; 5209: 5209: template 5209: struct BitDepthParams { 5209: using LhsRange = tLhsRange; 5209: using RhsRange = tRhsRange; 5209: }; 5209: 5209: 5209: using DefaultL8R8BitDepthParams = BitDepthParams; 5209: 5209: 5209: 5209: 5209: using L8R8WithLhsNonzeroBitDepthParams = 5209: BitDepthParams; 5209: 5209: 5209: 5209: using SignedL8R8WithLhsNonzeroBitDepthParams = 5209: BitDepthParams; 5209: # 64 "/<>/test/../public/../internal/../internal/../public/bit_depth.h" 5209: using DefaultL7R5BitDepthParams = DefaultL8R8BitDepthParams; 5209: 5209: } 5209: # 22 "/<>/test/../public/../internal/../internal/kernel_default.h" 2 5209: # 1 "/<>/test/../public/../internal/../internal/common.h" 1 5209: # 21 "/<>/test/../public/../internal/../internal/common.h" 5209: # 1 "/<>/test/../public/../internal/../internal/../internal/platform.h" 1 5209: # 24 "/<>/test/../public/../internal/../internal/../internal/platform.h" 5209: # 1 "/usr/include/c++/10/stdlib.h" 1 3 5209: # 36 "/usr/include/c++/10/stdlib.h" 3 5209: # 1 "/usr/include/c++/10/cstdlib" 1 3 5209: # 39 "/usr/include/c++/10/cstdlib" 3 5209: 5209: # 40 "/usr/include/c++/10/cstdlib" 3 5209: # 37 "/usr/include/c++/10/stdlib.h" 2 3 5209: 5209: 5209: # 38 "/usr/include/c++/10/stdlib.h" 3 5209: using std::abort; 5209: using std::atexit; 5209: using std::exit; 5209: 5209: 5209: using std::at_quick_exit; 5209: 5209: 5209: using std::quick_exit; 5209: 5209: 5209: 5209: 5209: using std::div_t; 5209: using std::ldiv_t; 5209: 5209: using std::abs; 5209: using std::atof; 5209: using std::atoi; 5209: using std::atol; 5209: using std::bsearch; 5209: using std::calloc; 5209: using std::div; 5209: using std::free; 5209: using std::getenv; 5209: using std::labs; 5209: using std::ldiv; 5209: using std::malloc; 5209: 5209: using std::mblen; 5209: using std::mbstowcs; 5209: using std::mbtowc; 5209: 5209: using std::qsort; 5209: using std::rand; 5209: using std::realloc; 5209: using std::srand; 5209: using std::strtod; 5209: using std::strtol; 5209: using std::strtoul; 5209: using std::system; 5209: 5209: using std::wcstombs; 5209: using std::wctomb; 5209: # 25 "/<>/test/../public/../internal/../internal/../internal/platform.h" 2 5209: 5209: # 1 "/usr/include/unistd.h" 1 3 4 5209: # 27 "/usr/include/unistd.h" 3 4 5209: extern "C" { 5209: # 202 "/usr/include/unistd.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/posix_opt.h" 1 3 4 5209: # 203 "/usr/include/unistd.h" 2 3 4 5209: 5209: 5209: 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/environments.h" 1 3 4 5209: # 22 "/usr/include/aarch64-linux-gnu/bits/environments.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/wordsize.h" 1 3 4 5209: # 23 "/usr/include/aarch64-linux-gnu/bits/environments.h" 2 3 4 5209: # 207 "/usr/include/unistd.h" 2 3 4 5209: # 226 "/usr/include/unistd.h" 3 4 5209: # 1 "/usr/lib/gcc/aarch64-linux-gnu/10/include/stddef.h" 1 3 4 5209: # 227 "/usr/include/unistd.h" 2 3 4 5209: # 274 "/usr/include/unistd.h" 3 4 5209: typedef __socklen_t socklen_t; 5209: # 287 "/usr/include/unistd.h" 3 4 5209: extern int access (const char *__name, int __type) throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: 5209: 5209: extern int euidaccess (const char *__name, int __type) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: extern int eaccess (const char *__name, int __type) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern int faccessat (int __fd, const char *__file, int __type, int __flag) 5209: throw () __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__)); 5209: # 334 "/usr/include/unistd.h" 3 4 5209: extern __off_t lseek (int __fd, __off_t __offset, int __whence) throw (); 5209: # 345 "/usr/include/unistd.h" 3 4 5209: extern __off64_t lseek64 (int __fd, __off64_t __offset, int __whence) 5209: throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern int close (int __fd); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern ssize_t read (int __fd, void *__buf, size_t __nbytes) __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: 5209: extern ssize_t write (int __fd, const void *__buf, size_t __n) __attribute__ ((__warn_unused_result__)); 5209: # 376 "/usr/include/unistd.h" 3 4 5209: extern ssize_t pread (int __fd, void *__buf, size_t __nbytes, 5209: __off_t __offset) __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern ssize_t pwrite (int __fd, const void *__buf, size_t __n, 5209: __off_t __offset) __attribute__ ((__warn_unused_result__)); 5209: # 404 "/usr/include/unistd.h" 3 4 5209: extern ssize_t pread64 (int __fd, void *__buf, size_t __nbytes, 5209: __off64_t __offset) __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: extern ssize_t pwrite64 (int __fd, const void *__buf, size_t __n, 5209: __off64_t __offset) __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern int pipe (int __pipedes[2]) throw () __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: extern int pipe2 (int __pipedes[2], int __flags) throw () __attribute__ ((__warn_unused_result__)); 5209: # 432 "/usr/include/unistd.h" 3 4 5209: extern unsigned int alarm (unsigned int __seconds) throw (); 5209: # 444 "/usr/include/unistd.h" 3 4 5209: extern unsigned int sleep (unsigned int __seconds); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern __useconds_t ualarm (__useconds_t __value, __useconds_t __interval) 5209: throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern int usleep (__useconds_t __useconds); 5209: # 469 "/usr/include/unistd.h" 3 4 5209: extern int pause (void); 5209: 5209: 5209: 5209: extern int chown (const char *__file, __uid_t __owner, __gid_t __group) 5209: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: extern int fchown (int __fd, __uid_t __owner, __gid_t __group) throw () __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: extern int lchown (const char *__file, __uid_t __owner, __gid_t __group) 5209: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern int fchownat (int __fd, const char *__file, __uid_t __owner, 5209: __gid_t __group, int __flag) 5209: throw () __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: extern int chdir (const char *__path) throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: extern int fchdir (int __fd) throw () __attribute__ ((__warn_unused_result__)); 5209: # 511 "/usr/include/unistd.h" 3 4 5209: extern char *getcwd (char *__buf, size_t __size) throw () __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: 5209: extern char *get_current_dir_name (void) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern char *getwd (char *__buf) 5209: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__)) __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: extern int dup (int __fd) throw () __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: extern int dup2 (int __fd, int __fd2) throw (); 5209: 5209: 5209: 5209: 5209: extern int dup3 (int __fd, int __fd2, int __flags) throw (); 5209: 5209: 5209: 5209: extern char **__environ; 5209: 5209: extern char **environ; 5209: 5209: 5209: 5209: 5209: 5209: extern int execve (const char *__path, char *const __argv[], 5209: char *const __envp[]) throw () __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: 5209: 5209: extern int fexecve (int __fd, char *const __argv[], char *const __envp[]) 5209: throw () __attribute__ ((__nonnull__ (2))); 5209: 5209: 5209: 5209: 5209: extern int execv (const char *__path, char *const __argv[]) 5209: throw () __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: 5209: extern int execle (const char *__path, const char *__arg, ...) 5209: throw () __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: 5209: extern int execl (const char *__path, const char *__arg, ...) 5209: throw () __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: 5209: extern int execvp (const char *__file, char *const __argv[]) 5209: throw () __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: 5209: 5209: extern int execlp (const char *__file, const char *__arg, ...) 5209: throw () __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: 5209: 5209: extern int execvpe (const char *__file, char *const __argv[], 5209: char *const __envp[]) 5209: throw () __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: 5209: 5209: 5209: extern int nice (int __inc) throw () __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: extern void _exit (int __status) __attribute__ ((__noreturn__)); 5209: 5209: 5209: 5209: 5209: 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/confname.h" 1 3 4 5209: # 24 "/usr/include/aarch64-linux-gnu/bits/confname.h" 3 4 5209: enum 5209: { 5209: _PC_LINK_MAX, 5209: 5209: _PC_MAX_CANON, 5209: 5209: _PC_MAX_INPUT, 5209: 5209: _PC_NAME_MAX, 5209: 5209: _PC_PATH_MAX, 5209: 5209: _PC_PIPE_BUF, 5209: 5209: _PC_CHOWN_RESTRICTED, 5209: 5209: _PC_NO_TRUNC, 5209: 5209: _PC_VDISABLE, 5209: 5209: _PC_SYNC_IO, 5209: 5209: _PC_ASYNC_IO, 5209: 5209: _PC_PRIO_IO, 5209: 5209: _PC_SOCK_MAXBUF, 5209: 5209: _PC_FILESIZEBITS, 5209: 5209: _PC_REC_INCR_XFER_SIZE, 5209: 5209: _PC_REC_MAX_XFER_SIZE, 5209: 5209: _PC_REC_MIN_XFER_SIZE, 5209: 5209: _PC_REC_XFER_ALIGN, 5209: 5209: _PC_ALLOC_SIZE_MIN, 5209: 5209: _PC_SYMLINK_MAX, 5209: 5209: _PC_2_SYMLINKS 5209: 5209: }; 5209: 5209: 5209: enum 5209: { 5209: _SC_ARG_MAX, 5209: 5209: _SC_CHILD_MAX, 5209: 5209: _SC_CLK_TCK, 5209: 5209: _SC_NGROUPS_MAX, 5209: 5209: _SC_OPEN_MAX, 5209: 5209: _SC_STREAM_MAX, 5209: 5209: _SC_TZNAME_MAX, 5209: 5209: _SC_JOB_CONTROL, 5209: 5209: _SC_SAVED_IDS, 5209: 5209: _SC_REALTIME_SIGNALS, 5209: 5209: _SC_PRIORITY_SCHEDULING, 5209: 5209: _SC_TIMERS, 5209: 5209: _SC_ASYNCHRONOUS_IO, 5209: 5209: _SC_PRIORITIZED_IO, 5209: 5209: _SC_SYNCHRONIZED_IO, 5209: 5209: _SC_FSYNC, 5209: 5209: _SC_MAPPED_FILES, 5209: 5209: _SC_MEMLOCK, 5209: 5209: _SC_MEMLOCK_RANGE, 5209: 5209: _SC_MEMORY_PROTECTION, 5209: 5209: _SC_MESSAGE_PASSING, 5209: 5209: _SC_SEMAPHORES, 5209: 5209: _SC_SHARED_MEMORY_OBJECTS, 5209: 5209: _SC_AIO_LISTIO_MAX, 5209: 5209: _SC_AIO_MAX, 5209: 5209: _SC_AIO_PRIO_DELTA_MAX, 5209: 5209: _SC_DELAYTIMER_MAX, 5209: 5209: _SC_MQ_OPEN_MAX, 5209: 5209: _SC_MQ_PRIO_MAX, 5209: 5209: _SC_VERSION, 5209: 5209: _SC_PAGESIZE, 5209: 5209: 5209: _SC_RTSIG_MAX, 5209: 5209: _SC_SEM_NSEMS_MAX, 5209: 5209: _SC_SEM_VALUE_MAX, 5209: 5209: _SC_SIGQUEUE_MAX, 5209: 5209: _SC_TIMER_MAX, 5209: 5209: 5209: 5209: 5209: _SC_BC_BASE_MAX, 5209: 5209: _SC_BC_DIM_MAX, 5209: 5209: _SC_BC_SCALE_MAX, 5209: 5209: _SC_BC_STRING_MAX, 5209: 5209: _SC_COLL_WEIGHTS_MAX, 5209: 5209: _SC_EQUIV_CLASS_MAX, 5209: 5209: _SC_EXPR_NEST_MAX, 5209: 5209: _SC_LINE_MAX, 5209: 5209: _SC_RE_DUP_MAX, 5209: 5209: _SC_CHARCLASS_NAME_MAX, 5209: 5209: 5209: _SC_2_VERSION, 5209: 5209: _SC_2_C_BIND, 5209: 5209: _SC_2_C_DEV, 5209: 5209: _SC_2_FORT_DEV, 5209: 5209: _SC_2_FORT_RUN, 5209: 5209: _SC_2_SW_DEV, 5209: 5209: _SC_2_LOCALEDEF, 5209: 5209: 5209: _SC_PII, 5209: 5209: _SC_PII_XTI, 5209: 5209: _SC_PII_SOCKET, 5209: 5209: _SC_PII_INTERNET, 5209: 5209: _SC_PII_OSI, 5209: 5209: _SC_POLL, 5209: 5209: _SC_SELECT, 5209: 5209: _SC_UIO_MAXIOV, 5209: 5209: _SC_IOV_MAX = _SC_UIO_MAXIOV, 5209: 5209: _SC_PII_INTERNET_STREAM, 5209: 5209: _SC_PII_INTERNET_DGRAM, 5209: 5209: _SC_PII_OSI_COTS, 5209: 5209: _SC_PII_OSI_CLTS, 5209: 5209: _SC_PII_OSI_M, 5209: 5209: _SC_T_IOV_MAX, 5209: 5209: 5209: 5209: _SC_THREADS, 5209: 5209: _SC_THREAD_SAFE_FUNCTIONS, 5209: 5209: _SC_GETGR_R_SIZE_MAX, 5209: 5209: _SC_GETPW_R_SIZE_MAX, 5209: 5209: _SC_LOGIN_NAME_MAX, 5209: 5209: _SC_TTY_NAME_MAX, 5209: 5209: _SC_THREAD_DESTRUCTOR_ITERATIONS, 5209: 5209: _SC_THREAD_KEYS_MAX, 5209: 5209: _SC_THREAD_STACK_MIN, 5209: 5209: _SC_THREAD_THREADS_MAX, 5209: 5209: _SC_THREAD_ATTR_STACKADDR, 5209: 5209: _SC_THREAD_ATTR_STACKSIZE, 5209: 5209: _SC_THREAD_PRIORITY_SCHEDULING, 5209: 5209: _SC_THREAD_PRIO_INHERIT, 5209: 5209: _SC_THREAD_PRIO_PROTECT, 5209: 5209: _SC_THREAD_PROCESS_SHARED, 5209: 5209: 5209: _SC_NPROCESSORS_CONF, 5209: 5209: _SC_NPROCESSORS_ONLN, 5209: 5209: _SC_PHYS_PAGES, 5209: 5209: _SC_AVPHYS_PAGES, 5209: 5209: _SC_ATEXIT_MAX, 5209: 5209: _SC_PASS_MAX, 5209: 5209: 5209: _SC_XOPEN_VERSION, 5209: 5209: _SC_XOPEN_XCU_VERSION, 5209: 5209: _SC_XOPEN_UNIX, 5209: 5209: _SC_XOPEN_CRYPT, 5209: 5209: _SC_XOPEN_ENH_I18N, 5209: 5209: _SC_XOPEN_SHM, 5209: 5209: 5209: _SC_2_CHAR_TERM, 5209: 5209: _SC_2_C_VERSION, 5209: 5209: _SC_2_UPE, 5209: 5209: 5209: _SC_XOPEN_XPG2, 5209: 5209: _SC_XOPEN_XPG3, 5209: 5209: _SC_XOPEN_XPG4, 5209: 5209: 5209: _SC_CHAR_BIT, 5209: 5209: _SC_CHAR_MAX, 5209: 5209: _SC_CHAR_MIN, 5209: 5209: _SC_INT_MAX, 5209: 5209: _SC_INT_MIN, 5209: 5209: _SC_LONG_BIT, 5209: 5209: _SC_WORD_BIT, 5209: 5209: _SC_MB_LEN_MAX, 5209: 5209: _SC_NZERO, 5209: 5209: _SC_SSIZE_MAX, 5209: 5209: _SC_SCHAR_MAX, 5209: 5209: _SC_SCHAR_MIN, 5209: 5209: _SC_SHRT_MAX, 5209: 5209: _SC_SHRT_MIN, 5209: 5209: _SC_UCHAR_MAX, 5209: 5209: _SC_UINT_MAX, 5209: 5209: _SC_ULONG_MAX, 5209: 5209: _SC_USHRT_MAX, 5209: 5209: 5209: _SC_NL_ARGMAX, 5209: 5209: _SC_NL_LANGMAX, 5209: 5209: _SC_NL_MSGMAX, 5209: 5209: _SC_NL_NMAX, 5209: 5209: _SC_NL_SETMAX, 5209: 5209: _SC_NL_TEXTMAX, 5209: 5209: 5209: _SC_XBS5_ILP32_OFF32, 5209: 5209: _SC_XBS5_ILP32_OFFBIG, 5209: 5209: _SC_XBS5_LP64_OFF64, 5209: 5209: _SC_XBS5_LPBIG_OFFBIG, 5209: 5209: 5209: _SC_XOPEN_LEGACY, 5209: 5209: _SC_XOPEN_REALTIME, 5209: 5209: _SC_XOPEN_REALTIME_THREADS, 5209: 5209: 5209: _SC_ADVISORY_INFO, 5209: 5209: _SC_BARRIERS, 5209: 5209: _SC_BASE, 5209: 5209: _SC_C_LANG_SUPPORT, 5209: 5209: _SC_C_LANG_SUPPORT_R, 5209: 5209: _SC_CLOCK_SELECTION, 5209: 5209: _SC_CPUTIME, 5209: 5209: _SC_THREAD_CPUTIME, 5209: 5209: _SC_DEVICE_IO, 5209: 5209: _SC_DEVICE_SPECIFIC, 5209: 5209: _SC_DEVICE_SPECIFIC_R, 5209: 5209: _SC_FD_MGMT, 5209: 5209: _SC_FIFO, 5209: 5209: _SC_PIPE, 5209: 5209: _SC_FILE_ATTRIBUTES, 5209: 5209: _SC_FILE_LOCKING, 5209: 5209: _SC_FILE_SYSTEM, 5209: 5209: _SC_MONOTONIC_CLOCK, 5209: 5209: _SC_MULTI_PROCESS, 5209: 5209: _SC_SINGLE_PROCESS, 5209: 5209: _SC_NETWORKING, 5209: 5209: _SC_READER_WRITER_LOCKS, 5209: 5209: _SC_SPIN_LOCKS, 5209: 5209: _SC_REGEXP, 5209: 5209: _SC_REGEX_VERSION, 5209: 5209: _SC_SHELL, 5209: 5209: _SC_SIGNALS, 5209: 5209: _SC_SPAWN, 5209: 5209: _SC_SPORADIC_SERVER, 5209: 5209: _SC_THREAD_SPORADIC_SERVER, 5209: 5209: _SC_SYSTEM_DATABASE, 5209: 5209: _SC_SYSTEM_DATABASE_R, 5209: 5209: _SC_TIMEOUTS, 5209: 5209: _SC_TYPED_MEMORY_OBJECTS, 5209: 5209: _SC_USER_GROUPS, 5209: 5209: _SC_USER_GROUPS_R, 5209: 5209: _SC_2_PBS, 5209: 5209: _SC_2_PBS_ACCOUNTING, 5209: 5209: _SC_2_PBS_LOCATE, 5209: 5209: _SC_2_PBS_MESSAGE, 5209: 5209: _SC_2_PBS_TRACK, 5209: 5209: _SC_SYMLOOP_MAX, 5209: 5209: _SC_STREAMS, 5209: 5209: _SC_2_PBS_CHECKPOINT, 5209: 5209: 5209: _SC_V6_ILP32_OFF32, 5209: 5209: _SC_V6_ILP32_OFFBIG, 5209: 5209: _SC_V6_LP64_OFF64, 5209: 5209: _SC_V6_LPBIG_OFFBIG, 5209: 5209: 5209: _SC_HOST_NAME_MAX, 5209: 5209: _SC_TRACE, 5209: 5209: _SC_TRACE_EVENT_FILTER, 5209: 5209: _SC_TRACE_INHERIT, 5209: 5209: _SC_TRACE_LOG, 5209: 5209: 5209: _SC_LEVEL1_ICACHE_SIZE, 5209: 5209: _SC_LEVEL1_ICACHE_ASSOC, 5209: 5209: _SC_LEVEL1_ICACHE_LINESIZE, 5209: 5209: _SC_LEVEL1_DCACHE_SIZE, 5209: 5209: _SC_LEVEL1_DCACHE_ASSOC, 5209: 5209: _SC_LEVEL1_DCACHE_LINESIZE, 5209: 5209: _SC_LEVEL2_CACHE_SIZE, 5209: 5209: _SC_LEVEL2_CACHE_ASSOC, 5209: 5209: _SC_LEVEL2_CACHE_LINESIZE, 5209: 5209: _SC_LEVEL3_CACHE_SIZE, 5209: 5209: _SC_LEVEL3_CACHE_ASSOC, 5209: 5209: _SC_LEVEL3_CACHE_LINESIZE, 5209: 5209: _SC_LEVEL4_CACHE_SIZE, 5209: 5209: _SC_LEVEL4_CACHE_ASSOC, 5209: 5209: _SC_LEVEL4_CACHE_LINESIZE, 5209: 5209: 5209: 5209: _SC_IPV6 = _SC_LEVEL1_ICACHE_SIZE + 50, 5209: 5209: _SC_RAW_SOCKETS, 5209: 5209: 5209: _SC_V7_ILP32_OFF32, 5209: 5209: _SC_V7_ILP32_OFFBIG, 5209: 5209: _SC_V7_LP64_OFF64, 5209: 5209: _SC_V7_LPBIG_OFFBIG, 5209: 5209: 5209: _SC_SS_REPL_MAX, 5209: 5209: 5209: _SC_TRACE_EVENT_NAME_MAX, 5209: 5209: _SC_TRACE_NAME_MAX, 5209: 5209: _SC_TRACE_SYS_MAX, 5209: 5209: _SC_TRACE_USER_EVENT_MAX, 5209: 5209: 5209: _SC_XOPEN_STREAMS, 5209: 5209: 5209: _SC_THREAD_ROBUST_PRIO_INHERIT, 5209: 5209: _SC_THREAD_ROBUST_PRIO_PROTECT 5209: 5209: }; 5209: 5209: 5209: enum 5209: { 5209: _CS_PATH, 5209: 5209: 5209: _CS_V6_WIDTH_RESTRICTED_ENVS, 5209: 5209: 5209: 5209: _CS_GNU_LIBC_VERSION, 5209: 5209: _CS_GNU_LIBPTHREAD_VERSION, 5209: 5209: 5209: _CS_V5_WIDTH_RESTRICTED_ENVS, 5209: 5209: 5209: 5209: _CS_V7_WIDTH_RESTRICTED_ENVS, 5209: 5209: 5209: 5209: _CS_LFS_CFLAGS = 1000, 5209: 5209: _CS_LFS_LDFLAGS, 5209: 5209: _CS_LFS_LIBS, 5209: 5209: _CS_LFS_LINTFLAGS, 5209: 5209: _CS_LFS64_CFLAGS, 5209: 5209: _CS_LFS64_LDFLAGS, 5209: 5209: _CS_LFS64_LIBS, 5209: 5209: _CS_LFS64_LINTFLAGS, 5209: 5209: 5209: _CS_XBS5_ILP32_OFF32_CFLAGS = 1100, 5209: 5209: _CS_XBS5_ILP32_OFF32_LDFLAGS, 5209: 5209: _CS_XBS5_ILP32_OFF32_LIBS, 5209: 5209: _CS_XBS5_ILP32_OFF32_LINTFLAGS, 5209: 5209: _CS_XBS5_ILP32_OFFBIG_CFLAGS, 5209: 5209: _CS_XBS5_ILP32_OFFBIG_LDFLAGS, 5209: 5209: _CS_XBS5_ILP32_OFFBIG_LIBS, 5209: 5209: _CS_XBS5_ILP32_OFFBIG_LINTFLAGS, 5209: 5209: _CS_XBS5_LP64_OFF64_CFLAGS, 5209: 5209: _CS_XBS5_LP64_OFF64_LDFLAGS, 5209: 5209: _CS_XBS5_LP64_OFF64_LIBS, 5209: 5209: _CS_XBS5_LP64_OFF64_LINTFLAGS, 5209: 5209: _CS_XBS5_LPBIG_OFFBIG_CFLAGS, 5209: 5209: _CS_XBS5_LPBIG_OFFBIG_LDFLAGS, 5209: 5209: _CS_XBS5_LPBIG_OFFBIG_LIBS, 5209: 5209: _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS, 5209: 5209: 5209: _CS_POSIX_V6_ILP32_OFF32_CFLAGS, 5209: 5209: _CS_POSIX_V6_ILP32_OFF32_LDFLAGS, 5209: 5209: _CS_POSIX_V6_ILP32_OFF32_LIBS, 5209: 5209: _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS, 5209: 5209: _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS, 5209: 5209: _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS, 5209: 5209: _CS_POSIX_V6_ILP32_OFFBIG_LIBS, 5209: 5209: _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS, 5209: 5209: _CS_POSIX_V6_LP64_OFF64_CFLAGS, 5209: 5209: _CS_POSIX_V6_LP64_OFF64_LDFLAGS, 5209: 5209: _CS_POSIX_V6_LP64_OFF64_LIBS, 5209: 5209: _CS_POSIX_V6_LP64_OFF64_LINTFLAGS, 5209: 5209: _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS, 5209: 5209: _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS, 5209: 5209: _CS_POSIX_V6_LPBIG_OFFBIG_LIBS, 5209: 5209: _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS, 5209: 5209: 5209: _CS_POSIX_V7_ILP32_OFF32_CFLAGS, 5209: 5209: _CS_POSIX_V7_ILP32_OFF32_LDFLAGS, 5209: 5209: _CS_POSIX_V7_ILP32_OFF32_LIBS, 5209: 5209: _CS_POSIX_V7_ILP32_OFF32_LINTFLAGS, 5209: 5209: _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS, 5209: 5209: _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS, 5209: 5209: _CS_POSIX_V7_ILP32_OFFBIG_LIBS, 5209: 5209: _CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS, 5209: 5209: _CS_POSIX_V7_LP64_OFF64_CFLAGS, 5209: 5209: _CS_POSIX_V7_LP64_OFF64_LDFLAGS, 5209: 5209: _CS_POSIX_V7_LP64_OFF64_LIBS, 5209: 5209: _CS_POSIX_V7_LP64_OFF64_LINTFLAGS, 5209: 5209: _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS, 5209: 5209: _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS, 5209: 5209: _CS_POSIX_V7_LPBIG_OFFBIG_LIBS, 5209: 5209: _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS, 5209: 5209: 5209: _CS_V6_ENV, 5209: 5209: _CS_V7_ENV 5209: 5209: }; 5209: # 610 "/usr/include/unistd.h" 2 3 4 5209: 5209: 5209: extern long int pathconf (const char *__path, int __name) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: extern long int fpathconf (int __fd, int __name) throw (); 5209: 5209: 5209: extern long int sysconf (int __name) throw (); 5209: 5209: 5209: 5209: extern size_t confstr (int __name, char *__buf, size_t __len) throw (); 5209: 5209: 5209: 5209: 5209: extern __pid_t getpid (void) throw (); 5209: 5209: 5209: extern __pid_t getppid (void) throw (); 5209: 5209: 5209: extern __pid_t getpgrp (void) throw (); 5209: 5209: 5209: extern __pid_t __getpgid (__pid_t __pid) throw (); 5209: 5209: extern __pid_t getpgid (__pid_t __pid) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern int setpgid (__pid_t __pid, __pid_t __pgid) throw (); 5209: # 660 "/usr/include/unistd.h" 3 4 5209: extern int setpgrp (void) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern __pid_t setsid (void) throw (); 5209: 5209: 5209: 5209: extern __pid_t getsid (__pid_t __pid) throw (); 5209: 5209: 5209: 5209: extern __uid_t getuid (void) throw (); 5209: 5209: 5209: extern __uid_t geteuid (void) throw (); 5209: 5209: 5209: extern __gid_t getgid (void) throw (); 5209: 5209: 5209: extern __gid_t getegid (void) throw (); 5209: 5209: 5209: 5209: 5209: extern int getgroups (int __size, __gid_t __list[]) throw () __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: extern int group_member (__gid_t __gid) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern int setuid (__uid_t __uid) throw () __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: extern int setreuid (__uid_t __ruid, __uid_t __euid) throw () __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: extern int seteuid (__uid_t __uid) throw () __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern int setgid (__gid_t __gid) throw () __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: extern int setregid (__gid_t __rgid, __gid_t __egid) throw () __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: extern int setegid (__gid_t __gid) throw () __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: 5209: extern int getresuid (__uid_t *__ruid, __uid_t *__euid, __uid_t *__suid) 5209: throw (); 5209: 5209: 5209: 5209: extern int getresgid (__gid_t *__rgid, __gid_t *__egid, __gid_t *__sgid) 5209: throw (); 5209: 5209: 5209: 5209: extern int setresuid (__uid_t __ruid, __uid_t __euid, __uid_t __suid) 5209: throw () __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: extern int setresgid (__gid_t __rgid, __gid_t __egid, __gid_t __sgid) 5209: throw () __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern __pid_t fork (void) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern __pid_t vfork (void) throw (); 5209: 5209: 5209: 5209: 5209: 5209: extern char *ttyname (int __fd) throw (); 5209: 5209: 5209: 5209: extern int ttyname_r (int __fd, char *__buf, size_t __buflen) 5209: throw () __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: extern int isatty (int __fd) throw (); 5209: 5209: 5209: 5209: 5209: extern int ttyslot (void) throw (); 5209: 5209: 5209: 5209: 5209: extern int link (const char *__from, const char *__to) 5209: throw () __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: extern int linkat (int __fromfd, const char *__from, int __tofd, 5209: const char *__to, int __flags) 5209: throw () __attribute__ ((__nonnull__ (2, 4))) __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: extern int symlink (const char *__from, const char *__to) 5209: throw () __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: extern ssize_t readlink (const char *__restrict __path, 5209: char *__restrict __buf, size_t __len) 5209: throw () __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: extern int symlinkat (const char *__from, int __tofd, 5209: const char *__to) throw () __attribute__ ((__nonnull__ (1, 3))) __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: extern ssize_t readlinkat (int __fd, const char *__restrict __path, 5209: char *__restrict __buf, size_t __len) 5209: throw () __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: extern int unlink (const char *__name) throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: 5209: extern int unlinkat (int __fd, const char *__name, int __flag) 5209: throw () __attribute__ ((__nonnull__ (2))); 5209: 5209: 5209: 5209: extern int rmdir (const char *__path) throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: 5209: extern __pid_t tcgetpgrp (int __fd) throw (); 5209: 5209: 5209: extern int tcsetpgrp (int __fd, __pid_t __pgrp_id) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern char *getlogin (void); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern int getlogin_r (char *__name, size_t __name_len) __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: 5209: 5209: extern int setlogin (const char *__name) throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/getopt_posix.h" 1 3 4 5209: # 27 "/usr/include/aarch64-linux-gnu/bits/getopt_posix.h" 3 4 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/getopt_core.h" 1 3 4 5209: # 28 "/usr/include/aarch64-linux-gnu/bits/getopt_core.h" 3 4 5209: extern "C" { 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern char *optarg; 5209: # 50 "/usr/include/aarch64-linux-gnu/bits/getopt_core.h" 3 4 5209: extern int optind; 5209: 5209: 5209: 5209: 5209: extern int opterr; 5209: 5209: 5209: 5209: extern int optopt; 5209: # 91 "/usr/include/aarch64-linux-gnu/bits/getopt_core.h" 3 4 5209: extern int getopt (int ___argc, char *const *___argv, const char *__shortopts) 5209: throw () __attribute__ ((__nonnull__ (2, 3))); 5209: 5209: } 5209: # 28 "/usr/include/aarch64-linux-gnu/bits/getopt_posix.h" 2 3 4 5209: 5209: extern "C" { 5209: # 49 "/usr/include/aarch64-linux-gnu/bits/getopt_posix.h" 3 4 5209: } 5209: # 870 "/usr/include/unistd.h" 2 3 4 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern int gethostname (char *__name, size_t __len) throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern int sethostname (const char *__name, size_t __len) 5209: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: extern int sethostid (long int __id) throw () __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: 5209: extern int getdomainname (char *__name, size_t __len) 5209: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 5209: extern int setdomainname (const char *__name, size_t __len) 5209: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: 5209: extern int vhangup (void) throw (); 5209: 5209: 5209: extern int revoke (const char *__file) throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern int profil (unsigned short int *__sample_buffer, size_t __size, 5209: size_t __offset, unsigned int __scale) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: 5209: 5209: 5209: extern int acct (const char *__name) throw (); 5209: 5209: 5209: 5209: extern char *getusershell (void) throw (); 5209: extern void endusershell (void) throw (); 5209: extern void setusershell (void) throw (); 5209: 5209: 5209: 5209: 5209: 5209: extern int daemon (int __nochdir, int __noclose) throw () __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern int chroot (const char *__path) throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: extern char *getpass (const char *__prompt) __attribute__ ((__nonnull__ (1))); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern int fsync (int __fd); 5209: 5209: 5209: 5209: 5209: 5209: extern int syncfs (int __fd) throw (); 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern long int gethostid (void); 5209: 5209: 5209: extern void sync (void) throw (); 5209: 5209: 5209: 5209: 5209: 5209: extern int getpagesize (void) throw () __attribute__ ((__const__)); 5209: 5209: 5209: 5209: 5209: extern int getdtablesize (void) throw (); 5209: # 991 "/usr/include/unistd.h" 3 4 5209: extern int truncate (const char *__file, __off_t __length) 5209: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 5209: # 1003 "/usr/include/unistd.h" 3 4 5209: extern int truncate64 (const char *__file, __off64_t __length) 5209: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 5209: # 1014 "/usr/include/unistd.h" 3 4 5209: extern int ftruncate (int __fd, __off_t __length) throw () __attribute__ ((__warn_unused_result__)); 5209: # 1024 "/usr/include/unistd.h" 3 4 5209: extern int ftruncate64 (int __fd, __off64_t __length) throw () __attribute__ ((__warn_unused_result__)); 5209: # 1035 "/usr/include/unistd.h" 3 4 5209: extern int brk (void *__addr) throw () __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: 5209: extern void *sbrk (intptr_t __delta) throw (); 5209: # 1056 "/usr/include/unistd.h" 3 4 5209: extern long int syscall (long int __sysno, ...) throw (); 5209: # 1079 "/usr/include/unistd.h" 3 4 5209: extern int lockf (int __fd, int __cmd, __off_t __len) __attribute__ ((__warn_unused_result__)); 5209: # 1089 "/usr/include/unistd.h" 3 4 5209: extern int lockf64 (int __fd, int __cmd, __off64_t __len) __attribute__ ((__warn_unused_result__)); 5209: # 1107 "/usr/include/unistd.h" 3 4 5209: ssize_t copy_file_range (int __infd, __off64_t *__pinoff, 5209: int __outfd, __off64_t *__poutoff, 5209: size_t __length, unsigned int __flags); 5209: 5209: 5209: 5209: 5209: 5209: extern int fdatasync (int __fildes); 5209: # 1124 "/usr/include/unistd.h" 3 4 5209: extern char *crypt (const char *__key, const char *__salt) 5209: throw () __attribute__ ((__nonnull__ (1, 2))); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: extern void swab (const void *__restrict __from, void *__restrict __to, 5209: ssize_t __n) throw () __attribute__ ((__nonnull__ (1, 2))); 5209: # 1161 "/usr/include/unistd.h" 3 4 5209: int getentropy (void *__buffer, size_t __length) __attribute__ ((__warn_unused_result__)); 5209: 5209: 5209: 5209: 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/unistd.h" 1 3 4 5209: # 23 "/usr/include/aarch64-linux-gnu/bits/unistd.h" 3 4 5209: extern ssize_t __read_chk (int __fd, void *__buf, size_t __nbytes, 5209: size_t __buflen) __attribute__ ((__warn_unused_result__)); 5209: extern ssize_t __read_alias (int __fd, void *__buf, size_t __nbytes) __asm__ ("" "read") 5209: __attribute__ ((__warn_unused_result__)); 5209: extern ssize_t __read_chk_warn (int __fd, void *__buf, size_t __nbytes, size_t __buflen) __asm__ ("" "__read_chk") 5209: 5209: 5209: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("read called with bigger length than size of " "the destination buffer"))) 5209: ; 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) ssize_t 5209: read (int __fd, void *__buf, size_t __nbytes) 5209: { 5209: if (__builtin_object_size (__buf, 0) != (size_t) -1) 5209: { 5209: if (!__builtin_constant_p (__nbytes)) 5209: return __read_chk (__fd, __buf, __nbytes, __builtin_object_size (__buf, 0)); 5209: 5209: if (__nbytes > __builtin_object_size (__buf, 0)) 5209: return __read_chk_warn (__fd, __buf, __nbytes, __builtin_object_size (__buf, 0)); 5209: } 5209: return __read_alias (__fd, __buf, __nbytes); 5209: } 5209: 5209: 5209: extern ssize_t __pread_chk (int __fd, void *__buf, size_t __nbytes, 5209: __off_t __offset, size_t __bufsize) __attribute__ ((__warn_unused_result__)); 5209: extern ssize_t __pread64_chk (int __fd, void *__buf, size_t __nbytes, 5209: __off64_t __offset, size_t __bufsize) __attribute__ ((__warn_unused_result__)); 5209: extern ssize_t __pread_alias (int __fd, void *__buf, size_t __nbytes, __off_t __offset) __asm__ ("" "pread") 5209: 5209: __attribute__ ((__warn_unused_result__)); 5209: extern ssize_t __pread64_alias (int __fd, void *__buf, size_t __nbytes, __off64_t __offset) __asm__ ("" "pread64") 5209: 5209: __attribute__ ((__warn_unused_result__)); 5209: extern ssize_t __pread_chk_warn (int __fd, void *__buf, size_t __nbytes, __off_t __offset, size_t __bufsize) __asm__ ("" "__pread_chk") 5209: 5209: 5209: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("pread called with bigger length than size of " "the destination buffer"))) 5209: ; 5209: extern ssize_t __pread64_chk_warn (int __fd, void *__buf, size_t __nbytes, __off64_t __offset, size_t __bufsize) __asm__ ("" "__pread64_chk") 5209: 5209: 5209: 5209: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("pread64 called with bigger length than size of " "the destination buffer"))) 5209: ; 5209: 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) ssize_t 5209: pread (int __fd, void *__buf, size_t __nbytes, __off_t __offset) 5209: { 5209: if (__builtin_object_size (__buf, 0) != (size_t) -1) 5209: { 5209: if (!__builtin_constant_p (__nbytes)) 5209: return __pread_chk (__fd, __buf, __nbytes, __offset, __builtin_object_size (__buf, 0)); 5209: 5209: if ( __nbytes > __builtin_object_size (__buf, 0)) 5209: return __pread_chk_warn (__fd, __buf, __nbytes, __offset, 5209: __builtin_object_size (__buf, 0)); 5209: } 5209: return __pread_alias (__fd, __buf, __nbytes, __offset); 5209: } 5209: # 104 "/usr/include/aarch64-linux-gnu/bits/unistd.h" 3 4 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) ssize_t 5209: pread64 (int __fd, void *__buf, size_t __nbytes, __off64_t __offset) 5209: { 5209: if (__builtin_object_size (__buf, 0) != (size_t) -1) 5209: { 5209: if (!__builtin_constant_p (__nbytes)) 5209: return __pread64_chk (__fd, __buf, __nbytes, __offset, __builtin_object_size (__buf, 0)); 5209: 5209: if ( __nbytes > __builtin_object_size (__buf, 0)) 5209: return __pread64_chk_warn (__fd, __buf, __nbytes, __offset, 5209: __builtin_object_size (__buf, 0)); 5209: } 5209: 5209: return __pread64_alias (__fd, __buf, __nbytes, __offset); 5209: } 5209: 5209: 5209: 5209: 5209: extern ssize_t __readlink_chk (const char *__restrict __path, 5209: char *__restrict __buf, size_t __len, 5209: size_t __buflen) 5209: throw () __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)); 5209: extern ssize_t __readlink_alias (const char *__restrict __path, char *__restrict __buf, size_t __len) throw () __asm__ ("" "readlink") 5209: 5209: 5209: __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)); 5209: extern ssize_t __readlink_chk_warn (const char *__restrict __path, char *__restrict __buf, size_t __len, size_t __buflen) throw () __asm__ ("" "__readlink_chk") 5209: 5209: 5209: 5209: __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("readlink called with bigger length " "than size of destination buffer"))) 5209: ; 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)) ssize_t 5209: __attribute__ ((__leaf__)) readlink (const char *__restrict __path, char *__restrict __buf, size_t __len) throw () 5209: 5209: { 5209: if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1) 5209: { 5209: if (!__builtin_constant_p (__len)) 5209: return __readlink_chk (__path, __buf, __len, __builtin_object_size (__buf, 2 > 1)); 5209: 5209: if ( __len > __builtin_object_size (__buf, 2 > 1)) 5209: return __readlink_chk_warn (__path, __buf, __len, __builtin_object_size (__buf, 2 > 1)); 5209: } 5209: return __readlink_alias (__path, __buf, __len); 5209: } 5209: 5209: 5209: 5209: extern ssize_t __readlinkat_chk (int __fd, const char *__restrict __path, 5209: char *__restrict __buf, size_t __len, 5209: size_t __buflen) 5209: throw () __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)); 5209: extern ssize_t __readlinkat_alias (int __fd, const char *__restrict __path, char *__restrict __buf, size_t __len) throw () __asm__ ("" "readlinkat") 5209: 5209: 5209: 5209: __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)); 5209: extern ssize_t __readlinkat_chk_warn (int __fd, const char *__restrict __path, char *__restrict __buf, size_t __len, size_t __buflen) throw () __asm__ ("" "__readlinkat_chk") 5209: 5209: 5209: 5209: __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("readlinkat called with bigger " "length than size of destination " "buffer"))) 5209: 5209: ; 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)) ssize_t 5209: __attribute__ ((__leaf__)) readlinkat (int __fd, const char *__restrict __path, char *__restrict __buf, size_t __len) throw () 5209: 5209: { 5209: if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1) 5209: { 5209: if (!__builtin_constant_p (__len)) 5209: return __readlinkat_chk (__fd, __path, __buf, __len, __builtin_object_size (__buf, 2 > 1)); 5209: 5209: if (__len > __builtin_object_size (__buf, 2 > 1)) 5209: return __readlinkat_chk_warn (__fd, __path, __buf, __len, 5209: __builtin_object_size (__buf, 2 > 1)); 5209: } 5209: return __readlinkat_alias (__fd, __path, __buf, __len); 5209: } 5209: 5209: 5209: extern char *__getcwd_chk (char *__buf, size_t __size, size_t __buflen) 5209: throw () __attribute__ ((__warn_unused_result__)); 5209: extern char *__getcwd_alias (char *__buf, size_t __size) throw () __asm__ ("" "getcwd") 5209: __attribute__ ((__warn_unused_result__)); 5209: extern char *__getcwd_chk_warn (char *__buf, size_t __size, size_t __buflen) throw () __asm__ ("" "__getcwd_chk") 5209: 5209: 5209: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("getcwd caller with bigger length than size of " "destination buffer"))) 5209: ; 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) char * 5209: __attribute__ ((__leaf__)) getcwd (char *__buf, size_t __size) throw () 5209: { 5209: if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1) 5209: { 5209: if (!__builtin_constant_p (__size)) 5209: return __getcwd_chk (__buf, __size, __builtin_object_size (__buf, 2 > 1)); 5209: 5209: if (__size > __builtin_object_size (__buf, 2 > 1)) 5209: return __getcwd_chk_warn (__buf, __size, __builtin_object_size (__buf, 2 > 1)); 5209: } 5209: return __getcwd_alias (__buf, __size); 5209: } 5209: 5209: 5209: extern char *__getwd_chk (char *__buf, size_t buflen) 5209: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 5209: extern char *__getwd_warn (char *__buf) throw () __asm__ ("" "getwd") 5209: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("please use getcwd instead, as getwd " "doesn't specify buffer size"))) 5209: ; 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__)) __attribute__ ((__warn_unused_result__)) char * 5209: __attribute__ ((__leaf__)) getwd (char *__buf) throw () 5209: { 5209: if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1) 5209: return __getwd_chk (__buf, __builtin_object_size (__buf, 2 > 1)); 5209: return __getwd_warn (__buf); 5209: } 5209: 5209: 5209: extern size_t __confstr_chk (int __name, char *__buf, size_t __len, 5209: size_t __buflen) throw (); 5209: extern size_t __confstr_alias (int __name, char *__buf, size_t __len) throw () __asm__ ("" "confstr") 5209: ; 5209: extern size_t __confstr_chk_warn (int __name, char *__buf, size_t __len, size_t __buflen) throw () __asm__ ("" "__confstr_chk") 5209: 5209: 5209: __attribute__((__warning__ ("confstr called with bigger length than size of destination " "buffer"))) 5209: ; 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 5209: __attribute__ ((__leaf__)) confstr (int __name, char *__buf, size_t __len) throw () 5209: { 5209: if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1) 5209: { 5209: if (!__builtin_constant_p (__len)) 5209: return __confstr_chk (__name, __buf, __len, __builtin_object_size (__buf, 2 > 1)); 5209: 5209: if (__builtin_object_size (__buf, 2 > 1) < __len) 5209: return __confstr_chk_warn (__name, __buf, __len, __builtin_object_size (__buf, 2 > 1)); 5209: } 5209: return __confstr_alias (__name, __buf, __len); 5209: } 5209: 5209: 5209: extern int __getgroups_chk (int __size, __gid_t __list[], size_t __listlen) 5209: throw () __attribute__ ((__warn_unused_result__)); 5209: extern int __getgroups_alias (int __size, __gid_t __list[]) throw () __asm__ ("" "getgroups") 5209: __attribute__ ((__warn_unused_result__)); 5209: extern int __getgroups_chk_warn (int __size, __gid_t __list[], size_t __listlen) throw () __asm__ ("" "__getgroups_chk") 5209: 5209: 5209: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("getgroups called with bigger group count than what " "can fit into destination buffer"))) 5209: ; 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 5209: __attribute__ ((__leaf__)) getgroups (int __size, __gid_t __list[]) throw () 5209: { 5209: if (__builtin_object_size (__list, 2 > 1) != (size_t) -1) 5209: { 5209: if (!__builtin_constant_p (__size) || __size < 0) 5209: return __getgroups_chk (__size, __list, __builtin_object_size (__list, 2 > 1)); 5209: 5209: if (__size * sizeof (__gid_t) > __builtin_object_size (__list, 2 > 1)) 5209: return __getgroups_chk_warn (__size, __list, __builtin_object_size (__list, 2 > 1)); 5209: } 5209: return __getgroups_alias (__size, __list); 5209: } 5209: 5209: 5209: extern int __ttyname_r_chk (int __fd, char *__buf, size_t __buflen, 5209: size_t __nreal) throw () __attribute__ ((__nonnull__ (2))); 5209: extern int __ttyname_r_alias (int __fd, char *__buf, size_t __buflen) throw () __asm__ ("" "ttyname_r") 5209: 5209: __attribute__ ((__nonnull__ (2))); 5209: extern int __ttyname_r_chk_warn (int __fd, char *__buf, size_t __buflen, size_t __nreal) throw () __asm__ ("" "__ttyname_r_chk") 5209: 5209: 5209: __attribute__ ((__nonnull__ (2))) __attribute__((__warning__ ("ttyname_r called with bigger buflen than " "size of destination buffer"))) 5209: ; 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 5209: __attribute__ ((__leaf__)) ttyname_r (int __fd, char *__buf, size_t __buflen) throw () 5209: { 5209: if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1) 5209: { 5209: if (!__builtin_constant_p (__buflen)) 5209: return __ttyname_r_chk (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1)); 5209: 5209: if (__buflen > __builtin_object_size (__buf, 2 > 1)) 5209: return __ttyname_r_chk_warn (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1)); 5209: } 5209: return __ttyname_r_alias (__fd, __buf, __buflen); 5209: } 5209: 5209: 5209: 5209: extern int __getlogin_r_chk (char *__buf, size_t __buflen, size_t __nreal) 5209: __attribute__ ((__nonnull__ (1))); 5209: extern int __getlogin_r_alias (char *__buf, size_t __buflen) __asm__ ("" "getlogin_r") 5209: __attribute__ ((__nonnull__ (1))); 5209: extern int __getlogin_r_chk_warn (char *__buf, size_t __buflen, size_t __nreal) __asm__ ("" "__getlogin_r_chk") 5209: 5209: 5209: __attribute__ ((__nonnull__ (1))) __attribute__((__warning__ ("getlogin_r called with bigger buflen than " "size of destination buffer"))) 5209: ; 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 5209: getlogin_r (char *__buf, size_t __buflen) 5209: { 5209: if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1) 5209: { 5209: if (!__builtin_constant_p (__buflen)) 5209: return __getlogin_r_chk (__buf, __buflen, __builtin_object_size (__buf, 2 > 1)); 5209: 5209: if (__buflen > __builtin_object_size (__buf, 2 > 1)) 5209: return __getlogin_r_chk_warn (__buf, __buflen, __builtin_object_size (__buf, 2 > 1)); 5209: } 5209: return __getlogin_r_alias (__buf, __buflen); 5209: } 5209: 5209: 5209: 5209: 5209: extern int __gethostname_chk (char *__buf, size_t __buflen, size_t __nreal) 5209: throw () __attribute__ ((__nonnull__ (1))); 5209: extern int __gethostname_alias (char *__buf, size_t __buflen) throw () __asm__ ("" "gethostname") 5209: __attribute__ ((__nonnull__ (1))); 5209: extern int __gethostname_chk_warn (char *__buf, size_t __buflen, size_t __nreal) throw () __asm__ ("" "__gethostname_chk") 5209: 5209: 5209: __attribute__ ((__nonnull__ (1))) __attribute__((__warning__ ("gethostname called with bigger buflen than " "size of destination buffer"))) 5209: ; 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 5209: __attribute__ ((__leaf__)) gethostname (char *__buf, size_t __buflen) throw () 5209: { 5209: if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1) 5209: { 5209: if (!__builtin_constant_p (__buflen)) 5209: return __gethostname_chk (__buf, __buflen, __builtin_object_size (__buf, 2 > 1)); 5209: 5209: if (__buflen > __builtin_object_size (__buf, 2 > 1)) 5209: return __gethostname_chk_warn (__buf, __buflen, __builtin_object_size (__buf, 2 > 1)); 5209: } 5209: return __gethostname_alias (__buf, __buflen); 5209: } 5209: 5209: 5209: 5209: 5209: extern int __getdomainname_chk (char *__buf, size_t __buflen, size_t __nreal) 5209: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 5209: extern int __getdomainname_alias (char *__buf, size_t __buflen) throw () __asm__ ("" "getdomainname") 5209: 5209: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 5209: extern int __getdomainname_chk_warn (char *__buf, size_t __buflen, size_t __nreal) throw () __asm__ ("" "__getdomainname_chk") 5209: 5209: 5209: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("getdomainname called with bigger " "buflen than size of destination " "buffer"))) 5209: 5209: ; 5209: 5209: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 5209: __attribute__ ((__leaf__)) getdomainname (char *__buf, size_t __buflen) throw () 5209: { 5209: if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1) 5209: { 5209: if (!__builtin_constant_p (__buflen)) 5209: return __getdomainname_chk (__buf, __buflen, __builtin_object_size (__buf, 2 > 1)); 5209: 5209: if (__buflen > __builtin_object_size (__buf, 2 > 1)) 5209: return __getdomainname_chk_warn (__buf, __buflen, __builtin_object_size (__buf, 2 > 1)); 5209: } 5209: return __getdomainname_alias (__buf, __buflen); 5209: } 5209: # 1167 "/usr/include/unistd.h" 2 3 4 5209: 5209: 5209: 5209: # 1 "/usr/include/aarch64-linux-gnu/bits/unistd_ext.h" 1 3 4 5209: # 34 "/usr/include/aarch64-linux-gnu/bits/unistd_ext.h" 3 4 5209: extern __pid_t gettid (void) throw (); 5209: # 1171 "/usr/include/unistd.h" 2 3 4 5209: 5209: } 5209: # 27 "/<>/test/../public/../internal/../internal/../internal/platform.h" 2 5209: # 54 "/<>/test/../public/../internal/../internal/../internal/platform.h" 5209: 5209: # 54 "/<>/test/../public/../internal/../internal/../internal/platform.h" 5209: namespace gemmlowp { 5209: # 80 "/<>/test/../public/../internal/../internal/../internal/platform.h" 5209: inline void *aligned_alloc(size_t alignment, size_t size) { 5209: 5209: 5209: 5209: void *memptr; 5209: if (posix_memalign(&memptr, alignment, size)) { 5209: memptr = nullptr; 5209: } 5209: return memptr; 5209: 5209: } 5209: 5209: inline int GetHardwareConcurrency(int max_threads) { 5209: if (max_threads == 0) { 5209: static const int hardware_threads_count = 5209: static_cast(sysconf( 5209: # 95 "/<>/test/../public/../internal/../internal/../internal/platform.h" 3 4 5209: _SC_NPROCESSORS_CONF 5209: # 95 "/<>/test/../public/../internal/../internal/../internal/platform.h" 5209: )); 5209: return hardware_threads_count; 5209: } 5209: return max_threads; 5209: } 5209: 5209: inline void aligned_free(void *memptr) { free(memptr); } 5209: 5209: inline double real_time_in_seconds() { 5209: 5209: 5209: 5209: 5209: 5209: timespec t; 5209: clock_gettime( 5209: # 110 "/<>/test/../public/../internal/../internal/../internal/platform.h" 3 4 5209: 0 5209: # 110 "/<>/test/../public/../internal/../internal/../internal/platform.h" 5209: , &t); 5209: return t.tv_sec + 1e-9 * t.tv_nsec; 5209: 5209: } 5209: 5209: 5209: } 5209: # 22 "/<>/test/../public/../internal/../internal/common.h" 2 5209: # 1 "/<>/test/../public/../internal/../internal/../profiling/pthread_everywhere.h" 1 5209: # 23 "/<>/test/../public/../internal/../internal/common.h" 2 5209: 5209: # 1 "/usr/include/c++/10/algorithm" 1 3 5209: # 58 "/usr/include/c++/10/algorithm" 3 5209: 5209: # 59 "/usr/include/c++/10/algorithm" 3 5209: 5209: # 1 "/usr/include/c++/10/utility" 1 3 5209: # 58 "/usr/include/c++/10/utility" 3 5209: 5209: # 59 "/usr/include/c++/10/utility" 3 5209: # 69 "/usr/include/c++/10/utility" 3 5209: # 1 "/usr/include/c++/10/bits/stl_relops.h" 1 3 5209: # 67 "/usr/include/c++/10/bits/stl_relops.h" 3 5209: 5209: # 67 "/usr/include/c++/10/bits/stl_relops.h" 3 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: namespace rel_ops 5209: { 5209: # 85 "/usr/include/c++/10/bits/stl_relops.h" 3 5209: template 5209: inline bool 5209: operator!=(const _Tp& __x, const _Tp& __y) 5209: { return !(__x == __y); } 5209: # 98 "/usr/include/c++/10/bits/stl_relops.h" 3 5209: template 5209: inline bool 5209: operator>(const _Tp& __x, const _Tp& __y) 5209: { return __y < __x; } 5209: # 111 "/usr/include/c++/10/bits/stl_relops.h" 3 5209: template 5209: inline bool 5209: operator<=(const _Tp& __x, const _Tp& __y) 5209: { return !(__y < __x); } 5209: # 124 "/usr/include/c++/10/bits/stl_relops.h" 3 5209: template 5209: inline bool 5209: operator>=(const _Tp& __x, const _Tp& __y) 5209: { return !(__x < __y); } 5209: } 5209: 5209: 5209: } 5209: # 70 "/usr/include/c++/10/utility" 2 3 5209: # 78 "/usr/include/c++/10/utility" 3 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: 5209: template 5209: struct tuple_size; 5209: 5209: 5209: 5209: 5209: 5209: template::type, 5209: typename = typename enable_if::value>::type, 5209: size_t = tuple_size<_Tp>::value> 5209: using __enable_if_has_tuple_size = _Tp; 5209: 5209: template 5209: struct tuple_size> 5209: : public tuple_size<_Tp> { }; 5209: 5209: template 5209: struct tuple_size> 5209: : public tuple_size<_Tp> { }; 5209: 5209: template 5209: struct tuple_size> 5209: : public tuple_size<_Tp> { }; 5209: 5209: 5209: template 5209: struct tuple_element; 5209: 5209: 5209: template 5209: using __tuple_element_t = typename tuple_element<__i, _Tp>::type; 5209: 5209: template 5209: struct tuple_element<__i, const _Tp> 5209: { 5209: typedef typename add_const<__tuple_element_t<__i, _Tp>>::type type; 5209: }; 5209: 5209: template 5209: struct tuple_element<__i, volatile _Tp> 5209: { 5209: typedef typename add_volatile<__tuple_element_t<__i, _Tp>>::type type; 5209: }; 5209: 5209: template 5209: struct tuple_element<__i, const volatile _Tp> 5209: { 5209: typedef typename add_cv<__tuple_element_t<__i, _Tp>>::type type; 5209: }; 5209: # 147 "/usr/include/c++/10/utility" 3 5209: template 5209: struct __is_tuple_like_impl> : true_type 5209: { }; 5209: 5209: 5209: template 5209: struct tuple_size> 5209: : public integral_constant { }; 5209: 5209: 5209: template 5209: struct tuple_element<0, std::pair<_Tp1, _Tp2>> 5209: { typedef _Tp1 type; }; 5209: 5209: 5209: template 5209: struct tuple_element<1, std::pair<_Tp1, _Tp2>> 5209: { typedef _Tp2 type; }; 5209: 5209: template 5209: struct __pair_get; 5209: 5209: template<> 5209: struct __pair_get<0> 5209: { 5209: template 5209: static constexpr _Tp1& 5209: __get(std::pair<_Tp1, _Tp2>& __pair) noexcept 5209: { return __pair.first; } 5209: 5209: template 5209: static constexpr _Tp1&& 5209: __move_get(std::pair<_Tp1, _Tp2>&& __pair) noexcept 5209: { return std::forward<_Tp1>(__pair.first); } 5209: 5209: template 5209: static constexpr const _Tp1& 5209: __const_get(const std::pair<_Tp1, _Tp2>& __pair) noexcept 5209: { return __pair.first; } 5209: 5209: template 5209: static constexpr const _Tp1&& 5209: __const_move_get(const std::pair<_Tp1, _Tp2>&& __pair) noexcept 5209: { return std::forward(__pair.first); } 5209: }; 5209: 5209: template<> 5209: struct __pair_get<1> 5209: { 5209: template 5209: static constexpr _Tp2& 5209: __get(std::pair<_Tp1, _Tp2>& __pair) noexcept 5209: { return __pair.second; } 5209: 5209: template 5209: static constexpr _Tp2&& 5209: __move_get(std::pair<_Tp1, _Tp2>&& __pair) noexcept 5209: { return std::forward<_Tp2>(__pair.second); } 5209: 5209: template 5209: static constexpr const _Tp2& 5209: __const_get(const std::pair<_Tp1, _Tp2>& __pair) noexcept 5209: { return __pair.second; } 5209: 5209: template 5209: static constexpr const _Tp2&& 5209: __const_move_get(const std::pair<_Tp1, _Tp2>&& __pair) noexcept 5209: { return std::forward(__pair.second); } 5209: }; 5209: 5209: template 5209: constexpr typename tuple_element<_Int, std::pair<_Tp1, _Tp2>>::type& 5209: get(std::pair<_Tp1, _Tp2>& __in) noexcept 5209: { return __pair_get<_Int>::__get(__in); } 5209: 5209: template 5209: constexpr typename tuple_element<_Int, std::pair<_Tp1, _Tp2>>::type&& 5209: get(std::pair<_Tp1, _Tp2>&& __in) noexcept 5209: { return __pair_get<_Int>::__move_get(std::move(__in)); } 5209: 5209: template 5209: constexpr const typename tuple_element<_Int, std::pair<_Tp1, _Tp2>>::type& 5209: get(const std::pair<_Tp1, _Tp2>& __in) noexcept 5209: { return __pair_get<_Int>::__const_get(__in); } 5209: 5209: template 5209: constexpr const typename tuple_element<_Int, std::pair<_Tp1, _Tp2>>::type&& 5209: get(const std::pair<_Tp1, _Tp2>&& __in) noexcept 5209: { return __pair_get<_Int>::__const_move_get(std::move(__in)); } 5209: # 298 "/usr/include/c++/10/utility" 3 5209: template struct _Index_tuple { }; 5209: # 307 "/usr/include/c++/10/utility" 3 5209: template 5209: struct _Build_index_tuple 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: using __type = _Index_tuple<__integer_pack(_Num)...>; 5209: 5209: }; 5209: # 402 "/usr/include/c++/10/utility" 3 5209: 5209: } 5209: # 61 "/usr/include/c++/10/algorithm" 2 3 5209: 5209: # 1 "/usr/include/c++/10/bits/stl_algo.h" 1 3 5209: # 59 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: # 1 "/usr/include/c++/10/cstdlib" 1 3 5209: # 39 "/usr/include/c++/10/cstdlib" 3 5209: 5209: # 40 "/usr/include/c++/10/cstdlib" 3 5209: # 60 "/usr/include/c++/10/bits/stl_algo.h" 2 3 5209: # 1 "/usr/include/c++/10/bits/algorithmfwd.h" 1 3 5209: # 33 "/usr/include/c++/10/bits/algorithmfwd.h" 3 5209: 5209: # 34 "/usr/include/c++/10/bits/algorithmfwd.h" 3 5209: # 42 "/usr/include/c++/10/bits/algorithmfwd.h" 3 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: # 199 "/usr/include/c++/10/bits/algorithmfwd.h" 3 5209: template 5209: 5209: bool 5209: all_of(_IIter, _IIter, _Predicate); 5209: 5209: template 5209: 5209: bool 5209: any_of(_IIter, _IIter, _Predicate); 5209: 5209: 5209: template 5209: 5209: bool 5209: binary_search(_FIter, _FIter, const _Tp&); 5209: 5209: template 5209: 5209: bool 5209: binary_search(_FIter, _FIter, const _Tp&, _Compare); 5209: # 232 "/usr/include/c++/10/bits/algorithmfwd.h" 3 5209: template 5209: 5209: _OIter 5209: copy(_IIter, _IIter, _OIter); 5209: 5209: template 5209: 5209: _BIter2 5209: copy_backward(_BIter1, _BIter1, _BIter2); 5209: 5209: 5209: template 5209: 5209: _OIter 5209: copy_if(_IIter, _IIter, _OIter, _Predicate); 5209: 5209: template 5209: 5209: _OIter 5209: copy_n(_IIter, _Size, _OIter); 5209: 5209: 5209: 5209: 5209: 5209: template 5209: 5209: pair<_FIter, _FIter> 5209: equal_range(_FIter, _FIter, const _Tp&); 5209: 5209: template 5209: 5209: pair<_FIter, _FIter> 5209: equal_range(_FIter, _FIter, const _Tp&, _Compare); 5209: 5209: template 5209: 5209: void 5209: fill(_FIter, _FIter, const _Tp&); 5209: 5209: template 5209: 5209: _OIter 5209: fill_n(_OIter, _Size, const _Tp&); 5209: 5209: 5209: 5209: template 5209: 5209: _FIter1 5209: find_end(_FIter1, _FIter1, _FIter2, _FIter2); 5209: 5209: template 5209: 5209: _FIter1 5209: find_end(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate); 5209: 5209: 5209: 5209: 5209: 5209: template 5209: 5209: _IIter 5209: find_if_not(_IIter, _IIter, _Predicate); 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: 5209: bool 5209: includes(_IIter1, _IIter1, _IIter2, _IIter2); 5209: 5209: template 5209: 5209: bool 5209: includes(_IIter1, _IIter1, _IIter2, _IIter2, _Compare); 5209: 5209: template 5209: void 5209: inplace_merge(_BIter, _BIter, _BIter); 5209: 5209: template 5209: void 5209: inplace_merge(_BIter, _BIter, _BIter, _Compare); 5209: 5209: 5209: template 5209: 5209: bool 5209: is_heap(_RAIter, _RAIter); 5209: 5209: template 5209: 5209: bool 5209: is_heap(_RAIter, _RAIter, _Compare); 5209: 5209: template 5209: 5209: _RAIter 5209: is_heap_until(_RAIter, _RAIter); 5209: 5209: template 5209: 5209: _RAIter 5209: is_heap_until(_RAIter, _RAIter, _Compare); 5209: 5209: template 5209: 5209: bool 5209: is_partitioned(_IIter, _IIter, _Predicate); 5209: 5209: template 5209: 5209: bool 5209: is_permutation(_FIter1, _FIter1, _FIter2); 5209: 5209: template 5209: 5209: bool 5209: is_permutation(_FIter1, _FIter1, _FIter2, _BinaryPredicate); 5209: 5209: template 5209: 5209: bool 5209: is_sorted(_FIter, _FIter); 5209: 5209: template 5209: 5209: bool 5209: is_sorted(_FIter, _FIter, _Compare); 5209: 5209: template 5209: 5209: _FIter 5209: is_sorted_until(_FIter, _FIter); 5209: 5209: template 5209: 5209: _FIter 5209: is_sorted_until(_FIter, _FIter, _Compare); 5209: 5209: 5209: template 5209: 5209: void 5209: iter_swap(_FIter1, _FIter2); 5209: 5209: template 5209: 5209: _FIter 5209: lower_bound(_FIter, _FIter, const _Tp&); 5209: 5209: template 5209: 5209: _FIter 5209: lower_bound(_FIter, _FIter, const _Tp&, _Compare); 5209: 5209: template 5209: 5209: void 5209: make_heap(_RAIter, _RAIter); 5209: 5209: template 5209: 5209: void 5209: make_heap(_RAIter, _RAIter, _Compare); 5209: 5209: template 5209: 5209: const _Tp& 5209: max(const _Tp&, const _Tp&); 5209: 5209: template 5209: 5209: const _Tp& 5209: max(const _Tp&, const _Tp&, _Compare); 5209: 5209: 5209: 5209: 5209: template 5209: 5209: const _Tp& 5209: min(const _Tp&, const _Tp&); 5209: 5209: template 5209: 5209: const _Tp& 5209: min(const _Tp&, const _Tp&, _Compare); 5209: 5209: 5209: 5209: 5209: template 5209: 5209: pair 5209: minmax(const _Tp&, const _Tp&); 5209: 5209: template 5209: 5209: pair 5209: minmax(const _Tp&, const _Tp&, _Compare); 5209: 5209: template 5209: 5209: pair<_FIter, _FIter> 5209: minmax_element(_FIter, _FIter); 5209: 5209: template 5209: 5209: pair<_FIter, _FIter> 5209: minmax_element(_FIter, _FIter, _Compare); 5209: 5209: template 5209: 5209: _Tp 5209: min(initializer_list<_Tp>); 5209: 5209: template 5209: 5209: _Tp 5209: min(initializer_list<_Tp>, _Compare); 5209: 5209: template 5209: 5209: _Tp 5209: max(initializer_list<_Tp>); 5209: 5209: template 5209: 5209: _Tp 5209: max(initializer_list<_Tp>, _Compare); 5209: 5209: template 5209: 5209: pair<_Tp, _Tp> 5209: minmax(initializer_list<_Tp>); 5209: 5209: template 5209: 5209: pair<_Tp, _Tp> 5209: minmax(initializer_list<_Tp>, _Compare); 5209: 5209: 5209: 5209: 5209: template 5209: 5209: bool 5209: next_permutation(_BIter, _BIter); 5209: 5209: template 5209: 5209: bool 5209: next_permutation(_BIter, _BIter, _Compare); 5209: 5209: 5209: template 5209: 5209: bool 5209: none_of(_IIter, _IIter, _Predicate); 5209: 5209: 5209: 5209: 5209: 5209: template 5209: 5209: _RAIter 5209: partial_sort_copy(_IIter, _IIter, _RAIter, _RAIter); 5209: 5209: template 5209: 5209: _RAIter 5209: partial_sort_copy(_IIter, _IIter, _RAIter, _RAIter, _Compare); 5209: 5209: 5209: 5209: 5209: template 5209: 5209: pair<_OIter1, _OIter2> 5209: partition_copy(_IIter, _IIter, _OIter1, _OIter2, _Predicate); 5209: 5209: template 5209: 5209: _FIter 5209: partition_point(_FIter, _FIter, _Predicate); 5209: 5209: 5209: template 5209: 5209: void 5209: pop_heap(_RAIter, _RAIter); 5209: 5209: template 5209: 5209: void 5209: pop_heap(_RAIter, _RAIter, _Compare); 5209: 5209: template 5209: 5209: bool 5209: prev_permutation(_BIter, _BIter); 5209: 5209: template 5209: 5209: bool 5209: prev_permutation(_BIter, _BIter, _Compare); 5209: 5209: template 5209: 5209: void 5209: push_heap(_RAIter, _RAIter); 5209: 5209: template 5209: 5209: void 5209: push_heap(_RAIter, _RAIter, _Compare); 5209: 5209: 5209: 5209: template 5209: 5209: _FIter 5209: remove(_FIter, _FIter, const _Tp&); 5209: 5209: template 5209: 5209: _FIter 5209: remove_if(_FIter, _FIter, _Predicate); 5209: 5209: template 5209: 5209: _OIter 5209: remove_copy(_IIter, _IIter, _OIter, const _Tp&); 5209: 5209: template 5209: 5209: _OIter 5209: remove_copy_if(_IIter, _IIter, _OIter, _Predicate); 5209: 5209: 5209: 5209: template 5209: 5209: _OIter 5209: replace_copy(_IIter, _IIter, _OIter, const _Tp&, const _Tp&); 5209: 5209: template 5209: 5209: _OIter 5209: replace_copy_if(_Iter, _Iter, _OIter, _Predicate, const _Tp&); 5209: 5209: 5209: 5209: template 5209: 5209: void 5209: reverse(_BIter, _BIter); 5209: 5209: template 5209: 5209: _OIter 5209: reverse_copy(_BIter, _BIter, _OIter); 5209: 5209: inline namespace _V2 5209: { 5209: template 5209: 5209: _FIter 5209: rotate(_FIter, _FIter, _FIter); 5209: } 5209: 5209: template 5209: 5209: _OIter 5209: rotate_copy(_FIter, _FIter, _FIter, _OIter); 5209: # 625 "/usr/include/c++/10/bits/algorithmfwd.h" 3 5209: template 5209: void 5209: shuffle(_RAIter, _RAIter, _UGenerator&&); 5209: 5209: 5209: template 5209: 5209: void 5209: sort_heap(_RAIter, _RAIter); 5209: 5209: template 5209: 5209: void 5209: sort_heap(_RAIter, _RAIter, _Compare); 5209: 5209: template 5209: _BIter 5209: stable_partition(_BIter, _BIter, _Predicate); 5209: # 658 "/usr/include/c++/10/bits/algorithmfwd.h" 3 5209: template 5209: 5209: _FIter2 5209: swap_ranges(_FIter1, _FIter1, _FIter2); 5209: 5209: 5209: 5209: template 5209: 5209: _FIter 5209: unique(_FIter, _FIter); 5209: 5209: template 5209: 5209: _FIter 5209: unique(_FIter, _FIter, _BinaryPredicate); 5209: 5209: 5209: 5209: template 5209: 5209: _FIter 5209: upper_bound(_FIter, _FIter, const _Tp&); 5209: 5209: template 5209: 5209: _FIter 5209: upper_bound(_FIter, _FIter, const _Tp&, _Compare); 5209: 5209: 5209: 5209: template 5209: 5209: _FIter 5209: adjacent_find(_FIter, _FIter); 5209: 5209: template 5209: 5209: _FIter 5209: adjacent_find(_FIter, _FIter, _BinaryPredicate); 5209: 5209: template 5209: 5209: typename iterator_traits<_IIter>::difference_type 5209: count(_IIter, _IIter, const _Tp&); 5209: 5209: template 5209: 5209: typename iterator_traits<_IIter>::difference_type 5209: count_if(_IIter, _IIter, _Predicate); 5209: 5209: template 5209: 5209: bool 5209: equal(_IIter1, _IIter1, _IIter2); 5209: 5209: template 5209: 5209: bool 5209: equal(_IIter1, _IIter1, _IIter2, _BinaryPredicate); 5209: 5209: template 5209: 5209: _IIter 5209: find(_IIter, _IIter, const _Tp&); 5209: 5209: template 5209: 5209: _FIter1 5209: find_first_of(_FIter1, _FIter1, _FIter2, _FIter2); 5209: 5209: template 5209: 5209: _FIter1 5209: find_first_of(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate); 5209: 5209: template 5209: 5209: _IIter 5209: find_if(_IIter, _IIter, _Predicate); 5209: 5209: template 5209: 5209: _Funct 5209: for_each(_IIter, _IIter, _Funct); 5209: 5209: template 5209: 5209: void 5209: generate(_FIter, _FIter, _Generator); 5209: 5209: template 5209: 5209: _OIter 5209: generate_n(_OIter, _Size, _Generator); 5209: 5209: template 5209: 5209: bool 5209: lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2); 5209: 5209: template 5209: 5209: bool 5209: lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, _Compare); 5209: 5209: template 5209: 5209: _FIter 5209: max_element(_FIter, _FIter); 5209: 5209: template 5209: 5209: _FIter 5209: max_element(_FIter, _FIter, _Compare); 5209: 5209: template 5209: 5209: _OIter 5209: merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); 5209: 5209: template 5209: 5209: _OIter 5209: merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); 5209: 5209: template 5209: 5209: _FIter 5209: min_element(_FIter, _FIter); 5209: 5209: template 5209: 5209: _FIter 5209: min_element(_FIter, _FIter, _Compare); 5209: 5209: template 5209: 5209: pair<_IIter1, _IIter2> 5209: mismatch(_IIter1, _IIter1, _IIter2); 5209: 5209: template 5209: 5209: pair<_IIter1, _IIter2> 5209: mismatch(_IIter1, _IIter1, _IIter2, _BinaryPredicate); 5209: 5209: template 5209: 5209: void 5209: nth_element(_RAIter, _RAIter, _RAIter); 5209: 5209: template 5209: 5209: void 5209: nth_element(_RAIter, _RAIter, _RAIter, _Compare); 5209: 5209: template 5209: 5209: void 5209: partial_sort(_RAIter, _RAIter, _RAIter); 5209: 5209: template 5209: 5209: void 5209: partial_sort(_RAIter, _RAIter, _RAIter, _Compare); 5209: 5209: template 5209: 5209: _BIter 5209: partition(_BIter, _BIter, _Predicate); 5209: 5209: template 5209: void 5209: random_shuffle(_RAIter, _RAIter); 5209: 5209: template 5209: void 5209: random_shuffle(_RAIter, _RAIter, 5209: 5209: _Generator&&); 5209: 5209: 5209: 5209: 5209: template 5209: 5209: void 5209: replace(_FIter, _FIter, const _Tp&, const _Tp&); 5209: 5209: template 5209: 5209: void 5209: replace_if(_FIter, _FIter, _Predicate, const _Tp&); 5209: 5209: template 5209: 5209: _FIter1 5209: search(_FIter1, _FIter1, _FIter2, _FIter2); 5209: 5209: template 5209: 5209: _FIter1 5209: search(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate); 5209: 5209: template 5209: 5209: _FIter 5209: search_n(_FIter, _FIter, _Size, const _Tp&); 5209: 5209: template 5209: 5209: _FIter 5209: search_n(_FIter, _FIter, _Size, const _Tp&, _BinaryPredicate); 5209: 5209: template 5209: 5209: _OIter 5209: set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); 5209: 5209: template 5209: 5209: _OIter 5209: set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); 5209: 5209: template 5209: 5209: _OIter 5209: set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); 5209: 5209: template 5209: 5209: _OIter 5209: set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); 5209: 5209: template 5209: 5209: _OIter 5209: set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); 5209: 5209: template 5209: 5209: _OIter 5209: set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, 5209: _OIter, _Compare); 5209: 5209: template 5209: 5209: _OIter 5209: set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); 5209: 5209: template 5209: 5209: _OIter 5209: set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); 5209: 5209: template 5209: 5209: void 5209: sort(_RAIter, _RAIter); 5209: 5209: template 5209: 5209: void 5209: sort(_RAIter, _RAIter, _Compare); 5209: 5209: template 5209: void 5209: stable_sort(_RAIter, _RAIter); 5209: 5209: template 5209: void 5209: stable_sort(_RAIter, _RAIter, _Compare); 5209: 5209: template 5209: 5209: _OIter 5209: transform(_IIter, _IIter, _OIter, _UnaryOperation); 5209: 5209: template 5209: 5209: _OIter 5209: transform(_IIter1, _IIter1, _IIter2, _OIter, _BinaryOperation); 5209: 5209: template 5209: 5209: _OIter 5209: unique_copy(_IIter, _IIter, _OIter); 5209: 5209: template 5209: 5209: _OIter 5209: unique_copy(_IIter, _IIter, _OIter, _BinaryPredicate); 5209: 5209: 5209: 5209: } 5209: # 61 "/usr/include/c++/10/bits/stl_algo.h" 2 3 5209: # 1 "/usr/include/c++/10/bits/stl_heap.h" 1 3 5209: # 62 "/usr/include/c++/10/bits/stl_heap.h" 3 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: 5209: _Distance 5209: __is_heap_until(_RandomAccessIterator __first, _Distance __n, 5209: _Compare& __comp) 5209: { 5209: _Distance __parent = 0; 5209: for (_Distance __child = 1; __child < __n; ++__child) 5209: { 5209: if (__comp(__first + __parent, __first + __child)) 5209: return __child; 5209: if ((__child & 1) == 0) 5209: ++__parent; 5209: } 5209: return __n; 5209: } 5209: 5209: 5209: 5209: template 5209: 5209: inline bool 5209: __is_heap(_RandomAccessIterator __first, _Distance __n) 5209: { 5209: __gnu_cxx::__ops::_Iter_less_iter __comp; 5209: return std::__is_heap_until(__first, __n, __comp) == __n; 5209: } 5209: 5209: template 5209: 5209: inline bool 5209: __is_heap(_RandomAccessIterator __first, _Compare __comp, _Distance __n) 5209: { 5209: typedef __decltype(__comp) _Cmp; 5209: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); 5209: return std::__is_heap_until(__first, __n, __cmp) == __n; 5209: } 5209: 5209: template 5209: 5209: inline bool 5209: __is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) 5209: { return std::__is_heap(__first, std::distance(__first, __last)); } 5209: 5209: template 5209: 5209: inline bool 5209: __is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, 5209: _Compare __comp) 5209: { 5209: return std::__is_heap(__first, std::move(__comp), 5209: std::distance(__first, __last)); 5209: } 5209: 5209: 5209: 5209: 5209: template 5209: 5209: void 5209: __push_heap(_RandomAccessIterator __first, 5209: _Distance __holeIndex, _Distance __topIndex, _Tp __value, 5209: _Compare& __comp) 5209: { 5209: _Distance __parent = (__holeIndex - 1) / 2; 5209: while (__holeIndex > __topIndex && __comp(__first + __parent, __value)) 5209: { 5209: *(__first + __holeIndex) = std::move(*(__first + __parent)); 5209: __holeIndex = __parent; 5209: __parent = (__holeIndex - 1) / 2; 5209: } 5209: *(__first + __holeIndex) = std::move(__value); 5209: } 5209: # 158 "/usr/include/c++/10/bits/stl_heap.h" 3 5209: template 5209: 5209: inline void 5209: push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) 5209: { 5209: typedef typename iterator_traits<_RandomAccessIterator>::value_type 5209: _ValueType; 5209: typedef typename iterator_traits<_RandomAccessIterator>::difference_type 5209: _DistanceType; 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: ; 5209: ; 5209: 5209: __gnu_cxx::__ops::_Iter_less_val __comp; 5209: _ValueType __value = std::move(*(__last - 1)); 5209: std::__push_heap(__first, _DistanceType((__last - __first) - 1), 5209: _DistanceType(0), std::move(__value), __comp); 5209: } 5209: # 194 "/usr/include/c++/10/bits/stl_heap.h" 3 5209: template 5209: 5209: inline void 5209: push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, 5209: _Compare __comp) 5209: { 5209: typedef typename iterator_traits<_RandomAccessIterator>::value_type 5209: _ValueType; 5209: typedef typename iterator_traits<_RandomAccessIterator>::difference_type 5209: _DistanceType; 5209: 5209: 5209: 5209: 5209: ; 5209: ; 5209: ; 5209: 5209: __decltype(__gnu_cxx::__ops::__iter_comp_val(std::move(__comp))) 5209: __cmp(std::move(__comp)); 5209: _ValueType __value = std::move(*(__last - 1)); 5209: std::__push_heap(__first, _DistanceType((__last - __first) - 1), 5209: _DistanceType(0), std::move(__value), __cmp); 5209: } 5209: 5209: template 5209: 5209: void 5209: __adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex, 5209: _Distance __len, _Tp __value, _Compare __comp) 5209: { 5209: const _Distance __topIndex = __holeIndex; 5209: _Distance __secondChild = __holeIndex; 5209: while (__secondChild < (__len - 1) / 2) 5209: { 5209: __secondChild = 2 * (__secondChild + 1); 5209: if (__comp(__first + __secondChild, 5209: __first + (__secondChild - 1))) 5209: __secondChild--; 5209: *(__first + __holeIndex) = std::move(*(__first + __secondChild)); 5209: __holeIndex = __secondChild; 5209: } 5209: if ((__len & 1) == 0 && __secondChild == (__len - 2) / 2) 5209: { 5209: __secondChild = 2 * (__secondChild + 1); 5209: *(__first + __holeIndex) = std::move(*(__first + (__secondChild - 1))) 5209: ; 5209: __holeIndex = __secondChild - 1; 5209: } 5209: __decltype(__gnu_cxx::__ops::__iter_comp_val(std::move(__comp))) 5209: __cmp(std::move(__comp)); 5209: std::__push_heap(__first, __holeIndex, __topIndex, 5209: std::move(__value), __cmp); 5209: } 5209: 5209: template 5209: 5209: inline void 5209: __pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, 5209: _RandomAccessIterator __result, _Compare& __comp) 5209: { 5209: typedef typename iterator_traits<_RandomAccessIterator>::value_type 5209: _ValueType; 5209: typedef typename iterator_traits<_RandomAccessIterator>::difference_type 5209: _DistanceType; 5209: 5209: _ValueType __value = std::move(*__result); 5209: *__result = std::move(*__first); 5209: std::__adjust_heap(__first, _DistanceType(0), 5209: _DistanceType(__last - __first), 5209: std::move(__value), __comp); 5209: } 5209: # 279 "/usr/include/c++/10/bits/stl_heap.h" 3 5209: template 5209: 5209: inline void 5209: pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: ; 5209: ; 5209: ; 5209: 5209: if (__last - __first > 1) 5209: { 5209: --__last; 5209: __gnu_cxx::__ops::_Iter_less_iter __comp; 5209: std::__pop_heap(__first, __last, __last, __comp); 5209: } 5209: } 5209: # 313 "/usr/include/c++/10/bits/stl_heap.h" 3 5209: template 5209: 5209: inline void 5209: pop_heap(_RandomAccessIterator __first, 5209: _RandomAccessIterator __last, _Compare __comp) 5209: { 5209: 5209: 5209: 5209: ; 5209: ; 5209: ; 5209: ; 5209: 5209: if (__last - __first > 1) 5209: { 5209: typedef __decltype(__comp) _Cmp; 5209: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); 5209: --__last; 5209: std::__pop_heap(__first, __last, __last, __cmp); 5209: } 5209: } 5209: 5209: template 5209: 5209: void 5209: __make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, 5209: _Compare& __comp) 5209: { 5209: typedef typename iterator_traits<_RandomAccessIterator>::value_type 5209: _ValueType; 5209: typedef typename iterator_traits<_RandomAccessIterator>::difference_type 5209: _DistanceType; 5209: 5209: if (__last - __first < 2) 5209: return; 5209: 5209: const _DistanceType __len = __last - __first; 5209: _DistanceType __parent = (__len - 2) / 2; 5209: while (true) 5209: { 5209: _ValueType __value = std::move(*(__first + __parent)); 5209: std::__adjust_heap(__first, __parent, __len, std::move(__value), 5209: __comp); 5209: if (__parent == 0) 5209: return; 5209: __parent--; 5209: } 5209: } 5209: # 371 "/usr/include/c++/10/bits/stl_heap.h" 3 5209: template 5209: 5209: inline void 5209: make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: ; 5209: 5209: __gnu_cxx::__ops::_Iter_less_iter __comp; 5209: std::__make_heap(__first, __last, __comp); 5209: } 5209: # 398 "/usr/include/c++/10/bits/stl_heap.h" 3 5209: template 5209: 5209: inline void 5209: make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, 5209: _Compare __comp) 5209: { 5209: 5209: 5209: 5209: ; 5209: ; 5209: 5209: typedef __decltype(__comp) _Cmp; 5209: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); 5209: std::__make_heap(__first, __last, __cmp); 5209: } 5209: 5209: template 5209: 5209: void 5209: __sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, 5209: _Compare& __comp) 5209: { 5209: while (__last - __first > 1) 5209: { 5209: --__last; 5209: std::__pop_heap(__first, __last, __last, __comp); 5209: } 5209: } 5209: # 436 "/usr/include/c++/10/bits/stl_heap.h" 3 5209: template 5209: 5209: inline void 5209: sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: ; 5209: ; 5209: 5209: __gnu_cxx::__ops::_Iter_less_iter __comp; 5209: std::__sort_heap(__first, __last, __comp); 5209: } 5209: # 464 "/usr/include/c++/10/bits/stl_heap.h" 3 5209: template 5209: 5209: inline void 5209: sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, 5209: _Compare __comp) 5209: { 5209: 5209: 5209: 5209: ; 5209: ; 5209: ; 5209: 5209: typedef __decltype(__comp) _Cmp; 5209: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); 5209: std::__sort_heap(__first, __last, __cmp); 5209: } 5209: # 493 "/usr/include/c++/10/bits/stl_heap.h" 3 5209: template 5209: 5209: inline _RandomAccessIterator 5209: is_heap_until(_RandomAccessIterator __first, _RandomAccessIterator __last) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: ; 5209: 5209: __gnu_cxx::__ops::_Iter_less_iter __comp; 5209: return __first + 5209: std::__is_heap_until(__first, std::distance(__first, __last), __comp); 5209: } 5209: # 522 "/usr/include/c++/10/bits/stl_heap.h" 3 5209: template 5209: 5209: inline _RandomAccessIterator 5209: is_heap_until(_RandomAccessIterator __first, _RandomAccessIterator __last, 5209: _Compare __comp) 5209: { 5209: 5209: 5209: 5209: ; 5209: ; 5209: 5209: typedef __decltype(__comp) _Cmp; 5209: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); 5209: return __first 5209: + std::__is_heap_until(__first, std::distance(__first, __last), __cmp); 5209: } 5209: # 547 "/usr/include/c++/10/bits/stl_heap.h" 3 5209: template 5209: 5209: inline bool 5209: is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) 5209: { return std::is_heap_until(__first, __last) == __last; } 5209: # 561 "/usr/include/c++/10/bits/stl_heap.h" 3 5209: template 5209: 5209: inline bool 5209: is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, 5209: _Compare __comp) 5209: { 5209: 5209: 5209: 5209: ; 5209: ; 5209: 5209: const auto __dist = std::distance(__first, __last); 5209: typedef __decltype(__comp) _Cmp; 5209: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); 5209: return std::__is_heap_until(__first, __dist, __cmp) == __dist; 5209: } 5209: 5209: 5209: 5209: } 5209: # 62 "/usr/include/c++/10/bits/stl_algo.h" 2 3 5209: # 1 "/usr/include/c++/10/bits/stl_tempbuf.h" 1 3 5209: # 62 "/usr/include/c++/10/bits/stl_tempbuf.h" 3 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: namespace __detail 5209: { 5209: template 5209: inline void 5209: __return_temporary_buffer(_Tp* __p, 5209: size_t __len __attribute__((__unused__))) 5209: { 5209: 5209: 5209: 5209: ::operator delete(__p); 5209: 5209: } 5209: } 5209: # 98 "/usr/include/c++/10/bits/stl_tempbuf.h" 3 5209: template 5209: pair<_Tp*, ptrdiff_t> 5209: get_temporary_buffer(ptrdiff_t __len) noexcept 5209: { 5209: const ptrdiff_t __max = 5209: __gnu_cxx::__numeric_traits::__max / sizeof(_Tp); 5209: if (__len > __max) 5209: __len = __max; 5209: 5209: while (__len > 0) 5209: { 5209: _Tp* __tmp = static_cast<_Tp*>(::operator new(__len * sizeof(_Tp), 5209: std::nothrow)); 5209: if (__tmp != 0) 5209: return std::pair<_Tp*, ptrdiff_t>(__tmp, __len); 5209: __len /= 2; 5209: } 5209: return std::pair<_Tp*, ptrdiff_t>(static_cast<_Tp*>(0), 0); 5209: } 5209: # 125 "/usr/include/c++/10/bits/stl_tempbuf.h" 3 5209: template 5209: inline void 5209: return_temporary_buffer(_Tp* __p) 5209: { ::operator delete(__p); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: class _Temporary_buffer 5209: { 5209: 5209: 5209: 5209: public: 5209: typedef _Tp value_type; 5209: typedef value_type* pointer; 5209: typedef pointer iterator; 5209: typedef ptrdiff_t size_type; 5209: 5209: protected: 5209: size_type _M_original_len; 5209: size_type _M_len; 5209: pointer _M_buffer; 5209: 5209: public: 5209: 5209: size_type 5209: size() const 5209: { return _M_len; } 5209: 5209: 5209: size_type 5209: requested_size() const 5209: { return _M_original_len; } 5209: 5209: 5209: iterator 5209: begin() 5209: { return _M_buffer; } 5209: 5209: 5209: iterator 5209: end() 5209: { return _M_buffer + _M_len; } 5209: 5209: 5209: 5209: 5209: 5209: _Temporary_buffer(_ForwardIterator __seed, size_type __original_len); 5209: 5209: ~_Temporary_buffer() 5209: { 5209: std::_Destroy(_M_buffer, _M_buffer + _M_len); 5209: std::__detail::__return_temporary_buffer(_M_buffer, _M_len); 5209: } 5209: 5209: private: 5209: 5209: _Temporary_buffer(const _Temporary_buffer&); 5209: 5209: void 5209: operator=(const _Temporary_buffer&); 5209: }; 5209: 5209: 5209: template 5209: struct __uninitialized_construct_buf_dispatch 5209: { 5209: template 5209: static void 5209: __ucr(_Pointer __first, _Pointer __last, 5209: _ForwardIterator __seed) 5209: { 5209: if (__first == __last) 5209: return; 5209: 5209: _Pointer __cur = __first; 5209: try 5209: { 5209: std::_Construct(std::__addressof(*__first), 5209: std::move(*__seed)); 5209: _Pointer __prev = __cur; 5209: ++__cur; 5209: for(; __cur != __last; ++__cur, ++__prev) 5209: std::_Construct(std::__addressof(*__cur), 5209: std::move(*__prev)); 5209: *__seed = std::move(*__prev); 5209: } 5209: catch(...) 5209: { 5209: std::_Destroy(__first, __cur); 5209: throw; 5209: } 5209: } 5209: }; 5209: 5209: template<> 5209: struct __uninitialized_construct_buf_dispatch 5209: { 5209: template 5209: static void 5209: __ucr(_Pointer, _Pointer, _ForwardIterator) { } 5209: }; 5209: # 243 "/usr/include/c++/10/bits/stl_tempbuf.h" 3 5209: template 5209: inline void 5209: __uninitialized_construct_buf(_Pointer __first, _Pointer __last, 5209: _ForwardIterator __seed) 5209: { 5209: typedef typename std::iterator_traits<_Pointer>::value_type 5209: _ValueType; 5209: 5209: std::__uninitialized_construct_buf_dispatch< 5209: __has_trivial_constructor(_ValueType)>:: 5209: __ucr(__first, __last, __seed); 5209: } 5209: 5209: template 5209: _Temporary_buffer<_ForwardIterator, _Tp>:: 5209: _Temporary_buffer(_ForwardIterator __seed, size_type __original_len) 5209: : _M_original_len(__original_len), _M_len(0), _M_buffer(0) 5209: { 5209: std::pair __p( 5209: std::get_temporary_buffer(_M_original_len)); 5209: 5209: if (__p.first) 5209: { 5209: try 5209: { 5209: std::__uninitialized_construct_buf(__p.first, __p.first + __p.second, 5209: __seed); 5209: _M_buffer = __p.first; 5209: _M_len = __p.second; 5209: } 5209: catch(...) 5209: { 5209: std::__detail::__return_temporary_buffer(__p.first, __p.second); 5209: throw; 5209: } 5209: } 5209: } 5209: 5209: 5209: } 5209: # 63 "/usr/include/c++/10/bits/stl_algo.h" 2 3 5209: # 71 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: 5209: template 5209: 5209: void 5209: __move_median_to_first(_Iterator __result,_Iterator __a, _Iterator __b, 5209: _Iterator __c, _Compare __comp) 5209: { 5209: if (__comp(__a, __b)) 5209: { 5209: if (__comp(__b, __c)) 5209: std::iter_swap(__result, __b); 5209: else if (__comp(__a, __c)) 5209: std::iter_swap(__result, __c); 5209: else 5209: std::iter_swap(__result, __a); 5209: } 5209: else if (__comp(__a, __c)) 5209: std::iter_swap(__result, __a); 5209: else if (__comp(__b, __c)) 5209: std::iter_swap(__result, __c); 5209: else 5209: std::iter_swap(__result, __b); 5209: } 5209: 5209: 5209: template 5209: 5209: inline _InputIterator 5209: __find_if(_InputIterator __first, _InputIterator __last, 5209: _Predicate __pred, input_iterator_tag) 5209: { 5209: while (__first != __last && !__pred(__first)) 5209: ++__first; 5209: return __first; 5209: } 5209: 5209: 5209: template 5209: 5209: _RandomAccessIterator 5209: __find_if(_RandomAccessIterator __first, _RandomAccessIterator __last, 5209: _Predicate __pred, random_access_iterator_tag) 5209: { 5209: typename iterator_traits<_RandomAccessIterator>::difference_type 5209: __trip_count = (__last - __first) >> 2; 5209: 5209: for (; __trip_count > 0; --__trip_count) 5209: { 5209: if (__pred(__first)) 5209: return __first; 5209: ++__first; 5209: 5209: if (__pred(__first)) 5209: return __first; 5209: ++__first; 5209: 5209: if (__pred(__first)) 5209: return __first; 5209: ++__first; 5209: 5209: if (__pred(__first)) 5209: return __first; 5209: ++__first; 5209: } 5209: 5209: switch (__last - __first) 5209: { 5209: case 3: 5209: if (__pred(__first)) 5209: return __first; 5209: ++__first; 5209: case 2: 5209: if (__pred(__first)) 5209: return __first; 5209: ++__first; 5209: case 1: 5209: if (__pred(__first)) 5209: return __first; 5209: ++__first; 5209: case 0: 5209: default: 5209: return __last; 5209: } 5209: } 5209: 5209: template 5209: 5209: inline _Iterator 5209: __find_if(_Iterator __first, _Iterator __last, _Predicate __pred) 5209: { 5209: return __find_if(__first, __last, __pred, 5209: std::__iterator_category(__first)); 5209: } 5209: 5209: 5209: template 5209: 5209: inline _InputIterator 5209: __find_if_not(_InputIterator __first, _InputIterator __last, 5209: _Predicate __pred) 5209: { 5209: return std::__find_if(__first, __last, 5209: __gnu_cxx::__ops::__negate(__pred), 5209: std::__iterator_category(__first)); 5209: } 5209: 5209: 5209: 5209: 5209: template 5209: 5209: _InputIterator 5209: __find_if_not_n(_InputIterator __first, _Distance& __len, _Predicate __pred) 5209: { 5209: for (; __len; --__len, (void) ++__first) 5209: if (!__pred(__first)) 5209: break; 5209: return __first; 5209: } 5209: # 208 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: _ForwardIterator1 5209: __search(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 5209: _ForwardIterator2 __first2, _ForwardIterator2 __last2, 5209: _BinaryPredicate __predicate) 5209: { 5209: 5209: if (__first1 == __last1 || __first2 == __last2) 5209: return __first1; 5209: 5209: 5209: _ForwardIterator2 __p1(__first2); 5209: if (++__p1 == __last2) 5209: return std::__find_if(__first1, __last1, 5209: __gnu_cxx::__ops::__iter_comp_iter(__predicate, __first2)); 5209: 5209: 5209: _ForwardIterator1 __current = __first1; 5209: 5209: for (;;) 5209: { 5209: __first1 = 5209: std::__find_if(__first1, __last1, 5209: __gnu_cxx::__ops::__iter_comp_iter(__predicate, __first2)); 5209: 5209: if (__first1 == __last1) 5209: return __last1; 5209: 5209: _ForwardIterator2 __p = __p1; 5209: __current = __first1; 5209: if (++__current == __last1) 5209: return __last1; 5209: 5209: while (__predicate(__current, __p)) 5209: { 5209: if (++__p == __last2) 5209: return __first1; 5209: if (++__current == __last1) 5209: return __last1; 5209: } 5209: ++__first1; 5209: } 5209: return __first1; 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: 5209: _ForwardIterator 5209: __search_n_aux(_ForwardIterator __first, _ForwardIterator __last, 5209: _Integer __count, _UnaryPredicate __unary_pred, 5209: std::forward_iterator_tag) 5209: { 5209: __first = std::__find_if(__first, __last, __unary_pred); 5209: while (__first != __last) 5209: { 5209: typename iterator_traits<_ForwardIterator>::difference_type 5209: __n = __count; 5209: _ForwardIterator __i = __first; 5209: ++__i; 5209: while (__i != __last && __n != 1 && __unary_pred(__i)) 5209: { 5209: ++__i; 5209: --__n; 5209: } 5209: if (__n == 1) 5209: return __first; 5209: if (__i == __last) 5209: return __last; 5209: __first = std::__find_if(++__i, __last, __unary_pred); 5209: } 5209: return __last; 5209: } 5209: 5209: 5209: 5209: 5209: 5209: template 5209: 5209: _RandomAccessIter 5209: __search_n_aux(_RandomAccessIter __first, _RandomAccessIter __last, 5209: _Integer __count, _UnaryPredicate __unary_pred, 5209: std::random_access_iterator_tag) 5209: { 5209: typedef typename std::iterator_traits<_RandomAccessIter>::difference_type 5209: _DistanceType; 5209: 5209: _DistanceType __tailSize = __last - __first; 5209: _DistanceType __remainder = __count; 5209: 5209: while (__remainder <= __tailSize) 5209: { 5209: __first += __remainder; 5209: __tailSize -= __remainder; 5209: 5209: 5209: _RandomAccessIter __backTrack = __first; 5209: while (__unary_pred(--__backTrack)) 5209: { 5209: if (--__remainder == 0) 5209: return (__first - __count); 5209: } 5209: __remainder = __count + 1 - (__first - __backTrack); 5209: } 5209: return __last; 5209: } 5209: 5209: template 5209: 5209: _ForwardIterator 5209: __search_n(_ForwardIterator __first, _ForwardIterator __last, 5209: _Integer __count, 5209: _UnaryPredicate __unary_pred) 5209: { 5209: if (__count <= 0) 5209: return __first; 5209: 5209: if (__count == 1) 5209: return std::__find_if(__first, __last, __unary_pred); 5209: 5209: return std::__search_n_aux(__first, __last, __count, __unary_pred, 5209: std::__iterator_category(__first)); 5209: } 5209: 5209: 5209: template 5209: 5209: _ForwardIterator1 5209: __find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 5209: _ForwardIterator2 __first2, _ForwardIterator2 __last2, 5209: forward_iterator_tag, forward_iterator_tag, 5209: _BinaryPredicate __comp) 5209: { 5209: if (__first2 == __last2) 5209: return __last1; 5209: 5209: _ForwardIterator1 __result = __last1; 5209: while (1) 5209: { 5209: _ForwardIterator1 __new_result 5209: = std::__search(__first1, __last1, __first2, __last2, __comp); 5209: if (__new_result == __last1) 5209: return __result; 5209: else 5209: { 5209: __result = __new_result; 5209: __first1 = __new_result; 5209: ++__first1; 5209: } 5209: } 5209: } 5209: 5209: 5209: template 5209: 5209: _BidirectionalIterator1 5209: __find_end(_BidirectionalIterator1 __first1, 5209: _BidirectionalIterator1 __last1, 5209: _BidirectionalIterator2 __first2, 5209: _BidirectionalIterator2 __last2, 5209: bidirectional_iterator_tag, bidirectional_iterator_tag, 5209: _BinaryPredicate __comp) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: typedef reverse_iterator<_BidirectionalIterator1> _RevIterator1; 5209: typedef reverse_iterator<_BidirectionalIterator2> _RevIterator2; 5209: 5209: _RevIterator1 __rlast1(__first1); 5209: _RevIterator2 __rlast2(__first2); 5209: _RevIterator1 __rresult = std::__search(_RevIterator1(__last1), __rlast1, 5209: _RevIterator2(__last2), __rlast2, 5209: __comp); 5209: 5209: if (__rresult == __rlast1) 5209: return __last1; 5209: else 5209: { 5209: _BidirectionalIterator1 __result = __rresult.base(); 5209: std::advance(__result, -std::distance(__first2, __last2)); 5209: return __result; 5209: } 5209: } 5209: # 434 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline _ForwardIterator1 5209: find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 5209: _ForwardIterator2 __first2, _ForwardIterator2 __last2) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: ; 5209: 5209: return std::__find_end(__first1, __last1, __first2, __last2, 5209: std::__iterator_category(__first1), 5209: std::__iterator_category(__first2), 5209: __gnu_cxx::__ops::__iter_equal_to_iter()); 5209: } 5209: # 483 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline _ForwardIterator1 5209: find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 5209: _ForwardIterator2 __first2, _ForwardIterator2 __last2, 5209: _BinaryPredicate __comp) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: ; 5209: 5209: return std::__find_end(__first1, __last1, __first2, __last2, 5209: std::__iterator_category(__first1), 5209: std::__iterator_category(__first2), 5209: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 5209: } 5209: # 519 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline bool 5209: all_of(_InputIterator __first, _InputIterator __last, _Predicate __pred) 5209: { return __last == std::find_if_not(__first, __last, __pred); } 5209: # 537 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline bool 5209: none_of(_InputIterator __first, _InputIterator __last, _Predicate __pred) 5209: { return __last == std::find_if(__first, __last, __pred); } 5209: # 556 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline bool 5209: any_of(_InputIterator __first, _InputIterator __last, _Predicate __pred) 5209: { return !std::none_of(__first, __last, __pred); } 5209: # 572 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline _InputIterator 5209: find_if_not(_InputIterator __first, _InputIterator __last, 5209: _Predicate __pred) 5209: { 5209: 5209: 5209: 5209: 5209: ; 5209: return std::__find_if_not(__first, __last, 5209: __gnu_cxx::__ops::__pred_iter(__pred)); 5209: } 5209: # 597 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline bool 5209: is_partitioned(_InputIterator __first, _InputIterator __last, 5209: _Predicate __pred) 5209: { 5209: __first = std::find_if_not(__first, __last, __pred); 5209: if (__first == __last) 5209: return true; 5209: ++__first; 5209: return std::none_of(__first, __last, __pred); 5209: } 5209: # 619 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: _ForwardIterator 5209: partition_point(_ForwardIterator __first, _ForwardIterator __last, 5209: _Predicate __pred) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: 5209: typedef typename iterator_traits<_ForwardIterator>::difference_type 5209: _DistanceType; 5209: 5209: _DistanceType __len = std::distance(__first, __last); 5209: 5209: while (__len > 0) 5209: { 5209: _DistanceType __half = __len >> 1; 5209: _ForwardIterator __middle = __first; 5209: std::advance(__middle, __half); 5209: if (__pred(*__middle)) 5209: { 5209: __first = __middle; 5209: ++__first; 5209: __len = __len - __half - 1; 5209: } 5209: else 5209: __len = __half; 5209: } 5209: return __first; 5209: } 5209: 5209: 5209: template 5209: 5209: _OutputIterator 5209: __remove_copy_if(_InputIterator __first, _InputIterator __last, 5209: _OutputIterator __result, _Predicate __pred) 5209: { 5209: for (; __first != __last; ++__first) 5209: if (!__pred(__first)) 5209: { 5209: *__result = *__first; 5209: ++__result; 5209: } 5209: return __result; 5209: } 5209: # 686 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline _OutputIterator 5209: remove_copy(_InputIterator __first, _InputIterator __last, 5209: _OutputIterator __result, const _Tp& __value) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: 5209: return std::__remove_copy_if(__first, __last, __result, 5209: __gnu_cxx::__ops::__iter_equals_val(__value)); 5209: } 5209: # 719 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline _OutputIterator 5209: remove_copy_if(_InputIterator __first, _InputIterator __last, 5209: _OutputIterator __result, _Predicate __pred) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: 5209: return std::__remove_copy_if(__first, __last, __result, 5209: __gnu_cxx::__ops::__pred_iter(__pred)); 5209: } 5209: # 754 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: _OutputIterator 5209: copy_if(_InputIterator __first, _InputIterator __last, 5209: _OutputIterator __result, _Predicate __pred) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: 5209: for (; __first != __last; ++__first) 5209: if (__pred(*__first)) 5209: { 5209: *__result = *__first; 5209: ++__result; 5209: } 5209: return __result; 5209: } 5209: 5209: template 5209: 5209: _OutputIterator 5209: __copy_n_a(_InputIterator __first, _Size __n, _OutputIterator __result) 5209: { 5209: if (__n > 0) 5209: { 5209: while (true) 5209: { 5209: *__result = *__first; 5209: ++__result; 5209: if (--__n > 0) 5209: ++__first; 5209: else 5209: break; 5209: } 5209: } 5209: return __result; 5209: } 5209: 5209: template 5209: __enable_if_t<__is_char<_CharT>::__value, _CharT*> 5209: __copy_n_a(istreambuf_iterator<_CharT, char_traits<_CharT>>, 5209: _Size, _CharT*); 5209: 5209: template 5209: 5209: _OutputIterator 5209: __copy_n(_InputIterator __first, _Size __n, 5209: _OutputIterator __result, input_iterator_tag) 5209: { 5209: return std::__niter_wrap(__result, 5209: __copy_n_a(__first, __n, 5209: std::__niter_base(__result))); 5209: } 5209: 5209: template 5209: 5209: inline _OutputIterator 5209: __copy_n(_RandomAccessIterator __first, _Size __n, 5209: _OutputIterator __result, random_access_iterator_tag) 5209: { return std::copy(__first, __first + __n, __result); } 5209: # 835 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline _OutputIterator 5209: copy_n(_InputIterator __first, _Size __n, _OutputIterator __result) 5209: { 5209: 5209: 5209: 5209: 5209: ; 5209: ; 5209: 5209: return std::__copy_n(__first, __n, __result, 5209: std::__iterator_category(__first)); 5209: } 5209: # 866 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: pair<_OutputIterator1, _OutputIterator2> 5209: partition_copy(_InputIterator __first, _InputIterator __last, 5209: _OutputIterator1 __out_true, _OutputIterator2 __out_false, 5209: _Predicate __pred) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: 5209: for (; __first != __last; ++__first) 5209: if (__pred(*__first)) 5209: { 5209: *__out_true = *__first; 5209: ++__out_true; 5209: } 5209: else 5209: { 5209: *__out_false = *__first; 5209: ++__out_false; 5209: } 5209: 5209: return pair<_OutputIterator1, _OutputIterator2>(__out_true, __out_false); 5209: } 5209: 5209: 5209: template 5209: 5209: _ForwardIterator 5209: __remove_if(_ForwardIterator __first, _ForwardIterator __last, 5209: _Predicate __pred) 5209: { 5209: __first = std::__find_if(__first, __last, __pred); 5209: if (__first == __last) 5209: return __first; 5209: _ForwardIterator __result = __first; 5209: ++__first; 5209: for (; __first != __last; ++__first) 5209: if (!__pred(__first)) 5209: { 5209: *__result = std::move(*__first); 5209: ++__result; 5209: } 5209: return __result; 5209: } 5209: # 937 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline _ForwardIterator 5209: remove(_ForwardIterator __first, _ForwardIterator __last, 5209: const _Tp& __value) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: 5209: return std::__remove_if(__first, __last, 5209: __gnu_cxx::__ops::__iter_equals_val(__value)); 5209: } 5209: # 971 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline _ForwardIterator 5209: remove_if(_ForwardIterator __first, _ForwardIterator __last, 5209: _Predicate __pred) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: 5209: return std::__remove_if(__first, __last, 5209: __gnu_cxx::__ops::__pred_iter(__pred)); 5209: } 5209: 5209: template 5209: 5209: _ForwardIterator 5209: __adjacent_find(_ForwardIterator __first, _ForwardIterator __last, 5209: _BinaryPredicate __binary_pred) 5209: { 5209: if (__first == __last) 5209: return __last; 5209: _ForwardIterator __next = __first; 5209: while (++__next != __last) 5209: { 5209: if (__binary_pred(__first, __next)) 5209: return __first; 5209: __first = __next; 5209: } 5209: return __last; 5209: } 5209: 5209: template 5209: 5209: _ForwardIterator 5209: __unique(_ForwardIterator __first, _ForwardIterator __last, 5209: _BinaryPredicate __binary_pred) 5209: { 5209: 5209: __first = std::__adjacent_find(__first, __last, __binary_pred); 5209: if (__first == __last) 5209: return __last; 5209: 5209: 5209: _ForwardIterator __dest = __first; 5209: ++__first; 5209: while (++__first != __last) 5209: if (!__binary_pred(__dest, __first)) 5209: *++__dest = std::move(*__first); 5209: return ++__dest; 5209: } 5209: # 1040 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline _ForwardIterator 5209: unique(_ForwardIterator __first, _ForwardIterator __last) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: 5209: return std::__unique(__first, __last, 5209: __gnu_cxx::__ops::__iter_equal_to_iter()); 5209: } 5209: # 1071 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline _ForwardIterator 5209: unique(_ForwardIterator __first, _ForwardIterator __last, 5209: _BinaryPredicate __binary_pred) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: 5209: return std::__unique(__first, __last, 5209: __gnu_cxx::__ops::__iter_comp_iter(__binary_pred)); 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: 5209: _OutputIterator 5209: __unique_copy(_ForwardIterator __first, _ForwardIterator __last, 5209: _OutputIterator __result, _BinaryPredicate __binary_pred, 5209: forward_iterator_tag, output_iterator_tag) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: _ForwardIterator __next = __first; 5209: *__result = *__first; 5209: while (++__next != __last) 5209: if (!__binary_pred(__first, __next)) 5209: { 5209: __first = __next; 5209: *++__result = *__first; 5209: } 5209: return ++__result; 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: 5209: _OutputIterator 5209: __unique_copy(_InputIterator __first, _InputIterator __last, 5209: _OutputIterator __result, _BinaryPredicate __binary_pred, 5209: input_iterator_tag, output_iterator_tag) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: typename iterator_traits<_InputIterator>::value_type __value = *__first; 5209: __decltype(__gnu_cxx::__ops::__iter_comp_val(__binary_pred)) 5209: __rebound_pred 5209: = __gnu_cxx::__ops::__iter_comp_val(__binary_pred); 5209: *__result = __value; 5209: while (++__first != __last) 5209: if (!__rebound_pred(__first, __value)) 5209: { 5209: __value = *__first; 5209: *++__result = __value; 5209: } 5209: return ++__result; 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: 5209: _ForwardIterator 5209: __unique_copy(_InputIterator __first, _InputIterator __last, 5209: _ForwardIterator __result, _BinaryPredicate __binary_pred, 5209: input_iterator_tag, forward_iterator_tag) 5209: { 5209: 5209: 5209: 5209: 5209: *__result = *__first; 5209: while (++__first != __last) 5209: if (!__binary_pred(__result, __first)) 5209: *++__result = *__first; 5209: return ++__result; 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: 5209: void 5209: __reverse(_BidirectionalIterator __first, _BidirectionalIterator __last, 5209: bidirectional_iterator_tag) 5209: { 5209: while (true) 5209: if (__first == __last || __first == --__last) 5209: return; 5209: else 5209: { 5209: std::iter_swap(__first, __last); 5209: ++__first; 5209: } 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: 5209: void 5209: __reverse(_RandomAccessIterator __first, _RandomAccessIterator __last, 5209: random_access_iterator_tag) 5209: { 5209: if (__first == __last) 5209: return; 5209: --__last; 5209: while (__first < __last) 5209: { 5209: std::iter_swap(__first, __last); 5209: ++__first; 5209: --__last; 5209: } 5209: } 5209: # 1232 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline void 5209: reverse(_BidirectionalIterator __first, _BidirectionalIterator __last) 5209: { 5209: 5209: 5209: 5209: ; 5209: std::__reverse(__first, __last, std::__iterator_category(__first)); 5209: } 5209: # 1260 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: _OutputIterator 5209: reverse_copy(_BidirectionalIterator __first, _BidirectionalIterator __last, 5209: _OutputIterator __result) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: 5209: while (__first != __last) 5209: { 5209: --__last; 5209: *__result = *__last; 5209: ++__result; 5209: } 5209: return __result; 5209: } 5209: 5209: 5209: 5209: 5209: 5209: template 5209: 5209: _EuclideanRingElement 5209: __gcd(_EuclideanRingElement __m, _EuclideanRingElement __n) 5209: { 5209: while (__n != 0) 5209: { 5209: _EuclideanRingElement __t = __m % __n; 5209: __m = __n; 5209: __n = __t; 5209: } 5209: return __m; 5209: } 5209: 5209: inline namespace _V2 5209: { 5209: 5209: 5209: template 5209: 5209: _ForwardIterator 5209: __rotate(_ForwardIterator __first, 5209: _ForwardIterator __middle, 5209: _ForwardIterator __last, 5209: forward_iterator_tag) 5209: { 5209: if (__first == __middle) 5209: return __last; 5209: else if (__last == __middle) 5209: return __first; 5209: 5209: _ForwardIterator __first2 = __middle; 5209: do 5209: { 5209: std::iter_swap(__first, __first2); 5209: ++__first; 5209: ++__first2; 5209: if (__first == __middle) 5209: __middle = __first2; 5209: } 5209: while (__first2 != __last); 5209: 5209: _ForwardIterator __ret = __first; 5209: 5209: __first2 = __middle; 5209: 5209: while (__first2 != __last) 5209: { 5209: std::iter_swap(__first, __first2); 5209: ++__first; 5209: ++__first2; 5209: if (__first == __middle) 5209: __middle = __first2; 5209: else if (__first2 == __last) 5209: __first2 = __middle; 5209: } 5209: return __ret; 5209: } 5209: 5209: 5209: template 5209: 5209: _BidirectionalIterator 5209: __rotate(_BidirectionalIterator __first, 5209: _BidirectionalIterator __middle, 5209: _BidirectionalIterator __last, 5209: bidirectional_iterator_tag) 5209: { 5209: 5209: 5209: 5209: 5209: if (__first == __middle) 5209: return __last; 5209: else if (__last == __middle) 5209: return __first; 5209: 5209: std::__reverse(__first, __middle, bidirectional_iterator_tag()); 5209: std::__reverse(__middle, __last, bidirectional_iterator_tag()); 5209: 5209: while (__first != __middle && __middle != __last) 5209: { 5209: std::iter_swap(__first, --__last); 5209: ++__first; 5209: } 5209: 5209: if (__first == __middle) 5209: { 5209: std::__reverse(__middle, __last, bidirectional_iterator_tag()); 5209: return __last; 5209: } 5209: else 5209: { 5209: std::__reverse(__first, __middle, bidirectional_iterator_tag()); 5209: return __first; 5209: } 5209: } 5209: 5209: 5209: template 5209: 5209: _RandomAccessIterator 5209: __rotate(_RandomAccessIterator __first, 5209: _RandomAccessIterator __middle, 5209: _RandomAccessIterator __last, 5209: random_access_iterator_tag) 5209: { 5209: 5209: 5209: 5209: 5209: if (__first == __middle) 5209: return __last; 5209: else if (__last == __middle) 5209: return __first; 5209: 5209: typedef typename iterator_traits<_RandomAccessIterator>::difference_type 5209: _Distance; 5209: typedef typename iterator_traits<_RandomAccessIterator>::value_type 5209: _ValueType; 5209: 5209: _Distance __n = __last - __first; 5209: _Distance __k = __middle - __first; 5209: 5209: if (__k == __n - __k) 5209: { 5209: std::swap_ranges(__first, __middle, __middle); 5209: return __middle; 5209: } 5209: 5209: _RandomAccessIterator __p = __first; 5209: _RandomAccessIterator __ret = __first + (__last - __middle); 5209: 5209: for (;;) 5209: { 5209: if (__k < __n - __k) 5209: { 5209: if (__is_pod(_ValueType) && __k == 1) 5209: { 5209: _ValueType __t = std::move(*__p); 5209: std::move(__p + 1, __p + __n, __p); 5209: *(__p + __n - 1) = std::move(__t); 5209: return __ret; 5209: } 5209: _RandomAccessIterator __q = __p + __k; 5209: for (_Distance __i = 0; __i < __n - __k; ++ __i) 5209: { 5209: std::iter_swap(__p, __q); 5209: ++__p; 5209: ++__q; 5209: } 5209: __n %= __k; 5209: if (__n == 0) 5209: return __ret; 5209: std::swap(__n, __k); 5209: __k = __n - __k; 5209: } 5209: else 5209: { 5209: __k = __n - __k; 5209: if (__is_pod(_ValueType) && __k == 1) 5209: { 5209: _ValueType __t = std::move(*(__p + __n - 1)); 5209: std::move_backward(__p, __p + __n - 1, __p + __n); 5209: *__p = std::move(__t); 5209: return __ret; 5209: } 5209: _RandomAccessIterator __q = __p + __n; 5209: __p = __q - __k; 5209: for (_Distance __i = 0; __i < __n - __k; ++ __i) 5209: { 5209: --__p; 5209: --__q; 5209: std::iter_swap(__p, __q); 5209: } 5209: __n %= __k; 5209: if (__n == 0) 5209: return __ret; 5209: std::swap(__n, __k); 5209: } 5209: } 5209: } 5209: # 1492 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline _ForwardIterator 5209: rotate(_ForwardIterator __first, _ForwardIterator __middle, 5209: _ForwardIterator __last) 5209: { 5209: 5209: 5209: 5209: ; 5209: ; 5209: 5209: return std::__rotate(__first, __middle, __last, 5209: std::__iterator_category(__first)); 5209: } 5209: 5209: } 5209: # 1530 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline _OutputIterator 5209: rotate_copy(_ForwardIterator __first, _ForwardIterator __middle, 5209: _ForwardIterator __last, _OutputIterator __result) 5209: { 5209: 5209: 5209: 5209: 5209: ; 5209: ; 5209: 5209: return std::copy(__first, __middle, 5209: std::copy(__middle, __last, __result)); 5209: } 5209: 5209: 5209: template 5209: 5209: _ForwardIterator 5209: __partition(_ForwardIterator __first, _ForwardIterator __last, 5209: _Predicate __pred, forward_iterator_tag) 5209: { 5209: if (__first == __last) 5209: return __first; 5209: 5209: while (__pred(*__first)) 5209: if (++__first == __last) 5209: return __first; 5209: 5209: _ForwardIterator __next = __first; 5209: 5209: while (++__next != __last) 5209: if (__pred(*__next)) 5209: { 5209: std::iter_swap(__first, __next); 5209: ++__first; 5209: } 5209: 5209: return __first; 5209: } 5209: 5209: 5209: template 5209: 5209: _BidirectionalIterator 5209: __partition(_BidirectionalIterator __first, _BidirectionalIterator __last, 5209: _Predicate __pred, bidirectional_iterator_tag) 5209: { 5209: while (true) 5209: { 5209: while (true) 5209: if (__first == __last) 5209: return __first; 5209: else if (__pred(*__first)) 5209: ++__first; 5209: else 5209: break; 5209: --__last; 5209: while (true) 5209: if (__first == __last) 5209: return __first; 5209: else if (!bool(__pred(*__last))) 5209: --__last; 5209: else 5209: break; 5209: std::iter_swap(__first, __last); 5209: ++__first; 5209: } 5209: } 5209: # 1610 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: _ForwardIterator 5209: __stable_partition_adaptive(_ForwardIterator __first, 5209: _ForwardIterator __last, 5209: _Predicate __pred, _Distance __len, 5209: _Pointer __buffer, 5209: _Distance __buffer_size) 5209: { 5209: if (__len == 1) 5209: return __first; 5209: 5209: if (__len <= __buffer_size) 5209: { 5209: _ForwardIterator __result1 = __first; 5209: _Pointer __result2 = __buffer; 5209: 5209: 5209: 5209: 5209: *__result2 = std::move(*__first); 5209: ++__result2; 5209: ++__first; 5209: for (; __first != __last; ++__first) 5209: if (__pred(__first)) 5209: { 5209: *__result1 = std::move(*__first); 5209: ++__result1; 5209: } 5209: else 5209: { 5209: *__result2 = std::move(*__first); 5209: ++__result2; 5209: } 5209: 5209: std::move(__buffer, __result2, __result1); 5209: return __result1; 5209: } 5209: 5209: _ForwardIterator __middle = __first; 5209: std::advance(__middle, __len / 2); 5209: _ForwardIterator __left_split = 5209: std::__stable_partition_adaptive(__first, __middle, __pred, 5209: __len / 2, __buffer, 5209: __buffer_size); 5209: 5209: 5209: 5209: _Distance __right_len = __len - __len / 2; 5209: _ForwardIterator __right_split = 5209: std::__find_if_not_n(__middle, __right_len, __pred); 5209: 5209: if (__right_len) 5209: __right_split = 5209: std::__stable_partition_adaptive(__right_split, __last, __pred, 5209: __right_len, 5209: __buffer, __buffer_size); 5209: 5209: return std::rotate(__left_split, __middle, __right_split); 5209: } 5209: 5209: template 5209: _ForwardIterator 5209: __stable_partition(_ForwardIterator __first, _ForwardIterator __last, 5209: _Predicate __pred) 5209: { 5209: __first = std::__find_if_not(__first, __last, __pred); 5209: 5209: if (__first == __last) 5209: return __first; 5209: 5209: typedef typename iterator_traits<_ForwardIterator>::value_type 5209: _ValueType; 5209: typedef typename iterator_traits<_ForwardIterator>::difference_type 5209: _DistanceType; 5209: 5209: _Temporary_buffer<_ForwardIterator, _ValueType> 5209: __buf(__first, std::distance(__first, __last)); 5209: return 5209: std::__stable_partition_adaptive(__first, __last, __pred, 5209: _DistanceType(__buf.requested_size()), 5209: __buf.begin(), 5209: _DistanceType(__buf.size())); 5209: } 5209: # 1712 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: inline _ForwardIterator 5209: stable_partition(_ForwardIterator __first, _ForwardIterator __last, 5209: _Predicate __pred) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: 5209: return std::__stable_partition(__first, __last, 5209: __gnu_cxx::__ops::__pred_iter(__pred)); 5209: } 5209: 5209: 5209: template 5209: 5209: void 5209: __heap_select(_RandomAccessIterator __first, 5209: _RandomAccessIterator __middle, 5209: _RandomAccessIterator __last, _Compare __comp) 5209: { 5209: std::__make_heap(__first, __middle, __comp); 5209: for (_RandomAccessIterator __i = __middle; __i < __last; ++__i) 5209: if (__comp(__i, __first)) 5209: std::__pop_heap(__first, __middle, __i, __comp); 5209: } 5209: 5209: 5209: 5209: template 5209: 5209: _RandomAccessIterator 5209: __partial_sort_copy(_InputIterator __first, _InputIterator __last, 5209: _RandomAccessIterator __result_first, 5209: _RandomAccessIterator __result_last, 5209: _Compare __comp) 5209: { 5209: typedef typename iterator_traits<_InputIterator>::value_type 5209: _InputValueType; 5209: typedef iterator_traits<_RandomAccessIterator> _RItTraits; 5209: typedef typename _RItTraits::difference_type _DistanceType; 5209: 5209: if (__result_first == __result_last) 5209: return __result_last; 5209: _RandomAccessIterator __result_real_last = __result_first; 5209: while (__first != __last && __result_real_last != __result_last) 5209: { 5209: *__result_real_last = *__first; 5209: ++__result_real_last; 5209: ++__first; 5209: } 5209: 5209: std::__make_heap(__result_first, __result_real_last, __comp); 5209: while (__first != __last) 5209: { 5209: if (__comp(__first, __result_first)) 5209: std::__adjust_heap(__result_first, _DistanceType(0), 5209: _DistanceType(__result_real_last 5209: - __result_first), 5209: _InputValueType(*__first), __comp); 5209: ++__first; 5209: } 5209: std::__sort_heap(__result_first, __result_real_last, __comp); 5209: return __result_real_last; 5209: } 5209: # 1800 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline _RandomAccessIterator 5209: partial_sort_copy(_InputIterator __first, _InputIterator __last, 5209: _RandomAccessIterator __result_first, 5209: _RandomAccessIterator __result_last) 5209: { 5209: # 1815 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: ; 5209: ; 5209: 5209: return std::__partial_sort_copy(__first, __last, 5209: __result_first, __result_last, 5209: __gnu_cxx::__ops::__iter_less_iter()); 5209: } 5209: # 1850 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline _RandomAccessIterator 5209: partial_sort_copy(_InputIterator __first, _InputIterator __last, 5209: _RandomAccessIterator __result_first, 5209: _RandomAccessIterator __result_last, 5209: _Compare __comp) 5209: { 5209: # 1867 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: ; 5209: ; 5209: 5209: return std::__partial_sort_copy(__first, __last, 5209: __result_first, __result_last, 5209: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 5209: } 5209: 5209: 5209: template 5209: 5209: void 5209: __unguarded_linear_insert(_RandomAccessIterator __last, 5209: _Compare __comp) 5209: { 5209: typename iterator_traits<_RandomAccessIterator>::value_type 5209: __val = std::move(*__last); 5209: _RandomAccessIterator __next = __last; 5209: --__next; 5209: while (__comp(__val, __next)) 5209: { 5209: *__last = std::move(*__next); 5209: __last = __next; 5209: --__next; 5209: } 5209: *__last = std::move(__val); 5209: } 5209: 5209: 5209: template 5209: 5209: void 5209: __insertion_sort(_RandomAccessIterator __first, 5209: _RandomAccessIterator __last, _Compare __comp) 5209: { 5209: if (__first == __last) return; 5209: 5209: for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) 5209: { 5209: if (__comp(__i, __first)) 5209: { 5209: typename iterator_traits<_RandomAccessIterator>::value_type 5209: __val = std::move(*__i); 5209: std::move_backward(__first, __i, __i + 1); 5209: *__first = std::move(__val); 5209: } 5209: else 5209: std::__unguarded_linear_insert(__i, 5209: __gnu_cxx::__ops::__val_comp_iter(__comp)); 5209: } 5209: } 5209: 5209: 5209: template 5209: 5209: inline void 5209: __unguarded_insertion_sort(_RandomAccessIterator __first, 5209: _RandomAccessIterator __last, _Compare __comp) 5209: { 5209: for (_RandomAccessIterator __i = __first; __i != __last; ++__i) 5209: std::__unguarded_linear_insert(__i, 5209: __gnu_cxx::__ops::__val_comp_iter(__comp)); 5209: } 5209: 5209: 5209: 5209: 5209: 5209: enum { _S_threshold = 16 }; 5209: 5209: 5209: template 5209: 5209: void 5209: __final_insertion_sort(_RandomAccessIterator __first, 5209: _RandomAccessIterator __last, _Compare __comp) 5209: { 5209: if (__last - __first > int(_S_threshold)) 5209: { 5209: std::__insertion_sort(__first, __first + int(_S_threshold), __comp); 5209: std::__unguarded_insertion_sort(__first + int(_S_threshold), __last, 5209: __comp); 5209: } 5209: else 5209: std::__insertion_sort(__first, __last, __comp); 5209: } 5209: 5209: 5209: template 5209: 5209: _RandomAccessIterator 5209: __unguarded_partition(_RandomAccessIterator __first, 5209: _RandomAccessIterator __last, 5209: _RandomAccessIterator __pivot, _Compare __comp) 5209: { 5209: while (true) 5209: { 5209: while (__comp(__first, __pivot)) 5209: ++__first; 5209: --__last; 5209: while (__comp(__pivot, __last)) 5209: --__last; 5209: if (!(__first < __last)) 5209: return __first; 5209: std::iter_swap(__first, __last); 5209: ++__first; 5209: } 5209: } 5209: 5209: 5209: template 5209: 5209: inline _RandomAccessIterator 5209: __unguarded_partition_pivot(_RandomAccessIterator __first, 5209: _RandomAccessIterator __last, _Compare __comp) 5209: { 5209: _RandomAccessIterator __mid = __first + (__last - __first) / 2; 5209: std::__move_median_to_first(__first, __first + 1, __mid, __last - 1, 5209: __comp); 5209: return std::__unguarded_partition(__first + 1, __last, __first, __comp); 5209: } 5209: 5209: template 5209: 5209: inline void 5209: __partial_sort(_RandomAccessIterator __first, 5209: _RandomAccessIterator __middle, 5209: _RandomAccessIterator __last, 5209: _Compare __comp) 5209: { 5209: std::__heap_select(__first, __middle, __last, __comp); 5209: std::__sort_heap(__first, __middle, __comp); 5209: } 5209: 5209: 5209: template 5209: 5209: void 5209: __introsort_loop(_RandomAccessIterator __first, 5209: _RandomAccessIterator __last, 5209: _Size __depth_limit, _Compare __comp) 5209: { 5209: while (__last - __first > int(_S_threshold)) 5209: { 5209: if (__depth_limit == 0) 5209: { 5209: std::__partial_sort(__first, __last, __last, __comp); 5209: return; 5209: } 5209: --__depth_limit; 5209: _RandomAccessIterator __cut = 5209: std::__unguarded_partition_pivot(__first, __last, __comp); 5209: std::__introsort_loop(__cut, __last, __depth_limit, __comp); 5209: __last = __cut; 5209: } 5209: } 5209: 5209: 5209: 5209: template 5209: 5209: inline void 5209: __sort(_RandomAccessIterator __first, _RandomAccessIterator __last, 5209: _Compare __comp) 5209: { 5209: if (__first != __last) 5209: { 5209: std::__introsort_loop(__first, __last, 5209: std::__lg(__last - __first) * 2, 5209: __comp); 5209: std::__final_insertion_sort(__first, __last, __comp); 5209: } 5209: } 5209: 5209: template 5209: 5209: void 5209: __introselect(_RandomAccessIterator __first, _RandomAccessIterator __nth, 5209: _RandomAccessIterator __last, _Size __depth_limit, 5209: _Compare __comp) 5209: { 5209: while (__last - __first > 3) 5209: { 5209: if (__depth_limit == 0) 5209: { 5209: std::__heap_select(__first, __nth + 1, __last, __comp); 5209: 5209: std::iter_swap(__first, __nth); 5209: return; 5209: } 5209: --__depth_limit; 5209: _RandomAccessIterator __cut = 5209: std::__unguarded_partition_pivot(__first, __last, __comp); 5209: if (__cut <= __nth) 5209: __first = __cut; 5209: else 5209: __last = __cut; 5209: } 5209: std::__insertion_sort(__first, __last, __comp); 5209: } 5209: # 2098 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline _ForwardIterator 5209: lower_bound(_ForwardIterator __first, _ForwardIterator __last, 5209: const _Tp& __val, _Compare __comp) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: 5209: return std::__lower_bound(__first, __last, __val, 5209: __gnu_cxx::__ops::__iter_comp_val(__comp)); 5209: } 5209: 5209: template 5209: 5209: _ForwardIterator 5209: __upper_bound(_ForwardIterator __first, _ForwardIterator __last, 5209: const _Tp& __val, _Compare __comp) 5209: { 5209: typedef typename iterator_traits<_ForwardIterator>::difference_type 5209: _DistanceType; 5209: 5209: _DistanceType __len = std::distance(__first, __last); 5209: 5209: while (__len > 0) 5209: { 5209: _DistanceType __half = __len >> 1; 5209: _ForwardIterator __middle = __first; 5209: std::advance(__middle, __half); 5209: if (__comp(__val, __middle)) 5209: __len = __half; 5209: else 5209: { 5209: __first = __middle; 5209: ++__first; 5209: __len = __len - __half - 1; 5209: } 5209: } 5209: return __first; 5209: } 5209: # 2154 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline _ForwardIterator 5209: upper_bound(_ForwardIterator __first, _ForwardIterator __last, 5209: const _Tp& __val) 5209: { 5209: 5209: 5209: 5209: 5209: ; 5209: 5209: return std::__upper_bound(__first, __last, __val, 5209: __gnu_cxx::__ops::__val_less_iter()); 5209: } 5209: # 2185 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline _ForwardIterator 5209: upper_bound(_ForwardIterator __first, _ForwardIterator __last, 5209: const _Tp& __val, _Compare __comp) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: 5209: return std::__upper_bound(__first, __last, __val, 5209: __gnu_cxx::__ops::__val_comp_iter(__comp)); 5209: } 5209: 5209: template 5209: 5209: pair<_ForwardIterator, _ForwardIterator> 5209: __equal_range(_ForwardIterator __first, _ForwardIterator __last, 5209: const _Tp& __val, 5209: _CompareItTp __comp_it_val, _CompareTpIt __comp_val_it) 5209: { 5209: typedef typename iterator_traits<_ForwardIterator>::difference_type 5209: _DistanceType; 5209: 5209: _DistanceType __len = std::distance(__first, __last); 5209: 5209: while (__len > 0) 5209: { 5209: _DistanceType __half = __len >> 1; 5209: _ForwardIterator __middle = __first; 5209: std::advance(__middle, __half); 5209: if (__comp_it_val(__middle, __val)) 5209: { 5209: __first = __middle; 5209: ++__first; 5209: __len = __len - __half - 1; 5209: } 5209: else if (__comp_val_it(__val, __middle)) 5209: __len = __half; 5209: else 5209: { 5209: _ForwardIterator __left 5209: = std::__lower_bound(__first, __middle, __val, __comp_it_val); 5209: std::advance(__first, __len); 5209: _ForwardIterator __right 5209: = std::__upper_bound(++__middle, __first, __val, __comp_val_it); 5209: return pair<_ForwardIterator, _ForwardIterator>(__left, __right); 5209: } 5209: } 5209: return pair<_ForwardIterator, _ForwardIterator>(__first, __first); 5209: } 5209: # 2258 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline pair<_ForwardIterator, _ForwardIterator> 5209: equal_range(_ForwardIterator __first, _ForwardIterator __last, 5209: const _Tp& __val) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: ; 5209: 5209: return std::__equal_range(__first, __last, __val, 5209: __gnu_cxx::__ops::__iter_less_val(), 5209: __gnu_cxx::__ops::__val_less_iter()); 5209: } 5209: # 2295 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline pair<_ForwardIterator, _ForwardIterator> 5209: equal_range(_ForwardIterator __first, _ForwardIterator __last, 5209: const _Tp& __val, _Compare __comp) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: 5209: ; 5209: 5209: return std::__equal_range(__first, __last, __val, 5209: __gnu_cxx::__ops::__iter_comp_val(__comp), 5209: __gnu_cxx::__ops::__val_comp_iter(__comp)); 5209: } 5209: # 2329 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: bool 5209: binary_search(_ForwardIterator __first, _ForwardIterator __last, 5209: const _Tp& __val) 5209: { 5209: 5209: 5209: 5209: 5209: ; 5209: ; 5209: 5209: _ForwardIterator __i 5209: = std::__lower_bound(__first, __last, __val, 5209: __gnu_cxx::__ops::__iter_less_val()); 5209: return __i != __last && !(__val < *__i); 5209: } 5209: # 2363 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: bool 5209: binary_search(_ForwardIterator __first, _ForwardIterator __last, 5209: const _Tp& __val, _Compare __comp) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: 5209: ; 5209: 5209: _ForwardIterator __i 5209: = std::__lower_bound(__first, __last, __val, 5209: __gnu_cxx::__ops::__iter_comp_val(__comp)); 5209: return __i != __last && !bool(__comp(__val, *__i)); 5209: } 5209: 5209: 5209: 5209: 5209: template 5209: void 5209: __move_merge_adaptive(_InputIterator1 __first1, _InputIterator1 __last1, 5209: _InputIterator2 __first2, _InputIterator2 __last2, 5209: _OutputIterator __result, _Compare __comp) 5209: { 5209: while (__first1 != __last1 && __first2 != __last2) 5209: { 5209: if (__comp(__first2, __first1)) 5209: { 5209: *__result = std::move(*__first2); 5209: ++__first2; 5209: } 5209: else 5209: { 5209: *__result = std::move(*__first1); 5209: ++__first1; 5209: } 5209: ++__result; 5209: } 5209: if (__first1 != __last1) 5209: std::move(__first1, __last1, __result); 5209: } 5209: 5209: 5209: template 5209: void 5209: __move_merge_adaptive_backward(_BidirectionalIterator1 __first1, 5209: _BidirectionalIterator1 __last1, 5209: _BidirectionalIterator2 __first2, 5209: _BidirectionalIterator2 __last2, 5209: _BidirectionalIterator3 __result, 5209: _Compare __comp) 5209: { 5209: if (__first1 == __last1) 5209: { 5209: std::move_backward(__first2, __last2, __result); 5209: return; 5209: } 5209: else if (__first2 == __last2) 5209: return; 5209: 5209: --__last1; 5209: --__last2; 5209: while (true) 5209: { 5209: if (__comp(__last2, __last1)) 5209: { 5209: *--__result = std::move(*__last1); 5209: if (__first1 == __last1) 5209: { 5209: std::move_backward(__first2, ++__last2, __result); 5209: return; 5209: } 5209: --__last1; 5209: } 5209: else 5209: { 5209: *--__result = std::move(*__last2); 5209: if (__first2 == __last2) 5209: return; 5209: --__last2; 5209: } 5209: } 5209: } 5209: 5209: 5209: template 5209: _BidirectionalIterator1 5209: __rotate_adaptive(_BidirectionalIterator1 __first, 5209: _BidirectionalIterator1 __middle, 5209: _BidirectionalIterator1 __last, 5209: _Distance __len1, _Distance __len2, 5209: _BidirectionalIterator2 __buffer, 5209: _Distance __buffer_size) 5209: { 5209: _BidirectionalIterator2 __buffer_end; 5209: if (__len1 > __len2 && __len2 <= __buffer_size) 5209: { 5209: if (__len2) 5209: { 5209: __buffer_end = std::move(__middle, __last, __buffer); 5209: std::move_backward(__first, __middle, __last); 5209: return std::move(__buffer, __buffer_end, __first); 5209: } 5209: else 5209: return __first; 5209: } 5209: else if (__len1 <= __buffer_size) 5209: { 5209: if (__len1) 5209: { 5209: __buffer_end = std::move(__first, __middle, __buffer); 5209: std::move(__middle, __last, __first); 5209: return std::move_backward(__buffer, __buffer_end, __last); 5209: } 5209: else 5209: return __last; 5209: } 5209: else 5209: return std::rotate(__first, __middle, __last); 5209: } 5209: 5209: 5209: template 5209: void 5209: __merge_adaptive(_BidirectionalIterator __first, 5209: _BidirectionalIterator __middle, 5209: _BidirectionalIterator __last, 5209: _Distance __len1, _Distance __len2, 5209: _Pointer __buffer, _Distance __buffer_size, 5209: _Compare __comp) 5209: { 5209: if (__len1 <= __len2 && __len1 <= __buffer_size) 5209: { 5209: _Pointer __buffer_end = std::move(__first, __middle, __buffer); 5209: std::__move_merge_adaptive(__buffer, __buffer_end, __middle, __last, 5209: __first, __comp); 5209: } 5209: else if (__len2 <= __buffer_size) 5209: { 5209: _Pointer __buffer_end = std::move(__middle, __last, __buffer); 5209: std::__move_merge_adaptive_backward(__first, __middle, __buffer, 5209: __buffer_end, __last, __comp); 5209: } 5209: else 5209: { 5209: _BidirectionalIterator __first_cut = __first; 5209: _BidirectionalIterator __second_cut = __middle; 5209: _Distance __len11 = 0; 5209: _Distance __len22 = 0; 5209: if (__len1 > __len2) 5209: { 5209: __len11 = __len1 / 2; 5209: std::advance(__first_cut, __len11); 5209: __second_cut 5209: = std::__lower_bound(__middle, __last, *__first_cut, 5209: __gnu_cxx::__ops::__iter_comp_val(__comp)); 5209: __len22 = std::distance(__middle, __second_cut); 5209: } 5209: else 5209: { 5209: __len22 = __len2 / 2; 5209: std::advance(__second_cut, __len22); 5209: __first_cut 5209: = std::__upper_bound(__first, __middle, *__second_cut, 5209: __gnu_cxx::__ops::__val_comp_iter(__comp)); 5209: __len11 = std::distance(__first, __first_cut); 5209: } 5209: 5209: _BidirectionalIterator __new_middle 5209: = std::__rotate_adaptive(__first_cut, __middle, __second_cut, 5209: __len1 - __len11, __len22, __buffer, 5209: __buffer_size); 5209: std::__merge_adaptive(__first, __first_cut, __new_middle, __len11, 5209: __len22, __buffer, __buffer_size, __comp); 5209: std::__merge_adaptive(__new_middle, __second_cut, __last, 5209: __len1 - __len11, 5209: __len2 - __len22, __buffer, 5209: __buffer_size, __comp); 5209: } 5209: } 5209: 5209: 5209: template 5209: void 5209: __merge_without_buffer(_BidirectionalIterator __first, 5209: _BidirectionalIterator __middle, 5209: _BidirectionalIterator __last, 5209: _Distance __len1, _Distance __len2, 5209: _Compare __comp) 5209: { 5209: if (__len1 == 0 || __len2 == 0) 5209: return; 5209: 5209: if (__len1 + __len2 == 2) 5209: { 5209: if (__comp(__middle, __first)) 5209: std::iter_swap(__first, __middle); 5209: return; 5209: } 5209: 5209: _BidirectionalIterator __first_cut = __first; 5209: _BidirectionalIterator __second_cut = __middle; 5209: _Distance __len11 = 0; 5209: _Distance __len22 = 0; 5209: if (__len1 > __len2) 5209: { 5209: __len11 = __len1 / 2; 5209: std::advance(__first_cut, __len11); 5209: __second_cut 5209: = std::__lower_bound(__middle, __last, *__first_cut, 5209: __gnu_cxx::__ops::__iter_comp_val(__comp)); 5209: __len22 = std::distance(__middle, __second_cut); 5209: } 5209: else 5209: { 5209: __len22 = __len2 / 2; 5209: std::advance(__second_cut, __len22); 5209: __first_cut 5209: = std::__upper_bound(__first, __middle, *__second_cut, 5209: __gnu_cxx::__ops::__val_comp_iter(__comp)); 5209: __len11 = std::distance(__first, __first_cut); 5209: } 5209: 5209: _BidirectionalIterator __new_middle 5209: = std::rotate(__first_cut, __middle, __second_cut); 5209: std::__merge_without_buffer(__first, __first_cut, __new_middle, 5209: __len11, __len22, __comp); 5209: std::__merge_without_buffer(__new_middle, __second_cut, __last, 5209: __len1 - __len11, __len2 - __len22, __comp); 5209: } 5209: 5209: template 5209: void 5209: __inplace_merge(_BidirectionalIterator __first, 5209: _BidirectionalIterator __middle, 5209: _BidirectionalIterator __last, 5209: _Compare __comp) 5209: { 5209: typedef typename iterator_traits<_BidirectionalIterator>::value_type 5209: _ValueType; 5209: typedef typename iterator_traits<_BidirectionalIterator>::difference_type 5209: _DistanceType; 5209: 5209: if (__first == __middle || __middle == __last) 5209: return; 5209: 5209: const _DistanceType __len1 = std::distance(__first, __middle); 5209: const _DistanceType __len2 = std::distance(__middle, __last); 5209: 5209: typedef _Temporary_buffer<_BidirectionalIterator, _ValueType> _TmpBuf; 5209: _TmpBuf __buf(__first, __len1 + __len2); 5209: 5209: if (__buf.begin() == 0) 5209: std::__merge_without_buffer 5209: (__first, __middle, __last, __len1, __len2, __comp); 5209: else 5209: std::__merge_adaptive 5209: (__first, __middle, __last, __len1, __len2, __buf.begin(), 5209: _DistanceType(__buf.size()), __comp); 5209: } 5209: # 2653 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: inline void 5209: inplace_merge(_BidirectionalIterator __first, 5209: _BidirectionalIterator __middle, 5209: _BidirectionalIterator __last) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: ; 5209: ; 5209: 5209: std::__inplace_merge(__first, __middle, __last, 5209: __gnu_cxx::__ops::__iter_less_iter()); 5209: } 5209: # 2694 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: inline void 5209: inplace_merge(_BidirectionalIterator __first, 5209: _BidirectionalIterator __middle, 5209: _BidirectionalIterator __last, 5209: _Compare __comp) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: ; 5209: ; 5209: 5209: std::__inplace_merge(__first, __middle, __last, 5209: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 5209: } 5209: 5209: 5209: 5209: template 5209: _OutputIterator 5209: __move_merge(_InputIterator __first1, _InputIterator __last1, 5209: _InputIterator __first2, _InputIterator __last2, 5209: _OutputIterator __result, _Compare __comp) 5209: { 5209: while (__first1 != __last1 && __first2 != __last2) 5209: { 5209: if (__comp(__first2, __first1)) 5209: { 5209: *__result = std::move(*__first2); 5209: ++__first2; 5209: } 5209: else 5209: { 5209: *__result = std::move(*__first1); 5209: ++__first1; 5209: } 5209: ++__result; 5209: } 5209: return std::move(__first2, __last2, std::move(__first1, __last1, __result)) 5209: 5209: ; 5209: } 5209: 5209: template 5209: void 5209: __merge_sort_loop(_RandomAccessIterator1 __first, 5209: _RandomAccessIterator1 __last, 5209: _RandomAccessIterator2 __result, _Distance __step_size, 5209: _Compare __comp) 5209: { 5209: const _Distance __two_step = 2 * __step_size; 5209: 5209: while (__last - __first >= __two_step) 5209: { 5209: __result = std::__move_merge(__first, __first + __step_size, 5209: __first + __step_size, 5209: __first + __two_step, 5209: __result, __comp); 5209: __first += __two_step; 5209: } 5209: __step_size = std::min(_Distance(__last - __first), __step_size); 5209: 5209: std::__move_merge(__first, __first + __step_size, 5209: __first + __step_size, __last, __result, __comp); 5209: } 5209: 5209: template 5209: 5209: void 5209: __chunk_insertion_sort(_RandomAccessIterator __first, 5209: _RandomAccessIterator __last, 5209: _Distance __chunk_size, _Compare __comp) 5209: { 5209: while (__last - __first >= __chunk_size) 5209: { 5209: std::__insertion_sort(__first, __first + __chunk_size, __comp); 5209: __first += __chunk_size; 5209: } 5209: std::__insertion_sort(__first, __last, __comp); 5209: } 5209: 5209: enum { _S_chunk_size = 7 }; 5209: 5209: template 5209: void 5209: __merge_sort_with_buffer(_RandomAccessIterator __first, 5209: _RandomAccessIterator __last, 5209: _Pointer __buffer, _Compare __comp) 5209: { 5209: typedef typename iterator_traits<_RandomAccessIterator>::difference_type 5209: _Distance; 5209: 5209: const _Distance __len = __last - __first; 5209: const _Pointer __buffer_last = __buffer + __len; 5209: 5209: _Distance __step_size = _S_chunk_size; 5209: std::__chunk_insertion_sort(__first, __last, __step_size, __comp); 5209: 5209: while (__step_size < __len) 5209: { 5209: std::__merge_sort_loop(__first, __last, __buffer, 5209: __step_size, __comp); 5209: __step_size *= 2; 5209: std::__merge_sort_loop(__buffer, __buffer_last, __first, 5209: __step_size, __comp); 5209: __step_size *= 2; 5209: } 5209: } 5209: 5209: template 5209: void 5209: __stable_sort_adaptive(_RandomAccessIterator __first, 5209: _RandomAccessIterator __last, 5209: _Pointer __buffer, _Distance __buffer_size, 5209: _Compare __comp) 5209: { 5209: const _Distance __len = (__last - __first + 1) / 2; 5209: const _RandomAccessIterator __middle = __first + __len; 5209: if (__len > __buffer_size) 5209: { 5209: std::__stable_sort_adaptive(__first, __middle, __buffer, 5209: __buffer_size, __comp); 5209: std::__stable_sort_adaptive(__middle, __last, __buffer, 5209: __buffer_size, __comp); 5209: } 5209: else 5209: { 5209: std::__merge_sort_with_buffer(__first, __middle, __buffer, __comp); 5209: std::__merge_sort_with_buffer(__middle, __last, __buffer, __comp); 5209: } 5209: std::__merge_adaptive(__first, __middle, __last, 5209: _Distance(__middle - __first), 5209: _Distance(__last - __middle), 5209: __buffer, __buffer_size, 5209: __comp); 5209: } 5209: 5209: 5209: template 5209: void 5209: __inplace_stable_sort(_RandomAccessIterator __first, 5209: _RandomAccessIterator __last, _Compare __comp) 5209: { 5209: if (__last - __first < 15) 5209: { 5209: std::__insertion_sort(__first, __last, __comp); 5209: return; 5209: } 5209: _RandomAccessIterator __middle = __first + (__last - __first) / 2; 5209: std::__inplace_stable_sort(__first, __middle, __comp); 5209: std::__inplace_stable_sort(__middle, __last, __comp); 5209: std::__merge_without_buffer(__first, __middle, __last, 5209: __middle - __first, 5209: __last - __middle, 5209: __comp); 5209: } 5209: # 2867 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: bool 5209: __includes(_InputIterator1 __first1, _InputIterator1 __last1, 5209: _InputIterator2 __first2, _InputIterator2 __last2, 5209: _Compare __comp) 5209: { 5209: while (__first1 != __last1 && __first2 != __last2) 5209: if (__comp(__first2, __first1)) 5209: return false; 5209: else if (__comp(__first1, __first2)) 5209: ++__first1; 5209: else 5209: { 5209: ++__first1; 5209: ++__first2; 5209: } 5209: 5209: return __first2 == __last2; 5209: } 5209: # 2907 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline bool 5209: includes(_InputIterator1 __first1, _InputIterator1 __last1, 5209: _InputIterator2 __first2, _InputIterator2 __last2) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: ; 5209: ; 5209: ; 5209: 5209: return std::__includes(__first1, __last1, __first2, __last2, 5209: __gnu_cxx::__ops::__iter_less_iter()); 5209: } 5209: # 2952 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline bool 5209: includes(_InputIterator1 __first1, _InputIterator1 __last1, 5209: _InputIterator2 __first2, _InputIterator2 __last2, 5209: _Compare __comp) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: ; 5209: ; 5209: ; 5209: 5209: return std::__includes(__first1, __last1, __first2, __last2, 5209: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 5209: } 5209: # 2988 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: bool 5209: __next_permutation(_BidirectionalIterator __first, 5209: _BidirectionalIterator __last, _Compare __comp) 5209: { 5209: if (__first == __last) 5209: return false; 5209: _BidirectionalIterator __i = __first; 5209: ++__i; 5209: if (__i == __last) 5209: return false; 5209: __i = __last; 5209: --__i; 5209: 5209: for(;;) 5209: { 5209: _BidirectionalIterator __ii = __i; 5209: --__i; 5209: if (__comp(__i, __ii)) 5209: { 5209: _BidirectionalIterator __j = __last; 5209: while (!__comp(__i, --__j)) 5209: {} 5209: std::iter_swap(__i, __j); 5209: std::__reverse(__ii, __last, 5209: std::__iterator_category(__first)); 5209: return true; 5209: } 5209: if (__i == __first) 5209: { 5209: std::__reverse(__first, __last, 5209: std::__iterator_category(__first)); 5209: return false; 5209: } 5209: } 5209: } 5209: # 3038 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline bool 5209: next_permutation(_BidirectionalIterator __first, 5209: _BidirectionalIterator __last) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: ; 5209: 5209: return std::__next_permutation 5209: (__first, __last, __gnu_cxx::__ops::__iter_less_iter()); 5209: } 5209: # 3071 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline bool 5209: next_permutation(_BidirectionalIterator __first, 5209: _BidirectionalIterator __last, _Compare __comp) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: ; 5209: 5209: return std::__next_permutation 5209: (__first, __last, __gnu_cxx::__ops::__iter_comp_iter(__comp)); 5209: } 5209: 5209: template 5209: 5209: bool 5209: __prev_permutation(_BidirectionalIterator __first, 5209: _BidirectionalIterator __last, _Compare __comp) 5209: { 5209: if (__first == __last) 5209: return false; 5209: _BidirectionalIterator __i = __first; 5209: ++__i; 5209: if (__i == __last) 5209: return false; 5209: __i = __last; 5209: --__i; 5209: 5209: for(;;) 5209: { 5209: _BidirectionalIterator __ii = __i; 5209: --__i; 5209: if (__comp(__ii, __i)) 5209: { 5209: _BidirectionalIterator __j = __last; 5209: while (!__comp(--__j, __i)) 5209: {} 5209: std::iter_swap(__i, __j); 5209: std::__reverse(__ii, __last, 5209: std::__iterator_category(__first)); 5209: return true; 5209: } 5209: if (__i == __first) 5209: { 5209: std::__reverse(__first, __last, 5209: std::__iterator_category(__first)); 5209: return false; 5209: } 5209: } 5209: } 5209: # 3141 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline bool 5209: prev_permutation(_BidirectionalIterator __first, 5209: _BidirectionalIterator __last) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: ; 5209: 5209: return std::__prev_permutation(__first, __last, 5209: __gnu_cxx::__ops::__iter_less_iter()); 5209: } 5209: # 3174 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline bool 5209: prev_permutation(_BidirectionalIterator __first, 5209: _BidirectionalIterator __last, _Compare __comp) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: ; 5209: 5209: return std::__prev_permutation(__first, __last, 5209: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 5209: } 5209: 5209: 5209: 5209: 5209: template 5209: 5209: _OutputIterator 5209: __replace_copy_if(_InputIterator __first, _InputIterator __last, 5209: _OutputIterator __result, 5209: _Predicate __pred, const _Tp& __new_value) 5209: { 5209: for (; __first != __last; ++__first, (void)++__result) 5209: if (__pred(__first)) 5209: *__result = __new_value; 5209: else 5209: *__result = *__first; 5209: return __result; 5209: } 5209: # 3226 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline _OutputIterator 5209: replace_copy(_InputIterator __first, _InputIterator __last, 5209: _OutputIterator __result, 5209: const _Tp& __old_value, const _Tp& __new_value) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: 5209: return std::__replace_copy_if(__first, __last, __result, 5209: __gnu_cxx::__ops::__iter_equals_val(__old_value), 5209: __new_value); 5209: } 5209: # 3261 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline _OutputIterator 5209: replace_copy_if(_InputIterator __first, _InputIterator __last, 5209: _OutputIterator __result, 5209: _Predicate __pred, const _Tp& __new_value) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: 5209: return std::__replace_copy_if(__first, __last, __result, 5209: __gnu_cxx::__ops::__pred_iter(__pred), 5209: __new_value); 5209: } 5209: 5209: template 5209: 5209: typename iterator_traits<_InputIterator>::difference_type 5209: __count_if(_InputIterator __first, _InputIterator __last, _Predicate __pred) 5209: { 5209: typename iterator_traits<_InputIterator>::difference_type __n = 0; 5209: for (; __first != __last; ++__first) 5209: if (__pred(__first)) 5209: ++__n; 5209: return __n; 5209: } 5209: # 3302 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline bool 5209: is_sorted(_ForwardIterator __first, _ForwardIterator __last) 5209: { return std::is_sorted_until(__first, __last) == __last; } 5209: # 3317 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline bool 5209: is_sorted(_ForwardIterator __first, _ForwardIterator __last, 5209: _Compare __comp) 5209: { return std::is_sorted_until(__first, __last, __comp) == __last; } 5209: 5209: template 5209: 5209: _ForwardIterator 5209: __is_sorted_until(_ForwardIterator __first, _ForwardIterator __last, 5209: _Compare __comp) 5209: { 5209: if (__first == __last) 5209: return __last; 5209: 5209: _ForwardIterator __next = __first; 5209: for (++__next; __next != __last; __first = __next, (void)++__next) 5209: if (__comp(__next, __first)) 5209: return __next; 5209: return __next; 5209: } 5209: # 3348 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline _ForwardIterator 5209: is_sorted_until(_ForwardIterator __first, _ForwardIterator __last) 5209: { 5209: 5209: 5209: 5209: 5209: ; 5209: ; 5209: 5209: return std::__is_sorted_until(__first, __last, 5209: __gnu_cxx::__ops::__iter_less_iter()); 5209: } 5209: # 3373 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline _ForwardIterator 5209: is_sorted_until(_ForwardIterator __first, _ForwardIterator __last, 5209: _Compare __comp) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: ; 5209: 5209: return std::__is_sorted_until(__first, __last, 5209: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 5209: } 5209: # 3399 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline pair 5209: minmax(const _Tp& __a, const _Tp& __b) 5209: { 5209: 5209: 5209: 5209: return __b < __a ? pair(__b, __a) 5209: : pair(__a, __b); 5209: } 5209: # 3420 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline pair 5209: minmax(const _Tp& __a, const _Tp& __b, _Compare __comp) 5209: { 5209: return __comp(__b, __a) ? pair(__b, __a) 5209: : pair(__a, __b); 5209: } 5209: 5209: template 5209: 5209: pair<_ForwardIterator, _ForwardIterator> 5209: __minmax_element(_ForwardIterator __first, _ForwardIterator __last, 5209: _Compare __comp) 5209: { 5209: _ForwardIterator __next = __first; 5209: if (__first == __last 5209: || ++__next == __last) 5209: return std::make_pair(__first, __first); 5209: 5209: _ForwardIterator __min{}, __max{}; 5209: if (__comp(__next, __first)) 5209: { 5209: __min = __next; 5209: __max = __first; 5209: } 5209: else 5209: { 5209: __min = __first; 5209: __max = __next; 5209: } 5209: 5209: __first = __next; 5209: ++__first; 5209: 5209: while (__first != __last) 5209: { 5209: __next = __first; 5209: if (++__next == __last) 5209: { 5209: if (__comp(__first, __min)) 5209: __min = __first; 5209: else if (!__comp(__first, __max)) 5209: __max = __first; 5209: break; 5209: } 5209: 5209: if (__comp(__next, __first)) 5209: { 5209: if (__comp(__next, __min)) 5209: __min = __next; 5209: if (!__comp(__first, __max)) 5209: __max = __first; 5209: } 5209: else 5209: { 5209: if (__comp(__first, __min)) 5209: __min = __first; 5209: if (!__comp(__next, __max)) 5209: __max = __next; 5209: } 5209: 5209: __first = __next; 5209: ++__first; 5209: } 5209: 5209: return std::make_pair(__min, __max); 5209: } 5209: # 3500 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline pair<_ForwardIterator, _ForwardIterator> 5209: minmax_element(_ForwardIterator __first, _ForwardIterator __last) 5209: { 5209: 5209: 5209: 5209: 5209: ; 5209: ; 5209: 5209: return std::__minmax_element(__first, __last, 5209: __gnu_cxx::__ops::__iter_less_iter()); 5209: } 5209: # 3528 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline pair<_ForwardIterator, _ForwardIterator> 5209: minmax_element(_ForwardIterator __first, _ForwardIterator __last, 5209: _Compare __comp) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: ; 5209: 5209: return std::__minmax_element(__first, __last, 5209: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 5209: } 5209: 5209: 5209: template 5209: 5209: inline _Tp 5209: min(initializer_list<_Tp> __l) 5209: { return *std::min_element(__l.begin(), __l.end()); } 5209: 5209: template 5209: 5209: inline _Tp 5209: min(initializer_list<_Tp> __l, _Compare __comp) 5209: { return *std::min_element(__l.begin(), __l.end(), __comp); } 5209: 5209: template 5209: 5209: inline _Tp 5209: max(initializer_list<_Tp> __l) 5209: { return *std::max_element(__l.begin(), __l.end()); } 5209: 5209: template 5209: 5209: inline _Tp 5209: max(initializer_list<_Tp> __l, _Compare __comp) 5209: { return *std::max_element(__l.begin(), __l.end(), __comp); } 5209: 5209: template 5209: 5209: inline pair<_Tp, _Tp> 5209: minmax(initializer_list<_Tp> __l) 5209: { 5209: pair __p = 5209: std::minmax_element(__l.begin(), __l.end()); 5209: return std::make_pair(*__p.first, *__p.second); 5209: } 5209: 5209: template 5209: 5209: inline pair<_Tp, _Tp> 5209: minmax(initializer_list<_Tp> __l, _Compare __comp) 5209: { 5209: pair __p = 5209: std::minmax_element(__l.begin(), __l.end(), __comp); 5209: return std::make_pair(*__p.first, *__p.second); 5209: } 5209: 5209: template 5209: 5209: bool 5209: __is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 5209: _ForwardIterator2 __first2, _BinaryPredicate __pred) 5209: { 5209: 5209: 5209: for (; __first1 != __last1; ++__first1, (void)++__first2) 5209: if (!__pred(__first1, __first2)) 5209: break; 5209: 5209: if (__first1 == __last1) 5209: return true; 5209: 5209: 5209: 5209: _ForwardIterator2 __last2 = __first2; 5209: std::advance(__last2, std::distance(__first1, __last1)); 5209: for (_ForwardIterator1 __scan = __first1; __scan != __last1; ++__scan) 5209: { 5209: if (__scan != std::__find_if(__first1, __scan, 5209: __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan))) 5209: continue; 5209: 5209: auto __matches 5209: = std::__count_if(__first2, __last2, 5209: __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan)); 5209: if (0 == __matches || 5209: std::__count_if(__scan, __last1, 5209: __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan)) 5209: != __matches) 5209: return false; 5209: } 5209: return true; 5209: } 5209: # 3641 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline bool 5209: is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 5209: _ForwardIterator2 __first2) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: 5209: return std::__is_permutation(__first1, __last1, __first2, 5209: __gnu_cxx::__ops::__iter_equal_to_iter()); 5209: } 5209: # 3673 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline bool 5209: is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 5209: _ForwardIterator2 __first2, _BinaryPredicate __pred) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: 5209: return std::__is_permutation(__first1, __last1, __first2, 5209: __gnu_cxx::__ops::__iter_comp_iter(__pred)); 5209: } 5209: # 3873 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: pair<_IntType, _IntType> 5209: __gen_two_uniform_ints(_IntType __b0, _IntType __b1, 5209: _UniformRandomBitGenerator&& __g) 5209: { 5209: _IntType __x 5209: = uniform_int_distribution<_IntType>{0, (__b0 * __b1) - 1}(__g); 5209: return std::make_pair(__x / __b1, __x % __b1); 5209: } 5209: # 3895 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: void 5209: shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last, 5209: _UniformRandomNumberGenerator&& __g) 5209: { 5209: 5209: 5209: 5209: ; 5209: 5209: if (__first == __last) 5209: return; 5209: 5209: typedef typename iterator_traits<_RandomAccessIterator>::difference_type 5209: _DistanceType; 5209: 5209: typedef typename std::make_unsigned<_DistanceType>::type __ud_type; 5209: typedef typename std::uniform_int_distribution<__ud_type> __distr_type; 5209: typedef typename __distr_type::param_type __p_type; 5209: 5209: typedef typename remove_reference<_UniformRandomNumberGenerator>::type 5209: _Gen; 5209: typedef typename common_type::type 5209: __uc_type; 5209: 5209: const __uc_type __urngrange = __g.max() - __g.min(); 5209: const __uc_type __urange = __uc_type(__last - __first); 5209: 5209: if (__urngrange / __urange >= __urange) 5209: 5209: { 5209: _RandomAccessIterator __i = __first + 1; 5209: 5209: 5209: 5209: 5209: 5209: if ((__urange % 2) == 0) 5209: { 5209: __distr_type __d{0, 1}; 5209: std::iter_swap(__i++, __first + __d(__g)); 5209: } 5209: 5209: 5209: 5209: 5209: 5209: while (__i != __last) 5209: { 5209: const __uc_type __swap_range = __uc_type(__i - __first) + 1; 5209: 5209: const pair<__uc_type, __uc_type> __pospos = 5209: __gen_two_uniform_ints(__swap_range, __swap_range + 1, __g); 5209: 5209: std::iter_swap(__i++, __first + __pospos.first); 5209: std::iter_swap(__i++, __first + __pospos.second); 5209: } 5209: 5209: return; 5209: } 5209: 5209: __distr_type __d; 5209: 5209: for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) 5209: std::iter_swap(__i, __first + __d(__g, __p_type(0, __i - __first))); 5209: } 5209: 5209: 5209: 5209: 5209: 5209: # 3980 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: _Function 5209: for_each(_InputIterator __first, _InputIterator __last, _Function __f) 5209: { 5209: 5209: 5209: ; 5209: for (; __first != __last; ++__first) 5209: __f(*__first); 5209: return __f; 5209: } 5209: # 4041 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline _InputIterator 5209: find(_InputIterator __first, _InputIterator __last, 5209: const _Tp& __val) 5209: { 5209: 5209: 5209: 5209: 5209: ; 5209: return std::__find_if(__first, __last, 5209: __gnu_cxx::__ops::__iter_equals_val(__val)); 5209: } 5209: # 4066 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline _InputIterator 5209: find_if(_InputIterator __first, _InputIterator __last, 5209: _Predicate __pred) 5209: { 5209: 5209: 5209: 5209: 5209: ; 5209: 5209: return std::__find_if(__first, __last, 5209: __gnu_cxx::__ops::__pred_iter(__pred)); 5209: } 5209: # 4098 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: _InputIterator 5209: find_first_of(_InputIterator __first1, _InputIterator __last1, 5209: _ForwardIterator __first2, _ForwardIterator __last2) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: ; 5209: 5209: for (; __first1 != __last1; ++__first1) 5209: for (_ForwardIterator __iter = __first2; __iter != __last2; ++__iter) 5209: if (*__first1 == *__iter) 5209: return __first1; 5209: return __last1; 5209: } 5209: # 4139 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: _InputIterator 5209: find_first_of(_InputIterator __first1, _InputIterator __last1, 5209: _ForwardIterator __first2, _ForwardIterator __last2, 5209: _BinaryPredicate __comp) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: ; 5209: 5209: for (; __first1 != __last1; ++__first1) 5209: for (_ForwardIterator __iter = __first2; __iter != __last2; ++__iter) 5209: if (__comp(*__first1, *__iter)) 5209: return __first1; 5209: return __last1; 5209: } 5209: # 4172 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline _ForwardIterator 5209: adjacent_find(_ForwardIterator __first, _ForwardIterator __last) 5209: { 5209: 5209: 5209: 5209: 5209: ; 5209: 5209: return std::__adjacent_find(__first, __last, 5209: __gnu_cxx::__ops::__iter_equal_to_iter()); 5209: } 5209: # 4198 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline _ForwardIterator 5209: adjacent_find(_ForwardIterator __first, _ForwardIterator __last, 5209: _BinaryPredicate __binary_pred) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: 5209: return std::__adjacent_find(__first, __last, 5209: __gnu_cxx::__ops::__iter_comp_iter(__binary_pred)); 5209: } 5209: # 4224 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline typename iterator_traits<_InputIterator>::difference_type 5209: count(_InputIterator __first, _InputIterator __last, const _Tp& __value) 5209: { 5209: 5209: 5209: 5209: 5209: ; 5209: 5209: return std::__count_if(__first, __last, 5209: __gnu_cxx::__ops::__iter_equals_val(__value)); 5209: } 5209: # 4248 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline typename iterator_traits<_InputIterator>::difference_type 5209: count_if(_InputIterator __first, _InputIterator __last, _Predicate __pred) 5209: { 5209: 5209: 5209: 5209: 5209: ; 5209: 5209: return std::__count_if(__first, __last, 5209: __gnu_cxx::__ops::__pred_iter(__pred)); 5209: } 5209: # 4289 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline _ForwardIterator1 5209: search(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 5209: _ForwardIterator2 __first2, _ForwardIterator2 __last2) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: ; 5209: 5209: return std::__search(__first1, __last1, __first2, __last2, 5209: __gnu_cxx::__ops::__iter_equal_to_iter()); 5209: } 5209: # 4329 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline _ForwardIterator1 5209: search(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 5209: _ForwardIterator2 __first2, _ForwardIterator2 __last2, 5209: _BinaryPredicate __predicate) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: ; 5209: 5209: return std::__search(__first1, __last1, __first2, __last2, 5209: __gnu_cxx::__ops::__iter_comp_iter(__predicate)); 5209: } 5209: # 4365 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline _ForwardIterator 5209: search_n(_ForwardIterator __first, _ForwardIterator __last, 5209: _Integer __count, const _Tp& __val) 5209: { 5209: 5209: 5209: 5209: 5209: ; 5209: 5209: return std::__search_n(__first, __last, __count, 5209: __gnu_cxx::__ops::__iter_equals_val(__val)); 5209: } 5209: # 4399 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline _ForwardIterator 5209: search_n(_ForwardIterator __first, _ForwardIterator __last, 5209: _Integer __count, const _Tp& __val, 5209: _BinaryPredicate __binary_pred) 5209: { 5209: 5209: 5209: 5209: 5209: ; 5209: 5209: return std::__search_n(__first, __last, __count, 5209: __gnu_cxx::__ops::__iter_comp_val(__binary_pred, __val)); 5209: } 5209: # 4448 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: _OutputIterator 5209: transform(_InputIterator __first, _InputIterator __last, 5209: _OutputIterator __result, _UnaryOperation __unary_op) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: 5209: for (; __first != __last; ++__first, (void)++__result) 5209: *__result = __unary_op(*__first); 5209: return __result; 5209: } 5209: # 4486 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: _OutputIterator 5209: transform(_InputIterator1 __first1, _InputIterator1 __last1, 5209: _InputIterator2 __first2, _OutputIterator __result, 5209: _BinaryOperation __binary_op) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: 5209: for (; __first1 != __last1; ++__first1, (void)++__first2, ++__result) 5209: *__result = __binary_op(*__first1, *__first2); 5209: return __result; 5209: } 5209: # 4520 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: void 5209: replace(_ForwardIterator __first, _ForwardIterator __last, 5209: const _Tp& __old_value, const _Tp& __new_value) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: 5209: for (; __first != __last; ++__first) 5209: if (*__first == __old_value) 5209: *__first = __new_value; 5209: } 5209: # 4553 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: void 5209: replace_if(_ForwardIterator __first, _ForwardIterator __last, 5209: _Predicate __pred, const _Tp& __new_value) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: 5209: for (; __first != __last; ++__first) 5209: if (__pred(*__first)) 5209: *__first = __new_value; 5209: } 5209: # 4586 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: void 5209: generate(_ForwardIterator __first, _ForwardIterator __last, 5209: _Generator __gen) 5209: { 5209: 5209: 5209: 5209: 5209: ; 5209: 5209: for (; __first != __last; ++__first) 5209: *__first = __gen(); 5209: } 5209: # 4620 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: _OutputIterator 5209: generate_n(_OutputIterator __first, _Size __n, _Generator __gen) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: typedef __decltype(std::__size_to_integer(__n)) _IntSize; 5209: for (_IntSize __niter = std::__size_to_integer(__n); 5209: __niter > 0; --__niter, (void) ++__first) 5209: *__first = __gen(); 5209: return __first; 5209: } 5209: # 4658 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline _OutputIterator 5209: unique_copy(_InputIterator __first, _InputIterator __last, 5209: _OutputIterator __result) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: 5209: if (__first == __last) 5209: return __result; 5209: return std::__unique_copy(__first, __last, __result, 5209: __gnu_cxx::__ops::__iter_equal_to_iter(), 5209: std::__iterator_category(__first), 5209: std::__iterator_category(__result)); 5209: } 5209: # 4699 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline _OutputIterator 5209: unique_copy(_InputIterator __first, _InputIterator __last, 5209: _OutputIterator __result, 5209: _BinaryPredicate __binary_pred) 5209: { 5209: 5209: 5209: 5209: 5209: ; 5209: 5209: if (__first == __last) 5209: return __result; 5209: return std::__unique_copy(__first, __last, __result, 5209: __gnu_cxx::__ops::__iter_comp_iter(__binary_pred), 5209: std::__iterator_category(__first), 5209: std::__iterator_category(__result)); 5209: } 5209: # 4733 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: inline void 5209: random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last) 5209: { 5209: 5209: 5209: 5209: ; 5209: 5209: if (__first != __last) 5209: for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) 5209: { 5209: 5209: _RandomAccessIterator __j = __first 5209: + std::rand() % ((__i - __first) + 1); 5209: if (__i != __j) 5209: std::iter_swap(__i, __j); 5209: } 5209: } 5209: # 4768 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: void 5209: random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last, 5209: 5209: _RandomNumberGenerator&& __rand) 5209: 5209: 5209: 5209: { 5209: 5209: 5209: 5209: ; 5209: 5209: if (__first == __last) 5209: return; 5209: for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) 5209: { 5209: _RandomAccessIterator __j = __first + __rand((__i - __first) + 1); 5209: if (__i != __j) 5209: std::iter_swap(__i, __j); 5209: } 5209: } 5209: # 4808 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline _ForwardIterator 5209: partition(_ForwardIterator __first, _ForwardIterator __last, 5209: _Predicate __pred) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: 5209: return std::__partition(__first, __last, __pred, 5209: std::__iterator_category(__first)); 5209: } 5209: # 4842 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline void 5209: partial_sort(_RandomAccessIterator __first, 5209: _RandomAccessIterator __middle, 5209: _RandomAccessIterator __last) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: ; 5209: ; 5209: 5209: std::__partial_sort(__first, __middle, __last, 5209: __gnu_cxx::__ops::__iter_less_iter()); 5209: } 5209: # 4881 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline void 5209: partial_sort(_RandomAccessIterator __first, 5209: _RandomAccessIterator __middle, 5209: _RandomAccessIterator __last, 5209: _Compare __comp) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: ; 5209: ; 5209: 5209: std::__partial_sort(__first, __middle, __last, 5209: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 5209: } 5209: # 4918 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline void 5209: nth_element(_RandomAccessIterator __first, _RandomAccessIterator __nth, 5209: _RandomAccessIterator __last) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: ; 5209: ; 5209: 5209: if (__first == __last || __nth == __last) 5209: return; 5209: 5209: std::__introselect(__first, __nth, __last, 5209: std::__lg(__last - __first) * 2, 5209: __gnu_cxx::__ops::__iter_less_iter()); 5209: } 5209: # 4958 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline void 5209: nth_element(_RandomAccessIterator __first, _RandomAccessIterator __nth, 5209: _RandomAccessIterator __last, _Compare __comp) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: ; 5209: ; 5209: 5209: if (__first == __last || __nth == __last) 5209: return; 5209: 5209: std::__introselect(__first, __nth, __last, 5209: std::__lg(__last - __first) * 2, 5209: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 5209: } 5209: # 4996 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline void 5209: sort(_RandomAccessIterator __first, _RandomAccessIterator __last) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: ; 5209: 5209: std::__sort(__first, __last, __gnu_cxx::__ops::__iter_less_iter()); 5209: } 5209: # 5027 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline void 5209: sort(_RandomAccessIterator __first, _RandomAccessIterator __last, 5209: _Compare __comp) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: ; 5209: 5209: std::__sort(__first, __last, __gnu_cxx::__ops::__iter_comp_iter(__comp)); 5209: } 5209: 5209: template 5209: 5209: _OutputIterator 5209: __merge(_InputIterator1 __first1, _InputIterator1 __last1, 5209: _InputIterator2 __first2, _InputIterator2 __last2, 5209: _OutputIterator __result, _Compare __comp) 5209: { 5209: while (__first1 != __last1 && __first2 != __last2) 5209: { 5209: if (__comp(__first2, __first1)) 5209: { 5209: *__result = *__first2; 5209: ++__first2; 5209: } 5209: else 5209: { 5209: *__result = *__first1; 5209: ++__first1; 5209: } 5209: ++__result; 5209: } 5209: return std::copy(__first2, __last2, 5209: std::copy(__first1, __last1, __result)); 5209: } 5209: # 5090 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline _OutputIterator 5209: merge(_InputIterator1 __first1, _InputIterator1 __last1, 5209: _InputIterator2 __first2, _InputIterator2 __last2, 5209: _OutputIterator __result) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: ; 5209: ; 5209: ; 5209: 5209: return std::__merge(__first1, __last1, 5209: __first2, __last2, __result, 5209: __gnu_cxx::__ops::__iter_less_iter()); 5209: } 5209: # 5141 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline _OutputIterator 5209: merge(_InputIterator1 __first1, _InputIterator1 __last1, 5209: _InputIterator2 __first2, _InputIterator2 __last2, 5209: _OutputIterator __result, _Compare __comp) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: ; 5209: ; 5209: ; 5209: 5209: return std::__merge(__first1, __last1, 5209: __first2, __last2, __result, 5209: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 5209: } 5209: 5209: template 5209: inline void 5209: __stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last, 5209: _Compare __comp) 5209: { 5209: typedef typename iterator_traits<_RandomAccessIterator>::value_type 5209: _ValueType; 5209: typedef typename iterator_traits<_RandomAccessIterator>::difference_type 5209: _DistanceType; 5209: 5209: typedef _Temporary_buffer<_RandomAccessIterator, _ValueType> _TmpBuf; 5209: _TmpBuf __buf(__first, std::distance(__first, __last)); 5209: 5209: if (__buf.begin() == 0) 5209: std::__inplace_stable_sort(__first, __last, __comp); 5209: else 5209: std::__stable_sort_adaptive(__first, __last, __buf.begin(), 5209: _DistanceType(__buf.size()), __comp); 5209: } 5209: # 5206 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: inline void 5209: stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: ; 5209: 5209: std::__stable_sort(__first, __last, 5209: __gnu_cxx::__ops::__iter_less_iter()); 5209: } 5209: # 5240 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: inline void 5209: stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last, 5209: _Compare __comp) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: ; 5209: 5209: std::__stable_sort(__first, __last, 5209: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 5209: } 5209: 5209: template 5209: 5209: _OutputIterator 5209: __set_union(_InputIterator1 __first1, _InputIterator1 __last1, 5209: _InputIterator2 __first2, _InputIterator2 __last2, 5209: _OutputIterator __result, _Compare __comp) 5209: { 5209: while (__first1 != __last1 && __first2 != __last2) 5209: { 5209: if (__comp(__first1, __first2)) 5209: { 5209: *__result = *__first1; 5209: ++__first1; 5209: } 5209: else if (__comp(__first2, __first1)) 5209: { 5209: *__result = *__first2; 5209: ++__first2; 5209: } 5209: else 5209: { 5209: *__result = *__first1; 5209: ++__first1; 5209: ++__first2; 5209: } 5209: ++__result; 5209: } 5209: return std::copy(__first2, __last2, 5209: std::copy(__first1, __last1, __result)); 5209: } 5209: # 5310 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline _OutputIterator 5209: set_union(_InputIterator1 __first1, _InputIterator1 __last1, 5209: _InputIterator2 __first2, _InputIterator2 __last2, 5209: _OutputIterator __result) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: ; 5209: ; 5209: ; 5209: 5209: return std::__set_union(__first1, __last1, 5209: __first2, __last2, __result, 5209: __gnu_cxx::__ops::__iter_less_iter()); 5209: } 5209: # 5361 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline _OutputIterator 5209: set_union(_InputIterator1 __first1, _InputIterator1 __last1, 5209: _InputIterator2 __first2, _InputIterator2 __last2, 5209: _OutputIterator __result, _Compare __comp) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: ; 5209: ; 5209: ; 5209: 5209: return std::__set_union(__first1, __last1, 5209: __first2, __last2, __result, 5209: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 5209: } 5209: 5209: template 5209: 5209: _OutputIterator 5209: __set_intersection(_InputIterator1 __first1, _InputIterator1 __last1, 5209: _InputIterator2 __first2, _InputIterator2 __last2, 5209: _OutputIterator __result, _Compare __comp) 5209: { 5209: while (__first1 != __last1 && __first2 != __last2) 5209: if (__comp(__first1, __first2)) 5209: ++__first1; 5209: else if (__comp(__first2, __first1)) 5209: ++__first2; 5209: else 5209: { 5209: *__result = *__first1; 5209: ++__first1; 5209: ++__first2; 5209: ++__result; 5209: } 5209: return __result; 5209: } 5209: # 5434 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline _OutputIterator 5209: set_intersection(_InputIterator1 __first1, _InputIterator1 __last1, 5209: _InputIterator2 __first2, _InputIterator2 __last2, 5209: _OutputIterator __result) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: ; 5209: ; 5209: ; 5209: 5209: return std::__set_intersection(__first1, __last1, 5209: __first2, __last2, __result, 5209: __gnu_cxx::__ops::__iter_less_iter()); 5209: } 5209: # 5484 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline _OutputIterator 5209: set_intersection(_InputIterator1 __first1, _InputIterator1 __last1, 5209: _InputIterator2 __first2, _InputIterator2 __last2, 5209: _OutputIterator __result, _Compare __comp) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: ; 5209: ; 5209: ; 5209: 5209: return std::__set_intersection(__first1, __last1, 5209: __first2, __last2, __result, 5209: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 5209: } 5209: 5209: template 5209: 5209: _OutputIterator 5209: __set_difference(_InputIterator1 __first1, _InputIterator1 __last1, 5209: _InputIterator2 __first2, _InputIterator2 __last2, 5209: _OutputIterator __result, _Compare __comp) 5209: { 5209: while (__first1 != __last1 && __first2 != __last2) 5209: if (__comp(__first1, __first2)) 5209: { 5209: *__result = *__first1; 5209: ++__first1; 5209: ++__result; 5209: } 5209: else if (__comp(__first2, __first1)) 5209: ++__first2; 5209: else 5209: { 5209: ++__first1; 5209: ++__first2; 5209: } 5209: return std::copy(__first1, __last1, __result); 5209: } 5209: # 5559 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline _OutputIterator 5209: set_difference(_InputIterator1 __first1, _InputIterator1 __last1, 5209: _InputIterator2 __first2, _InputIterator2 __last2, 5209: _OutputIterator __result) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: ; 5209: ; 5209: ; 5209: 5209: return std::__set_difference(__first1, __last1, 5209: __first2, __last2, __result, 5209: __gnu_cxx::__ops::__iter_less_iter()); 5209: } 5209: # 5611 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline _OutputIterator 5209: set_difference(_InputIterator1 __first1, _InputIterator1 __last1, 5209: _InputIterator2 __first2, _InputIterator2 __last2, 5209: _OutputIterator __result, _Compare __comp) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: ; 5209: ; 5209: ; 5209: 5209: return std::__set_difference(__first1, __last1, 5209: __first2, __last2, __result, 5209: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 5209: } 5209: 5209: template 5209: 5209: _OutputIterator 5209: __set_symmetric_difference(_InputIterator1 __first1, 5209: _InputIterator1 __last1, 5209: _InputIterator2 __first2, 5209: _InputIterator2 __last2, 5209: _OutputIterator __result, 5209: _Compare __comp) 5209: { 5209: while (__first1 != __last1 && __first2 != __last2) 5209: if (__comp(__first1, __first2)) 5209: { 5209: *__result = *__first1; 5209: ++__first1; 5209: ++__result; 5209: } 5209: else if (__comp(__first2, __first1)) 5209: { 5209: *__result = *__first2; 5209: ++__first2; 5209: ++__result; 5209: } 5209: else 5209: { 5209: ++__first1; 5209: ++__first2; 5209: } 5209: return std::copy(__first2, __last2, 5209: std::copy(__first1, __last1, __result)); 5209: } 5209: # 5692 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline _OutputIterator 5209: set_symmetric_difference(_InputIterator1 __first1, _InputIterator1 __last1, 5209: _InputIterator2 __first2, _InputIterator2 __last2, 5209: _OutputIterator __result) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: ; 5209: ; 5209: ; 5209: 5209: return std::__set_symmetric_difference(__first1, __last1, 5209: __first2, __last2, __result, 5209: __gnu_cxx::__ops::__iter_less_iter()); 5209: } 5209: # 5744 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline _OutputIterator 5209: set_symmetric_difference(_InputIterator1 __first1, _InputIterator1 __last1, 5209: _InputIterator2 __first2, _InputIterator2 __last2, 5209: _OutputIterator __result, 5209: _Compare __comp) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: ; 5209: ; 5209: ; 5209: 5209: return std::__set_symmetric_difference(__first1, __last1, 5209: __first2, __last2, __result, 5209: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 5209: } 5209: 5209: template 5209: 5209: _ForwardIterator 5209: __min_element(_ForwardIterator __first, _ForwardIterator __last, 5209: _Compare __comp) 5209: { 5209: if (__first == __last) 5209: return __first; 5209: _ForwardIterator __result = __first; 5209: while (++__first != __last) 5209: if (__comp(__first, __result)) 5209: __result = __first; 5209: return __result; 5209: } 5209: # 5798 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: _ForwardIterator 5209: inline min_element(_ForwardIterator __first, _ForwardIterator __last) 5209: { 5209: 5209: 5209: 5209: 5209: ; 5209: ; 5209: 5209: return std::__min_element(__first, __last, 5209: __gnu_cxx::__ops::__iter_less_iter()); 5209: } 5209: # 5823 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline _ForwardIterator 5209: min_element(_ForwardIterator __first, _ForwardIterator __last, 5209: _Compare __comp) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: ; 5209: 5209: return std::__min_element(__first, __last, 5209: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 5209: } 5209: 5209: template 5209: 5209: _ForwardIterator 5209: __max_element(_ForwardIterator __first, _ForwardIterator __last, 5209: _Compare __comp) 5209: { 5209: if (__first == __last) return __first; 5209: _ForwardIterator __result = __first; 5209: while (++__first != __last) 5209: if (__comp(__result, __first)) 5209: __result = __first; 5209: return __result; 5209: } 5209: # 5862 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline _ForwardIterator 5209: max_element(_ForwardIterator __first, _ForwardIterator __last) 5209: { 5209: 5209: 5209: 5209: 5209: ; 5209: ; 5209: 5209: return std::__max_element(__first, __last, 5209: __gnu_cxx::__ops::__iter_less_iter()); 5209: } 5209: # 5887 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: template 5209: 5209: inline _ForwardIterator 5209: max_element(_ForwardIterator __first, _ForwardIterator __last, 5209: _Compare __comp) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: ; 5209: ; 5209: 5209: return std::__max_element(__first, __last, 5209: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 5209: } 5209: # 6030 "/usr/include/c++/10/bits/stl_algo.h" 3 5209: 5209: 5209: } 5209: # 63 "/usr/include/c++/10/algorithm" 2 3 5209: # 25 "/<>/test/../public/../internal/../internal/common.h" 2 5209: # 1 "/usr/include/c++/10/cassert" 1 3 5209: # 41 "/usr/include/c++/10/cassert" 3 5209: 5209: # 42 "/usr/include/c++/10/cassert" 3 5209: 5209: 5209: # 1 "/usr/include/assert.h" 1 3 4 5209: # 66 "/usr/include/assert.h" 3 4 5209: extern "C" { 5209: 5209: 5209: extern void __assert_fail (const char *__assertion, const char *__file, 5209: unsigned int __line, const char *__function) 5209: throw () __attribute__ ((__noreturn__)); 5209: 5209: 5209: extern void __assert_perror_fail (int __errnum, const char *__file, 5209: unsigned int __line, const char *__function) 5209: throw () __attribute__ ((__noreturn__)); 5209: 5209: 5209: 5209: 5209: extern void __assert (const char *__assertion, const char *__file, int __line) 5209: throw () __attribute__ ((__noreturn__)); 5209: 5209: 5209: } 5209: # 45 "/usr/include/c++/10/cassert" 2 3 5209: # 26 "/<>/test/../public/../internal/../internal/common.h" 2 5209: # 1 "/usr/include/c++/10/cmath" 1 3 5209: # 39 "/usr/include/c++/10/cmath" 3 5209: 5209: # 40 "/usr/include/c++/10/cmath" 3 5209: # 27 "/<>/test/../public/../internal/../internal/common.h" 2 5209: # 1 "/usr/include/c++/10/cstdlib" 1 3 5209: # 39 "/usr/include/c++/10/cstdlib" 3 5209: 5209: # 40 "/usr/include/c++/10/cstdlib" 3 5209: # 28 "/<>/test/../public/../internal/../internal/common.h" 2 5209: 5209: # 1 "/<>/test/../public/../internal/../internal/../internal/detect_platform.h" 1 5209: # 30 "/<>/test/../public/../internal/../internal/common.h" 2 5209: # 1 "/<>/test/../public/../internal/../internal/../profiling/instrumentation.h" 1 5209: # 27 "/<>/test/../public/../internal/../internal/../profiling/instrumentation.h" 5209: # 1 "/usr/include/c++/10/cstdio" 1 3 5209: # 39 "/usr/include/c++/10/cstdio" 3 5209: 5209: # 40 "/usr/include/c++/10/cstdio" 3 5209: # 28 "/<>/test/../public/../internal/../internal/../profiling/instrumentation.h" 2 5209: # 46 "/<>/test/../public/../internal/../internal/../profiling/instrumentation.h" 5209: # 1 "/usr/include/c++/10/cassert" 1 3 5209: # 41 "/usr/include/c++/10/cassert" 3 5209: 5209: # 42 "/usr/include/c++/10/cassert" 3 5209: 5209: 5209: # 1 "/usr/include/assert.h" 1 3 4 5209: # 45 "/usr/include/c++/10/cassert" 2 3 5209: # 47 "/<>/test/../public/../internal/../internal/../profiling/instrumentation.h" 2 5209: # 1 "/usr/include/c++/10/cstdlib" 1 3 5209: # 39 "/usr/include/c++/10/cstdlib" 3 5209: 5209: # 40 "/usr/include/c++/10/cstdlib" 3 5209: # 48 "/<>/test/../public/../internal/../internal/../profiling/instrumentation.h" 2 5209: 5209: 5209: 5209: 5209: 5209: 5209: # 1 "/<>/test/../public/../internal/../internal/../profiling/./pthread_everywhere.h" 1 5209: # 55 "/<>/test/../public/../internal/../internal/../profiling/instrumentation.h" 2 5209: 5209: 5209: # 56 "/<>/test/../public/../internal/../internal/../profiling/instrumentation.h" 5209: namespace gemmlowp { 5209: 5209: inline void ReleaseBuildAssertion(bool condition, const char* msg) { 5209: if (!condition) { 5209: fprintf( 5209: # 60 "/<>/test/../public/../internal/../internal/../profiling/instrumentation.h" 3 4 5209: stderr 5209: # 60 "/<>/test/../public/../internal/../internal/../profiling/instrumentation.h" 5209: , "gemmlowp error: %s\n", msg); 5209: abort(); 5209: } 5209: } 5209: 5209: class Mutex { 5209: public: 5209: Mutex(const Mutex&) = delete; 5209: Mutex& operator=(const Mutex&) = delete; 5209: 5209: Mutex() { pthread_mutex_init(&m, 5209: # 70 "/<>/test/../public/../internal/../internal/../profiling/instrumentation.h" 3 4 5209: __null 5209: # 70 "/<>/test/../public/../internal/../internal/../profiling/instrumentation.h" 5209: ); } 5209: ~Mutex() { pthread_mutex_destroy(&m); } 5209: 5209: void Lock() { pthread_mutex_lock(&m); } 5209: void Unlock() { pthread_mutex_unlock(&m); } 5209: 5209: private: 5209: pthread_mutex_t m; 5209: }; 5209: 5209: class GlobalMutexes { 5209: public: 5209: static Mutex* Profiler() { 5209: static Mutex m; 5209: return &m; 5209: } 5209: 5209: static Mutex* EightBitIntGemm() { 5209: static Mutex m; 5209: return &m; 5209: } 5209: }; 5209: 5209: 5209: struct ScopedLock { 5209: ScopedLock(Mutex* m) : _m(m) { _m->Lock(); } 5209: ~ScopedLock() { _m->Unlock(); } 5209: 5209: private: 5209: Mutex* _m; 5209: }; 5209: # 232 "/<>/test/../public/../internal/../internal/../profiling/instrumentation.h" 5209: struct ScopedProfilingLabel { 5209: explicit ScopedProfilingLabel(const char*) {} 5209: void Update(const char*) {} 5209: }; 5209: 5209: inline void RegisterCurrentThreadForProfiling() {} 5209: 5209: 5209: 5209: } 5209: # 31 "/<>/test/../public/../internal/../internal/common.h" 2 5209: 5209: namespace gemmlowp { 5209: 5209: 5209: 5209: 5209: 5209: 5209: const int kDefaultCacheLineSize = 64; 5209: # 66 "/<>/test/../public/../internal/../internal/common.h" 5209: const int kDefaultL1CacheSize = 16 * 1024; 5209: const int kDefaultL2CacheSize = 384 * 1024; 5209: # 99 "/<>/test/../public/../internal/../internal/common.h" 5209: const float kDefaultL2RhsFactor = 0.75f; 5209: # 114 "/<>/test/../public/../internal/../internal/common.h" 5209: const int kRegisterSize = 16; 5209: 5209: 5209: 5209: inline void Prefetch(const void* ptr) { 5209: 5209: 5209: 5209: 5209: 5209: 5209: asm volatile("prfm pldl1keep, [%[ptr]]\n" ::[ptr] "r"(ptr) :); 5209: 5209: 5209: 5209: 5209: 5209: 5209: } 5209: 5209: 5209: 5209: template 5209: Integer RoundDown(Integer i) { 5209: return i - (i % Modulus); 5209: } 5209: 5209: 5209: 5209: template 5209: Integer RoundUp(Integer i) { 5209: return RoundDown(i + Modulus - 1); 5209: } 5209: 5209: 5209: template 5209: Integer CeilQuotient(Integer a, Integer b) { 5209: return (a + b - 1) / b; 5209: } 5209: 5209: 5209: template 5209: Integer RoundUpToPowerOfTwo(Integer n) { 5209: Integer i = n - 1; 5209: i |= i >> 1; 5209: i |= i >> 2; 5209: i |= i >> 4; 5209: i |= i >> 8; 5209: i |= i >> 16; 5209: return i + 1; 5209: } 5209: 5209: template 5209: struct IsPowerOfTwo { 5209: static const bool value = !(N & (N - 1)); 5209: }; 5209: 5209: template 5209: void MarkMemoryAsInitialized(T* ptr, int size) { 5209: 5209: 5209: 5209: 5209: (void)ptr; 5209: (void)size; 5209: 5209: } 5209: 5209: } 5209: # 23 "/<>/test/../public/../internal/../internal/kernel_default.h" 2 5209: # 1 "/<>/test/../public/../internal/../internal/kernel.h" 1 5209: # 23 "/<>/test/../public/../internal/../internal/kernel.h" 5209: namespace gemmlowp { 5209: # 123 "/<>/test/../public/../internal/../internal/kernel.h" 5209: enum class CellOrder { DepthMajor, WidthMajor, Diagonal }; 5209: 5209: 5209: 5209: template 5209: struct CellFormat { 5209: static const int kWidth = tWidth; 5209: static const int kDepth = tDepth; 5209: static const CellOrder kOrder = tOrder; 5209: 5209: static const int kSize = kWidth * kDepth; 5209: }; 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: struct KernelSideFormat { 5209: typedef tCellFormat Cell; 5209: static const int kCells = tCells; 5209: static const int kWidth = kCells * Cell::kWidth; 5209: static const int kDepth = Cell::kDepth; 5209: typedef std::uint8_t Scalar; 5209: typedef std::uint8_t InputScalar; 5209: }; 5209: 5209: 5209: 5209: template 5209: struct KernelSideFormatInt8 : KernelSideFormat { 5209: typedef std::int8_t Scalar; 5209: typedef std::uint8_t InputScalar; 5209: }; 5209: 5209: 5209: 5209: template 5209: struct KernelSideFormatInt8Inputs : KernelSideFormat { 5209: typedef std::int8_t Scalar; 5209: typedef std::int8_t InputScalar; 5209: }; 5209: 5209: 5209: 5209: template 5209: struct KernelFormat { 5209: typedef tLhs Lhs; 5209: typedef tRhs Rhs; 5209: 5209: static_assert(Lhs::Cell::kDepth == Rhs::Cell::kDepth, ""); 5209: static const int kDepth = Lhs::Cell::kDepth; 5209: static const int kRows = Lhs::Cell::kWidth * Lhs::kCells; 5209: static const int kCols = Rhs::Cell::kWidth * Rhs::kCells; 5209: }; 5209: 5209: inline const char* CellOrderName(CellOrder o) { 5209: switch (o) { 5209: case CellOrder::DepthMajor: 5209: return "DepthMajor"; 5209: case CellOrder::WidthMajor: 5209: return "WidthMajor"; 5209: case CellOrder::Diagonal: 5209: return "Diagonal"; 5209: default: 5209: 5209: # 190 "/<>/test/../public/../internal/../internal/kernel.h" 3 4 5209: (static_cast ( 5209: # 190 "/<>/test/../public/../internal/../internal/kernel.h" 5209: false 5209: # 190 "/<>/test/../public/../internal/../internal/kernel.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 190 "/<>/test/../public/../internal/../internal/kernel.h" 5209: "false" 5209: # 190 "/<>/test/../public/../internal/../internal/kernel.h" 3 4 5209: , "/<>/test/../public/../internal/../internal/kernel.h", 190, __extension__ __PRETTY_FUNCTION__)) 5209: # 190 "/<>/test/../public/../internal/../internal/kernel.h" 5209: ; 5209: return nullptr; 5209: } 5209: } 5209: 5209: 5209: template 5209: inline int OffsetIntoCell(int w, int d) { 5209: const int size = CellFormat::kWidth; 5209: switch (CellFormat::kOrder) { 5209: case CellOrder::DepthMajor: 5209: return w + d * CellFormat::kWidth; 5209: case CellOrder::WidthMajor: 5209: return d + w * CellFormat::kDepth; 5209: case CellOrder::Diagonal: 5209: 5209: # 205 "/<>/test/../public/../internal/../internal/kernel.h" 3 4 5209: (static_cast ( 5209: # 205 "/<>/test/../public/../internal/../internal/kernel.h" 5209: CellFormat::kWidth == CellFormat::kDepth 5209: # 205 "/<>/test/../public/../internal/../internal/kernel.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 205 "/<>/test/../public/../internal/../internal/kernel.h" 5209: "CellFormat::kWidth == CellFormat::kDepth" 5209: # 205 "/<>/test/../public/../internal/../internal/kernel.h" 3 4 5209: , "/<>/test/../public/../internal/../internal/kernel.h", 205, __extension__ __PRETTY_FUNCTION__)) 5209: # 205 "/<>/test/../public/../internal/../internal/kernel.h" 5209: ; 5209: return ((size + w - d) * size + d) % (size * size); 5209: default: 5209: 5209: # 208 "/<>/test/../public/../internal/../internal/kernel.h" 3 4 5209: (static_cast ( 5209: # 208 "/<>/test/../public/../internal/../internal/kernel.h" 5209: false 5209: # 208 "/<>/test/../public/../internal/../internal/kernel.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 208 "/<>/test/../public/../internal/../internal/kernel.h" 5209: "false" 5209: # 208 "/<>/test/../public/../internal/../internal/kernel.h" 3 4 5209: , "/<>/test/../public/../internal/../internal/kernel.h", 208, __extension__ __PRETTY_FUNCTION__)) 5209: # 208 "/<>/test/../public/../internal/../internal/kernel.h" 5209: ; 5209: return 0; 5209: } 5209: } 5209: 5209: 5209: 5209: 5209: 5209: struct KernelBase { 5209: virtual const char* Name() const = 0; 5209: 5209: 5209: 5209: 5209: virtual void Run(std::int32_t* dst_ptr, std::size_t dst_row_stride, 5209: std::size_t dst_col_stride, const std::uint8_t* lhs_ptr, 5209: const std::uint8_t* rhs_ptr, std::size_t start_depth, 5209: std::size_t run_depth) const = 0; 5209: 5209: virtual ~KernelBase() {} 5209: }; 5209: 5209: template 5209: struct ZeroPointInputValue {}; 5209: 5209: template <> 5209: struct ZeroPointInputValue { 5209: static constexpr std::uint8_t kValue = 0; 5209: }; 5209: 5209: template <> 5209: struct ZeroPointInputValue { 5209: static constexpr std::uint8_t kValue = 128; 5209: }; 5209: 5209: template <> 5209: struct ZeroPointInputValue { 5209: static constexpr std::uint8_t kValue = 0; 5209: }; 5209: 5209: } 5209: # 24 "/<>/test/../public/../internal/../internal/kernel_default.h" 2 5209: # 1 "/<>/test/../public/../internal/../internal/kernel_reference.h" 1 5209: # 25 "/<>/test/../public/../internal/../internal/kernel_reference.h" 5209: # 1 "/usr/include/c++/10/cstdio" 1 3 5209: # 39 "/usr/include/c++/10/cstdio" 3 5209: 5209: # 40 "/usr/include/c++/10/cstdio" 3 5209: # 26 "/<>/test/../public/../internal/../internal/kernel_reference.h" 2 5209: # 1 "/usr/include/c++/10/cstring" 1 3 5209: # 39 "/usr/include/c++/10/cstring" 3 5209: 5209: # 40 "/usr/include/c++/10/cstring" 3 5209: # 27 "/<>/test/../public/../internal/../internal/kernel_reference.h" 2 5209: 5209: namespace gemmlowp { 5209: 5209: 5209: 5209: template 5209: struct ReferenceKernel : KernelBase { 5209: typedef tFormat Format; 5209: 5209: const char* Name() const override { 5209: static char buf[256]; 5209: snprintf(buf, sizeof(buf), 5209: "reference(Lhs: %d cells %dx%d %s, Rhs: %d cells %dx%d %s)", 5209: Format::Lhs::kCells, Format::Lhs::Cell::kWidth, 5209: Format::Lhs::Cell::kDepth, 5209: CellOrderName(Format::Lhs::Cell::kOrder), Format::Rhs::kCells, 5209: Format::Rhs::Cell::kDepth, Format::Rhs::Cell::kWidth, 5209: CellOrderName(Format::Rhs::Cell::kOrder)); 5209: return buf; 5209: } 5209: 5209: void Run(std::int32_t* dst_ptr, std::size_t dst_row_stride, 5209: std::size_t dst_col_stride, const std::uint8_t* lhs_ptr, 5209: const std::uint8_t* rhs_ptr, std::size_t start_depth, 5209: std::size_t run_depth) const override { 5209: std::int32_t accumulator[Format::kRows * Format::kCols]; 5209: memset(accumulator, 0, sizeof(accumulator)); 5209: 5209: const int run_depth_cells = static_cast(run_depth / Format::kDepth); 5209: 5209: 5209: for (int dc = 0; dc < run_depth_cells; dc++) { 5209: 5209: 5209: for (int rc = 0; rc < Format::Lhs::kCells; rc++) { 5209: const std::uint8_t* lhs_cell_ptr = 5209: lhs_ptr + (dc * Format::Lhs::kCells + rc) * 5209: Format::Lhs::Cell::kWidth * Format::kDepth; 5209: for (int cc = 0; cc < Format::Rhs::kCells; cc++) { 5209: const std::uint8_t* rhs_cell_ptr = 5209: rhs_ptr + (dc * Format::Rhs::kCells + cc) * 5209: Format::Rhs::Cell::kWidth * Format::kDepth; 5209: 5209: 5209: 5209: 5209: for (int di = 0; di < Format::kDepth; di++) { 5209: for (int ri = 0; ri < Format::Lhs::Cell::kWidth; ri++) { 5209: for (int ci = 0; ci < Format::Rhs::Cell::kWidth; ci++) { 5209: const std::uint8_t* lhs_coeff_ptr = 5209: lhs_cell_ptr + 5209: OffsetIntoCell(ri, di); 5209: const std::uint8_t* rhs_coeff_ptr = 5209: rhs_cell_ptr + 5209: OffsetIntoCell(ci, di); 5209: std::int32_t* accumulator_coeff_ptr = 5209: accumulator + (ri + rc * Format::Lhs::Cell::kWidth) + 5209: (ci + cc * Format::Rhs::Cell::kWidth) * Format::kRows; 5209: *accumulator_coeff_ptr += 5209: std::int32_t(*lhs_coeff_ptr) * std::int32_t(*rhs_coeff_ptr); 5209: } 5209: } 5209: } 5209: } 5209: } 5209: } 5209: 5209: if (start_depth == 0) { 5209: 5209: 5209: for (int r = 0; r < Format::kRows; r++) { 5209: for (int c = 0; c < Format::kCols; c++) { 5209: dst_ptr[r * dst_row_stride + c * dst_col_stride] = 5209: accumulator[r + c * Format::kRows]; 5209: } 5209: } 5209: } else { 5209: 5209: 5209: for (int r = 0; r < Format::kRows; r++) { 5209: for (int c = 0; c < Format::kCols; c++) { 5209: dst_ptr[r * dst_row_stride + c * dst_col_stride] += 5209: accumulator[r + c * Format::kRows]; 5209: } 5209: } 5209: } 5209: } 5209: }; 5209: 5209: } 5209: # 25 "/<>/test/../public/../internal/../internal/kernel_default.h" 2 5209: 5209: namespace gemmlowp { 5209: 5209: template 5209: struct DefaultKernelImpl {}; 5209: 5209: 5209: 5209: 5209: 5209: template 5209: struct DefaultKernelImpl 5209: : DefaultKernelImpl {}; 5209: 5209: 5209: 5209: 5209: template 5209: struct DefaultKernelImpl 5209: : DefaultKernelImpl {}; 5209: 5209: template 5209: struct DefaultKernel 5209: : DefaultKernelImpl<(BitDepthParams::LhsRange::kMaxValue * 5209: BitDepthParams::RhsRange::kMaxValue < 5209: 4096), 5209: (BitDepthParams::LhsRange::kMinValue >= 0), 5209: (BitDepthParams::LhsRange::kMinValue > 0 || 5209: (BitDepthParams::LhsRange::kMaxValue <= 127 && 5209: BitDepthParams::LhsRange::kMinValue > -128))> {}; 5209: 5209: } 5209: # 77 "/<>/test/../public/../internal/../internal/kernel_default.h" 5209: # 1 "/<>/test/../public/../internal/../internal/kernel_neon.h" 1 5209: # 25 "/<>/test/../public/../internal/../internal/kernel_neon.h" 5209: # 1 "/usr/lib/gcc/aarch64-linux-gnu/10/include/arm_neon.h" 1 3 4 5209: # 30 "/usr/lib/gcc/aarch64-linux-gnu/10/include/arm_neon.h" 3 4 5209: #pragma GCC push_options 5209: #pragma GCC target ("+nothing+simd") 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: # 38 "/usr/lib/gcc/aarch64-linux-gnu/10/include/arm_neon.h" 3 4 5209: typedef __Int8x8_t int8x8_t; 5209: typedef __Int16x4_t int16x4_t; 5209: typedef __Int32x2_t int32x2_t; 5209: typedef __Int64x1_t int64x1_t; 5209: typedef __Float16x4_t float16x4_t; 5209: typedef __Float32x2_t float32x2_t; 5209: typedef __Poly8x8_t poly8x8_t; 5209: typedef __Poly16x4_t poly16x4_t; 5209: typedef __Uint8x8_t uint8x8_t; 5209: typedef __Uint16x4_t uint16x4_t; 5209: typedef __Uint32x2_t uint32x2_t; 5209: typedef __Float64x1_t float64x1_t; 5209: typedef __Uint64x1_t uint64x1_t; 5209: typedef __Int8x16_t int8x16_t; 5209: typedef __Int16x8_t int16x8_t; 5209: typedef __Int32x4_t int32x4_t; 5209: typedef __Int64x2_t int64x2_t; 5209: typedef __Float16x8_t float16x8_t; 5209: typedef __Float32x4_t float32x4_t; 5209: typedef __Float64x2_t float64x2_t; 5209: typedef __Poly8x16_t poly8x16_t; 5209: typedef __Poly16x8_t poly16x8_t; 5209: typedef __Poly64x2_t poly64x2_t; 5209: typedef __Poly64x1_t poly64x1_t; 5209: typedef __Uint8x16_t uint8x16_t; 5209: typedef __Uint16x8_t uint16x8_t; 5209: typedef __Uint32x4_t uint32x4_t; 5209: typedef __Uint64x2_t uint64x2_t; 5209: 5209: typedef __Poly8_t poly8_t; 5209: typedef __Poly16_t poly16_t; 5209: typedef __Poly64_t poly64_t; 5209: typedef __Poly128_t poly128_t; 5209: 5209: typedef __fp16 float16_t; 5209: typedef float float32_t; 5209: typedef double float64_t; 5209: 5209: typedef struct int8x8x2_t 5209: { 5209: int8x8_t val[2]; 5209: } int8x8x2_t; 5209: 5209: typedef struct int8x16x2_t 5209: { 5209: int8x16_t val[2]; 5209: } int8x16x2_t; 5209: 5209: typedef struct int16x4x2_t 5209: { 5209: int16x4_t val[2]; 5209: } int16x4x2_t; 5209: 5209: typedef struct int16x8x2_t 5209: { 5209: int16x8_t val[2]; 5209: } int16x8x2_t; 5209: 5209: typedef struct int32x2x2_t 5209: { 5209: int32x2_t val[2]; 5209: } int32x2x2_t; 5209: 5209: typedef struct int32x4x2_t 5209: { 5209: int32x4_t val[2]; 5209: } int32x4x2_t; 5209: 5209: typedef struct int64x1x2_t 5209: { 5209: int64x1_t val[2]; 5209: } int64x1x2_t; 5209: 5209: typedef struct int64x2x2_t 5209: { 5209: int64x2_t val[2]; 5209: } int64x2x2_t; 5209: 5209: typedef struct uint8x8x2_t 5209: { 5209: uint8x8_t val[2]; 5209: } uint8x8x2_t; 5209: 5209: typedef struct uint8x16x2_t 5209: { 5209: uint8x16_t val[2]; 5209: } uint8x16x2_t; 5209: 5209: typedef struct uint16x4x2_t 5209: { 5209: uint16x4_t val[2]; 5209: } uint16x4x2_t; 5209: 5209: typedef struct uint16x8x2_t 5209: { 5209: uint16x8_t val[2]; 5209: } uint16x8x2_t; 5209: 5209: typedef struct uint32x2x2_t 5209: { 5209: uint32x2_t val[2]; 5209: } uint32x2x2_t; 5209: 5209: typedef struct uint32x4x2_t 5209: { 5209: uint32x4_t val[2]; 5209: } uint32x4x2_t; 5209: 5209: typedef struct uint64x1x2_t 5209: { 5209: uint64x1_t val[2]; 5209: } uint64x1x2_t; 5209: 5209: typedef struct uint64x2x2_t 5209: { 5209: uint64x2_t val[2]; 5209: } uint64x2x2_t; 5209: 5209: typedef struct float16x4x2_t 5209: { 5209: float16x4_t val[2]; 5209: } float16x4x2_t; 5209: 5209: typedef struct float16x8x2_t 5209: { 5209: float16x8_t val[2]; 5209: } float16x8x2_t; 5209: 5209: typedef struct float32x2x2_t 5209: { 5209: float32x2_t val[2]; 5209: } float32x2x2_t; 5209: 5209: typedef struct float32x4x2_t 5209: { 5209: float32x4_t val[2]; 5209: } float32x4x2_t; 5209: 5209: typedef struct float64x2x2_t 5209: { 5209: float64x2_t val[2]; 5209: } float64x2x2_t; 5209: 5209: typedef struct float64x1x2_t 5209: { 5209: float64x1_t val[2]; 5209: } float64x1x2_t; 5209: 5209: typedef struct poly8x8x2_t 5209: { 5209: poly8x8_t val[2]; 5209: } poly8x8x2_t; 5209: 5209: typedef struct poly8x16x2_t 5209: { 5209: poly8x16_t val[2]; 5209: } poly8x16x2_t; 5209: 5209: typedef struct poly16x4x2_t 5209: { 5209: poly16x4_t val[2]; 5209: } poly16x4x2_t; 5209: 5209: typedef struct poly16x8x2_t 5209: { 5209: poly16x8_t val[2]; 5209: } poly16x8x2_t; 5209: 5209: typedef struct poly64x1x2_t 5209: { 5209: poly64x1_t val[2]; 5209: } poly64x1x2_t; 5209: 5209: typedef struct poly64x1x3_t 5209: { 5209: poly64x1_t val[3]; 5209: } poly64x1x3_t; 5209: 5209: typedef struct poly64x1x4_t 5209: { 5209: poly64x1_t val[4]; 5209: } poly64x1x4_t; 5209: 5209: typedef struct poly64x2x2_t 5209: { 5209: poly64x2_t val[2]; 5209: } poly64x2x2_t; 5209: 5209: typedef struct poly64x2x3_t 5209: { 5209: poly64x2_t val[3]; 5209: } poly64x2x3_t; 5209: 5209: typedef struct poly64x2x4_t 5209: { 5209: poly64x2_t val[4]; 5209: } poly64x2x4_t; 5209: 5209: typedef struct int8x8x3_t 5209: { 5209: int8x8_t val[3]; 5209: } int8x8x3_t; 5209: 5209: typedef struct int8x16x3_t 5209: { 5209: int8x16_t val[3]; 5209: } int8x16x3_t; 5209: 5209: typedef struct int16x4x3_t 5209: { 5209: int16x4_t val[3]; 5209: } int16x4x3_t; 5209: 5209: typedef struct int16x8x3_t 5209: { 5209: int16x8_t val[3]; 5209: } int16x8x3_t; 5209: 5209: typedef struct int32x2x3_t 5209: { 5209: int32x2_t val[3]; 5209: } int32x2x3_t; 5209: 5209: typedef struct int32x4x3_t 5209: { 5209: int32x4_t val[3]; 5209: } int32x4x3_t; 5209: 5209: typedef struct int64x1x3_t 5209: { 5209: int64x1_t val[3]; 5209: } int64x1x3_t; 5209: 5209: typedef struct int64x2x3_t 5209: { 5209: int64x2_t val[3]; 5209: } int64x2x3_t; 5209: 5209: typedef struct uint8x8x3_t 5209: { 5209: uint8x8_t val[3]; 5209: } uint8x8x3_t; 5209: 5209: typedef struct uint8x16x3_t 5209: { 5209: uint8x16_t val[3]; 5209: } uint8x16x3_t; 5209: 5209: typedef struct uint16x4x3_t 5209: { 5209: uint16x4_t val[3]; 5209: } uint16x4x3_t; 5209: 5209: typedef struct uint16x8x3_t 5209: { 5209: uint16x8_t val[3]; 5209: } uint16x8x3_t; 5209: 5209: typedef struct uint32x2x3_t 5209: { 5209: uint32x2_t val[3]; 5209: } uint32x2x3_t; 5209: 5209: typedef struct uint32x4x3_t 5209: { 5209: uint32x4_t val[3]; 5209: } uint32x4x3_t; 5209: 5209: typedef struct uint64x1x3_t 5209: { 5209: uint64x1_t val[3]; 5209: } uint64x1x3_t; 5209: 5209: typedef struct uint64x2x3_t 5209: { 5209: uint64x2_t val[3]; 5209: } uint64x2x3_t; 5209: 5209: typedef struct float16x4x3_t 5209: { 5209: float16x4_t val[3]; 5209: } float16x4x3_t; 5209: 5209: typedef struct float16x8x3_t 5209: { 5209: float16x8_t val[3]; 5209: } float16x8x3_t; 5209: 5209: typedef struct float32x2x3_t 5209: { 5209: float32x2_t val[3]; 5209: } float32x2x3_t; 5209: 5209: typedef struct float32x4x3_t 5209: { 5209: float32x4_t val[3]; 5209: } float32x4x3_t; 5209: 5209: typedef struct float64x2x3_t 5209: { 5209: float64x2_t val[3]; 5209: } float64x2x3_t; 5209: 5209: typedef struct float64x1x3_t 5209: { 5209: float64x1_t val[3]; 5209: } float64x1x3_t; 5209: 5209: typedef struct poly8x8x3_t 5209: { 5209: poly8x8_t val[3]; 5209: } poly8x8x3_t; 5209: 5209: typedef struct poly8x16x3_t 5209: { 5209: poly8x16_t val[3]; 5209: } poly8x16x3_t; 5209: 5209: typedef struct poly16x4x3_t 5209: { 5209: poly16x4_t val[3]; 5209: } poly16x4x3_t; 5209: 5209: typedef struct poly16x8x3_t 5209: { 5209: poly16x8_t val[3]; 5209: } poly16x8x3_t; 5209: 5209: typedef struct int8x8x4_t 5209: { 5209: int8x8_t val[4]; 5209: } int8x8x4_t; 5209: 5209: typedef struct int8x16x4_t 5209: { 5209: int8x16_t val[4]; 5209: } int8x16x4_t; 5209: 5209: typedef struct int16x4x4_t 5209: { 5209: int16x4_t val[4]; 5209: } int16x4x4_t; 5209: 5209: typedef struct int16x8x4_t 5209: { 5209: int16x8_t val[4]; 5209: } int16x8x4_t; 5209: 5209: typedef struct int32x2x4_t 5209: { 5209: int32x2_t val[4]; 5209: } int32x2x4_t; 5209: 5209: typedef struct int32x4x4_t 5209: { 5209: int32x4_t val[4]; 5209: } int32x4x4_t; 5209: 5209: typedef struct int64x1x4_t 5209: { 5209: int64x1_t val[4]; 5209: } int64x1x4_t; 5209: 5209: typedef struct int64x2x4_t 5209: { 5209: int64x2_t val[4]; 5209: } int64x2x4_t; 5209: 5209: typedef struct uint8x8x4_t 5209: { 5209: uint8x8_t val[4]; 5209: } uint8x8x4_t; 5209: 5209: typedef struct uint8x16x4_t 5209: { 5209: uint8x16_t val[4]; 5209: } uint8x16x4_t; 5209: 5209: typedef struct uint16x4x4_t 5209: { 5209: uint16x4_t val[4]; 5209: } uint16x4x4_t; 5209: 5209: typedef struct uint16x8x4_t 5209: { 5209: uint16x8_t val[4]; 5209: } uint16x8x4_t; 5209: 5209: typedef struct uint32x2x4_t 5209: { 5209: uint32x2_t val[4]; 5209: } uint32x2x4_t; 5209: 5209: typedef struct uint32x4x4_t 5209: { 5209: uint32x4_t val[4]; 5209: } uint32x4x4_t; 5209: 5209: typedef struct uint64x1x4_t 5209: { 5209: uint64x1_t val[4]; 5209: } uint64x1x4_t; 5209: 5209: typedef struct uint64x2x4_t 5209: { 5209: uint64x2_t val[4]; 5209: } uint64x2x4_t; 5209: 5209: typedef struct float16x4x4_t 5209: { 5209: float16x4_t val[4]; 5209: } float16x4x4_t; 5209: 5209: typedef struct float16x8x4_t 5209: { 5209: float16x8_t val[4]; 5209: } float16x8x4_t; 5209: 5209: typedef struct float32x2x4_t 5209: { 5209: float32x2_t val[4]; 5209: } float32x2x4_t; 5209: 5209: typedef struct float32x4x4_t 5209: { 5209: float32x4_t val[4]; 5209: } float32x4x4_t; 5209: 5209: typedef struct float64x2x4_t 5209: { 5209: float64x2_t val[4]; 5209: } float64x2x4_t; 5209: 5209: typedef struct float64x1x4_t 5209: { 5209: float64x1_t val[4]; 5209: } float64x1x4_t; 5209: 5209: typedef struct poly8x8x4_t 5209: { 5209: poly8x8_t val[4]; 5209: } poly8x8x4_t; 5209: 5209: typedef struct poly8x16x4_t 5209: { 5209: poly8x16_t val[4]; 5209: } poly8x16x4_t; 5209: 5209: typedef struct poly16x4x4_t 5209: { 5209: poly16x4_t val[4]; 5209: } poly16x4x4_t; 5209: 5209: typedef struct poly16x8x4_t 5209: { 5209: poly16x8_t val[4]; 5209: } poly16x8x4_t; 5209: # 651 "/usr/lib/gcc/aarch64-linux-gnu/10/include/arm_neon.h" 3 4 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vadd_s8 (int8x8_t __a, int8x8_t __b) 5209: { 5209: return __a + __b; 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vadd_s16 (int16x4_t __a, int16x4_t __b) 5209: { 5209: return __a + __b; 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vadd_s32 (int32x2_t __a, int32x2_t __b) 5209: { 5209: return __a + __b; 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vadd_f32 (float32x2_t __a, float32x2_t __b) 5209: { 5209: return __a + __b; 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vadd_f64 (float64x1_t __a, float64x1_t __b) 5209: { 5209: return __a + __b; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vadd_u8 (uint8x8_t __a, uint8x8_t __b) 5209: { 5209: return __a + __b; 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vadd_u16 (uint16x4_t __a, uint16x4_t __b) 5209: { 5209: return __a + __b; 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vadd_u32 (uint32x2_t __a, uint32x2_t __b) 5209: { 5209: return __a + __b; 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vadd_s64 (int64x1_t __a, int64x1_t __b) 5209: { 5209: return __a + __b; 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vadd_u64 (uint64x1_t __a, uint64x1_t __b) 5209: { 5209: return __a + __b; 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddq_s8 (int8x16_t __a, int8x16_t __b) 5209: { 5209: return __a + __b; 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddq_s16 (int16x8_t __a, int16x8_t __b) 5209: { 5209: return __a + __b; 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddq_s32 (int32x4_t __a, int32x4_t __b) 5209: { 5209: return __a + __b; 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddq_s64 (int64x2_t __a, int64x2_t __b) 5209: { 5209: return __a + __b; 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddq_f32 (float32x4_t __a, float32x4_t __b) 5209: { 5209: return __a + __b; 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddq_f64 (float64x2_t __a, float64x2_t __b) 5209: { 5209: return __a + __b; 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddq_u8 (uint8x16_t __a, uint8x16_t __b) 5209: { 5209: return __a + __b; 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddq_u16 (uint16x8_t __a, uint16x8_t __b) 5209: { 5209: return __a + __b; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddq_u32 (uint32x4_t __a, uint32x4_t __b) 5209: { 5209: return __a + __b; 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddq_u64 (uint64x2_t __a, uint64x2_t __b) 5209: { 5209: return __a + __b; 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddl_s8 (int8x8_t __a, int8x8_t __b) 5209: { 5209: return (int16x8_t) __builtin_aarch64_saddlv8qi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddl_s16 (int16x4_t __a, int16x4_t __b) 5209: { 5209: return (int32x4_t) __builtin_aarch64_saddlv4hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddl_s32 (int32x2_t __a, int32x2_t __b) 5209: { 5209: return (int64x2_t) __builtin_aarch64_saddlv2si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddl_u8 (uint8x8_t __a, uint8x8_t __b) 5209: { 5209: return (uint16x8_t) __builtin_aarch64_uaddlv8qi ((int8x8_t) __a, 5209: (int8x8_t) __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddl_u16 (uint16x4_t __a, uint16x4_t __b) 5209: { 5209: return (uint32x4_t) __builtin_aarch64_uaddlv4hi ((int16x4_t) __a, 5209: (int16x4_t) __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddl_u32 (uint32x2_t __a, uint32x2_t __b) 5209: { 5209: return (uint64x2_t) __builtin_aarch64_uaddlv2si ((int32x2_t) __a, 5209: (int32x2_t) __b); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddl_high_s8 (int8x16_t __a, int8x16_t __b) 5209: { 5209: return (int16x8_t) __builtin_aarch64_saddl2v16qi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddl_high_s16 (int16x8_t __a, int16x8_t __b) 5209: { 5209: return (int32x4_t) __builtin_aarch64_saddl2v8hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddl_high_s32 (int32x4_t __a, int32x4_t __b) 5209: { 5209: return (int64x2_t) __builtin_aarch64_saddl2v4si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddl_high_u8 (uint8x16_t __a, uint8x16_t __b) 5209: { 5209: return (uint16x8_t) __builtin_aarch64_uaddl2v16qi ((int8x16_t) __a, 5209: (int8x16_t) __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddl_high_u16 (uint16x8_t __a, uint16x8_t __b) 5209: { 5209: return (uint32x4_t) __builtin_aarch64_uaddl2v8hi ((int16x8_t) __a, 5209: (int16x8_t) __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddl_high_u32 (uint32x4_t __a, uint32x4_t __b) 5209: { 5209: return (uint64x2_t) __builtin_aarch64_uaddl2v4si ((int32x4_t) __a, 5209: (int32x4_t) __b); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddw_s8 (int16x8_t __a, int8x8_t __b) 5209: { 5209: return (int16x8_t) __builtin_aarch64_saddwv8qi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddw_s16 (int32x4_t __a, int16x4_t __b) 5209: { 5209: return (int32x4_t) __builtin_aarch64_saddwv4hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddw_s32 (int64x2_t __a, int32x2_t __b) 5209: { 5209: return (int64x2_t) __builtin_aarch64_saddwv2si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddw_u8 (uint16x8_t __a, uint8x8_t __b) 5209: { 5209: return (uint16x8_t) __builtin_aarch64_uaddwv8qi ((int16x8_t) __a, 5209: (int8x8_t) __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddw_u16 (uint32x4_t __a, uint16x4_t __b) 5209: { 5209: return (uint32x4_t) __builtin_aarch64_uaddwv4hi ((int32x4_t) __a, 5209: (int16x4_t) __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddw_u32 (uint64x2_t __a, uint32x2_t __b) 5209: { 5209: return (uint64x2_t) __builtin_aarch64_uaddwv2si ((int64x2_t) __a, 5209: (int32x2_t) __b); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddw_high_s8 (int16x8_t __a, int8x16_t __b) 5209: { 5209: return (int16x8_t) __builtin_aarch64_saddw2v16qi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddw_high_s16 (int32x4_t __a, int16x8_t __b) 5209: { 5209: return (int32x4_t) __builtin_aarch64_saddw2v8hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddw_high_s32 (int64x2_t __a, int32x4_t __b) 5209: { 5209: return (int64x2_t) __builtin_aarch64_saddw2v4si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddw_high_u8 (uint16x8_t __a, uint8x16_t __b) 5209: { 5209: return (uint16x8_t) __builtin_aarch64_uaddw2v16qi ((int16x8_t) __a, 5209: (int8x16_t) __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddw_high_u16 (uint32x4_t __a, uint16x8_t __b) 5209: { 5209: return (uint32x4_t) __builtin_aarch64_uaddw2v8hi ((int32x4_t) __a, 5209: (int16x8_t) __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddw_high_u32 (uint64x2_t __a, uint32x4_t __b) 5209: { 5209: return (uint64x2_t) __builtin_aarch64_uaddw2v4si ((int64x2_t) __a, 5209: (int32x4_t) __b); 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vhadd_s8 (int8x8_t __a, int8x8_t __b) 5209: { 5209: return (int8x8_t) __builtin_aarch64_shaddv8qi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vhadd_s16 (int16x4_t __a, int16x4_t __b) 5209: { 5209: return (int16x4_t) __builtin_aarch64_shaddv4hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vhadd_s32 (int32x2_t __a, int32x2_t __b) 5209: { 5209: return (int32x2_t) __builtin_aarch64_shaddv2si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vhadd_u8 (uint8x8_t __a, uint8x8_t __b) 5209: { 5209: return (uint8x8_t) __builtin_aarch64_uhaddv8qi ((int8x8_t) __a, 5209: (int8x8_t) __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vhadd_u16 (uint16x4_t __a, uint16x4_t __b) 5209: { 5209: return (uint16x4_t) __builtin_aarch64_uhaddv4hi ((int16x4_t) __a, 5209: (int16x4_t) __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vhadd_u32 (uint32x2_t __a, uint32x2_t __b) 5209: { 5209: return (uint32x2_t) __builtin_aarch64_uhaddv2si ((int32x2_t) __a, 5209: (int32x2_t) __b); 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vhaddq_s8 (int8x16_t __a, int8x16_t __b) 5209: { 5209: return (int8x16_t) __builtin_aarch64_shaddv16qi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vhaddq_s16 (int16x8_t __a, int16x8_t __b) 5209: { 5209: return (int16x8_t) __builtin_aarch64_shaddv8hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vhaddq_s32 (int32x4_t __a, int32x4_t __b) 5209: { 5209: return (int32x4_t) __builtin_aarch64_shaddv4si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vhaddq_u8 (uint8x16_t __a, uint8x16_t __b) 5209: { 5209: return (uint8x16_t) __builtin_aarch64_uhaddv16qi ((int8x16_t) __a, 5209: (int8x16_t) __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vhaddq_u16 (uint16x8_t __a, uint16x8_t __b) 5209: { 5209: return (uint16x8_t) __builtin_aarch64_uhaddv8hi ((int16x8_t) __a, 5209: (int16x8_t) __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vhaddq_u32 (uint32x4_t __a, uint32x4_t __b) 5209: { 5209: return (uint32x4_t) __builtin_aarch64_uhaddv4si ((int32x4_t) __a, 5209: (int32x4_t) __b); 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrhadd_s8 (int8x8_t __a, int8x8_t __b) 5209: { 5209: return (int8x8_t) __builtin_aarch64_srhaddv8qi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrhadd_s16 (int16x4_t __a, int16x4_t __b) 5209: { 5209: return (int16x4_t) __builtin_aarch64_srhaddv4hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrhadd_s32 (int32x2_t __a, int32x2_t __b) 5209: { 5209: return (int32x2_t) __builtin_aarch64_srhaddv2si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrhadd_u8 (uint8x8_t __a, uint8x8_t __b) 5209: { 5209: return (uint8x8_t) __builtin_aarch64_urhaddv8qi ((int8x8_t) __a, 5209: (int8x8_t) __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrhadd_u16 (uint16x4_t __a, uint16x4_t __b) 5209: { 5209: return (uint16x4_t) __builtin_aarch64_urhaddv4hi ((int16x4_t) __a, 5209: (int16x4_t) __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrhadd_u32 (uint32x2_t __a, uint32x2_t __b) 5209: { 5209: return (uint32x2_t) __builtin_aarch64_urhaddv2si ((int32x2_t) __a, 5209: (int32x2_t) __b); 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrhaddq_s8 (int8x16_t __a, int8x16_t __b) 5209: { 5209: return (int8x16_t) __builtin_aarch64_srhaddv16qi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrhaddq_s16 (int16x8_t __a, int16x8_t __b) 5209: { 5209: return (int16x8_t) __builtin_aarch64_srhaddv8hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrhaddq_s32 (int32x4_t __a, int32x4_t __b) 5209: { 5209: return (int32x4_t) __builtin_aarch64_srhaddv4si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrhaddq_u8 (uint8x16_t __a, uint8x16_t __b) 5209: { 5209: return (uint8x16_t) __builtin_aarch64_urhaddv16qi ((int8x16_t) __a, 5209: (int8x16_t) __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrhaddq_u16 (uint16x8_t __a, uint16x8_t __b) 5209: { 5209: return (uint16x8_t) __builtin_aarch64_urhaddv8hi ((int16x8_t) __a, 5209: (int16x8_t) __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrhaddq_u32 (uint32x4_t __a, uint32x4_t __b) 5209: { 5209: return (uint32x4_t) __builtin_aarch64_urhaddv4si ((int32x4_t) __a, 5209: (int32x4_t) __b); 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddhn_s16 (int16x8_t __a, int16x8_t __b) 5209: { 5209: return (int8x8_t) __builtin_aarch64_addhnv8hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddhn_s32 (int32x4_t __a, int32x4_t __b) 5209: { 5209: return (int16x4_t) __builtin_aarch64_addhnv4si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddhn_s64 (int64x2_t __a, int64x2_t __b) 5209: { 5209: return (int32x2_t) __builtin_aarch64_addhnv2di (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddhn_u16 (uint16x8_t __a, uint16x8_t __b) 5209: { 5209: return (uint8x8_t) __builtin_aarch64_addhnv8hi ((int16x8_t) __a, 5209: (int16x8_t) __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddhn_u32 (uint32x4_t __a, uint32x4_t __b) 5209: { 5209: return (uint16x4_t) __builtin_aarch64_addhnv4si ((int32x4_t) __a, 5209: (int32x4_t) __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddhn_u64 (uint64x2_t __a, uint64x2_t __b) 5209: { 5209: return (uint32x2_t) __builtin_aarch64_addhnv2di ((int64x2_t) __a, 5209: (int64x2_t) __b); 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vraddhn_s16 (int16x8_t __a, int16x8_t __b) 5209: { 5209: return (int8x8_t) __builtin_aarch64_raddhnv8hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vraddhn_s32 (int32x4_t __a, int32x4_t __b) 5209: { 5209: return (int16x4_t) __builtin_aarch64_raddhnv4si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vraddhn_s64 (int64x2_t __a, int64x2_t __b) 5209: { 5209: return (int32x2_t) __builtin_aarch64_raddhnv2di (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vraddhn_u16 (uint16x8_t __a, uint16x8_t __b) 5209: { 5209: return (uint8x8_t) __builtin_aarch64_raddhnv8hi ((int16x8_t) __a, 5209: (int16x8_t) __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vraddhn_u32 (uint32x4_t __a, uint32x4_t __b) 5209: { 5209: return (uint16x4_t) __builtin_aarch64_raddhnv4si ((int32x4_t) __a, 5209: (int32x4_t) __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vraddhn_u64 (uint64x2_t __a, uint64x2_t __b) 5209: { 5209: return (uint32x2_t) __builtin_aarch64_raddhnv2di ((int64x2_t) __a, 5209: (int64x2_t) __b); 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddhn_high_s16 (int8x8_t __a, int16x8_t __b, int16x8_t __c) 5209: { 5209: return (int8x16_t) __builtin_aarch64_addhn2v8hi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddhn_high_s32 (int16x4_t __a, int32x4_t __b, int32x4_t __c) 5209: { 5209: return (int16x8_t) __builtin_aarch64_addhn2v4si (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddhn_high_s64 (int32x2_t __a, int64x2_t __b, int64x2_t __c) 5209: { 5209: return (int32x4_t) __builtin_aarch64_addhn2v2di (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddhn_high_u16 (uint8x8_t __a, uint16x8_t __b, uint16x8_t __c) 5209: { 5209: return (uint8x16_t) __builtin_aarch64_addhn2v8hi ((int8x8_t) __a, 5209: (int16x8_t) __b, 5209: (int16x8_t) __c); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddhn_high_u32 (uint16x4_t __a, uint32x4_t __b, uint32x4_t __c) 5209: { 5209: return (uint16x8_t) __builtin_aarch64_addhn2v4si ((int16x4_t) __a, 5209: (int32x4_t) __b, 5209: (int32x4_t) __c); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddhn_high_u64 (uint32x2_t __a, uint64x2_t __b, uint64x2_t __c) 5209: { 5209: return (uint32x4_t) __builtin_aarch64_addhn2v2di ((int32x2_t) __a, 5209: (int64x2_t) __b, 5209: (int64x2_t) __c); 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vraddhn_high_s16 (int8x8_t __a, int16x8_t __b, int16x8_t __c) 5209: { 5209: return (int8x16_t) __builtin_aarch64_raddhn2v8hi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vraddhn_high_s32 (int16x4_t __a, int32x4_t __b, int32x4_t __c) 5209: { 5209: return (int16x8_t) __builtin_aarch64_raddhn2v4si (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vraddhn_high_s64 (int32x2_t __a, int64x2_t __b, int64x2_t __c) 5209: { 5209: return (int32x4_t) __builtin_aarch64_raddhn2v2di (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vraddhn_high_u16 (uint8x8_t __a, uint16x8_t __b, uint16x8_t __c) 5209: { 5209: return (uint8x16_t) __builtin_aarch64_raddhn2v8hi ((int8x8_t) __a, 5209: (int16x8_t) __b, 5209: (int16x8_t) __c); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vraddhn_high_u32 (uint16x4_t __a, uint32x4_t __b, uint32x4_t __c) 5209: { 5209: return (uint16x8_t) __builtin_aarch64_raddhn2v4si ((int16x4_t) __a, 5209: (int32x4_t) __b, 5209: (int32x4_t) __c); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vraddhn_high_u64 (uint32x2_t __a, uint64x2_t __b, uint64x2_t __c) 5209: { 5209: return (uint32x4_t) __builtin_aarch64_raddhn2v2di ((int32x2_t) __a, 5209: (int64x2_t) __b, 5209: (int64x2_t) __c); 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdiv_f32 (float32x2_t __a, float32x2_t __b) 5209: { 5209: return __a / __b; 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdiv_f64 (float64x1_t __a, float64x1_t __b) 5209: { 5209: return __a / __b; 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdivq_f32 (float32x4_t __a, float32x4_t __b) 5209: { 5209: return __a / __b; 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdivq_f64 (float64x2_t __a, float64x2_t __b) 5209: { 5209: return __a / __b; 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmul_s8 (int8x8_t __a, int8x8_t __b) 5209: { 5209: return __a * __b; 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmul_s16 (int16x4_t __a, int16x4_t __b) 5209: { 5209: return __a * __b; 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmul_s32 (int32x2_t __a, int32x2_t __b) 5209: { 5209: return __a * __b; 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmul_f32 (float32x2_t __a, float32x2_t __b) 5209: { 5209: return __a * __b; 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmul_f64 (float64x1_t __a, float64x1_t __b) 5209: { 5209: return __a * __b; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmul_u8 (uint8x8_t __a, uint8x8_t __b) 5209: { 5209: return __a * __b; 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmul_u16 (uint16x4_t __a, uint16x4_t __b) 5209: { 5209: return __a * __b; 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmul_u32 (uint32x2_t __a, uint32x2_t __b) 5209: { 5209: return __a * __b; 5209: } 5209: 5209: __extension__ extern __inline poly8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmul_p8 (poly8x8_t __a, poly8x8_t __b) 5209: { 5209: return (poly8x8_t) __builtin_aarch64_pmulv8qi ((int8x8_t) __a, 5209: (int8x8_t) __b); 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulq_s8 (int8x16_t __a, int8x16_t __b) 5209: { 5209: return __a * __b; 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulq_s16 (int16x8_t __a, int16x8_t __b) 5209: { 5209: return __a * __b; 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulq_s32 (int32x4_t __a, int32x4_t __b) 5209: { 5209: return __a * __b; 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulq_f32 (float32x4_t __a, float32x4_t __b) 5209: { 5209: return __a * __b; 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulq_f64 (float64x2_t __a, float64x2_t __b) 5209: { 5209: return __a * __b; 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulq_u8 (uint8x16_t __a, uint8x16_t __b) 5209: { 5209: return __a * __b; 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulq_u16 (uint16x8_t __a, uint16x8_t __b) 5209: { 5209: return __a * __b; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulq_u32 (uint32x4_t __a, uint32x4_t __b) 5209: { 5209: return __a * __b; 5209: } 5209: 5209: __extension__ extern __inline poly8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulq_p8 (poly8x16_t __a, poly8x16_t __b) 5209: { 5209: return (poly8x16_t) __builtin_aarch64_pmulv16qi ((int8x16_t) __a, 5209: (int8x16_t) __b); 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vand_s8 (int8x8_t __a, int8x8_t __b) 5209: { 5209: return __a & __b; 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vand_s16 (int16x4_t __a, int16x4_t __b) 5209: { 5209: return __a & __b; 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vand_s32 (int32x2_t __a, int32x2_t __b) 5209: { 5209: return __a & __b; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vand_u8 (uint8x8_t __a, uint8x8_t __b) 5209: { 5209: return __a & __b; 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vand_u16 (uint16x4_t __a, uint16x4_t __b) 5209: { 5209: return __a & __b; 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vand_u32 (uint32x2_t __a, uint32x2_t __b) 5209: { 5209: return __a & __b; 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vand_s64 (int64x1_t __a, int64x1_t __b) 5209: { 5209: return __a & __b; 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vand_u64 (uint64x1_t __a, uint64x1_t __b) 5209: { 5209: return __a & __b; 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vandq_s8 (int8x16_t __a, int8x16_t __b) 5209: { 5209: return __a & __b; 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vandq_s16 (int16x8_t __a, int16x8_t __b) 5209: { 5209: return __a & __b; 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vandq_s32 (int32x4_t __a, int32x4_t __b) 5209: { 5209: return __a & __b; 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vandq_s64 (int64x2_t __a, int64x2_t __b) 5209: { 5209: return __a & __b; 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vandq_u8 (uint8x16_t __a, uint8x16_t __b) 5209: { 5209: return __a & __b; 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vandq_u16 (uint16x8_t __a, uint16x8_t __b) 5209: { 5209: return __a & __b; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vandq_u32 (uint32x4_t __a, uint32x4_t __b) 5209: { 5209: return __a & __b; 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vandq_u64 (uint64x2_t __a, uint64x2_t __b) 5209: { 5209: return __a & __b; 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vorr_s8 (int8x8_t __a, int8x8_t __b) 5209: { 5209: return __a | __b; 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vorr_s16 (int16x4_t __a, int16x4_t __b) 5209: { 5209: return __a | __b; 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vorr_s32 (int32x2_t __a, int32x2_t __b) 5209: { 5209: return __a | __b; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vorr_u8 (uint8x8_t __a, uint8x8_t __b) 5209: { 5209: return __a | __b; 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vorr_u16 (uint16x4_t __a, uint16x4_t __b) 5209: { 5209: return __a | __b; 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vorr_u32 (uint32x2_t __a, uint32x2_t __b) 5209: { 5209: return __a | __b; 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vorr_s64 (int64x1_t __a, int64x1_t __b) 5209: { 5209: return __a | __b; 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vorr_u64 (uint64x1_t __a, uint64x1_t __b) 5209: { 5209: return __a | __b; 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vorrq_s8 (int8x16_t __a, int8x16_t __b) 5209: { 5209: return __a | __b; 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vorrq_s16 (int16x8_t __a, int16x8_t __b) 5209: { 5209: return __a | __b; 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vorrq_s32 (int32x4_t __a, int32x4_t __b) 5209: { 5209: return __a | __b; 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vorrq_s64 (int64x2_t __a, int64x2_t __b) 5209: { 5209: return __a | __b; 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vorrq_u8 (uint8x16_t __a, uint8x16_t __b) 5209: { 5209: return __a | __b; 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vorrq_u16 (uint16x8_t __a, uint16x8_t __b) 5209: { 5209: return __a | __b; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vorrq_u32 (uint32x4_t __a, uint32x4_t __b) 5209: { 5209: return __a | __b; 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vorrq_u64 (uint64x2_t __a, uint64x2_t __b) 5209: { 5209: return __a | __b; 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: veor_s8 (int8x8_t __a, int8x8_t __b) 5209: { 5209: return __a ^ __b; 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: veor_s16 (int16x4_t __a, int16x4_t __b) 5209: { 5209: return __a ^ __b; 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: veor_s32 (int32x2_t __a, int32x2_t __b) 5209: { 5209: return __a ^ __b; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: veor_u8 (uint8x8_t __a, uint8x8_t __b) 5209: { 5209: return __a ^ __b; 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: veor_u16 (uint16x4_t __a, uint16x4_t __b) 5209: { 5209: return __a ^ __b; 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: veor_u32 (uint32x2_t __a, uint32x2_t __b) 5209: { 5209: return __a ^ __b; 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: veor_s64 (int64x1_t __a, int64x1_t __b) 5209: { 5209: return __a ^ __b; 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: veor_u64 (uint64x1_t __a, uint64x1_t __b) 5209: { 5209: return __a ^ __b; 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: veorq_s8 (int8x16_t __a, int8x16_t __b) 5209: { 5209: return __a ^ __b; 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: veorq_s16 (int16x8_t __a, int16x8_t __b) 5209: { 5209: return __a ^ __b; 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: veorq_s32 (int32x4_t __a, int32x4_t __b) 5209: { 5209: return __a ^ __b; 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: veorq_s64 (int64x2_t __a, int64x2_t __b) 5209: { 5209: return __a ^ __b; 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: veorq_u8 (uint8x16_t __a, uint8x16_t __b) 5209: { 5209: return __a ^ __b; 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: veorq_u16 (uint16x8_t __a, uint16x8_t __b) 5209: { 5209: return __a ^ __b; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: veorq_u32 (uint32x4_t __a, uint32x4_t __b) 5209: { 5209: return __a ^ __b; 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: veorq_u64 (uint64x2_t __a, uint64x2_t __b) 5209: { 5209: return __a ^ __b; 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vbic_s8 (int8x8_t __a, int8x8_t __b) 5209: { 5209: return __a & ~__b; 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vbic_s16 (int16x4_t __a, int16x4_t __b) 5209: { 5209: return __a & ~__b; 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vbic_s32 (int32x2_t __a, int32x2_t __b) 5209: { 5209: return __a & ~__b; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vbic_u8 (uint8x8_t __a, uint8x8_t __b) 5209: { 5209: return __a & ~__b; 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vbic_u16 (uint16x4_t __a, uint16x4_t __b) 5209: { 5209: return __a & ~__b; 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vbic_u32 (uint32x2_t __a, uint32x2_t __b) 5209: { 5209: return __a & ~__b; 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vbic_s64 (int64x1_t __a, int64x1_t __b) 5209: { 5209: return __a & ~__b; 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vbic_u64 (uint64x1_t __a, uint64x1_t __b) 5209: { 5209: return __a & ~__b; 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vbicq_s8 (int8x16_t __a, int8x16_t __b) 5209: { 5209: return __a & ~__b; 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vbicq_s16 (int16x8_t __a, int16x8_t __b) 5209: { 5209: return __a & ~__b; 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vbicq_s32 (int32x4_t __a, int32x4_t __b) 5209: { 5209: return __a & ~__b; 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vbicq_s64 (int64x2_t __a, int64x2_t __b) 5209: { 5209: return __a & ~__b; 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vbicq_u8 (uint8x16_t __a, uint8x16_t __b) 5209: { 5209: return __a & ~__b; 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vbicq_u16 (uint16x8_t __a, uint16x8_t __b) 5209: { 5209: return __a & ~__b; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vbicq_u32 (uint32x4_t __a, uint32x4_t __b) 5209: { 5209: return __a & ~__b; 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vbicq_u64 (uint64x2_t __a, uint64x2_t __b) 5209: { 5209: return __a & ~__b; 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vorn_s8 (int8x8_t __a, int8x8_t __b) 5209: { 5209: return __a | ~__b; 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vorn_s16 (int16x4_t __a, int16x4_t __b) 5209: { 5209: return __a | ~__b; 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vorn_s32 (int32x2_t __a, int32x2_t __b) 5209: { 5209: return __a | ~__b; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vorn_u8 (uint8x8_t __a, uint8x8_t __b) 5209: { 5209: return __a | ~__b; 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vorn_u16 (uint16x4_t __a, uint16x4_t __b) 5209: { 5209: return __a | ~__b; 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vorn_u32 (uint32x2_t __a, uint32x2_t __b) 5209: { 5209: return __a | ~__b; 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vorn_s64 (int64x1_t __a, int64x1_t __b) 5209: { 5209: return __a | ~__b; 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vorn_u64 (uint64x1_t __a, uint64x1_t __b) 5209: { 5209: return __a | ~__b; 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vornq_s8 (int8x16_t __a, int8x16_t __b) 5209: { 5209: return __a | ~__b; 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vornq_s16 (int16x8_t __a, int16x8_t __b) 5209: { 5209: return __a | ~__b; 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vornq_s32 (int32x4_t __a, int32x4_t __b) 5209: { 5209: return __a | ~__b; 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vornq_s64 (int64x2_t __a, int64x2_t __b) 5209: { 5209: return __a | ~__b; 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vornq_u8 (uint8x16_t __a, uint8x16_t __b) 5209: { 5209: return __a | ~__b; 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vornq_u16 (uint16x8_t __a, uint16x8_t __b) 5209: { 5209: return __a | ~__b; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vornq_u32 (uint32x4_t __a, uint32x4_t __b) 5209: { 5209: return __a | ~__b; 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vornq_u64 (uint64x2_t __a, uint64x2_t __b) 5209: { 5209: return __a | ~__b; 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsub_s8 (int8x8_t __a, int8x8_t __b) 5209: { 5209: return __a - __b; 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsub_s16 (int16x4_t __a, int16x4_t __b) 5209: { 5209: return __a - __b; 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsub_s32 (int32x2_t __a, int32x2_t __b) 5209: { 5209: return __a - __b; 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsub_f32 (float32x2_t __a, float32x2_t __b) 5209: { 5209: return __a - __b; 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsub_f64 (float64x1_t __a, float64x1_t __b) 5209: { 5209: return __a - __b; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsub_u8 (uint8x8_t __a, uint8x8_t __b) 5209: { 5209: return __a - __b; 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsub_u16 (uint16x4_t __a, uint16x4_t __b) 5209: { 5209: return __a - __b; 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsub_u32 (uint32x2_t __a, uint32x2_t __b) 5209: { 5209: return __a - __b; 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsub_s64 (int64x1_t __a, int64x1_t __b) 5209: { 5209: return __a - __b; 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsub_u64 (uint64x1_t __a, uint64x1_t __b) 5209: { 5209: return __a - __b; 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsubq_s8 (int8x16_t __a, int8x16_t __b) 5209: { 5209: return __a - __b; 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsubq_s16 (int16x8_t __a, int16x8_t __b) 5209: { 5209: return __a - __b; 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsubq_s32 (int32x4_t __a, int32x4_t __b) 5209: { 5209: return __a - __b; 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsubq_s64 (int64x2_t __a, int64x2_t __b) 5209: { 5209: return __a - __b; 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsubq_f32 (float32x4_t __a, float32x4_t __b) 5209: { 5209: return __a - __b; 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsubq_f64 (float64x2_t __a, float64x2_t __b) 5209: { 5209: return __a - __b; 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsubq_u8 (uint8x16_t __a, uint8x16_t __b) 5209: { 5209: return __a - __b; 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsubq_u16 (uint16x8_t __a, uint16x8_t __b) 5209: { 5209: return __a - __b; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsubq_u32 (uint32x4_t __a, uint32x4_t __b) 5209: { 5209: return __a - __b; 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsubq_u64 (uint64x2_t __a, uint64x2_t __b) 5209: { 5209: return __a - __b; 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsubl_s8 (int8x8_t __a, int8x8_t __b) 5209: { 5209: return (int16x8_t) __builtin_aarch64_ssublv8qi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsubl_s16 (int16x4_t __a, int16x4_t __b) 5209: { 5209: return (int32x4_t) __builtin_aarch64_ssublv4hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsubl_s32 (int32x2_t __a, int32x2_t __b) 5209: { 5209: return (int64x2_t) __builtin_aarch64_ssublv2si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsubl_u8 (uint8x8_t __a, uint8x8_t __b) 5209: { 5209: return (uint16x8_t) __builtin_aarch64_usublv8qi ((int8x8_t) __a, 5209: (int8x8_t) __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsubl_u16 (uint16x4_t __a, uint16x4_t __b) 5209: { 5209: return (uint32x4_t) __builtin_aarch64_usublv4hi ((int16x4_t) __a, 5209: (int16x4_t) __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsubl_u32 (uint32x2_t __a, uint32x2_t __b) 5209: { 5209: return (uint64x2_t) __builtin_aarch64_usublv2si ((int32x2_t) __a, 5209: (int32x2_t) __b); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsubl_high_s8 (int8x16_t __a, int8x16_t __b) 5209: { 5209: return (int16x8_t) __builtin_aarch64_ssubl2v16qi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsubl_high_s16 (int16x8_t __a, int16x8_t __b) 5209: { 5209: return (int32x4_t) __builtin_aarch64_ssubl2v8hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsubl_high_s32 (int32x4_t __a, int32x4_t __b) 5209: { 5209: return (int64x2_t) __builtin_aarch64_ssubl2v4si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsubl_high_u8 (uint8x16_t __a, uint8x16_t __b) 5209: { 5209: return (uint16x8_t) __builtin_aarch64_usubl2v16qi ((int8x16_t) __a, 5209: (int8x16_t) __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsubl_high_u16 (uint16x8_t __a, uint16x8_t __b) 5209: { 5209: return (uint32x4_t) __builtin_aarch64_usubl2v8hi ((int16x8_t) __a, 5209: (int16x8_t) __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsubl_high_u32 (uint32x4_t __a, uint32x4_t __b) 5209: { 5209: return (uint64x2_t) __builtin_aarch64_usubl2v4si ((int32x4_t) __a, 5209: (int32x4_t) __b); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsubw_s8 (int16x8_t __a, int8x8_t __b) 5209: { 5209: return (int16x8_t) __builtin_aarch64_ssubwv8qi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsubw_s16 (int32x4_t __a, int16x4_t __b) 5209: { 5209: return (int32x4_t) __builtin_aarch64_ssubwv4hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsubw_s32 (int64x2_t __a, int32x2_t __b) 5209: { 5209: return (int64x2_t) __builtin_aarch64_ssubwv2si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsubw_u8 (uint16x8_t __a, uint8x8_t __b) 5209: { 5209: return (uint16x8_t) __builtin_aarch64_usubwv8qi ((int16x8_t) __a, 5209: (int8x8_t) __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsubw_u16 (uint32x4_t __a, uint16x4_t __b) 5209: { 5209: return (uint32x4_t) __builtin_aarch64_usubwv4hi ((int32x4_t) __a, 5209: (int16x4_t) __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsubw_u32 (uint64x2_t __a, uint32x2_t __b) 5209: { 5209: return (uint64x2_t) __builtin_aarch64_usubwv2si ((int64x2_t) __a, 5209: (int32x2_t) __b); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsubw_high_s8 (int16x8_t __a, int8x16_t __b) 5209: { 5209: return (int16x8_t) __builtin_aarch64_ssubw2v16qi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsubw_high_s16 (int32x4_t __a, int16x8_t __b) 5209: { 5209: return (int32x4_t) __builtin_aarch64_ssubw2v8hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsubw_high_s32 (int64x2_t __a, int32x4_t __b) 5209: { 5209: return (int64x2_t) __builtin_aarch64_ssubw2v4si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsubw_high_u8 (uint16x8_t __a, uint8x16_t __b) 5209: { 5209: return (uint16x8_t) __builtin_aarch64_usubw2v16qi ((int16x8_t) __a, 5209: (int8x16_t) __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsubw_high_u16 (uint32x4_t __a, uint16x8_t __b) 5209: { 5209: return (uint32x4_t) __builtin_aarch64_usubw2v8hi ((int32x4_t) __a, 5209: (int16x8_t) __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsubw_high_u32 (uint64x2_t __a, uint32x4_t __b) 5209: { 5209: return (uint64x2_t) __builtin_aarch64_usubw2v4si ((int64x2_t) __a, 5209: (int32x4_t) __b); 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqadd_s8 (int8x8_t __a, int8x8_t __b) 5209: { 5209: return (int8x8_t) __builtin_aarch64_sqaddv8qi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqadd_s16 (int16x4_t __a, int16x4_t __b) 5209: { 5209: return (int16x4_t) __builtin_aarch64_sqaddv4hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqadd_s32 (int32x2_t __a, int32x2_t __b) 5209: { 5209: return (int32x2_t) __builtin_aarch64_sqaddv2si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqadd_s64 (int64x1_t __a, int64x1_t __b) 5209: { 5209: return (int64x1_t) {__builtin_aarch64_sqadddi (__a[0], __b[0])}; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqadd_u8 (uint8x8_t __a, uint8x8_t __b) 5209: { 5209: return __builtin_aarch64_uqaddv8qi_uuu (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vhsub_s8 (int8x8_t __a, int8x8_t __b) 5209: { 5209: return (int8x8_t)__builtin_aarch64_shsubv8qi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vhsub_s16 (int16x4_t __a, int16x4_t __b) 5209: { 5209: return (int16x4_t) __builtin_aarch64_shsubv4hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vhsub_s32 (int32x2_t __a, int32x2_t __b) 5209: { 5209: return (int32x2_t) __builtin_aarch64_shsubv2si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vhsub_u8 (uint8x8_t __a, uint8x8_t __b) 5209: { 5209: return (uint8x8_t) __builtin_aarch64_uhsubv8qi ((int8x8_t) __a, 5209: (int8x8_t) __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vhsub_u16 (uint16x4_t __a, uint16x4_t __b) 5209: { 5209: return (uint16x4_t) __builtin_aarch64_uhsubv4hi ((int16x4_t) __a, 5209: (int16x4_t) __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vhsub_u32 (uint32x2_t __a, uint32x2_t __b) 5209: { 5209: return (uint32x2_t) __builtin_aarch64_uhsubv2si ((int32x2_t) __a, 5209: (int32x2_t) __b); 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vhsubq_s8 (int8x16_t __a, int8x16_t __b) 5209: { 5209: return (int8x16_t) __builtin_aarch64_shsubv16qi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vhsubq_s16 (int16x8_t __a, int16x8_t __b) 5209: { 5209: return (int16x8_t) __builtin_aarch64_shsubv8hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vhsubq_s32 (int32x4_t __a, int32x4_t __b) 5209: { 5209: return (int32x4_t) __builtin_aarch64_shsubv4si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vhsubq_u8 (uint8x16_t __a, uint8x16_t __b) 5209: { 5209: return (uint8x16_t) __builtin_aarch64_uhsubv16qi ((int8x16_t) __a, 5209: (int8x16_t) __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vhsubq_u16 (uint16x8_t __a, uint16x8_t __b) 5209: { 5209: return (uint16x8_t) __builtin_aarch64_uhsubv8hi ((int16x8_t) __a, 5209: (int16x8_t) __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vhsubq_u32 (uint32x4_t __a, uint32x4_t __b) 5209: { 5209: return (uint32x4_t) __builtin_aarch64_uhsubv4si ((int32x4_t) __a, 5209: (int32x4_t) __b); 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsubhn_s16 (int16x8_t __a, int16x8_t __b) 5209: { 5209: return (int8x8_t) __builtin_aarch64_subhnv8hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsubhn_s32 (int32x4_t __a, int32x4_t __b) 5209: { 5209: return (int16x4_t) __builtin_aarch64_subhnv4si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsubhn_s64 (int64x2_t __a, int64x2_t __b) 5209: { 5209: return (int32x2_t) __builtin_aarch64_subhnv2di (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsubhn_u16 (uint16x8_t __a, uint16x8_t __b) 5209: { 5209: return (uint8x8_t) __builtin_aarch64_subhnv8hi ((int16x8_t) __a, 5209: (int16x8_t) __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsubhn_u32 (uint32x4_t __a, uint32x4_t __b) 5209: { 5209: return (uint16x4_t) __builtin_aarch64_subhnv4si ((int32x4_t) __a, 5209: (int32x4_t) __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsubhn_u64 (uint64x2_t __a, uint64x2_t __b) 5209: { 5209: return (uint32x2_t) __builtin_aarch64_subhnv2di ((int64x2_t) __a, 5209: (int64x2_t) __b); 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrsubhn_s16 (int16x8_t __a, int16x8_t __b) 5209: { 5209: return (int8x8_t) __builtin_aarch64_rsubhnv8hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrsubhn_s32 (int32x4_t __a, int32x4_t __b) 5209: { 5209: return (int16x4_t) __builtin_aarch64_rsubhnv4si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrsubhn_s64 (int64x2_t __a, int64x2_t __b) 5209: { 5209: return (int32x2_t) __builtin_aarch64_rsubhnv2di (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrsubhn_u16 (uint16x8_t __a, uint16x8_t __b) 5209: { 5209: return (uint8x8_t) __builtin_aarch64_rsubhnv8hi ((int16x8_t) __a, 5209: (int16x8_t) __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrsubhn_u32 (uint32x4_t __a, uint32x4_t __b) 5209: { 5209: return (uint16x4_t) __builtin_aarch64_rsubhnv4si ((int32x4_t) __a, 5209: (int32x4_t) __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrsubhn_u64 (uint64x2_t __a, uint64x2_t __b) 5209: { 5209: return (uint32x2_t) __builtin_aarch64_rsubhnv2di ((int64x2_t) __a, 5209: (int64x2_t) __b); 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrsubhn_high_s16 (int8x8_t __a, int16x8_t __b, int16x8_t __c) 5209: { 5209: return (int8x16_t) __builtin_aarch64_rsubhn2v8hi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrsubhn_high_s32 (int16x4_t __a, int32x4_t __b, int32x4_t __c) 5209: { 5209: return (int16x8_t) __builtin_aarch64_rsubhn2v4si (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrsubhn_high_s64 (int32x2_t __a, int64x2_t __b, int64x2_t __c) 5209: { 5209: return (int32x4_t) __builtin_aarch64_rsubhn2v2di (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrsubhn_high_u16 (uint8x8_t __a, uint16x8_t __b, uint16x8_t __c) 5209: { 5209: return (uint8x16_t) __builtin_aarch64_rsubhn2v8hi ((int8x8_t) __a, 5209: (int16x8_t) __b, 5209: (int16x8_t) __c); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrsubhn_high_u32 (uint16x4_t __a, uint32x4_t __b, uint32x4_t __c) 5209: { 5209: return (uint16x8_t) __builtin_aarch64_rsubhn2v4si ((int16x4_t) __a, 5209: (int32x4_t) __b, 5209: (int32x4_t) __c); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrsubhn_high_u64 (uint32x2_t __a, uint64x2_t __b, uint64x2_t __c) 5209: { 5209: return (uint32x4_t) __builtin_aarch64_rsubhn2v2di ((int32x2_t) __a, 5209: (int64x2_t) __b, 5209: (int64x2_t) __c); 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsubhn_high_s16 (int8x8_t __a, int16x8_t __b, int16x8_t __c) 5209: { 5209: return (int8x16_t) __builtin_aarch64_subhn2v8hi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsubhn_high_s32 (int16x4_t __a, int32x4_t __b, int32x4_t __c) 5209: { 5209: return (int16x8_t) __builtin_aarch64_subhn2v4si (__a, __b, __c);; 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsubhn_high_s64 (int32x2_t __a, int64x2_t __b, int64x2_t __c) 5209: { 5209: return (int32x4_t) __builtin_aarch64_subhn2v2di (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsubhn_high_u16 (uint8x8_t __a, uint16x8_t __b, uint16x8_t __c) 5209: { 5209: return (uint8x16_t) __builtin_aarch64_subhn2v8hi ((int8x8_t) __a, 5209: (int16x8_t) __b, 5209: (int16x8_t) __c); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsubhn_high_u32 (uint16x4_t __a, uint32x4_t __b, uint32x4_t __c) 5209: { 5209: return (uint16x8_t) __builtin_aarch64_subhn2v4si ((int16x4_t) __a, 5209: (int32x4_t) __b, 5209: (int32x4_t) __c); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsubhn_high_u64 (uint32x2_t __a, uint64x2_t __b, uint64x2_t __c) 5209: { 5209: return (uint32x4_t) __builtin_aarch64_subhn2v2di ((int32x2_t) __a, 5209: (int64x2_t) __b, 5209: (int64x2_t) __c); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqadd_u16 (uint16x4_t __a, uint16x4_t __b) 5209: { 5209: return __builtin_aarch64_uqaddv4hi_uuu (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqadd_u32 (uint32x2_t __a, uint32x2_t __b) 5209: { 5209: return __builtin_aarch64_uqaddv2si_uuu (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqadd_u64 (uint64x1_t __a, uint64x1_t __b) 5209: { 5209: return (uint64x1_t) {__builtin_aarch64_uqadddi_uuu (__a[0], __b[0])}; 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqaddq_s8 (int8x16_t __a, int8x16_t __b) 5209: { 5209: return (int8x16_t) __builtin_aarch64_sqaddv16qi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqaddq_s16 (int16x8_t __a, int16x8_t __b) 5209: { 5209: return (int16x8_t) __builtin_aarch64_sqaddv8hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqaddq_s32 (int32x4_t __a, int32x4_t __b) 5209: { 5209: return (int32x4_t) __builtin_aarch64_sqaddv4si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqaddq_s64 (int64x2_t __a, int64x2_t __b) 5209: { 5209: return (int64x2_t) __builtin_aarch64_sqaddv2di (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqaddq_u8 (uint8x16_t __a, uint8x16_t __b) 5209: { 5209: return __builtin_aarch64_uqaddv16qi_uuu (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqaddq_u16 (uint16x8_t __a, uint16x8_t __b) 5209: { 5209: return __builtin_aarch64_uqaddv8hi_uuu (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqaddq_u32 (uint32x4_t __a, uint32x4_t __b) 5209: { 5209: return __builtin_aarch64_uqaddv4si_uuu (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqaddq_u64 (uint64x2_t __a, uint64x2_t __b) 5209: { 5209: return __builtin_aarch64_uqaddv2di_uuu (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqsub_s8 (int8x8_t __a, int8x8_t __b) 5209: { 5209: return (int8x8_t) __builtin_aarch64_sqsubv8qi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqsub_s16 (int16x4_t __a, int16x4_t __b) 5209: { 5209: return (int16x4_t) __builtin_aarch64_sqsubv4hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqsub_s32 (int32x2_t __a, int32x2_t __b) 5209: { 5209: return (int32x2_t) __builtin_aarch64_sqsubv2si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqsub_s64 (int64x1_t __a, int64x1_t __b) 5209: { 5209: return (int64x1_t) {__builtin_aarch64_sqsubdi (__a[0], __b[0])}; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqsub_u8 (uint8x8_t __a, uint8x8_t __b) 5209: { 5209: return __builtin_aarch64_uqsubv8qi_uuu (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqsub_u16 (uint16x4_t __a, uint16x4_t __b) 5209: { 5209: return __builtin_aarch64_uqsubv4hi_uuu (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqsub_u32 (uint32x2_t __a, uint32x2_t __b) 5209: { 5209: return __builtin_aarch64_uqsubv2si_uuu (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqsub_u64 (uint64x1_t __a, uint64x1_t __b) 5209: { 5209: return (uint64x1_t) {__builtin_aarch64_uqsubdi_uuu (__a[0], __b[0])}; 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqsubq_s8 (int8x16_t __a, int8x16_t __b) 5209: { 5209: return (int8x16_t) __builtin_aarch64_sqsubv16qi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqsubq_s16 (int16x8_t __a, int16x8_t __b) 5209: { 5209: return (int16x8_t) __builtin_aarch64_sqsubv8hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqsubq_s32 (int32x4_t __a, int32x4_t __b) 5209: { 5209: return (int32x4_t) __builtin_aarch64_sqsubv4si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqsubq_s64 (int64x2_t __a, int64x2_t __b) 5209: { 5209: return (int64x2_t) __builtin_aarch64_sqsubv2di (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqsubq_u8 (uint8x16_t __a, uint8x16_t __b) 5209: { 5209: return __builtin_aarch64_uqsubv16qi_uuu (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqsubq_u16 (uint16x8_t __a, uint16x8_t __b) 5209: { 5209: return __builtin_aarch64_uqsubv8hi_uuu (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqsubq_u32 (uint32x4_t __a, uint32x4_t __b) 5209: { 5209: return __builtin_aarch64_uqsubv4si_uuu (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqsubq_u64 (uint64x2_t __a, uint64x2_t __b) 5209: { 5209: return __builtin_aarch64_uqsubv2di_uuu (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqneg_s8 (int8x8_t __a) 5209: { 5209: return (int8x8_t) __builtin_aarch64_sqnegv8qi (__a); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqneg_s16 (int16x4_t __a) 5209: { 5209: return (int16x4_t) __builtin_aarch64_sqnegv4hi (__a); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqneg_s32 (int32x2_t __a) 5209: { 5209: return (int32x2_t) __builtin_aarch64_sqnegv2si (__a); 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqneg_s64 (int64x1_t __a) 5209: { 5209: return (int64x1_t) {__builtin_aarch64_sqnegdi (__a[0])}; 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqnegq_s8 (int8x16_t __a) 5209: { 5209: return (int8x16_t) __builtin_aarch64_sqnegv16qi (__a); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqnegq_s16 (int16x8_t __a) 5209: { 5209: return (int16x8_t) __builtin_aarch64_sqnegv8hi (__a); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqnegq_s32 (int32x4_t __a) 5209: { 5209: return (int32x4_t) __builtin_aarch64_sqnegv4si (__a); 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqabs_s8 (int8x8_t __a) 5209: { 5209: return (int8x8_t) __builtin_aarch64_sqabsv8qi (__a); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqabs_s16 (int16x4_t __a) 5209: { 5209: return (int16x4_t) __builtin_aarch64_sqabsv4hi (__a); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqabs_s32 (int32x2_t __a) 5209: { 5209: return (int32x2_t) __builtin_aarch64_sqabsv2si (__a); 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqabs_s64 (int64x1_t __a) 5209: { 5209: return (int64x1_t) {__builtin_aarch64_sqabsdi (__a[0])}; 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqabsq_s8 (int8x16_t __a) 5209: { 5209: return (int8x16_t) __builtin_aarch64_sqabsv16qi (__a); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqabsq_s16 (int16x8_t __a) 5209: { 5209: return (int16x8_t) __builtin_aarch64_sqabsv8hi (__a); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqabsq_s32 (int32x4_t __a) 5209: { 5209: return (int32x4_t) __builtin_aarch64_sqabsv4si (__a); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmulh_s16 (int16x4_t __a, int16x4_t __b) 5209: { 5209: return (int16x4_t) __builtin_aarch64_sqdmulhv4hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmulh_s32 (int32x2_t __a, int32x2_t __b) 5209: { 5209: return (int32x2_t) __builtin_aarch64_sqdmulhv2si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmulhq_s16 (int16x8_t __a, int16x8_t __b) 5209: { 5209: return (int16x8_t) __builtin_aarch64_sqdmulhv8hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmulhq_s32 (int32x4_t __a, int32x4_t __b) 5209: { 5209: return (int32x4_t) __builtin_aarch64_sqdmulhv4si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrdmulh_s16 (int16x4_t __a, int16x4_t __b) 5209: { 5209: return (int16x4_t) __builtin_aarch64_sqrdmulhv4hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrdmulh_s32 (int32x2_t __a, int32x2_t __b) 5209: { 5209: return (int32x2_t) __builtin_aarch64_sqrdmulhv2si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrdmulhq_s16 (int16x8_t __a, int16x8_t __b) 5209: { 5209: return (int16x8_t) __builtin_aarch64_sqrdmulhv8hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrdmulhq_s32 (int32x4_t __a, int32x4_t __b) 5209: { 5209: return (int32x4_t) __builtin_aarch64_sqrdmulhv4si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcreate_s8 (uint64_t __a) 5209: { 5209: return (int8x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcreate_s16 (uint64_t __a) 5209: { 5209: return (int16x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcreate_s32 (uint64_t __a) 5209: { 5209: return (int32x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcreate_s64 (uint64_t __a) 5209: { 5209: return (int64x1_t) {__a}; 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcreate_f16 (uint64_t __a) 5209: { 5209: return (float16x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcreate_f32 (uint64_t __a) 5209: { 5209: return (float32x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcreate_u8 (uint64_t __a) 5209: { 5209: return (uint8x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcreate_u16 (uint64_t __a) 5209: { 5209: return (uint16x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcreate_u32 (uint64_t __a) 5209: { 5209: return (uint32x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcreate_u64 (uint64_t __a) 5209: { 5209: return (uint64x1_t) {__a}; 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcreate_f64 (uint64_t __a) 5209: { 5209: return (float64x1_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcreate_p8 (uint64_t __a) 5209: { 5209: return (poly8x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcreate_p16 (uint64_t __a) 5209: { 5209: return (poly16x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcreate_p64 (uint64_t __a) 5209: { 5209: return (poly64x1_t) __a; 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vget_lane_f16 (float16x4_t __a, const int __b) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; }); 5209: } 5209: 5209: __extension__ extern __inline float32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vget_lane_f32 (float32x2_t __a, const int __b) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; }); 5209: } 5209: 5209: __extension__ extern __inline float64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vget_lane_f64 (float64x1_t __a, const int __b) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; }); 5209: } 5209: 5209: __extension__ extern __inline poly8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vget_lane_p8 (poly8x8_t __a, const int __b) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; }); 5209: } 5209: 5209: __extension__ extern __inline poly16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vget_lane_p16 (poly16x4_t __a, const int __b) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; }); 5209: } 5209: 5209: __extension__ extern __inline poly64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vget_lane_p64 (poly64x1_t __a, const int __b) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; }); 5209: } 5209: 5209: __extension__ extern __inline int8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vget_lane_s8 (int8x8_t __a, const int __b) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; }); 5209: } 5209: 5209: __extension__ extern __inline int16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vget_lane_s16 (int16x4_t __a, const int __b) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; }); 5209: } 5209: 5209: __extension__ extern __inline int32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vget_lane_s32 (int32x2_t __a, const int __b) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; }); 5209: } 5209: 5209: __extension__ extern __inline int64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vget_lane_s64 (int64x1_t __a, const int __b) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; }); 5209: } 5209: 5209: __extension__ extern __inline uint8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vget_lane_u8 (uint8x8_t __a, const int __b) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; }); 5209: } 5209: 5209: __extension__ extern __inline uint16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vget_lane_u16 (uint16x4_t __a, const int __b) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; }); 5209: } 5209: 5209: __extension__ extern __inline uint32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vget_lane_u32 (uint32x2_t __a, const int __b) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; }); 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vget_lane_u64 (uint64x1_t __a, const int __b) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; }); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vgetq_lane_f16 (float16x8_t __a, const int __b) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; }); 5209: } 5209: 5209: __extension__ extern __inline float32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vgetq_lane_f32 (float32x4_t __a, const int __b) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; }); 5209: } 5209: 5209: __extension__ extern __inline float64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vgetq_lane_f64 (float64x2_t __a, const int __b) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; }); 5209: } 5209: 5209: __extension__ extern __inline poly8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vgetq_lane_p8 (poly8x16_t __a, const int __b) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; }); 5209: } 5209: 5209: __extension__ extern __inline poly16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vgetq_lane_p16 (poly16x8_t __a, const int __b) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; }); 5209: } 5209: 5209: __extension__ extern __inline poly64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vgetq_lane_p64 (poly64x2_t __a, const int __b) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; }); 5209: } 5209: 5209: __extension__ extern __inline int8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vgetq_lane_s8 (int8x16_t __a, const int __b) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; }); 5209: } 5209: 5209: __extension__ extern __inline int16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vgetq_lane_s16 (int16x8_t __a, const int __b) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; }); 5209: } 5209: 5209: __extension__ extern __inline int32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vgetq_lane_s32 (int32x4_t __a, const int __b) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; }); 5209: } 5209: 5209: __extension__ extern __inline int64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vgetq_lane_s64 (int64x2_t __a, const int __b) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; }); 5209: } 5209: 5209: __extension__ extern __inline uint8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vgetq_lane_u8 (uint8x16_t __a, const int __b) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; }); 5209: } 5209: 5209: __extension__ extern __inline uint16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vgetq_lane_u16 (uint16x8_t __a, const int __b) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; }); 5209: } 5209: 5209: __extension__ extern __inline uint32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vgetq_lane_u32 (uint32x4_t __a, const int __b) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; }); 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vgetq_lane_u64 (uint64x2_t __a, const int __b) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; }); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline poly8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_p8_f16 (float16x4_t __a) 5209: { 5209: return (poly8x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_p8_f64 (float64x1_t __a) 5209: { 5209: return (poly8x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_p8_s8 (int8x8_t __a) 5209: { 5209: return (poly8x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_p8_s16 (int16x4_t __a) 5209: { 5209: return (poly8x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_p8_s32 (int32x2_t __a) 5209: { 5209: return (poly8x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_p8_s64 (int64x1_t __a) 5209: { 5209: return (poly8x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_p8_f32 (float32x2_t __a) 5209: { 5209: return (poly8x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_p8_u8 (uint8x8_t __a) 5209: { 5209: return (poly8x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_p8_u16 (uint16x4_t __a) 5209: { 5209: return (poly8x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_p8_u32 (uint32x2_t __a) 5209: { 5209: return (poly8x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_p8_u64 (uint64x1_t __a) 5209: { 5209: return (poly8x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_p8_p16 (poly16x4_t __a) 5209: { 5209: return (poly8x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_p8_p64 (poly64x1_t __a) 5209: { 5209: return (poly8x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_p8_f64 (float64x2_t __a) 5209: { 5209: return (poly8x16_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_p8_s8 (int8x16_t __a) 5209: { 5209: return (poly8x16_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_p8_s16 (int16x8_t __a) 5209: { 5209: return (poly8x16_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_p8_s32 (int32x4_t __a) 5209: { 5209: return (poly8x16_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_p8_s64 (int64x2_t __a) 5209: { 5209: return (poly8x16_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_p8_f16 (float16x8_t __a) 5209: { 5209: return (poly8x16_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_p8_f32 (float32x4_t __a) 5209: { 5209: return (poly8x16_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_p8_u8 (uint8x16_t __a) 5209: { 5209: return (poly8x16_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_p8_u16 (uint16x8_t __a) 5209: { 5209: return (poly8x16_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_p8_u32 (uint32x4_t __a) 5209: { 5209: return (poly8x16_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_p8_u64 (uint64x2_t __a) 5209: { 5209: return (poly8x16_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_p8_p16 (poly16x8_t __a) 5209: { 5209: return (poly8x16_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_p8_p64 (poly64x2_t __a) 5209: { 5209: return (poly8x16_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_p8_p128 (poly128_t __a) 5209: { 5209: return (poly8x16_t)__a; 5209: } 5209: 5209: __extension__ extern __inline poly16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_p16_f16 (float16x4_t __a) 5209: { 5209: return (poly16x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_p16_f64 (float64x1_t __a) 5209: { 5209: return (poly16x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_p16_s8 (int8x8_t __a) 5209: { 5209: return (poly16x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_p16_s16 (int16x4_t __a) 5209: { 5209: return (poly16x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_p16_s32 (int32x2_t __a) 5209: { 5209: return (poly16x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_p16_s64 (int64x1_t __a) 5209: { 5209: return (poly16x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_p16_f32 (float32x2_t __a) 5209: { 5209: return (poly16x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_p16_u8 (uint8x8_t __a) 5209: { 5209: return (poly16x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_p16_u16 (uint16x4_t __a) 5209: { 5209: return (poly16x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_p16_u32 (uint32x2_t __a) 5209: { 5209: return (poly16x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_p16_u64 (uint64x1_t __a) 5209: { 5209: return (poly16x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_p16_p8 (poly8x8_t __a) 5209: { 5209: return (poly16x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_p16_p64 (poly64x1_t __a) 5209: { 5209: return (poly16x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_p16_f64 (float64x2_t __a) 5209: { 5209: return (poly16x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_p16_s8 (int8x16_t __a) 5209: { 5209: return (poly16x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_p16_s16 (int16x8_t __a) 5209: { 5209: return (poly16x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_p16_s32 (int32x4_t __a) 5209: { 5209: return (poly16x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_p16_s64 (int64x2_t __a) 5209: { 5209: return (poly16x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_p16_f16 (float16x8_t __a) 5209: { 5209: return (poly16x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_p16_f32 (float32x4_t __a) 5209: { 5209: return (poly16x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_p16_u8 (uint8x16_t __a) 5209: { 5209: return (poly16x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_p16_u16 (uint16x8_t __a) 5209: { 5209: return (poly16x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_p16_u32 (uint32x4_t __a) 5209: { 5209: return (poly16x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_p16_u64 (uint64x2_t __a) 5209: { 5209: return (poly16x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_p16_p8 (poly8x16_t __a) 5209: { 5209: return (poly16x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_p16_p64 (poly64x2_t __a) 5209: { 5209: return (poly16x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_p16_p128 (poly128_t __a) 5209: { 5209: return (poly16x8_t)__a; 5209: } 5209: 5209: __extension__ extern __inline poly64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_p64_f16 (float16x4_t __a) 5209: { 5209: return (poly64x1_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_p64_f64 (float64x1_t __a) 5209: { 5209: return (poly64x1_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_p64_s8 (int8x8_t __a) 5209: { 5209: return (poly64x1_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_p64_s16 (int16x4_t __a) 5209: { 5209: return (poly64x1_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_p64_s32 (int32x2_t __a) 5209: { 5209: return (poly64x1_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_p64_s64 (int64x1_t __a) 5209: { 5209: return (poly64x1_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_p64_f32 (float32x2_t __a) 5209: { 5209: return (poly64x1_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_p64_u8 (uint8x8_t __a) 5209: { 5209: return (poly64x1_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_p64_u16 (uint16x4_t __a) 5209: { 5209: return (poly64x1_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_p64_u32 (uint32x2_t __a) 5209: { 5209: return (poly64x1_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_p64_u64 (uint64x1_t __a) 5209: { 5209: return (poly64x1_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_p64_p8 (poly8x8_t __a) 5209: { 5209: return (poly64x1_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_p64_p16 (poly16x4_t __a) 5209: { 5209: return (poly64x1_t)__a; 5209: } 5209: 5209: __extension__ extern __inline poly64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_p64_f64 (float64x2_t __a) 5209: { 5209: return (poly64x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_p64_s8 (int8x16_t __a) 5209: { 5209: return (poly64x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_p64_s16 (int16x8_t __a) 5209: { 5209: return (poly64x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_p64_s32 (int32x4_t __a) 5209: { 5209: return (poly64x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_p64_s64 (int64x2_t __a) 5209: { 5209: return (poly64x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_p64_f16 (float16x8_t __a) 5209: { 5209: return (poly64x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_p64_f32 (float32x4_t __a) 5209: { 5209: return (poly64x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_p64_p128 (poly128_t __a) 5209: { 5209: return (poly64x2_t)__a; 5209: } 5209: 5209: __extension__ extern __inline poly64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_p64_u8 (uint8x16_t __a) 5209: { 5209: return (poly64x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_p64_u16 (uint16x8_t __a) 5209: { 5209: return (poly64x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_p64_p16 (poly16x8_t __a) 5209: { 5209: return (poly64x2_t)__a; 5209: } 5209: 5209: __extension__ extern __inline poly64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_p64_u32 (uint32x4_t __a) 5209: { 5209: return (poly64x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_p64_u64 (uint64x2_t __a) 5209: { 5209: return (poly64x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_p64_p8 (poly8x16_t __a) 5209: { 5209: return (poly64x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly128_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_p128_p8 (poly8x16_t __a) 5209: { 5209: return (poly128_t)__a; 5209: } 5209: 5209: __extension__ extern __inline poly128_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_p128_p16 (poly16x8_t __a) 5209: { 5209: return (poly128_t)__a; 5209: } 5209: 5209: __extension__ extern __inline poly128_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_p128_f16 (float16x8_t __a) 5209: { 5209: return (poly128_t) __a; 5209: } 5209: 5209: __extension__ extern __inline poly128_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_p128_f32 (float32x4_t __a) 5209: { 5209: return (poly128_t)__a; 5209: } 5209: 5209: __extension__ extern __inline poly128_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_p128_p64 (poly64x2_t __a) 5209: { 5209: return (poly128_t)__a; 5209: } 5209: 5209: __extension__ extern __inline poly128_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_p128_s64 (int64x2_t __a) 5209: { 5209: return (poly128_t)__a; 5209: } 5209: 5209: __extension__ extern __inline poly128_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_p128_u64 (uint64x2_t __a) 5209: { 5209: return (poly128_t)__a; 5209: } 5209: 5209: __extension__ extern __inline poly128_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_p128_s8 (int8x16_t __a) 5209: { 5209: return (poly128_t)__a; 5209: } 5209: 5209: __extension__ extern __inline poly128_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_p128_s16 (int16x8_t __a) 5209: { 5209: return (poly128_t)__a; 5209: } 5209: 5209: __extension__ extern __inline poly128_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_p128_s32 (int32x4_t __a) 5209: { 5209: return (poly128_t)__a; 5209: } 5209: 5209: __extension__ extern __inline poly128_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_p128_u8 (uint8x16_t __a) 5209: { 5209: return (poly128_t)__a; 5209: } 5209: 5209: __extension__ extern __inline poly128_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_p128_u16 (uint16x8_t __a) 5209: { 5209: return (poly128_t)__a; 5209: } 5209: 5209: __extension__ extern __inline poly128_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_p128_u32 (uint32x4_t __a) 5209: { 5209: return (poly128_t)__a; 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_f16_f64 (float64x1_t __a) 5209: { 5209: return (float16x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_f16_s8 (int8x8_t __a) 5209: { 5209: return (float16x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_f16_s16 (int16x4_t __a) 5209: { 5209: return (float16x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_f16_s32 (int32x2_t __a) 5209: { 5209: return (float16x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_f16_s64 (int64x1_t __a) 5209: { 5209: return (float16x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_f16_f32 (float32x2_t __a) 5209: { 5209: return (float16x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_f16_u8 (uint8x8_t __a) 5209: { 5209: return (float16x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_f16_u16 (uint16x4_t __a) 5209: { 5209: return (float16x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_f16_u32 (uint32x2_t __a) 5209: { 5209: return (float16x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_f16_u64 (uint64x1_t __a) 5209: { 5209: return (float16x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_f16_p8 (poly8x8_t __a) 5209: { 5209: return (float16x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_f16_p16 (poly16x4_t __a) 5209: { 5209: return (float16x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_f16_p64 (poly64x1_t __a) 5209: { 5209: return (float16x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_f16_f64 (float64x2_t __a) 5209: { 5209: return (float16x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_f16_s8 (int8x16_t __a) 5209: { 5209: return (float16x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_f16_s16 (int16x8_t __a) 5209: { 5209: return (float16x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_f16_s32 (int32x4_t __a) 5209: { 5209: return (float16x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_f16_s64 (int64x2_t __a) 5209: { 5209: return (float16x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_f16_f32 (float32x4_t __a) 5209: { 5209: return (float16x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_f16_u8 (uint8x16_t __a) 5209: { 5209: return (float16x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_f16_u16 (uint16x8_t __a) 5209: { 5209: return (float16x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_f16_u32 (uint32x4_t __a) 5209: { 5209: return (float16x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_f16_u64 (uint64x2_t __a) 5209: { 5209: return (float16x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_f16_p8 (poly8x16_t __a) 5209: { 5209: return (float16x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_f16_p128 (poly128_t __a) 5209: { 5209: return (float16x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_f16_p16 (poly16x8_t __a) 5209: { 5209: return (float16x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_f16_p64 (poly64x2_t __a) 5209: { 5209: return (float16x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_f32_f16 (float16x4_t __a) 5209: { 5209: return (float32x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_f32_f64 (float64x1_t __a) 5209: { 5209: return (float32x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_f32_s8 (int8x8_t __a) 5209: { 5209: return (float32x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_f32_s16 (int16x4_t __a) 5209: { 5209: return (float32x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_f32_s32 (int32x2_t __a) 5209: { 5209: return (float32x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_f32_s64 (int64x1_t __a) 5209: { 5209: return (float32x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_f32_u8 (uint8x8_t __a) 5209: { 5209: return (float32x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_f32_u16 (uint16x4_t __a) 5209: { 5209: return (float32x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_f32_u32 (uint32x2_t __a) 5209: { 5209: return (float32x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_f32_u64 (uint64x1_t __a) 5209: { 5209: return (float32x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_f32_p8 (poly8x8_t __a) 5209: { 5209: return (float32x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_f32_p16 (poly16x4_t __a) 5209: { 5209: return (float32x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_f32_p64 (poly64x1_t __a) 5209: { 5209: return (float32x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_f32_f16 (float16x8_t __a) 5209: { 5209: return (float32x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_f32_f64 (float64x2_t __a) 5209: { 5209: return (float32x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_f32_s8 (int8x16_t __a) 5209: { 5209: return (float32x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_f32_s16 (int16x8_t __a) 5209: { 5209: return (float32x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_f32_s32 (int32x4_t __a) 5209: { 5209: return (float32x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_f32_s64 (int64x2_t __a) 5209: { 5209: return (float32x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_f32_u8 (uint8x16_t __a) 5209: { 5209: return (float32x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_f32_u16 (uint16x8_t __a) 5209: { 5209: return (float32x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_f32_u32 (uint32x4_t __a) 5209: { 5209: return (float32x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_f32_u64 (uint64x2_t __a) 5209: { 5209: return (float32x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_f32_p8 (poly8x16_t __a) 5209: { 5209: return (float32x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_f32_p16 (poly16x8_t __a) 5209: { 5209: return (float32x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_f32_p64 (poly64x2_t __a) 5209: { 5209: return (float32x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_f32_p128 (poly128_t __a) 5209: { 5209: return (float32x4_t)__a; 5209: } 5209: 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_f64_f16 (float16x4_t __a) 5209: { 5209: return (float64x1_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_f64_f32 (float32x2_t __a) 5209: { 5209: return (float64x1_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_f64_p8 (poly8x8_t __a) 5209: { 5209: return (float64x1_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_f64_p16 (poly16x4_t __a) 5209: { 5209: return (float64x1_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_f64_p64 (poly64x1_t __a) 5209: { 5209: return (float64x1_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_f64_s8 (int8x8_t __a) 5209: { 5209: return (float64x1_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_f64_s16 (int16x4_t __a) 5209: { 5209: return (float64x1_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_f64_s32 (int32x2_t __a) 5209: { 5209: return (float64x1_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_f64_s64 (int64x1_t __a) 5209: { 5209: return (float64x1_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_f64_u8 (uint8x8_t __a) 5209: { 5209: return (float64x1_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_f64_u16 (uint16x4_t __a) 5209: { 5209: return (float64x1_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_f64_u32 (uint32x2_t __a) 5209: { 5209: return (float64x1_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_f64_u64 (uint64x1_t __a) 5209: { 5209: return (float64x1_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_f64_f16 (float16x8_t __a) 5209: { 5209: return (float64x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_f64_f32 (float32x4_t __a) 5209: { 5209: return (float64x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_f64_p8 (poly8x16_t __a) 5209: { 5209: return (float64x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_f64_p16 (poly16x8_t __a) 5209: { 5209: return (float64x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_f64_p64 (poly64x2_t __a) 5209: { 5209: return (float64x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_f64_s8 (int8x16_t __a) 5209: { 5209: return (float64x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_f64_s16 (int16x8_t __a) 5209: { 5209: return (float64x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_f64_s32 (int32x4_t __a) 5209: { 5209: return (float64x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_f64_s64 (int64x2_t __a) 5209: { 5209: return (float64x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_f64_u8 (uint8x16_t __a) 5209: { 5209: return (float64x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_f64_u16 (uint16x8_t __a) 5209: { 5209: return (float64x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_f64_u32 (uint32x4_t __a) 5209: { 5209: return (float64x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_f64_u64 (uint64x2_t __a) 5209: { 5209: return (float64x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_s64_f16 (float16x4_t __a) 5209: { 5209: return (int64x1_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_s64_f64 (float64x1_t __a) 5209: { 5209: return (int64x1_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_s64_s8 (int8x8_t __a) 5209: { 5209: return (int64x1_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_s64_s16 (int16x4_t __a) 5209: { 5209: return (int64x1_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_s64_s32 (int32x2_t __a) 5209: { 5209: return (int64x1_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_s64_f32 (float32x2_t __a) 5209: { 5209: return (int64x1_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_s64_u8 (uint8x8_t __a) 5209: { 5209: return (int64x1_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_s64_u16 (uint16x4_t __a) 5209: { 5209: return (int64x1_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_s64_u32 (uint32x2_t __a) 5209: { 5209: return (int64x1_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_s64_u64 (uint64x1_t __a) 5209: { 5209: return (int64x1_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_s64_p8 (poly8x8_t __a) 5209: { 5209: return (int64x1_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_s64_p16 (poly16x4_t __a) 5209: { 5209: return (int64x1_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_s64_p64 (poly64x1_t __a) 5209: { 5209: return (int64x1_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_s64_f64 (float64x2_t __a) 5209: { 5209: return (int64x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_s64_s8 (int8x16_t __a) 5209: { 5209: return (int64x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_s64_s16 (int16x8_t __a) 5209: { 5209: return (int64x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_s64_s32 (int32x4_t __a) 5209: { 5209: return (int64x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_s64_f16 (float16x8_t __a) 5209: { 5209: return (int64x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_s64_f32 (float32x4_t __a) 5209: { 5209: return (int64x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_s64_u8 (uint8x16_t __a) 5209: { 5209: return (int64x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_s64_u16 (uint16x8_t __a) 5209: { 5209: return (int64x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_s64_u32 (uint32x4_t __a) 5209: { 5209: return (int64x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_s64_u64 (uint64x2_t __a) 5209: { 5209: return (int64x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_s64_p8 (poly8x16_t __a) 5209: { 5209: return (int64x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_s64_p16 (poly16x8_t __a) 5209: { 5209: return (int64x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_s64_p64 (poly64x2_t __a) 5209: { 5209: return (int64x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_s64_p128 (poly128_t __a) 5209: { 5209: return (int64x2_t)__a; 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_u64_f16 (float16x4_t __a) 5209: { 5209: return (uint64x1_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_u64_f64 (float64x1_t __a) 5209: { 5209: return (uint64x1_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_u64_s8 (int8x8_t __a) 5209: { 5209: return (uint64x1_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_u64_s16 (int16x4_t __a) 5209: { 5209: return (uint64x1_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_u64_s32 (int32x2_t __a) 5209: { 5209: return (uint64x1_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_u64_s64 (int64x1_t __a) 5209: { 5209: return (uint64x1_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_u64_f32 (float32x2_t __a) 5209: { 5209: return (uint64x1_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_u64_u8 (uint8x8_t __a) 5209: { 5209: return (uint64x1_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_u64_u16 (uint16x4_t __a) 5209: { 5209: return (uint64x1_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_u64_u32 (uint32x2_t __a) 5209: { 5209: return (uint64x1_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_u64_p8 (poly8x8_t __a) 5209: { 5209: return (uint64x1_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_u64_p16 (poly16x4_t __a) 5209: { 5209: return (uint64x1_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_u64_p64 (poly64x1_t __a) 5209: { 5209: return (uint64x1_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_u64_f64 (float64x2_t __a) 5209: { 5209: return (uint64x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_u64_s8 (int8x16_t __a) 5209: { 5209: return (uint64x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_u64_s16 (int16x8_t __a) 5209: { 5209: return (uint64x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_u64_s32 (int32x4_t __a) 5209: { 5209: return (uint64x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_u64_s64 (int64x2_t __a) 5209: { 5209: return (uint64x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_u64_f16 (float16x8_t __a) 5209: { 5209: return (uint64x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_u64_f32 (float32x4_t __a) 5209: { 5209: return (uint64x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_u64_u8 (uint8x16_t __a) 5209: { 5209: return (uint64x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_u64_u16 (uint16x8_t __a) 5209: { 5209: return (uint64x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_u64_u32 (uint32x4_t __a) 5209: { 5209: return (uint64x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_u64_p8 (poly8x16_t __a) 5209: { 5209: return (uint64x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_u64_p16 (poly16x8_t __a) 5209: { 5209: return (uint64x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_u64_p64 (poly64x2_t __a) 5209: { 5209: return (uint64x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_u64_p128 (poly128_t __a) 5209: { 5209: return (uint64x2_t)__a; 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_s8_f16 (float16x4_t __a) 5209: { 5209: return (int8x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_s8_f64 (float64x1_t __a) 5209: { 5209: return (int8x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_s8_s16 (int16x4_t __a) 5209: { 5209: return (int8x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_s8_s32 (int32x2_t __a) 5209: { 5209: return (int8x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_s8_s64 (int64x1_t __a) 5209: { 5209: return (int8x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_s8_f32 (float32x2_t __a) 5209: { 5209: return (int8x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_s8_u8 (uint8x8_t __a) 5209: { 5209: return (int8x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_s8_u16 (uint16x4_t __a) 5209: { 5209: return (int8x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_s8_u32 (uint32x2_t __a) 5209: { 5209: return (int8x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_s8_u64 (uint64x1_t __a) 5209: { 5209: return (int8x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_s8_p8 (poly8x8_t __a) 5209: { 5209: return (int8x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_s8_p16 (poly16x4_t __a) 5209: { 5209: return (int8x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_s8_p64 (poly64x1_t __a) 5209: { 5209: return (int8x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_s8_f64 (float64x2_t __a) 5209: { 5209: return (int8x16_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_s8_s16 (int16x8_t __a) 5209: { 5209: return (int8x16_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_s8_s32 (int32x4_t __a) 5209: { 5209: return (int8x16_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_s8_s64 (int64x2_t __a) 5209: { 5209: return (int8x16_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_s8_f16 (float16x8_t __a) 5209: { 5209: return (int8x16_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_s8_f32 (float32x4_t __a) 5209: { 5209: return (int8x16_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_s8_u8 (uint8x16_t __a) 5209: { 5209: return (int8x16_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_s8_u16 (uint16x8_t __a) 5209: { 5209: return (int8x16_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_s8_u32 (uint32x4_t __a) 5209: { 5209: return (int8x16_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_s8_u64 (uint64x2_t __a) 5209: { 5209: return (int8x16_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_s8_p8 (poly8x16_t __a) 5209: { 5209: return (int8x16_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_s8_p16 (poly16x8_t __a) 5209: { 5209: return (int8x16_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_s8_p64 (poly64x2_t __a) 5209: { 5209: return (int8x16_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_s8_p128 (poly128_t __a) 5209: { 5209: return (int8x16_t)__a; 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_s16_f16 (float16x4_t __a) 5209: { 5209: return (int16x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_s16_f64 (float64x1_t __a) 5209: { 5209: return (int16x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_s16_s8 (int8x8_t __a) 5209: { 5209: return (int16x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_s16_s32 (int32x2_t __a) 5209: { 5209: return (int16x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_s16_s64 (int64x1_t __a) 5209: { 5209: return (int16x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_s16_f32 (float32x2_t __a) 5209: { 5209: return (int16x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_s16_u8 (uint8x8_t __a) 5209: { 5209: return (int16x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_s16_u16 (uint16x4_t __a) 5209: { 5209: return (int16x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_s16_u32 (uint32x2_t __a) 5209: { 5209: return (int16x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_s16_u64 (uint64x1_t __a) 5209: { 5209: return (int16x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_s16_p8 (poly8x8_t __a) 5209: { 5209: return (int16x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_s16_p16 (poly16x4_t __a) 5209: { 5209: return (int16x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_s16_p64 (poly64x1_t __a) 5209: { 5209: return (int16x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_s16_f64 (float64x2_t __a) 5209: { 5209: return (int16x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_s16_s8 (int8x16_t __a) 5209: { 5209: return (int16x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_s16_s32 (int32x4_t __a) 5209: { 5209: return (int16x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_s16_s64 (int64x2_t __a) 5209: { 5209: return (int16x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_s16_f16 (float16x8_t __a) 5209: { 5209: return (int16x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_s16_f32 (float32x4_t __a) 5209: { 5209: return (int16x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_s16_u8 (uint8x16_t __a) 5209: { 5209: return (int16x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_s16_u16 (uint16x8_t __a) 5209: { 5209: return (int16x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_s16_u32 (uint32x4_t __a) 5209: { 5209: return (int16x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_s16_u64 (uint64x2_t __a) 5209: { 5209: return (int16x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_s16_p8 (poly8x16_t __a) 5209: { 5209: return (int16x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_s16_p16 (poly16x8_t __a) 5209: { 5209: return (int16x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_s16_p64 (poly64x2_t __a) 5209: { 5209: return (int16x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_s16_p128 (poly128_t __a) 5209: { 5209: return (int16x8_t)__a; 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_s32_f16 (float16x4_t __a) 5209: { 5209: return (int32x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_s32_f64 (float64x1_t __a) 5209: { 5209: return (int32x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_s32_s8 (int8x8_t __a) 5209: { 5209: return (int32x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_s32_s16 (int16x4_t __a) 5209: { 5209: return (int32x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_s32_s64 (int64x1_t __a) 5209: { 5209: return (int32x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_s32_f32 (float32x2_t __a) 5209: { 5209: return (int32x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_s32_u8 (uint8x8_t __a) 5209: { 5209: return (int32x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_s32_u16 (uint16x4_t __a) 5209: { 5209: return (int32x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_s32_u32 (uint32x2_t __a) 5209: { 5209: return (int32x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_s32_u64 (uint64x1_t __a) 5209: { 5209: return (int32x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_s32_p8 (poly8x8_t __a) 5209: { 5209: return (int32x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_s32_p16 (poly16x4_t __a) 5209: { 5209: return (int32x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_s32_p64 (poly64x1_t __a) 5209: { 5209: return (int32x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_s32_f64 (float64x2_t __a) 5209: { 5209: return (int32x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_s32_s8 (int8x16_t __a) 5209: { 5209: return (int32x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_s32_s16 (int16x8_t __a) 5209: { 5209: return (int32x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_s32_s64 (int64x2_t __a) 5209: { 5209: return (int32x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_s32_f16 (float16x8_t __a) 5209: { 5209: return (int32x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_s32_f32 (float32x4_t __a) 5209: { 5209: return (int32x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_s32_u8 (uint8x16_t __a) 5209: { 5209: return (int32x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_s32_u16 (uint16x8_t __a) 5209: { 5209: return (int32x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_s32_u32 (uint32x4_t __a) 5209: { 5209: return (int32x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_s32_u64 (uint64x2_t __a) 5209: { 5209: return (int32x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_s32_p8 (poly8x16_t __a) 5209: { 5209: return (int32x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_s32_p16 (poly16x8_t __a) 5209: { 5209: return (int32x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_s32_p64 (poly64x2_t __a) 5209: { 5209: return (int32x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_s32_p128 (poly128_t __a) 5209: { 5209: return (int32x4_t)__a; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_u8_f16 (float16x4_t __a) 5209: { 5209: return (uint8x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_u8_f64 (float64x1_t __a) 5209: { 5209: return (uint8x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_u8_s8 (int8x8_t __a) 5209: { 5209: return (uint8x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_u8_s16 (int16x4_t __a) 5209: { 5209: return (uint8x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_u8_s32 (int32x2_t __a) 5209: { 5209: return (uint8x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_u8_s64 (int64x1_t __a) 5209: { 5209: return (uint8x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_u8_f32 (float32x2_t __a) 5209: { 5209: return (uint8x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_u8_u16 (uint16x4_t __a) 5209: { 5209: return (uint8x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_u8_u32 (uint32x2_t __a) 5209: { 5209: return (uint8x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_u8_u64 (uint64x1_t __a) 5209: { 5209: return (uint8x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_u8_p8 (poly8x8_t __a) 5209: { 5209: return (uint8x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_u8_p16 (poly16x4_t __a) 5209: { 5209: return (uint8x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_u8_p64 (poly64x1_t __a) 5209: { 5209: return (uint8x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_u8_f64 (float64x2_t __a) 5209: { 5209: return (uint8x16_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_u8_s8 (int8x16_t __a) 5209: { 5209: return (uint8x16_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_u8_s16 (int16x8_t __a) 5209: { 5209: return (uint8x16_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_u8_s32 (int32x4_t __a) 5209: { 5209: return (uint8x16_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_u8_s64 (int64x2_t __a) 5209: { 5209: return (uint8x16_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_u8_f16 (float16x8_t __a) 5209: { 5209: return (uint8x16_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_u8_f32 (float32x4_t __a) 5209: { 5209: return (uint8x16_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_u8_u16 (uint16x8_t __a) 5209: { 5209: return (uint8x16_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_u8_u32 (uint32x4_t __a) 5209: { 5209: return (uint8x16_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_u8_u64 (uint64x2_t __a) 5209: { 5209: return (uint8x16_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_u8_p8 (poly8x16_t __a) 5209: { 5209: return (uint8x16_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_u8_p16 (poly16x8_t __a) 5209: { 5209: return (uint8x16_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_u8_p64 (poly64x2_t __a) 5209: { 5209: return (uint8x16_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_u8_p128 (poly128_t __a) 5209: { 5209: return (uint8x16_t)__a; 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_u16_f16 (float16x4_t __a) 5209: { 5209: return (uint16x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_u16_f64 (float64x1_t __a) 5209: { 5209: return (uint16x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_u16_s8 (int8x8_t __a) 5209: { 5209: return (uint16x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_u16_s16 (int16x4_t __a) 5209: { 5209: return (uint16x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_u16_s32 (int32x2_t __a) 5209: { 5209: return (uint16x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_u16_s64 (int64x1_t __a) 5209: { 5209: return (uint16x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_u16_f32 (float32x2_t __a) 5209: { 5209: return (uint16x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_u16_u8 (uint8x8_t __a) 5209: { 5209: return (uint16x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_u16_u32 (uint32x2_t __a) 5209: { 5209: return (uint16x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_u16_u64 (uint64x1_t __a) 5209: { 5209: return (uint16x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_u16_p8 (poly8x8_t __a) 5209: { 5209: return (uint16x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_u16_p16 (poly16x4_t __a) 5209: { 5209: return (uint16x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_u16_p64 (poly64x1_t __a) 5209: { 5209: return (uint16x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_u16_f64 (float64x2_t __a) 5209: { 5209: return (uint16x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_u16_s8 (int8x16_t __a) 5209: { 5209: return (uint16x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_u16_s16 (int16x8_t __a) 5209: { 5209: return (uint16x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_u16_s32 (int32x4_t __a) 5209: { 5209: return (uint16x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_u16_s64 (int64x2_t __a) 5209: { 5209: return (uint16x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_u16_f16 (float16x8_t __a) 5209: { 5209: return (uint16x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_u16_f32 (float32x4_t __a) 5209: { 5209: return (uint16x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_u16_u8 (uint8x16_t __a) 5209: { 5209: return (uint16x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_u16_u32 (uint32x4_t __a) 5209: { 5209: return (uint16x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_u16_u64 (uint64x2_t __a) 5209: { 5209: return (uint16x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_u16_p8 (poly8x16_t __a) 5209: { 5209: return (uint16x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_u16_p16 (poly16x8_t __a) 5209: { 5209: return (uint16x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_u16_p64 (poly64x2_t __a) 5209: { 5209: return (uint16x8_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_u16_p128 (poly128_t __a) 5209: { 5209: return (uint16x8_t)__a; 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_u32_f16 (float16x4_t __a) 5209: { 5209: return (uint32x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_u32_f64 (float64x1_t __a) 5209: { 5209: return (uint32x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_u32_s8 (int8x8_t __a) 5209: { 5209: return (uint32x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_u32_s16 (int16x4_t __a) 5209: { 5209: return (uint32x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_u32_s32 (int32x2_t __a) 5209: { 5209: return (uint32x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_u32_s64 (int64x1_t __a) 5209: { 5209: return (uint32x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_u32_f32 (float32x2_t __a) 5209: { 5209: return (uint32x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_u32_u8 (uint8x8_t __a) 5209: { 5209: return (uint32x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_u32_u16 (uint16x4_t __a) 5209: { 5209: return (uint32x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_u32_u64 (uint64x1_t __a) 5209: { 5209: return (uint32x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_u32_p8 (poly8x8_t __a) 5209: { 5209: return (uint32x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_u32_p16 (poly16x4_t __a) 5209: { 5209: return (uint32x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpret_u32_p64 (poly64x1_t __a) 5209: { 5209: return (uint32x2_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_u32_f64 (float64x2_t __a) 5209: { 5209: return (uint32x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_u32_s8 (int8x16_t __a) 5209: { 5209: return (uint32x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_u32_s16 (int16x8_t __a) 5209: { 5209: return (uint32x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_u32_s32 (int32x4_t __a) 5209: { 5209: return (uint32x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_u32_s64 (int64x2_t __a) 5209: { 5209: return (uint32x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_u32_f16 (float16x8_t __a) 5209: { 5209: return (uint32x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_u32_f32 (float32x4_t __a) 5209: { 5209: return (uint32x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_u32_u8 (uint8x16_t __a) 5209: { 5209: return (uint32x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_u32_u16 (uint16x8_t __a) 5209: { 5209: return (uint32x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_u32_u64 (uint64x2_t __a) 5209: { 5209: return (uint32x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_u32_p8 (poly8x16_t __a) 5209: { 5209: return (uint32x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_u32_p16 (poly16x8_t __a) 5209: { 5209: return (uint32x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_u32_p64 (poly64x2_t __a) 5209: { 5209: return (uint32x4_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vreinterpretq_u32_p128 (poly128_t __a) 5209: { 5209: return (uint32x4_t)__a; 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vset_lane_f16 (float16_t __elem, float16x4_t __vec, const int __index) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__vec), sizeof(__vec[0]), __index); __vec[__index] = __elem; __vec; }); 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vset_lane_f32 (float32_t __elem, float32x2_t __vec, const int __index) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__vec), sizeof(__vec[0]), __index); __vec[__index] = __elem; __vec; }); 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vset_lane_f64 (float64_t __elem, float64x1_t __vec, const int __index) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__vec), sizeof(__vec[0]), __index); __vec[__index] = __elem; __vec; }); 5209: } 5209: 5209: __extension__ extern __inline poly8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vset_lane_p8 (poly8_t __elem, poly8x8_t __vec, const int __index) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__vec), sizeof(__vec[0]), __index); __vec[__index] = __elem; __vec; }); 5209: } 5209: 5209: __extension__ extern __inline poly16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vset_lane_p16 (poly16_t __elem, poly16x4_t __vec, const int __index) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__vec), sizeof(__vec[0]), __index); __vec[__index] = __elem; __vec; }); 5209: } 5209: 5209: __extension__ extern __inline poly64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vset_lane_p64 (poly64_t __elem, poly64x1_t __vec, const int __index) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__vec), sizeof(__vec[0]), __index); __vec[__index] = __elem; __vec; }); 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vset_lane_s8 (int8_t __elem, int8x8_t __vec, const int __index) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__vec), sizeof(__vec[0]), __index); __vec[__index] = __elem; __vec; }); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vset_lane_s16 (int16_t __elem, int16x4_t __vec, const int __index) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__vec), sizeof(__vec[0]), __index); __vec[__index] = __elem; __vec; }); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vset_lane_s32 (int32_t __elem, int32x2_t __vec, const int __index) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__vec), sizeof(__vec[0]), __index); __vec[__index] = __elem; __vec; }); 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vset_lane_s64 (int64_t __elem, int64x1_t __vec, const int __index) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__vec), sizeof(__vec[0]), __index); __vec[__index] = __elem; __vec; }); 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vset_lane_u8 (uint8_t __elem, uint8x8_t __vec, const int __index) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__vec), sizeof(__vec[0]), __index); __vec[__index] = __elem; __vec; }); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vset_lane_u16 (uint16_t __elem, uint16x4_t __vec, const int __index) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__vec), sizeof(__vec[0]), __index); __vec[__index] = __elem; __vec; }); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vset_lane_u32 (uint32_t __elem, uint32x2_t __vec, const int __index) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__vec), sizeof(__vec[0]), __index); __vec[__index] = __elem; __vec; }); 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vset_lane_u64 (uint64_t __elem, uint64x1_t __vec, const int __index) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__vec), sizeof(__vec[0]), __index); __vec[__index] = __elem; __vec; }); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsetq_lane_f16 (float16_t __elem, float16x8_t __vec, const int __index) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__vec), sizeof(__vec[0]), __index); __vec[__index] = __elem; __vec; }); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsetq_lane_f32 (float32_t __elem, float32x4_t __vec, const int __index) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__vec), sizeof(__vec[0]), __index); __vec[__index] = __elem; __vec; }); 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsetq_lane_f64 (float64_t __elem, float64x2_t __vec, const int __index) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__vec), sizeof(__vec[0]), __index); __vec[__index] = __elem; __vec; }); 5209: } 5209: 5209: __extension__ extern __inline poly8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsetq_lane_p8 (poly8_t __elem, poly8x16_t __vec, const int __index) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__vec), sizeof(__vec[0]), __index); __vec[__index] = __elem; __vec; }); 5209: } 5209: 5209: __extension__ extern __inline poly16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsetq_lane_p16 (poly16_t __elem, poly16x8_t __vec, const int __index) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__vec), sizeof(__vec[0]), __index); __vec[__index] = __elem; __vec; }); 5209: } 5209: 5209: __extension__ extern __inline poly64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsetq_lane_p64 (poly64_t __elem, poly64x2_t __vec, const int __index) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__vec), sizeof(__vec[0]), __index); __vec[__index] = __elem; __vec; }); 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsetq_lane_s8 (int8_t __elem, int8x16_t __vec, const int __index) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__vec), sizeof(__vec[0]), __index); __vec[__index] = __elem; __vec; }); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsetq_lane_s16 (int16_t __elem, int16x8_t __vec, const int __index) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__vec), sizeof(__vec[0]), __index); __vec[__index] = __elem; __vec; }); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsetq_lane_s32 (int32_t __elem, int32x4_t __vec, const int __index) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__vec), sizeof(__vec[0]), __index); __vec[__index] = __elem; __vec; }); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsetq_lane_s64 (int64_t __elem, int64x2_t __vec, const int __index) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__vec), sizeof(__vec[0]), __index); __vec[__index] = __elem; __vec; }); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsetq_lane_u8 (uint8_t __elem, uint8x16_t __vec, const int __index) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__vec), sizeof(__vec[0]), __index); __vec[__index] = __elem; __vec; }); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsetq_lane_u16 (uint16_t __elem, uint16x8_t __vec, const int __index) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__vec), sizeof(__vec[0]), __index); __vec[__index] = __elem; __vec; }); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsetq_lane_u32 (uint32_t __elem, uint32x4_t __vec, const int __index) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__vec), sizeof(__vec[0]), __index); __vec[__index] = __elem; __vec; }); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsetq_lane_u64 (uint64_t __elem, uint64x2_t __vec, const int __index) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__vec), sizeof(__vec[0]), __index); __vec[__index] = __elem; __vec; }); 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vget_low_f16 (float16x8_t __a) 5209: { 5209: uint64x2_t tmp = vreinterpretq_u64_f16 (__a); uint64x1_t lo = vcreate_u64 (vgetq_lane_u64 (tmp, 0)); return vreinterpret_f16_u64 (lo);; 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vget_low_f32 (float32x4_t __a) 5209: { 5209: uint64x2_t tmp = vreinterpretq_u64_f32 (__a); uint64x1_t lo = vcreate_u64 (vgetq_lane_u64 (tmp, 0)); return vreinterpret_f32_u64 (lo);; 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vget_low_f64 (float64x2_t __a) 5209: { 5209: return (float64x1_t) {vgetq_lane_f64 (__a, 0)}; 5209: } 5209: 5209: __extension__ extern __inline poly8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vget_low_p8 (poly8x16_t __a) 5209: { 5209: uint64x2_t tmp = vreinterpretq_u64_p8 (__a); uint64x1_t lo = vcreate_u64 (vgetq_lane_u64 (tmp, 0)); return vreinterpret_p8_u64 (lo);; 5209: } 5209: 5209: __extension__ extern __inline poly16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vget_low_p16 (poly16x8_t __a) 5209: { 5209: uint64x2_t tmp = vreinterpretq_u64_p16 (__a); uint64x1_t lo = vcreate_u64 (vgetq_lane_u64 (tmp, 0)); return vreinterpret_p16_u64 (lo);; 5209: } 5209: 5209: __extension__ extern __inline poly64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vget_low_p64 (poly64x2_t __a) 5209: { 5209: uint64x2_t tmp = vreinterpretq_u64_p64 (__a); uint64x1_t lo = vcreate_u64 (vgetq_lane_u64 (tmp, 0)); return vreinterpret_p64_u64 (lo);; 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vget_low_s8 (int8x16_t __a) 5209: { 5209: uint64x2_t tmp = vreinterpretq_u64_s8 (__a); uint64x1_t lo = vcreate_u64 (vgetq_lane_u64 (tmp, 0)); return vreinterpret_s8_u64 (lo);; 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vget_low_s16 (int16x8_t __a) 5209: { 5209: uint64x2_t tmp = vreinterpretq_u64_s16 (__a); uint64x1_t lo = vcreate_u64 (vgetq_lane_u64 (tmp, 0)); return vreinterpret_s16_u64 (lo);; 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vget_low_s32 (int32x4_t __a) 5209: { 5209: uint64x2_t tmp = vreinterpretq_u64_s32 (__a); uint64x1_t lo = vcreate_u64 (vgetq_lane_u64 (tmp, 0)); return vreinterpret_s32_u64 (lo);; 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vget_low_s64 (int64x2_t __a) 5209: { 5209: uint64x2_t tmp = vreinterpretq_u64_s64 (__a); uint64x1_t lo = vcreate_u64 (vgetq_lane_u64 (tmp, 0)); return vreinterpret_s64_u64 (lo);; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vget_low_u8 (uint8x16_t __a) 5209: { 5209: uint64x2_t tmp = vreinterpretq_u64_u8 (__a); uint64x1_t lo = vcreate_u64 (vgetq_lane_u64 (tmp, 0)); return vreinterpret_u8_u64 (lo);; 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vget_low_u16 (uint16x8_t __a) 5209: { 5209: uint64x2_t tmp = vreinterpretq_u64_u16 (__a); uint64x1_t lo = vcreate_u64 (vgetq_lane_u64 (tmp, 0)); return vreinterpret_u16_u64 (lo);; 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vget_low_u32 (uint32x4_t __a) 5209: { 5209: uint64x2_t tmp = vreinterpretq_u64_u32 (__a); uint64x1_t lo = vcreate_u64 (vgetq_lane_u64 (tmp, 0)); return vreinterpret_u32_u64 (lo);; 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vget_low_u64 (uint64x2_t __a) 5209: { 5209: return vcreate_u64 (vgetq_lane_u64 (__a, 0)); 5209: } 5209: # 6368 "/usr/lib/gcc/aarch64-linux-gnu/10/include/arm_neon.h" 3 4 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vget_high_f16 (float16x8_t __a) 5209: { 5209: uint64x2_t tmp = vreinterpretq_u64_f16 (__a); uint64x1_t hi = vcreate_u64 (vgetq_lane_u64 (tmp, 1)); return vreinterpret_f16_u64 (hi);; 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vget_high_f32 (float32x4_t __a) 5209: { 5209: uint64x2_t tmp = vreinterpretq_u64_f32 (__a); uint64x1_t hi = vcreate_u64 (vgetq_lane_u64 (tmp, 1)); return vreinterpret_f32_u64 (hi);; 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vget_high_f64 (float64x2_t __a) 5209: { 5209: uint64x2_t tmp = vreinterpretq_u64_f64 (__a); uint64x1_t hi = vcreate_u64 (vgetq_lane_u64 (tmp, 1)); return vreinterpret_f64_u64 (hi);; 5209: } 5209: 5209: __extension__ extern __inline poly8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vget_high_p8 (poly8x16_t __a) 5209: { 5209: uint64x2_t tmp = vreinterpretq_u64_p8 (__a); uint64x1_t hi = vcreate_u64 (vgetq_lane_u64 (tmp, 1)); return vreinterpret_p8_u64 (hi);; 5209: } 5209: 5209: __extension__ extern __inline poly16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vget_high_p16 (poly16x8_t __a) 5209: { 5209: uint64x2_t tmp = vreinterpretq_u64_p16 (__a); uint64x1_t hi = vcreate_u64 (vgetq_lane_u64 (tmp, 1)); return vreinterpret_p16_u64 (hi);; 5209: } 5209: 5209: __extension__ extern __inline poly64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vget_high_p64 (poly64x2_t __a) 5209: { 5209: uint64x2_t tmp = vreinterpretq_u64_p64 (__a); uint64x1_t hi = vcreate_u64 (vgetq_lane_u64 (tmp, 1)); return vreinterpret_p64_u64 (hi);; 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vget_high_s8 (int8x16_t __a) 5209: { 5209: uint64x2_t tmp = vreinterpretq_u64_s8 (__a); uint64x1_t hi = vcreate_u64 (vgetq_lane_u64 (tmp, 1)); return vreinterpret_s8_u64 (hi);; 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vget_high_s16 (int16x8_t __a) 5209: { 5209: uint64x2_t tmp = vreinterpretq_u64_s16 (__a); uint64x1_t hi = vcreate_u64 (vgetq_lane_u64 (tmp, 1)); return vreinterpret_s16_u64 (hi);; 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vget_high_s32 (int32x4_t __a) 5209: { 5209: uint64x2_t tmp = vreinterpretq_u64_s32 (__a); uint64x1_t hi = vcreate_u64 (vgetq_lane_u64 (tmp, 1)); return vreinterpret_s32_u64 (hi);; 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vget_high_s64 (int64x2_t __a) 5209: { 5209: uint64x2_t tmp = vreinterpretq_u64_s64 (__a); uint64x1_t hi = vcreate_u64 (vgetq_lane_u64 (tmp, 1)); return vreinterpret_s64_u64 (hi);; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vget_high_u8 (uint8x16_t __a) 5209: { 5209: uint64x2_t tmp = vreinterpretq_u64_u8 (__a); uint64x1_t hi = vcreate_u64 (vgetq_lane_u64 (tmp, 1)); return vreinterpret_u8_u64 (hi);; 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vget_high_u16 (uint16x8_t __a) 5209: { 5209: uint64x2_t tmp = vreinterpretq_u64_u16 (__a); uint64x1_t hi = vcreate_u64 (vgetq_lane_u64 (tmp, 1)); return vreinterpret_u16_u64 (hi);; 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vget_high_u32 (uint32x4_t __a) 5209: { 5209: uint64x2_t tmp = vreinterpretq_u64_u32 (__a); uint64x1_t hi = vcreate_u64 (vgetq_lane_u64 (tmp, 1)); return vreinterpret_u32_u64 (hi);; 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vget_high_u64 (uint64x2_t __a) 5209: { 5209: return vcreate_u64 (vgetq_lane_u64 (__a, 1)); 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcombine_s8 (int8x8_t __a, int8x8_t __b) 5209: { 5209: return (int8x16_t) __builtin_aarch64_combinev8qi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcombine_s16 (int16x4_t __a, int16x4_t __b) 5209: { 5209: return (int16x8_t) __builtin_aarch64_combinev4hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcombine_s32 (int32x2_t __a, int32x2_t __b) 5209: { 5209: return (int32x4_t) __builtin_aarch64_combinev2si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcombine_s64 (int64x1_t __a, int64x1_t __b) 5209: { 5209: return __builtin_aarch64_combinedi (__a[0], __b[0]); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcombine_f16 (float16x4_t __a, float16x4_t __b) 5209: { 5209: return __builtin_aarch64_combinev4hf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcombine_f32 (float32x2_t __a, float32x2_t __b) 5209: { 5209: return (float32x4_t) __builtin_aarch64_combinev2sf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcombine_u8 (uint8x8_t __a, uint8x8_t __b) 5209: { 5209: return (uint8x16_t) __builtin_aarch64_combinev8qi ((int8x8_t) __a, 5209: (int8x8_t) __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcombine_u16 (uint16x4_t __a, uint16x4_t __b) 5209: { 5209: return (uint16x8_t) __builtin_aarch64_combinev4hi ((int16x4_t) __a, 5209: (int16x4_t) __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcombine_u32 (uint32x2_t __a, uint32x2_t __b) 5209: { 5209: return (uint32x4_t) __builtin_aarch64_combinev2si ((int32x2_t) __a, 5209: (int32x2_t) __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcombine_u64 (uint64x1_t __a, uint64x1_t __b) 5209: { 5209: return (uint64x2_t) __builtin_aarch64_combinedi (__a[0], __b[0]); 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcombine_f64 (float64x1_t __a, float64x1_t __b) 5209: { 5209: return __builtin_aarch64_combinedf (__a[0], __b[0]); 5209: } 5209: 5209: __extension__ extern __inline poly8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcombine_p8 (poly8x8_t __a, poly8x8_t __b) 5209: { 5209: return (poly8x16_t) __builtin_aarch64_combinev8qi ((int8x8_t) __a, 5209: (int8x8_t) __b); 5209: } 5209: 5209: __extension__ extern __inline poly16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcombine_p16 (poly16x4_t __a, poly16x4_t __b) 5209: { 5209: return (poly16x8_t) __builtin_aarch64_combinev4hi ((int16x4_t) __a, 5209: (int16x4_t) __b); 5209: } 5209: 5209: __extension__ extern __inline poly64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcombine_p64 (poly64x1_t __a, poly64x1_t __b) 5209: { 5209: return (poly64x2_t) __builtin_aarch64_combinedi_ppp (__a[0], __b[0]); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaba_s8 (int8x8_t __a, int8x8_t __b, int8x8_t __c) 5209: { 5209: int8x8_t __result; 5209: __asm__ ("saba %0.8b,%2.8b,%3.8b" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaba_s16 (int16x4_t __a, int16x4_t __b, int16x4_t __c) 5209: { 5209: int16x4_t __result; 5209: __asm__ ("saba %0.4h,%2.4h,%3.4h" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaba_s32 (int32x2_t __a, int32x2_t __b, int32x2_t __c) 5209: { 5209: int32x2_t __result; 5209: __asm__ ("saba %0.2s,%2.2s,%3.2s" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaba_u8 (uint8x8_t __a, uint8x8_t __b, uint8x8_t __c) 5209: { 5209: uint8x8_t __result; 5209: __asm__ ("uaba %0.8b,%2.8b,%3.8b" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaba_u16 (uint16x4_t __a, uint16x4_t __b, uint16x4_t __c) 5209: { 5209: uint16x4_t __result; 5209: __asm__ ("uaba %0.4h,%2.4h,%3.4h" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaba_u32 (uint32x2_t __a, uint32x2_t __b, uint32x2_t __c) 5209: { 5209: uint32x2_t __result; 5209: __asm__ ("uaba %0.2s,%2.2s,%3.2s" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabal_high_s8 (int16x8_t __a, int8x16_t __b, int8x16_t __c) 5209: { 5209: int16x8_t __result; 5209: __asm__ ("sabal2 %0.8h,%2.16b,%3.16b" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabal_high_s16 (int32x4_t __a, int16x8_t __b, int16x8_t __c) 5209: { 5209: int32x4_t __result; 5209: __asm__ ("sabal2 %0.4s,%2.8h,%3.8h" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabal_high_s32 (int64x2_t __a, int32x4_t __b, int32x4_t __c) 5209: { 5209: int64x2_t __result; 5209: __asm__ ("sabal2 %0.2d,%2.4s,%3.4s" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabal_high_u8 (uint16x8_t __a, uint8x16_t __b, uint8x16_t __c) 5209: { 5209: uint16x8_t __result; 5209: __asm__ ("uabal2 %0.8h,%2.16b,%3.16b" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabal_high_u16 (uint32x4_t __a, uint16x8_t __b, uint16x8_t __c) 5209: { 5209: uint32x4_t __result; 5209: __asm__ ("uabal2 %0.4s,%2.8h,%3.8h" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabal_high_u32 (uint64x2_t __a, uint32x4_t __b, uint32x4_t __c) 5209: { 5209: uint64x2_t __result; 5209: __asm__ ("uabal2 %0.2d,%2.4s,%3.4s" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabal_s8 (int16x8_t __a, int8x8_t __b, int8x8_t __c) 5209: { 5209: int16x8_t __result; 5209: __asm__ ("sabal %0.8h,%2.8b,%3.8b" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabal_s16 (int32x4_t __a, int16x4_t __b, int16x4_t __c) 5209: { 5209: int32x4_t __result; 5209: __asm__ ("sabal %0.4s,%2.4h,%3.4h" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabal_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c) 5209: { 5209: int64x2_t __result; 5209: __asm__ ("sabal %0.2d,%2.2s,%3.2s" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabal_u8 (uint16x8_t __a, uint8x8_t __b, uint8x8_t __c) 5209: { 5209: uint16x8_t __result; 5209: __asm__ ("uabal %0.8h,%2.8b,%3.8b" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabal_u16 (uint32x4_t __a, uint16x4_t __b, uint16x4_t __c) 5209: { 5209: uint32x4_t __result; 5209: __asm__ ("uabal %0.4s,%2.4h,%3.4h" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabal_u32 (uint64x2_t __a, uint32x2_t __b, uint32x2_t __c) 5209: { 5209: uint64x2_t __result; 5209: __asm__ ("uabal %0.2d,%2.2s,%3.2s" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabaq_s8 (int8x16_t __a, int8x16_t __b, int8x16_t __c) 5209: { 5209: int8x16_t __result; 5209: __asm__ ("saba %0.16b,%2.16b,%3.16b" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabaq_s16 (int16x8_t __a, int16x8_t __b, int16x8_t __c) 5209: { 5209: int16x8_t __result; 5209: __asm__ ("saba %0.8h,%2.8h,%3.8h" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabaq_s32 (int32x4_t __a, int32x4_t __b, int32x4_t __c) 5209: { 5209: int32x4_t __result; 5209: __asm__ ("saba %0.4s,%2.4s,%3.4s" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabaq_u8 (uint8x16_t __a, uint8x16_t __b, uint8x16_t __c) 5209: { 5209: uint8x16_t __result; 5209: __asm__ ("uaba %0.16b,%2.16b,%3.16b" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabaq_u16 (uint16x8_t __a, uint16x8_t __b, uint16x8_t __c) 5209: { 5209: uint16x8_t __result; 5209: __asm__ ("uaba %0.8h,%2.8h,%3.8h" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabaq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c) 5209: { 5209: uint32x4_t __result; 5209: __asm__ ("uaba %0.4s,%2.4s,%3.4s" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabd_s8 (int8x8_t __a, int8x8_t __b) 5209: { 5209: int8x8_t __result; 5209: __asm__ ("sabd %0.8b, %1.8b, %2.8b" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabd_s16 (int16x4_t __a, int16x4_t __b) 5209: { 5209: int16x4_t __result; 5209: __asm__ ("sabd %0.4h, %1.4h, %2.4h" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabd_s32 (int32x2_t __a, int32x2_t __b) 5209: { 5209: int32x2_t __result; 5209: __asm__ ("sabd %0.2s, %1.2s, %2.2s" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabd_u8 (uint8x8_t __a, uint8x8_t __b) 5209: { 5209: uint8x8_t __result; 5209: __asm__ ("uabd %0.8b, %1.8b, %2.8b" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabd_u16 (uint16x4_t __a, uint16x4_t __b) 5209: { 5209: uint16x4_t __result; 5209: __asm__ ("uabd %0.4h, %1.4h, %2.4h" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabd_u32 (uint32x2_t __a, uint32x2_t __b) 5209: { 5209: uint32x2_t __result; 5209: __asm__ ("uabd %0.2s, %1.2s, %2.2s" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabdl_high_s8 (int8x16_t __a, int8x16_t __b) 5209: { 5209: int16x8_t __result; 5209: __asm__ ("sabdl2 %0.8h,%1.16b,%2.16b" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabdl_high_s16 (int16x8_t __a, int16x8_t __b) 5209: { 5209: int32x4_t __result; 5209: __asm__ ("sabdl2 %0.4s,%1.8h,%2.8h" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabdl_high_s32 (int32x4_t __a, int32x4_t __b) 5209: { 5209: int64x2_t __result; 5209: __asm__ ("sabdl2 %0.2d,%1.4s,%2.4s" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabdl_high_u8 (uint8x16_t __a, uint8x16_t __b) 5209: { 5209: uint16x8_t __result; 5209: __asm__ ("uabdl2 %0.8h,%1.16b,%2.16b" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabdl_high_u16 (uint16x8_t __a, uint16x8_t __b) 5209: { 5209: uint32x4_t __result; 5209: __asm__ ("uabdl2 %0.4s,%1.8h,%2.8h" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabdl_high_u32 (uint32x4_t __a, uint32x4_t __b) 5209: { 5209: uint64x2_t __result; 5209: __asm__ ("uabdl2 %0.2d,%1.4s,%2.4s" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabdl_s8 (int8x8_t __a, int8x8_t __b) 5209: { 5209: int16x8_t __result; 5209: __asm__ ("sabdl %0.8h, %1.8b, %2.8b" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabdl_s16 (int16x4_t __a, int16x4_t __b) 5209: { 5209: int32x4_t __result; 5209: __asm__ ("sabdl %0.4s, %1.4h, %2.4h" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabdl_s32 (int32x2_t __a, int32x2_t __b) 5209: { 5209: int64x2_t __result; 5209: __asm__ ("sabdl %0.2d, %1.2s, %2.2s" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabdl_u8 (uint8x8_t __a, uint8x8_t __b) 5209: { 5209: uint16x8_t __result; 5209: __asm__ ("uabdl %0.8h, %1.8b, %2.8b" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabdl_u16 (uint16x4_t __a, uint16x4_t __b) 5209: { 5209: uint32x4_t __result; 5209: __asm__ ("uabdl %0.4s, %1.4h, %2.4h" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabdl_u32 (uint32x2_t __a, uint32x2_t __b) 5209: { 5209: uint64x2_t __result; 5209: __asm__ ("uabdl %0.2d, %1.2s, %2.2s" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabdq_s8 (int8x16_t __a, int8x16_t __b) 5209: { 5209: int8x16_t __result; 5209: __asm__ ("sabd %0.16b, %1.16b, %2.16b" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabdq_s16 (int16x8_t __a, int16x8_t __b) 5209: { 5209: int16x8_t __result; 5209: __asm__ ("sabd %0.8h, %1.8h, %2.8h" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabdq_s32 (int32x4_t __a, int32x4_t __b) 5209: { 5209: int32x4_t __result; 5209: __asm__ ("sabd %0.4s, %1.4s, %2.4s" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabdq_u8 (uint8x16_t __a, uint8x16_t __b) 5209: { 5209: uint8x16_t __result; 5209: __asm__ ("uabd %0.16b, %1.16b, %2.16b" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabdq_u16 (uint16x8_t __a, uint16x8_t __b) 5209: { 5209: uint16x8_t __result; 5209: __asm__ ("uabd %0.8h, %1.8h, %2.8h" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabdq_u32 (uint32x4_t __a, uint32x4_t __b) 5209: { 5209: uint32x4_t __result; 5209: __asm__ ("uabd %0.4s, %1.4s, %2.4s" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddlv_s8 (int8x8_t __a) 5209: { 5209: int16_t __result; 5209: __asm__ ("saddlv %h0,%1.8b" 5209: : "=w"(__result) 5209: : "w"(__a) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddlv_s16 (int16x4_t __a) 5209: { 5209: int32_t __result; 5209: __asm__ ("saddlv %s0,%1.4h" 5209: : "=w"(__result) 5209: : "w"(__a) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddlv_u8 (uint8x8_t __a) 5209: { 5209: uint16_t __result; 5209: __asm__ ("uaddlv %h0,%1.8b" 5209: : "=w"(__result) 5209: : "w"(__a) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddlv_u16 (uint16x4_t __a) 5209: { 5209: uint32_t __result; 5209: __asm__ ("uaddlv %s0,%1.4h" 5209: : "=w"(__result) 5209: : "w"(__a) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddlvq_s8 (int8x16_t __a) 5209: { 5209: int16_t __result; 5209: __asm__ ("saddlv %h0,%1.16b" 5209: : "=w"(__result) 5209: : "w"(__a) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddlvq_s16 (int16x8_t __a) 5209: { 5209: int32_t __result; 5209: __asm__ ("saddlv %s0,%1.8h" 5209: : "=w"(__result) 5209: : "w"(__a) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddlvq_s32 (int32x4_t __a) 5209: { 5209: int64_t __result; 5209: __asm__ ("saddlv %d0,%1.4s" 5209: : "=w"(__result) 5209: : "w"(__a) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddlvq_u8 (uint8x16_t __a) 5209: { 5209: uint16_t __result; 5209: __asm__ ("uaddlv %h0,%1.16b" 5209: : "=w"(__result) 5209: : "w"(__a) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddlvq_u16 (uint16x8_t __a) 5209: { 5209: uint32_t __result; 5209: __asm__ ("uaddlv %s0,%1.8h" 5209: : "=w"(__result) 5209: : "w"(__a) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddlvq_u32 (uint32x4_t __a) 5209: { 5209: uint64_t __result; 5209: __asm__ ("uaddlv %d0,%1.4s" 5209: : "=w"(__result) 5209: : "w"(__a) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtx_f32_f64 (float64x2_t __a) 5209: { 5209: float32x2_t __result; 5209: __asm__ ("fcvtxn %0.2s,%1.2d" 5209: : "=w"(__result) 5209: : "w"(__a) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtx_high_f32_f64 (float32x2_t __a, float64x2_t __b) 5209: { 5209: float32x4_t __result; 5209: __asm__ ("fcvtxn2 %0.4s,%1.2d" 5209: : "=w"(__result) 5209: : "w" (__b), "0"(__a) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline float32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtxd_f32_f64 (float64_t __a) 5209: { 5209: float32_t __result; 5209: __asm__ ("fcvtxn %s0,%d1" 5209: : "=w"(__result) 5209: : "w"(__a) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmla_n_f32 (float32x2_t __a, float32x2_t __b, float32_t __c) 5209: { 5209: float32x2_t __result; 5209: float32x2_t __t1; 5209: __asm__ ("fmul %1.2s, %3.2s, %4.s[0]; fadd %0.2s, %0.2s, %1.2s" 5209: : "=w"(__result), "=w"(__t1) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmla_n_s16 (int16x4_t __a, int16x4_t __b, int16_t __c) 5209: { 5209: int16x4_t __result; 5209: __asm__ ("mla %0.4h,%2.4h,%3.h[0]" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "x"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmla_n_s32 (int32x2_t __a, int32x2_t __b, int32_t __c) 5209: { 5209: int32x2_t __result; 5209: __asm__ ("mla %0.2s,%2.2s,%3.s[0]" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmla_n_u16 (uint16x4_t __a, uint16x4_t __b, uint16_t __c) 5209: { 5209: uint16x4_t __result; 5209: __asm__ ("mla %0.4h,%2.4h,%3.h[0]" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "x"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmla_n_u32 (uint32x2_t __a, uint32x2_t __b, uint32_t __c) 5209: { 5209: uint32x2_t __result; 5209: __asm__ ("mla %0.2s,%2.2s,%3.s[0]" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmla_s8 (int8x8_t __a, int8x8_t __b, int8x8_t __c) 5209: { 5209: int8x8_t __result; 5209: __asm__ ("mla %0.8b, %2.8b, %3.8b" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmla_s16 (int16x4_t __a, int16x4_t __b, int16x4_t __c) 5209: { 5209: int16x4_t __result; 5209: __asm__ ("mla %0.4h, %2.4h, %3.4h" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmla_s32 (int32x2_t __a, int32x2_t __b, int32x2_t __c) 5209: { 5209: int32x2_t __result; 5209: __asm__ ("mla %0.2s, %2.2s, %3.2s" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmla_u8 (uint8x8_t __a, uint8x8_t __b, uint8x8_t __c) 5209: { 5209: uint8x8_t __result; 5209: __asm__ ("mla %0.8b, %2.8b, %3.8b" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmla_u16 (uint16x4_t __a, uint16x4_t __b, uint16x4_t __c) 5209: { 5209: uint16x4_t __result; 5209: __asm__ ("mla %0.4h, %2.4h, %3.4h" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmla_u32 (uint32x2_t __a, uint32x2_t __b, uint32x2_t __c) 5209: { 5209: uint32x2_t __result; 5209: __asm__ ("mla %0.2s, %2.2s, %3.2s" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: # 7550 "/usr/lib/gcc/aarch64-linux-gnu/10/include/arm_neon.h" 3 4 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlal_high_n_s16 (int32x4_t __a, int16x8_t __b, int16_t __c) 5209: { 5209: int32x4_t __result; 5209: __asm__ ("smlal2 %0.4s,%2.8h,%3.h[0]" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "x"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlal_high_n_s32 (int64x2_t __a, int32x4_t __b, int32_t __c) 5209: { 5209: int64x2_t __result; 5209: __asm__ ("smlal2 %0.2d,%2.4s,%3.s[0]" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlal_high_n_u16 (uint32x4_t __a, uint16x8_t __b, uint16_t __c) 5209: { 5209: uint32x4_t __result; 5209: __asm__ ("umlal2 %0.4s,%2.8h,%3.h[0]" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "x"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlal_high_n_u32 (uint64x2_t __a, uint32x4_t __b, uint32_t __c) 5209: { 5209: uint64x2_t __result; 5209: __asm__ ("umlal2 %0.2d,%2.4s,%3.s[0]" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlal_high_s8 (int16x8_t __a, int8x16_t __b, int8x16_t __c) 5209: { 5209: int16x8_t __result; 5209: __asm__ ("smlal2 %0.8h,%2.16b,%3.16b" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlal_high_s16 (int32x4_t __a, int16x8_t __b, int16x8_t __c) 5209: { 5209: int32x4_t __result; 5209: __asm__ ("smlal2 %0.4s,%2.8h,%3.8h" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlal_high_s32 (int64x2_t __a, int32x4_t __b, int32x4_t __c) 5209: { 5209: int64x2_t __result; 5209: __asm__ ("smlal2 %0.2d,%2.4s,%3.4s" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlal_high_u8 (uint16x8_t __a, uint8x16_t __b, uint8x16_t __c) 5209: { 5209: uint16x8_t __result; 5209: __asm__ ("umlal2 %0.8h,%2.16b,%3.16b" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlal_high_u16 (uint32x4_t __a, uint16x8_t __b, uint16x8_t __c) 5209: { 5209: uint32x4_t __result; 5209: __asm__ ("umlal2 %0.4s,%2.8h,%3.8h" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlal_high_u32 (uint64x2_t __a, uint32x4_t __b, uint32x4_t __c) 5209: { 5209: uint64x2_t __result; 5209: __asm__ ("umlal2 %0.2d,%2.4s,%3.4s" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: # 7782 "/usr/lib/gcc/aarch64-linux-gnu/10/include/arm_neon.h" 3 4 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlal_n_s16 (int32x4_t __a, int16x4_t __b, int16_t __c) 5209: { 5209: int32x4_t __result; 5209: __asm__ ("smlal %0.4s,%2.4h,%3.h[0]" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "x"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlal_n_s32 (int64x2_t __a, int32x2_t __b, int32_t __c) 5209: { 5209: int64x2_t __result; 5209: __asm__ ("smlal %0.2d,%2.2s,%3.s[0]" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlal_n_u16 (uint32x4_t __a, uint16x4_t __b, uint16_t __c) 5209: { 5209: uint32x4_t __result; 5209: __asm__ ("umlal %0.4s,%2.4h,%3.h[0]" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "x"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlal_n_u32 (uint64x2_t __a, uint32x2_t __b, uint32_t __c) 5209: { 5209: uint64x2_t __result; 5209: __asm__ ("umlal %0.2d,%2.2s,%3.s[0]" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlal_s8 (int16x8_t __a, int8x8_t __b, int8x8_t __c) 5209: { 5209: int16x8_t __result; 5209: __asm__ ("smlal %0.8h,%2.8b,%3.8b" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlal_s16 (int32x4_t __a, int16x4_t __b, int16x4_t __c) 5209: { 5209: int32x4_t __result; 5209: __asm__ ("smlal %0.4s,%2.4h,%3.4h" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlal_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c) 5209: { 5209: int64x2_t __result; 5209: __asm__ ("smlal %0.2d,%2.2s,%3.2s" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlal_u8 (uint16x8_t __a, uint8x8_t __b, uint8x8_t __c) 5209: { 5209: uint16x8_t __result; 5209: __asm__ ("umlal %0.8h,%2.8b,%3.8b" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlal_u16 (uint32x4_t __a, uint16x4_t __b, uint16x4_t __c) 5209: { 5209: uint32x4_t __result; 5209: __asm__ ("umlal %0.4s,%2.4h,%3.4h" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlal_u32 (uint64x2_t __a, uint32x2_t __b, uint32x2_t __c) 5209: { 5209: uint64x2_t __result; 5209: __asm__ ("umlal %0.2d,%2.2s,%3.2s" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlaq_n_f32 (float32x4_t __a, float32x4_t __b, float32_t __c) 5209: { 5209: float32x4_t __result; 5209: float32x4_t __t1; 5209: __asm__ ("fmul %1.4s, %3.4s, %4.s[0]; fadd %0.4s, %0.4s, %1.4s" 5209: : "=w"(__result), "=w"(__t1) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlaq_n_s16 (int16x8_t __a, int16x8_t __b, int16_t __c) 5209: { 5209: int16x8_t __result; 5209: __asm__ ("mla %0.8h,%2.8h,%3.h[0]" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "x"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlaq_n_s32 (int32x4_t __a, int32x4_t __b, int32_t __c) 5209: { 5209: int32x4_t __result; 5209: __asm__ ("mla %0.4s,%2.4s,%3.s[0]" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlaq_n_u16 (uint16x8_t __a, uint16x8_t __b, uint16_t __c) 5209: { 5209: uint16x8_t __result; 5209: __asm__ ("mla %0.8h,%2.8h,%3.h[0]" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "x"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlaq_n_u32 (uint32x4_t __a, uint32x4_t __b, uint32_t __c) 5209: { 5209: uint32x4_t __result; 5209: __asm__ ("mla %0.4s,%2.4s,%3.s[0]" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlaq_s8 (int8x16_t __a, int8x16_t __b, int8x16_t __c) 5209: { 5209: int8x16_t __result; 5209: __asm__ ("mla %0.16b, %2.16b, %3.16b" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlaq_s16 (int16x8_t __a, int16x8_t __b, int16x8_t __c) 5209: { 5209: int16x8_t __result; 5209: __asm__ ("mla %0.8h, %2.8h, %3.8h" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlaq_s32 (int32x4_t __a, int32x4_t __b, int32x4_t __c) 5209: { 5209: int32x4_t __result; 5209: __asm__ ("mla %0.4s, %2.4s, %3.4s" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlaq_u8 (uint8x16_t __a, uint8x16_t __b, uint8x16_t __c) 5209: { 5209: uint8x16_t __result; 5209: __asm__ ("mla %0.16b, %2.16b, %3.16b" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlaq_u16 (uint16x8_t __a, uint16x8_t __b, uint16x8_t __c) 5209: { 5209: uint16x8_t __result; 5209: __asm__ ("mla %0.8h, %2.8h, %3.8h" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlaq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c) 5209: { 5209: uint32x4_t __result; 5209: __asm__ ("mla %0.4s, %2.4s, %3.4s" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmls_n_f32 (float32x2_t __a, float32x2_t __b, float32_t __c) 5209: { 5209: float32x2_t __result; 5209: float32x2_t __t1; 5209: __asm__ ("fmul %1.2s, %3.2s, %4.s[0]; fsub %0.2s, %0.2s, %1.2s" 5209: : "=w"(__result), "=w"(__t1) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmls_n_s16 (int16x4_t __a, int16x4_t __b, int16_t __c) 5209: { 5209: int16x4_t __result; 5209: __asm__ ("mls %0.4h, %2.4h, %3.h[0]" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "x"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmls_n_s32 (int32x2_t __a, int32x2_t __b, int32_t __c) 5209: { 5209: int32x2_t __result; 5209: __asm__ ("mls %0.2s, %2.2s, %3.s[0]" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmls_n_u16 (uint16x4_t __a, uint16x4_t __b, uint16_t __c) 5209: { 5209: uint16x4_t __result; 5209: __asm__ ("mls %0.4h, %2.4h, %3.h[0]" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "x"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmls_n_u32 (uint32x2_t __a, uint32x2_t __b, uint32_t __c) 5209: { 5209: uint32x2_t __result; 5209: __asm__ ("mls %0.2s, %2.2s, %3.s[0]" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmls_s8 (int8x8_t __a, int8x8_t __b, int8x8_t __c) 5209: { 5209: int8x8_t __result; 5209: __asm__ ("mls %0.8b,%2.8b,%3.8b" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmls_s16 (int16x4_t __a, int16x4_t __b, int16x4_t __c) 5209: { 5209: int16x4_t __result; 5209: __asm__ ("mls %0.4h,%2.4h,%3.4h" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmls_s32 (int32x2_t __a, int32x2_t __b, int32x2_t __c) 5209: { 5209: int32x2_t __result; 5209: __asm__ ("mls %0.2s,%2.2s,%3.2s" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmls_u8 (uint8x8_t __a, uint8x8_t __b, uint8x8_t __c) 5209: { 5209: uint8x8_t __result; 5209: __asm__ ("mls %0.8b,%2.8b,%3.8b" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmls_u16 (uint16x4_t __a, uint16x4_t __b, uint16x4_t __c) 5209: { 5209: uint16x4_t __result; 5209: __asm__ ("mls %0.4h,%2.4h,%3.4h" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmls_u32 (uint32x2_t __a, uint32x2_t __b, uint32x2_t __c) 5209: { 5209: uint32x2_t __result; 5209: __asm__ ("mls %0.2s,%2.2s,%3.2s" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: # 8280 "/usr/lib/gcc/aarch64-linux-gnu/10/include/arm_neon.h" 3 4 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlsl_high_n_s16 (int32x4_t __a, int16x8_t __b, int16_t __c) 5209: { 5209: int32x4_t __result; 5209: __asm__ ("smlsl2 %0.4s, %2.8h, %3.h[0]" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "x"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlsl_high_n_s32 (int64x2_t __a, int32x4_t __b, int32_t __c) 5209: { 5209: int64x2_t __result; 5209: __asm__ ("smlsl2 %0.2d, %2.4s, %3.s[0]" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlsl_high_n_u16 (uint32x4_t __a, uint16x8_t __b, uint16_t __c) 5209: { 5209: uint32x4_t __result; 5209: __asm__ ("umlsl2 %0.4s, %2.8h, %3.h[0]" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "x"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlsl_high_n_u32 (uint64x2_t __a, uint32x4_t __b, uint32_t __c) 5209: { 5209: uint64x2_t __result; 5209: __asm__ ("umlsl2 %0.2d, %2.4s, %3.s[0]" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlsl_high_s8 (int16x8_t __a, int8x16_t __b, int8x16_t __c) 5209: { 5209: int16x8_t __result; 5209: __asm__ ("smlsl2 %0.8h,%2.16b,%3.16b" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlsl_high_s16 (int32x4_t __a, int16x8_t __b, int16x8_t __c) 5209: { 5209: int32x4_t __result; 5209: __asm__ ("smlsl2 %0.4s,%2.8h,%3.8h" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlsl_high_s32 (int64x2_t __a, int32x4_t __b, int32x4_t __c) 5209: { 5209: int64x2_t __result; 5209: __asm__ ("smlsl2 %0.2d,%2.4s,%3.4s" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlsl_high_u8 (uint16x8_t __a, uint8x16_t __b, uint8x16_t __c) 5209: { 5209: uint16x8_t __result; 5209: __asm__ ("umlsl2 %0.8h,%2.16b,%3.16b" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlsl_high_u16 (uint32x4_t __a, uint16x8_t __b, uint16x8_t __c) 5209: { 5209: uint32x4_t __result; 5209: __asm__ ("umlsl2 %0.4s,%2.8h,%3.8h" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlsl_high_u32 (uint64x2_t __a, uint32x4_t __b, uint32x4_t __c) 5209: { 5209: uint64x2_t __result; 5209: __asm__ ("umlsl2 %0.2d,%2.4s,%3.4s" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: # 8512 "/usr/lib/gcc/aarch64-linux-gnu/10/include/arm_neon.h" 3 4 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlsl_n_s16 (int32x4_t __a, int16x4_t __b, int16_t __c) 5209: { 5209: int32x4_t __result; 5209: __asm__ ("smlsl %0.4s, %2.4h, %3.h[0]" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "x"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlsl_n_s32 (int64x2_t __a, int32x2_t __b, int32_t __c) 5209: { 5209: int64x2_t __result; 5209: __asm__ ("smlsl %0.2d, %2.2s, %3.s[0]" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlsl_n_u16 (uint32x4_t __a, uint16x4_t __b, uint16_t __c) 5209: { 5209: uint32x4_t __result; 5209: __asm__ ("umlsl %0.4s, %2.4h, %3.h[0]" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "x"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlsl_n_u32 (uint64x2_t __a, uint32x2_t __b, uint32_t __c) 5209: { 5209: uint64x2_t __result; 5209: __asm__ ("umlsl %0.2d, %2.2s, %3.s[0]" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlsl_s8 (int16x8_t __a, int8x8_t __b, int8x8_t __c) 5209: { 5209: int16x8_t __result; 5209: __asm__ ("smlsl %0.8h, %2.8b, %3.8b" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlsl_s16 (int32x4_t __a, int16x4_t __b, int16x4_t __c) 5209: { 5209: int32x4_t __result; 5209: __asm__ ("smlsl %0.4s, %2.4h, %3.4h" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlsl_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c) 5209: { 5209: int64x2_t __result; 5209: __asm__ ("smlsl %0.2d, %2.2s, %3.2s" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlsl_u8 (uint16x8_t __a, uint8x8_t __b, uint8x8_t __c) 5209: { 5209: uint16x8_t __result; 5209: __asm__ ("umlsl %0.8h, %2.8b, %3.8b" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlsl_u16 (uint32x4_t __a, uint16x4_t __b, uint16x4_t __c) 5209: { 5209: uint32x4_t __result; 5209: __asm__ ("umlsl %0.4s, %2.4h, %3.4h" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlsl_u32 (uint64x2_t __a, uint32x2_t __b, uint32x2_t __c) 5209: { 5209: uint64x2_t __result; 5209: __asm__ ("umlsl %0.2d, %2.2s, %3.2s" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlsq_n_f32 (float32x4_t __a, float32x4_t __b, float32_t __c) 5209: { 5209: float32x4_t __result; 5209: float32x4_t __t1; 5209: __asm__ ("fmul %1.4s, %3.4s, %4.s[0]; fsub %0.4s, %0.4s, %1.4s" 5209: : "=w"(__result), "=w"(__t1) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlsq_n_s16 (int16x8_t __a, int16x8_t __b, int16_t __c) 5209: { 5209: int16x8_t __result; 5209: __asm__ ("mls %0.8h, %2.8h, %3.h[0]" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "x"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlsq_n_s32 (int32x4_t __a, int32x4_t __b, int32_t __c) 5209: { 5209: int32x4_t __result; 5209: __asm__ ("mls %0.4s, %2.4s, %3.s[0]" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlsq_n_u16 (uint16x8_t __a, uint16x8_t __b, uint16_t __c) 5209: { 5209: uint16x8_t __result; 5209: __asm__ ("mls %0.8h, %2.8h, %3.h[0]" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "x"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlsq_n_u32 (uint32x4_t __a, uint32x4_t __b, uint32_t __c) 5209: { 5209: uint32x4_t __result; 5209: __asm__ ("mls %0.4s, %2.4s, %3.s[0]" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlsq_s8 (int8x16_t __a, int8x16_t __b, int8x16_t __c) 5209: { 5209: int8x16_t __result; 5209: __asm__ ("mls %0.16b,%2.16b,%3.16b" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlsq_s16 (int16x8_t __a, int16x8_t __b, int16x8_t __c) 5209: { 5209: int16x8_t __result; 5209: __asm__ ("mls %0.8h,%2.8h,%3.8h" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlsq_s32 (int32x4_t __a, int32x4_t __b, int32x4_t __c) 5209: { 5209: int32x4_t __result; 5209: __asm__ ("mls %0.4s,%2.4s,%3.4s" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlsq_u8 (uint8x16_t __a, uint8x16_t __b, uint8x16_t __c) 5209: { 5209: uint8x16_t __result; 5209: __asm__ ("mls %0.16b,%2.16b,%3.16b" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlsq_u16 (uint16x8_t __a, uint16x8_t __b, uint16x8_t __c) 5209: { 5209: uint16x8_t __result; 5209: __asm__ ("mls %0.8h,%2.8h,%3.8h" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlsq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c) 5209: { 5209: uint32x4_t __result; 5209: __asm__ ("mls %0.4s,%2.4s,%3.4s" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b), "w"(__c) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmovl_high_s8 (int8x16_t __a) 5209: { 5209: int16x8_t __result; 5209: __asm__ ("sshll2 %0.8h,%1.16b,#0" 5209: : "=w"(__result) 5209: : "w"(__a) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmovl_high_s16 (int16x8_t __a) 5209: { 5209: int32x4_t __result; 5209: __asm__ ("sshll2 %0.4s,%1.8h,#0" 5209: : "=w"(__result) 5209: : "w"(__a) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmovl_high_s32 (int32x4_t __a) 5209: { 5209: int64x2_t __result; 5209: __asm__ ("sshll2 %0.2d,%1.4s,#0" 5209: : "=w"(__result) 5209: : "w"(__a) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmovl_high_u8 (uint8x16_t __a) 5209: { 5209: uint16x8_t __result; 5209: __asm__ ("ushll2 %0.8h,%1.16b,#0" 5209: : "=w"(__result) 5209: : "w"(__a) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmovl_high_u16 (uint16x8_t __a) 5209: { 5209: uint32x4_t __result; 5209: __asm__ ("ushll2 %0.4s,%1.8h,#0" 5209: : "=w"(__result) 5209: : "w"(__a) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmovl_high_u32 (uint32x4_t __a) 5209: { 5209: uint64x2_t __result; 5209: __asm__ ("ushll2 %0.2d,%1.4s,#0" 5209: : "=w"(__result) 5209: : "w"(__a) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmovl_s8 (int8x8_t __a) 5209: { 5209: int16x8_t __result; 5209: __asm__ ("sshll %0.8h,%1.8b,#0" 5209: : "=w"(__result) 5209: : "w"(__a) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmovl_s16 (int16x4_t __a) 5209: { 5209: int32x4_t __result; 5209: __asm__ ("sshll %0.4s,%1.4h,#0" 5209: : "=w"(__result) 5209: : "w"(__a) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmovl_s32 (int32x2_t __a) 5209: { 5209: int64x2_t __result; 5209: __asm__ ("sshll %0.2d,%1.2s,#0" 5209: : "=w"(__result) 5209: : "w"(__a) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmovl_u8 (uint8x8_t __a) 5209: { 5209: uint16x8_t __result; 5209: __asm__ ("ushll %0.8h,%1.8b,#0" 5209: : "=w"(__result) 5209: : "w"(__a) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmovl_u16 (uint16x4_t __a) 5209: { 5209: uint32x4_t __result; 5209: __asm__ ("ushll %0.4s,%1.4h,#0" 5209: : "=w"(__result) 5209: : "w"(__a) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmovl_u32 (uint32x2_t __a) 5209: { 5209: uint64x2_t __result; 5209: __asm__ ("ushll %0.2d,%1.2s,#0" 5209: : "=w"(__result) 5209: : "w"(__a) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmovn_high_s16 (int8x8_t __a, int16x8_t __b) 5209: { 5209: int8x16_t __result = vcombine_s8 (__a, vcreate_s8 (((uint64_t) 0x0))); 5209: __asm__ ("xtn2 %0.16b,%1.8h" 5209: : "+w"(__result) 5209: : "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmovn_high_s32 (int16x4_t __a, int32x4_t __b) 5209: { 5209: int16x8_t __result = vcombine_s16 (__a, vcreate_s16 (((uint64_t) 0x0))); 5209: __asm__ ("xtn2 %0.8h,%1.4s" 5209: : "+w"(__result) 5209: : "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmovn_high_s64 (int32x2_t __a, int64x2_t __b) 5209: { 5209: int32x4_t __result = vcombine_s32 (__a, vcreate_s32 (((uint64_t) 0x0))); 5209: __asm__ ("xtn2 %0.4s,%1.2d" 5209: : "+w"(__result) 5209: : "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmovn_high_u16 (uint8x8_t __a, uint16x8_t __b) 5209: { 5209: uint8x16_t __result = vcombine_u8 (__a, vcreate_u8 (((uint64_t) 0x0))); 5209: __asm__ ("xtn2 %0.16b,%1.8h" 5209: : "+w"(__result) 5209: : "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmovn_high_u32 (uint16x4_t __a, uint32x4_t __b) 5209: { 5209: uint16x8_t __result = vcombine_u16 (__a, vcreate_u16 (((uint64_t) 0x0))); 5209: __asm__ ("xtn2 %0.8h,%1.4s" 5209: : "+w"(__result) 5209: : "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmovn_high_u64 (uint32x2_t __a, uint64x2_t __b) 5209: { 5209: uint32x4_t __result = vcombine_u32 (__a, vcreate_u32 (((uint64_t) 0x0))); 5209: __asm__ ("xtn2 %0.4s,%1.2d" 5209: : "+w"(__result) 5209: : "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmovn_s16 (int16x8_t __a) 5209: { 5209: int8x8_t __result; 5209: __asm__ ("xtn %0.8b,%1.8h" 5209: : "=w"(__result) 5209: : "w"(__a) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmovn_s32 (int32x4_t __a) 5209: { 5209: int16x4_t __result; 5209: __asm__ ("xtn %0.4h,%1.4s" 5209: : "=w"(__result) 5209: : "w"(__a) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmovn_s64 (int64x2_t __a) 5209: { 5209: int32x2_t __result; 5209: __asm__ ("xtn %0.2s,%1.2d" 5209: : "=w"(__result) 5209: : "w"(__a) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmovn_u16 (uint16x8_t __a) 5209: { 5209: uint8x8_t __result; 5209: __asm__ ("xtn %0.8b,%1.8h" 5209: : "=w"(__result) 5209: : "w"(__a) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmovn_u32 (uint32x4_t __a) 5209: { 5209: uint16x4_t __result; 5209: __asm__ ("xtn %0.4h,%1.4s" 5209: : "=w"(__result) 5209: : "w"(__a) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmovn_u64 (uint64x2_t __a) 5209: { 5209: uint32x2_t __result; 5209: __asm__ ("xtn %0.2s,%1.2d" 5209: : "=w"(__result) 5209: : "w"(__a) 5209: : ); 5209: return __result; 5209: } 5209: # 9157 "/usr/lib/gcc/aarch64-linux-gnu/10/include/arm_neon.h" 3 4 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmull_high_n_s16 (int16x8_t __a, int16_t __b) 5209: { 5209: int32x4_t __result; 5209: __asm__ ("smull2 %0.4s,%1.8h,%2.h[0]" 5209: : "=w"(__result) 5209: : "w"(__a), "x"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmull_high_n_s32 (int32x4_t __a, int32_t __b) 5209: { 5209: int64x2_t __result; 5209: __asm__ ("smull2 %0.2d,%1.4s,%2.s[0]" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmull_high_n_u16 (uint16x8_t __a, uint16_t __b) 5209: { 5209: uint32x4_t __result; 5209: __asm__ ("umull2 %0.4s,%1.8h,%2.h[0]" 5209: : "=w"(__result) 5209: : "w"(__a), "x"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmull_high_n_u32 (uint32x4_t __a, uint32_t __b) 5209: { 5209: uint64x2_t __result; 5209: __asm__ ("umull2 %0.2d,%1.4s,%2.s[0]" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline poly16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmull_high_p8 (poly8x16_t __a, poly8x16_t __b) 5209: { 5209: poly16x8_t __result; 5209: __asm__ ("pmull2 %0.8h,%1.16b,%2.16b" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmull_high_s8 (int8x16_t __a, int8x16_t __b) 5209: { 5209: int16x8_t __result; 5209: __asm__ ("smull2 %0.8h,%1.16b,%2.16b" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmull_high_s16 (int16x8_t __a, int16x8_t __b) 5209: { 5209: int32x4_t __result; 5209: __asm__ ("smull2 %0.4s,%1.8h,%2.8h" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmull_high_s32 (int32x4_t __a, int32x4_t __b) 5209: { 5209: int64x2_t __result; 5209: __asm__ ("smull2 %0.2d,%1.4s,%2.4s" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmull_high_u8 (uint8x16_t __a, uint8x16_t __b) 5209: { 5209: uint16x8_t __result; 5209: __asm__ ("umull2 %0.8h,%1.16b,%2.16b" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmull_high_u16 (uint16x8_t __a, uint16x8_t __b) 5209: { 5209: uint32x4_t __result; 5209: __asm__ ("umull2 %0.4s,%1.8h,%2.8h" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmull_high_u32 (uint32x4_t __a, uint32x4_t __b) 5209: { 5209: uint64x2_t __result; 5209: __asm__ ("umull2 %0.2d,%1.4s,%2.4s" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: # 9393 "/usr/lib/gcc/aarch64-linux-gnu/10/include/arm_neon.h" 3 4 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmull_n_s16 (int16x4_t __a, int16_t __b) 5209: { 5209: int32x4_t __result; 5209: __asm__ ("smull %0.4s,%1.4h,%2.h[0]" 5209: : "=w"(__result) 5209: : "w"(__a), "x"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmull_n_s32 (int32x2_t __a, int32_t __b) 5209: { 5209: int64x2_t __result; 5209: __asm__ ("smull %0.2d,%1.2s,%2.s[0]" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmull_n_u16 (uint16x4_t __a, uint16_t __b) 5209: { 5209: uint32x4_t __result; 5209: __asm__ ("umull %0.4s,%1.4h,%2.h[0]" 5209: : "=w"(__result) 5209: : "w"(__a), "x"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmull_n_u32 (uint32x2_t __a, uint32_t __b) 5209: { 5209: uint64x2_t __result; 5209: __asm__ ("umull %0.2d,%1.2s,%2.s[0]" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline poly16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmull_p8 (poly8x8_t __a, poly8x8_t __b) 5209: { 5209: poly16x8_t __result; 5209: __asm__ ("pmull %0.8h, %1.8b, %2.8b" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmull_s8 (int8x8_t __a, int8x8_t __b) 5209: { 5209: int16x8_t __result; 5209: __asm__ ("smull %0.8h, %1.8b, %2.8b" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmull_s16 (int16x4_t __a, int16x4_t __b) 5209: { 5209: int32x4_t __result; 5209: __asm__ ("smull %0.4s, %1.4h, %2.4h" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmull_s32 (int32x2_t __a, int32x2_t __b) 5209: { 5209: int64x2_t __result; 5209: __asm__ ("smull %0.2d, %1.2s, %2.2s" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmull_u8 (uint8x8_t __a, uint8x8_t __b) 5209: { 5209: uint16x8_t __result; 5209: __asm__ ("umull %0.8h, %1.8b, %2.8b" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmull_u16 (uint16x4_t __a, uint16x4_t __b) 5209: { 5209: uint32x4_t __result; 5209: __asm__ ("umull %0.4s, %1.4h, %2.4h" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmull_u32 (uint32x2_t __a, uint32x2_t __b) 5209: { 5209: uint64x2_t __result; 5209: __asm__ ("umull %0.2d, %1.2s, %2.2s" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpadal_s8 (int16x4_t __a, int8x8_t __b) 5209: { 5209: int16x4_t __result; 5209: __asm__ ("sadalp %0.4h,%2.8b" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpadal_s16 (int32x2_t __a, int16x4_t __b) 5209: { 5209: int32x2_t __result; 5209: __asm__ ("sadalp %0.2s,%2.4h" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpadal_s32 (int64x1_t __a, int32x2_t __b) 5209: { 5209: int64x1_t __result; 5209: __asm__ ("sadalp %0.1d,%2.2s" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpadal_u8 (uint16x4_t __a, uint8x8_t __b) 5209: { 5209: uint16x4_t __result; 5209: __asm__ ("uadalp %0.4h,%2.8b" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpadal_u16 (uint32x2_t __a, uint16x4_t __b) 5209: { 5209: uint32x2_t __result; 5209: __asm__ ("uadalp %0.2s,%2.4h" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpadal_u32 (uint64x1_t __a, uint32x2_t __b) 5209: { 5209: uint64x1_t __result; 5209: __asm__ ("uadalp %0.1d,%2.2s" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpadalq_s8 (int16x8_t __a, int8x16_t __b) 5209: { 5209: int16x8_t __result; 5209: __asm__ ("sadalp %0.8h,%2.16b" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpadalq_s16 (int32x4_t __a, int16x8_t __b) 5209: { 5209: int32x4_t __result; 5209: __asm__ ("sadalp %0.4s,%2.8h" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpadalq_s32 (int64x2_t __a, int32x4_t __b) 5209: { 5209: int64x2_t __result; 5209: __asm__ ("sadalp %0.2d,%2.4s" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpadalq_u8 (uint16x8_t __a, uint8x16_t __b) 5209: { 5209: uint16x8_t __result; 5209: __asm__ ("uadalp %0.8h,%2.16b" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpadalq_u16 (uint32x4_t __a, uint16x8_t __b) 5209: { 5209: uint32x4_t __result; 5209: __asm__ ("uadalp %0.4s,%2.8h" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpadalq_u32 (uint64x2_t __a, uint32x4_t __b) 5209: { 5209: uint64x2_t __result; 5209: __asm__ ("uadalp %0.2d,%2.4s" 5209: : "=w"(__result) 5209: : "0"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpaddl_s8 (int8x8_t __a) 5209: { 5209: int16x4_t __result; 5209: __asm__ ("saddlp %0.4h,%1.8b" 5209: : "=w"(__result) 5209: : "w"(__a) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpaddl_s16 (int16x4_t __a) 5209: { 5209: int32x2_t __result; 5209: __asm__ ("saddlp %0.2s,%1.4h" 5209: : "=w"(__result) 5209: : "w"(__a) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpaddl_s32 (int32x2_t __a) 5209: { 5209: int64x1_t __result; 5209: __asm__ ("saddlp %0.1d,%1.2s" 5209: : "=w"(__result) 5209: : "w"(__a) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpaddl_u8 (uint8x8_t __a) 5209: { 5209: uint16x4_t __result; 5209: __asm__ ("uaddlp %0.4h,%1.8b" 5209: : "=w"(__result) 5209: : "w"(__a) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpaddl_u16 (uint16x4_t __a) 5209: { 5209: uint32x2_t __result; 5209: __asm__ ("uaddlp %0.2s,%1.4h" 5209: : "=w"(__result) 5209: : "w"(__a) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpaddl_u32 (uint32x2_t __a) 5209: { 5209: uint64x1_t __result; 5209: __asm__ ("uaddlp %0.1d,%1.2s" 5209: : "=w"(__result) 5209: : "w"(__a) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpaddlq_s8 (int8x16_t __a) 5209: { 5209: int16x8_t __result; 5209: __asm__ ("saddlp %0.8h,%1.16b" 5209: : "=w"(__result) 5209: : "w"(__a) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpaddlq_s16 (int16x8_t __a) 5209: { 5209: int32x4_t __result; 5209: __asm__ ("saddlp %0.4s,%1.8h" 5209: : "=w"(__result) 5209: : "w"(__a) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpaddlq_s32 (int32x4_t __a) 5209: { 5209: int64x2_t __result; 5209: __asm__ ("saddlp %0.2d,%1.4s" 5209: : "=w"(__result) 5209: : "w"(__a) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpaddlq_u8 (uint8x16_t __a) 5209: { 5209: uint16x8_t __result; 5209: __asm__ ("uaddlp %0.8h,%1.16b" 5209: : "=w"(__result) 5209: : "w"(__a) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpaddlq_u16 (uint16x8_t __a) 5209: { 5209: uint32x4_t __result; 5209: __asm__ ("uaddlp %0.4s,%1.8h" 5209: : "=w"(__result) 5209: : "w"(__a) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpaddlq_u32 (uint32x4_t __a) 5209: { 5209: uint64x2_t __result; 5209: __asm__ ("uaddlp %0.2d,%1.4s" 5209: : "=w"(__result) 5209: : "w"(__a) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpaddq_s8 (int8x16_t __a, int8x16_t __b) 5209: { 5209: int8x16_t __result; 5209: __asm__ ("addp %0.16b,%1.16b,%2.16b" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpaddq_s16 (int16x8_t __a, int16x8_t __b) 5209: { 5209: int16x8_t __result; 5209: __asm__ ("addp %0.8h,%1.8h,%2.8h" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpaddq_s32 (int32x4_t __a, int32x4_t __b) 5209: { 5209: int32x4_t __result; 5209: __asm__ ("addp %0.4s,%1.4s,%2.4s" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpaddq_s64 (int64x2_t __a, int64x2_t __b) 5209: { 5209: int64x2_t __result; 5209: __asm__ ("addp %0.2d,%1.2d,%2.2d" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpaddq_u8 (uint8x16_t __a, uint8x16_t __b) 5209: { 5209: uint8x16_t __result; 5209: __asm__ ("addp %0.16b,%1.16b,%2.16b" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpaddq_u16 (uint16x8_t __a, uint16x8_t __b) 5209: { 5209: uint16x8_t __result; 5209: __asm__ ("addp %0.8h,%1.8h,%2.8h" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpaddq_u32 (uint32x4_t __a, uint32x4_t __b) 5209: { 5209: uint32x4_t __result; 5209: __asm__ ("addp %0.4s,%1.4s,%2.4s" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpaddq_u64 (uint64x2_t __a, uint64x2_t __b) 5209: { 5209: uint64x2_t __result; 5209: __asm__ ("addp %0.2d,%1.2d,%2.2d" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmulh_n_s16 (int16x4_t __a, int16_t __b) 5209: { 5209: int16x4_t __result; 5209: __asm__ ("sqdmulh %0.4h,%1.4h,%2.h[0]" 5209: : "=w"(__result) 5209: : "w"(__a), "x"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmulh_n_s32 (int32x2_t __a, int32_t __b) 5209: { 5209: int32x2_t __result; 5209: __asm__ ("sqdmulh %0.2s,%1.2s,%2.s[0]" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmulhq_n_s16 (int16x8_t __a, int16_t __b) 5209: { 5209: int16x8_t __result; 5209: __asm__ ("sqdmulh %0.8h,%1.8h,%2.h[0]" 5209: : "=w"(__result) 5209: : "w"(__a), "x"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmulhq_n_s32 (int32x4_t __a, int32_t __b) 5209: { 5209: int32x4_t __result; 5209: __asm__ ("sqdmulh %0.4s,%1.4s,%2.s[0]" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqmovn_high_s16 (int8x8_t __a, int16x8_t __b) 5209: { 5209: int8x16_t __result = vcombine_s8 (__a, vcreate_s8 (((uint64_t) 0x0))); 5209: __asm__ ("sqxtn2 %0.16b, %1.8h" 5209: : "+w"(__result) 5209: : "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqmovn_high_s32 (int16x4_t __a, int32x4_t __b) 5209: { 5209: int16x8_t __result = vcombine_s16 (__a, vcreate_s16 (((uint64_t) 0x0))); 5209: __asm__ ("sqxtn2 %0.8h, %1.4s" 5209: : "+w"(__result) 5209: : "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqmovn_high_s64 (int32x2_t __a, int64x2_t __b) 5209: { 5209: int32x4_t __result = vcombine_s32 (__a, vcreate_s32 (((uint64_t) 0x0))); 5209: __asm__ ("sqxtn2 %0.4s, %1.2d" 5209: : "+w"(__result) 5209: : "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqmovn_high_u16 (uint8x8_t __a, uint16x8_t __b) 5209: { 5209: uint8x16_t __result = vcombine_u8 (__a, vcreate_u8 (((uint64_t) 0x0))); 5209: __asm__ ("uqxtn2 %0.16b, %1.8h" 5209: : "+w"(__result) 5209: : "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqmovn_high_u32 (uint16x4_t __a, uint32x4_t __b) 5209: { 5209: uint16x8_t __result = vcombine_u16 (__a, vcreate_u16 (((uint64_t) 0x0))); 5209: __asm__ ("uqxtn2 %0.8h, %1.4s" 5209: : "+w"(__result) 5209: : "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqmovn_high_u64 (uint32x2_t __a, uint64x2_t __b) 5209: { 5209: uint32x4_t __result = vcombine_u32 (__a, vcreate_u32 (((uint64_t) 0x0))); 5209: __asm__ ("uqxtn2 %0.4s, %1.2d" 5209: : "+w"(__result) 5209: : "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqmovun_high_s16 (uint8x8_t __a, int16x8_t __b) 5209: { 5209: uint8x16_t __result = vcombine_u8 (__a, vcreate_u8 (((uint64_t) 0x0))); 5209: __asm__ ("sqxtun2 %0.16b, %1.8h" 5209: : "+w"(__result) 5209: : "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqmovun_high_s32 (uint16x4_t __a, int32x4_t __b) 5209: { 5209: uint16x8_t __result = vcombine_u16 (__a, vcreate_u16 (((uint64_t) 0x0))); 5209: __asm__ ("sqxtun2 %0.8h, %1.4s" 5209: : "+w"(__result) 5209: : "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqmovun_high_s64 (uint32x2_t __a, int64x2_t __b) 5209: { 5209: uint32x4_t __result = vcombine_u32 (__a, vcreate_u32 (((uint64_t) 0x0))); 5209: __asm__ ("sqxtun2 %0.4s, %1.2d" 5209: : "+w"(__result) 5209: : "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrdmulh_n_s16 (int16x4_t __a, int16_t __b) 5209: { 5209: int16x4_t __result; 5209: __asm__ ("sqrdmulh %0.4h,%1.4h,%2.h[0]" 5209: : "=w"(__result) 5209: : "w"(__a), "x"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrdmulh_n_s32 (int32x2_t __a, int32_t __b) 5209: { 5209: int32x2_t __result; 5209: __asm__ ("sqrdmulh %0.2s,%1.2s,%2.s[0]" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrdmulhq_n_s16 (int16x8_t __a, int16_t __b) 5209: { 5209: int16x8_t __result; 5209: __asm__ ("sqrdmulh %0.8h,%1.8h,%2.h[0]" 5209: : "=w"(__result) 5209: : "w"(__a), "x"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrdmulhq_n_s32 (int32x4_t __a, int32_t __b) 5209: { 5209: int32x4_t __result; 5209: __asm__ ("sqrdmulh %0.4s,%1.4s,%2.s[0]" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: # 10545 "/usr/lib/gcc/aarch64-linux-gnu/10/include/arm_neon.h" 3 4 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrsqrte_u32 (uint32x2_t __a) 5209: { 5209: uint32x2_t __result; 5209: __asm__ ("ursqrte %0.2s,%1.2s" 5209: : "=w"(__result) 5209: : "w"(__a) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrsqrteq_u32 (uint32x4_t __a) 5209: { 5209: uint32x4_t __result; 5209: __asm__ ("ursqrte %0.4s,%1.4s" 5209: : "=w"(__result) 5209: : "w"(__a) 5209: : ); 5209: return __result; 5209: } 5209: # 10861 "/usr/lib/gcc/aarch64-linux-gnu/10/include/arm_neon.h" 3 4 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtst_p8 (poly8x8_t __a, poly8x8_t __b) 5209: { 5209: return (uint8x8_t) ((((uint8x8_t) __a) & ((uint8x8_t) __b)) 5209: != 0); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtst_p16 (poly16x4_t __a, poly16x4_t __b) 5209: { 5209: return (uint16x4_t) ((((uint16x4_t) __a) & ((uint16x4_t) __b)) 5209: != 0); 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtst_p64 (poly64x1_t __a, poly64x1_t __b) 5209: { 5209: return (uint64x1_t) ((__a & __b) != ((int64_t) 0)); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtstq_p8 (poly8x16_t __a, poly8x16_t __b) 5209: { 5209: return (uint8x16_t) ((((uint8x16_t) __a) & ((uint8x16_t) __b)) 5209: != 0); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtstq_p16 (poly16x8_t __a, poly16x8_t __b) 5209: { 5209: return (uint16x8_t) ((((uint16x8_t) __a) & ((uint16x8_t) __b)) 5209: != 0); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtstq_p64 (poly64x2_t __a, poly64x2_t __b) 5209: { 5209: return (uint64x2_t) ((((uint64x2_t) __a) & ((uint64x2_t) __b)) 5209: != ((int64_t) 0)); 5209: } 5209: # 10963 "/usr/lib/gcc/aarch64-linux-gnu/10/include/arm_neon.h" 3 4 5209: typedef struct int8x2_t { int8_t val[2]; } int8x2_t; 5209: typedef struct int16x2_t { int16_t val[2]; } int16x2_t; 5209: typedef struct uint8x2_t { uint8_t val[2]; } uint8x2_t; 5209: typedef struct uint16x2_t { uint16_t val[2]; } uint16x2_t; 5209: typedef struct float16x2_t { float16_t val[2]; } float16x2_t; 5209: typedef struct poly8x2_t { poly8_t val[2]; } poly8x2_t; 5209: typedef struct poly16x2_t { poly16_t val[2]; } poly16x2_t; 5209: 5209: typedef struct int8x3_t { int8_t val[3]; } int8x3_t; 5209: typedef struct int16x3_t { int16_t val[3]; } int16x3_t; 5209: typedef struct int32x3_t { int32_t val[3]; } int32x3_t; 5209: typedef struct int64x3_t { int64_t val[3]; } int64x3_t; 5209: typedef struct uint8x3_t { uint8_t val[3]; } uint8x3_t; 5209: typedef struct uint16x3_t { uint16_t val[3]; } uint16x3_t; 5209: typedef struct uint32x3_t { uint32_t val[3]; } uint32x3_t; 5209: typedef struct uint64x3_t { uint64_t val[3]; } uint64x3_t; 5209: typedef struct float16x3_t { float16_t val[3]; } float16x3_t; 5209: typedef struct float32x3_t { float32_t val[3]; } float32x3_t; 5209: typedef struct float64x3_t { float64_t val[3]; } float64x3_t; 5209: typedef struct poly8x3_t { poly8_t val[3]; } poly8x3_t; 5209: typedef struct poly16x3_t { poly16_t val[3]; } poly16x3_t; 5209: 5209: typedef struct int8x4_t { int8_t val[4]; } int8x4_t; 5209: typedef struct int64x4_t { int64_t val[4]; } int64x4_t; 5209: typedef struct uint8x4_t { uint8_t val[4]; } uint8x4_t; 5209: typedef struct uint64x4_t { uint64_t val[4]; } uint64x4_t; 5209: typedef struct poly8x4_t { poly8_t val[4]; } poly8x4_t; 5209: typedef struct float64x4_t { float64_t val[4]; } float64x4_t; 5209: # 11017 "/usr/lib/gcc/aarch64-linux-gnu/10/include/arm_neon.h" 3 4 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst2_lane_f16 (float16_t *__ptr, float16x4x2_t __b, const int __c) { __builtin_aarch64_simd_oi __o; float16x8x2_t __temp; __temp.val[0] = vcombine_f16 (__b.val[0], vcreate_f16 (((uint64_t) 0))); __temp.val[1] = vcombine_f16 (__b.val[1], vcreate_f16 (((uint64_t) 0))); __o = __builtin_aarch64_set_qregoiv8hf (__o, (float16x8_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregoiv8hf (__o, (float16x8_t) __temp.val[1], 1); __builtin_aarch64_st2_lanev4hf ((__builtin_aarch64_simd_hf *) __ptr, __o, __c); } 5209: 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst2_lane_f32 (float32_t *__ptr, float32x2x2_t __b, const int __c) { __builtin_aarch64_simd_oi __o; float32x4x2_t __temp; __temp.val[0] = vcombine_f32 (__b.val[0], vcreate_f32 (((uint64_t) 0))); __temp.val[1] = vcombine_f32 (__b.val[1], vcreate_f32 (((uint64_t) 0))); __o = __builtin_aarch64_set_qregoiv4sf (__o, (float32x4_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregoiv4sf (__o, (float32x4_t) __temp.val[1], 1); __builtin_aarch64_st2_lanev2sf ((__builtin_aarch64_simd_sf *) __ptr, __o, __c); } 5209: 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst2_lane_f64 (float64_t *__ptr, float64x1x2_t __b, const int __c) { __builtin_aarch64_simd_oi __o; float64x2x2_t __temp; __temp.val[0] = vcombine_f64 (__b.val[0], vcreate_f64 (((uint64_t) 0))); __temp.val[1] = vcombine_f64 (__b.val[1], vcreate_f64 (((uint64_t) 0))); __o = __builtin_aarch64_set_qregoiv2df (__o, (float64x2_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregoiv2df (__o, (float64x2_t) __temp.val[1], 1); __builtin_aarch64_st2_lanedf ((__builtin_aarch64_simd_df *) __ptr, __o, __c); } 5209: 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst2_lane_p8 (poly8_t *__ptr, poly8x8x2_t __b, const int __c) { __builtin_aarch64_simd_oi __o; poly8x16x2_t __temp; __temp.val[0] = vcombine_p8 (__b.val[0], vcreate_p8 (((uint64_t) 0))); __temp.val[1] = vcombine_p8 (__b.val[1], vcreate_p8 (((uint64_t) 0))); __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __temp.val[1], 1); __builtin_aarch64_st2_lanev8qi ((__builtin_aarch64_simd_qi *) __ptr, __o, __c); } 5209: 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst2_lane_p16 (poly16_t *__ptr, poly16x4x2_t __b, const int __c) { __builtin_aarch64_simd_oi __o; poly16x8x2_t __temp; __temp.val[0] = vcombine_p16 (__b.val[0], vcreate_p16 (((uint64_t) 0))); __temp.val[1] = vcombine_p16 (__b.val[1], vcreate_p16 (((uint64_t) 0))); __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __temp.val[1], 1); __builtin_aarch64_st2_lanev4hi ((__builtin_aarch64_simd_hi *) __ptr, __o, __c); } 5209: 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst2_lane_p64 (poly64_t *__ptr, poly64x1x2_t __b, const int __c) { __builtin_aarch64_simd_oi __o; poly64x2x2_t __temp; __temp.val[0] = vcombine_p64 (__b.val[0], vcreate_p64 (((uint64_t) 0))); __temp.val[1] = vcombine_p64 (__b.val[1], vcreate_p64 (((uint64_t) 0))); __o = __builtin_aarch64_set_qregoiv2di_ssps (__o, (poly64x2_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregoiv2di_ssps (__o, (poly64x2_t) __temp.val[1], 1); __builtin_aarch64_st2_lanedi ((__builtin_aarch64_simd_di *) __ptr, __o, __c); } 5209: 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst2_lane_s8 (int8_t *__ptr, int8x8x2_t __b, const int __c) { __builtin_aarch64_simd_oi __o; int8x16x2_t __temp; __temp.val[0] = vcombine_s8 (__b.val[0], vcreate_s8 (((uint64_t) 0))); __temp.val[1] = vcombine_s8 (__b.val[1], vcreate_s8 (((uint64_t) 0))); __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __temp.val[1], 1); __builtin_aarch64_st2_lanev8qi ((__builtin_aarch64_simd_qi *) __ptr, __o, __c); } 5209: 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst2_lane_s16 (int16_t *__ptr, int16x4x2_t __b, const int __c) { __builtin_aarch64_simd_oi __o; int16x8x2_t __temp; __temp.val[0] = vcombine_s16 (__b.val[0], vcreate_s16 (((uint64_t) 0))); __temp.val[1] = vcombine_s16 (__b.val[1], vcreate_s16 (((uint64_t) 0))); __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __temp.val[1], 1); __builtin_aarch64_st2_lanev4hi ((__builtin_aarch64_simd_hi *) __ptr, __o, __c); } 5209: 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst2_lane_s32 (int32_t *__ptr, int32x2x2_t __b, const int __c) { __builtin_aarch64_simd_oi __o; int32x4x2_t __temp; __temp.val[0] = vcombine_s32 (__b.val[0], vcreate_s32 (((uint64_t) 0))); __temp.val[1] = vcombine_s32 (__b.val[1], vcreate_s32 (((uint64_t) 0))); __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __temp.val[1], 1); __builtin_aarch64_st2_lanev2si ((__builtin_aarch64_simd_si *) __ptr, __o, __c); } 5209: 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst2_lane_s64 (int64_t *__ptr, int64x1x2_t __b, const int __c) { __builtin_aarch64_simd_oi __o; int64x2x2_t __temp; __temp.val[0] = vcombine_s64 (__b.val[0], vcreate_s64 (((uint64_t) 0))); __temp.val[1] = vcombine_s64 (__b.val[1], vcreate_s64 (((uint64_t) 0))); __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) __temp.val[1], 1); __builtin_aarch64_st2_lanedi ((__builtin_aarch64_simd_di *) __ptr, __o, __c); } 5209: 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst2_lane_u8 (uint8_t *__ptr, uint8x8x2_t __b, const int __c) { __builtin_aarch64_simd_oi __o; uint8x16x2_t __temp; __temp.val[0] = vcombine_u8 (__b.val[0], vcreate_u8 (((uint64_t) 0))); __temp.val[1] = vcombine_u8 (__b.val[1], vcreate_u8 (((uint64_t) 0))); __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __temp.val[1], 1); __builtin_aarch64_st2_lanev8qi ((__builtin_aarch64_simd_qi *) __ptr, __o, __c); } 5209: 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst2_lane_u16 (uint16_t *__ptr, uint16x4x2_t __b, const int __c) { __builtin_aarch64_simd_oi __o; uint16x8x2_t __temp; __temp.val[0] = vcombine_u16 (__b.val[0], vcreate_u16 (((uint64_t) 0))); __temp.val[1] = vcombine_u16 (__b.val[1], vcreate_u16 (((uint64_t) 0))); __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __temp.val[1], 1); __builtin_aarch64_st2_lanev4hi ((__builtin_aarch64_simd_hi *) __ptr, __o, __c); } 5209: 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst2_lane_u32 (uint32_t *__ptr, uint32x2x2_t __b, const int __c) { __builtin_aarch64_simd_oi __o; uint32x4x2_t __temp; __temp.val[0] = vcombine_u32 (__b.val[0], vcreate_u32 (((uint64_t) 0))); __temp.val[1] = vcombine_u32 (__b.val[1], vcreate_u32 (((uint64_t) 0))); __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __temp.val[1], 1); __builtin_aarch64_st2_lanev2si ((__builtin_aarch64_simd_si *) __ptr, __o, __c); } 5209: 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst2_lane_u64 (uint64_t *__ptr, uint64x1x2_t __b, const int __c) { __builtin_aarch64_simd_oi __o; uint64x2x2_t __temp; __temp.val[0] = vcombine_u64 (__b.val[0], vcreate_u64 (((uint64_t) 0))); __temp.val[1] = vcombine_u64 (__b.val[1], vcreate_u64 (((uint64_t) 0))); __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) __temp.val[1], 1); __builtin_aarch64_st2_lanedi ((__builtin_aarch64_simd_di *) __ptr, __o, __c); } 5209: # 11059 "/usr/lib/gcc/aarch64-linux-gnu/10/include/arm_neon.h" 3 4 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst2q_lane_f16 (float16_t *__ptr, float16x8x2_t __b, const int __c) { union { float16x8x2_t __i; __builtin_aarch64_simd_oi __o; } __temp = { __b }; __builtin_aarch64_st2_lanev8hf ((__builtin_aarch64_simd_hf *) __ptr, __temp.__o, __c); } 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst2q_lane_f32 (float32_t *__ptr, float32x4x2_t __b, const int __c) { union { float32x4x2_t __i; __builtin_aarch64_simd_oi __o; } __temp = { __b }; __builtin_aarch64_st2_lanev4sf ((__builtin_aarch64_simd_sf *) __ptr, __temp.__o, __c); } 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst2q_lane_f64 (float64_t *__ptr, float64x2x2_t __b, const int __c) { union { float64x2x2_t __i; __builtin_aarch64_simd_oi __o; } __temp = { __b }; __builtin_aarch64_st2_lanev2df ((__builtin_aarch64_simd_df *) __ptr, __temp.__o, __c); } 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst2q_lane_p8 (poly8_t *__ptr, poly8x16x2_t __b, const int __c) { union { poly8x16x2_t __i; __builtin_aarch64_simd_oi __o; } __temp = { __b }; __builtin_aarch64_st2_lanev16qi ((__builtin_aarch64_simd_qi *) __ptr, __temp.__o, __c); } 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst2q_lane_p16 (poly16_t *__ptr, poly16x8x2_t __b, const int __c) { union { poly16x8x2_t __i; __builtin_aarch64_simd_oi __o; } __temp = { __b }; __builtin_aarch64_st2_lanev8hi ((__builtin_aarch64_simd_hi *) __ptr, __temp.__o, __c); } 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst2q_lane_p64 (poly64_t *__ptr, poly64x2x2_t __b, const int __c) { union { poly64x2x2_t __i; __builtin_aarch64_simd_oi __o; } __temp = { __b }; __builtin_aarch64_st2_lanev2di ((__builtin_aarch64_simd_di *) __ptr, __temp.__o, __c); } 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst2q_lane_s8 (int8_t *__ptr, int8x16x2_t __b, const int __c) { union { int8x16x2_t __i; __builtin_aarch64_simd_oi __o; } __temp = { __b }; __builtin_aarch64_st2_lanev16qi ((__builtin_aarch64_simd_qi *) __ptr, __temp.__o, __c); } 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst2q_lane_s16 (int16_t *__ptr, int16x8x2_t __b, const int __c) { union { int16x8x2_t __i; __builtin_aarch64_simd_oi __o; } __temp = { __b }; __builtin_aarch64_st2_lanev8hi ((__builtin_aarch64_simd_hi *) __ptr, __temp.__o, __c); } 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst2q_lane_s32 (int32_t *__ptr, int32x4x2_t __b, const int __c) { union { int32x4x2_t __i; __builtin_aarch64_simd_oi __o; } __temp = { __b }; __builtin_aarch64_st2_lanev4si ((__builtin_aarch64_simd_si *) __ptr, __temp.__o, __c); } 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst2q_lane_s64 (int64_t *__ptr, int64x2x2_t __b, const int __c) { union { int64x2x2_t __i; __builtin_aarch64_simd_oi __o; } __temp = { __b }; __builtin_aarch64_st2_lanev2di ((__builtin_aarch64_simd_di *) __ptr, __temp.__o, __c); } 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst2q_lane_u8 (uint8_t *__ptr, uint8x16x2_t __b, const int __c) { union { uint8x16x2_t __i; __builtin_aarch64_simd_oi __o; } __temp = { __b }; __builtin_aarch64_st2_lanev16qi ((__builtin_aarch64_simd_qi *) __ptr, __temp.__o, __c); } 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst2q_lane_u16 (uint16_t *__ptr, uint16x8x2_t __b, const int __c) { union { uint16x8x2_t __i; __builtin_aarch64_simd_oi __o; } __temp = { __b }; __builtin_aarch64_st2_lanev8hi ((__builtin_aarch64_simd_hi *) __ptr, __temp.__o, __c); } 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst2q_lane_u32 (uint32_t *__ptr, uint32x4x2_t __b, const int __c) { union { uint32x4x2_t __i; __builtin_aarch64_simd_oi __o; } __temp = { __b }; __builtin_aarch64_st2_lanev4si ((__builtin_aarch64_simd_si *) __ptr, __temp.__o, __c); } 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst2q_lane_u64 (uint64_t *__ptr, uint64x2x2_t __b, const int __c) { union { uint64x2x2_t __i; __builtin_aarch64_simd_oi __o; } __temp = { __b }; __builtin_aarch64_st2_lanev2di ((__builtin_aarch64_simd_di *) __ptr, __temp.__o, __c); } 5209: # 11102 "/usr/lib/gcc/aarch64-linux-gnu/10/include/arm_neon.h" 3 4 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst3_lane_f16 (float16_t *__ptr, float16x4x3_t __b, const int __c) { __builtin_aarch64_simd_ci __o; float16x8x3_t __temp; __temp.val[0] = vcombine_f16 (__b.val[0], vcreate_f16 (((uint64_t) 0))); __temp.val[1] = vcombine_f16 (__b.val[1], vcreate_f16 (((uint64_t) 0))); __temp.val[2] = vcombine_f16 (__b.val[2], vcreate_f16 (((uint64_t) 0))); __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) __temp.val[1], 1); __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) __temp.val[2], 2); __builtin_aarch64_st3_lanev4hf ((__builtin_aarch64_simd_hf *) __ptr, __o, __c); } 5209: 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst3_lane_f32 (float32_t *__ptr, float32x2x3_t __b, const int __c) { __builtin_aarch64_simd_ci __o; float32x4x3_t __temp; __temp.val[0] = vcombine_f32 (__b.val[0], vcreate_f32 (((uint64_t) 0))); __temp.val[1] = vcombine_f32 (__b.val[1], vcreate_f32 (((uint64_t) 0))); __temp.val[2] = vcombine_f32 (__b.val[2], vcreate_f32 (((uint64_t) 0))); __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) __temp.val[1], 1); __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) __temp.val[2], 2); __builtin_aarch64_st3_lanev2sf ((__builtin_aarch64_simd_sf *) __ptr, __o, __c); } 5209: 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst3_lane_f64 (float64_t *__ptr, float64x1x3_t __b, const int __c) { __builtin_aarch64_simd_ci __o; float64x2x3_t __temp; __temp.val[0] = vcombine_f64 (__b.val[0], vcreate_f64 (((uint64_t) 0))); __temp.val[1] = vcombine_f64 (__b.val[1], vcreate_f64 (((uint64_t) 0))); __temp.val[2] = vcombine_f64 (__b.val[2], vcreate_f64 (((uint64_t) 0))); __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) __temp.val[1], 1); __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) __temp.val[2], 2); __builtin_aarch64_st3_lanedf ((__builtin_aarch64_simd_df *) __ptr, __o, __c); } 5209: 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst3_lane_p8 (poly8_t *__ptr, poly8x8x3_t __b, const int __c) { __builtin_aarch64_simd_ci __o; poly8x16x3_t __temp; __temp.val[0] = vcombine_p8 (__b.val[0], vcreate_p8 (((uint64_t) 0))); __temp.val[1] = vcombine_p8 (__b.val[1], vcreate_p8 (((uint64_t) 0))); __temp.val[2] = vcombine_p8 (__b.val[2], vcreate_p8 (((uint64_t) 0))); __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __temp.val[1], 1); __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __temp.val[2], 2); __builtin_aarch64_st3_lanev8qi ((__builtin_aarch64_simd_qi *) __ptr, __o, __c); } 5209: 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst3_lane_p16 (poly16_t *__ptr, poly16x4x3_t __b, const int __c) { __builtin_aarch64_simd_ci __o; poly16x8x3_t __temp; __temp.val[0] = vcombine_p16 (__b.val[0], vcreate_p16 (((uint64_t) 0))); __temp.val[1] = vcombine_p16 (__b.val[1], vcreate_p16 (((uint64_t) 0))); __temp.val[2] = vcombine_p16 (__b.val[2], vcreate_p16 (((uint64_t) 0))); __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __temp.val[1], 1); __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __temp.val[2], 2); __builtin_aarch64_st3_lanev4hi ((__builtin_aarch64_simd_hi *) __ptr, __o, __c); } 5209: 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst3_lane_p64 (poly64_t *__ptr, poly64x1x3_t __b, const int __c) { __builtin_aarch64_simd_ci __o; poly64x2x3_t __temp; __temp.val[0] = vcombine_p64 (__b.val[0], vcreate_p64 (((uint64_t) 0))); __temp.val[1] = vcombine_p64 (__b.val[1], vcreate_p64 (((uint64_t) 0))); __temp.val[2] = vcombine_p64 (__b.val[2], vcreate_p64 (((uint64_t) 0))); __o = __builtin_aarch64_set_qregciv2di_ssps (__o, (poly64x2_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregciv2di_ssps (__o, (poly64x2_t) __temp.val[1], 1); __o = __builtin_aarch64_set_qregciv2di_ssps (__o, (poly64x2_t) __temp.val[2], 2); __builtin_aarch64_st3_lanedi ((__builtin_aarch64_simd_di *) __ptr, __o, __c); } 5209: 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst3_lane_s8 (int8_t *__ptr, int8x8x3_t __b, const int __c) { __builtin_aarch64_simd_ci __o; int8x16x3_t __temp; __temp.val[0] = vcombine_s8 (__b.val[0], vcreate_s8 (((uint64_t) 0))); __temp.val[1] = vcombine_s8 (__b.val[1], vcreate_s8 (((uint64_t) 0))); __temp.val[2] = vcombine_s8 (__b.val[2], vcreate_s8 (((uint64_t) 0))); __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __temp.val[1], 1); __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __temp.val[2], 2); __builtin_aarch64_st3_lanev8qi ((__builtin_aarch64_simd_qi *) __ptr, __o, __c); } 5209: 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst3_lane_s16 (int16_t *__ptr, int16x4x3_t __b, const int __c) { __builtin_aarch64_simd_ci __o; int16x8x3_t __temp; __temp.val[0] = vcombine_s16 (__b.val[0], vcreate_s16 (((uint64_t) 0))); __temp.val[1] = vcombine_s16 (__b.val[1], vcreate_s16 (((uint64_t) 0))); __temp.val[2] = vcombine_s16 (__b.val[2], vcreate_s16 (((uint64_t) 0))); __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __temp.val[1], 1); __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __temp.val[2], 2); __builtin_aarch64_st3_lanev4hi ((__builtin_aarch64_simd_hi *) __ptr, __o, __c); } 5209: 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst3_lane_s32 (int32_t *__ptr, int32x2x3_t __b, const int __c) { __builtin_aarch64_simd_ci __o; int32x4x3_t __temp; __temp.val[0] = vcombine_s32 (__b.val[0], vcreate_s32 (((uint64_t) 0))); __temp.val[1] = vcombine_s32 (__b.val[1], vcreate_s32 (((uint64_t) 0))); __temp.val[2] = vcombine_s32 (__b.val[2], vcreate_s32 (((uint64_t) 0))); __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __temp.val[1], 1); __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __temp.val[2], 2); __builtin_aarch64_st3_lanev2si ((__builtin_aarch64_simd_si *) __ptr, __o, __c); } 5209: 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst3_lane_s64 (int64_t *__ptr, int64x1x3_t __b, const int __c) { __builtin_aarch64_simd_ci __o; int64x2x3_t __temp; __temp.val[0] = vcombine_s64 (__b.val[0], vcreate_s64 (((uint64_t) 0))); __temp.val[1] = vcombine_s64 (__b.val[1], vcreate_s64 (((uint64_t) 0))); __temp.val[2] = vcombine_s64 (__b.val[2], vcreate_s64 (((uint64_t) 0))); __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __temp.val[1], 1); __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __temp.val[2], 2); __builtin_aarch64_st3_lanedi ((__builtin_aarch64_simd_di *) __ptr, __o, __c); } 5209: 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst3_lane_u8 (uint8_t *__ptr, uint8x8x3_t __b, const int __c) { __builtin_aarch64_simd_ci __o; uint8x16x3_t __temp; __temp.val[0] = vcombine_u8 (__b.val[0], vcreate_u8 (((uint64_t) 0))); __temp.val[1] = vcombine_u8 (__b.val[1], vcreate_u8 (((uint64_t) 0))); __temp.val[2] = vcombine_u8 (__b.val[2], vcreate_u8 (((uint64_t) 0))); __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __temp.val[1], 1); __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __temp.val[2], 2); __builtin_aarch64_st3_lanev8qi ((__builtin_aarch64_simd_qi *) __ptr, __o, __c); } 5209: 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst3_lane_u16 (uint16_t *__ptr, uint16x4x3_t __b, const int __c) { __builtin_aarch64_simd_ci __o; uint16x8x3_t __temp; __temp.val[0] = vcombine_u16 (__b.val[0], vcreate_u16 (((uint64_t) 0))); __temp.val[1] = vcombine_u16 (__b.val[1], vcreate_u16 (((uint64_t) 0))); __temp.val[2] = vcombine_u16 (__b.val[2], vcreate_u16 (((uint64_t) 0))); __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __temp.val[1], 1); __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __temp.val[2], 2); __builtin_aarch64_st3_lanev4hi ((__builtin_aarch64_simd_hi *) __ptr, __o, __c); } 5209: 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst3_lane_u32 (uint32_t *__ptr, uint32x2x3_t __b, const int __c) { __builtin_aarch64_simd_ci __o; uint32x4x3_t __temp; __temp.val[0] = vcombine_u32 (__b.val[0], vcreate_u32 (((uint64_t) 0))); __temp.val[1] = vcombine_u32 (__b.val[1], vcreate_u32 (((uint64_t) 0))); __temp.val[2] = vcombine_u32 (__b.val[2], vcreate_u32 (((uint64_t) 0))); __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __temp.val[1], 1); __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __temp.val[2], 2); __builtin_aarch64_st3_lanev2si ((__builtin_aarch64_simd_si *) __ptr, __o, __c); } 5209: 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst3_lane_u64 (uint64_t *__ptr, uint64x1x3_t __b, const int __c) { __builtin_aarch64_simd_ci __o; uint64x2x3_t __temp; __temp.val[0] = vcombine_u64 (__b.val[0], vcreate_u64 (((uint64_t) 0))); __temp.val[1] = vcombine_u64 (__b.val[1], vcreate_u64 (((uint64_t) 0))); __temp.val[2] = vcombine_u64 (__b.val[2], vcreate_u64 (((uint64_t) 0))); __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __temp.val[1], 1); __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __temp.val[2], 2); __builtin_aarch64_st3_lanedi ((__builtin_aarch64_simd_di *) __ptr, __o, __c); } 5209: # 11144 "/usr/lib/gcc/aarch64-linux-gnu/10/include/arm_neon.h" 3 4 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst3q_lane_f16 (float16_t *__ptr, float16x8x3_t __b, const int __c) { union { float16x8x3_t __i; __builtin_aarch64_simd_ci __o; } __temp = { __b }; __builtin_aarch64_st3_lanev8hf ((__builtin_aarch64_simd_hf *) __ptr, __temp.__o, __c); } 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst3q_lane_f32 (float32_t *__ptr, float32x4x3_t __b, const int __c) { union { float32x4x3_t __i; __builtin_aarch64_simd_ci __o; } __temp = { __b }; __builtin_aarch64_st3_lanev4sf ((__builtin_aarch64_simd_sf *) __ptr, __temp.__o, __c); } 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst3q_lane_f64 (float64_t *__ptr, float64x2x3_t __b, const int __c) { union { float64x2x3_t __i; __builtin_aarch64_simd_ci __o; } __temp = { __b }; __builtin_aarch64_st3_lanev2df ((__builtin_aarch64_simd_df *) __ptr, __temp.__o, __c); } 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst3q_lane_p8 (poly8_t *__ptr, poly8x16x3_t __b, const int __c) { union { poly8x16x3_t __i; __builtin_aarch64_simd_ci __o; } __temp = { __b }; __builtin_aarch64_st3_lanev16qi ((__builtin_aarch64_simd_qi *) __ptr, __temp.__o, __c); } 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst3q_lane_p16 (poly16_t *__ptr, poly16x8x3_t __b, const int __c) { union { poly16x8x3_t __i; __builtin_aarch64_simd_ci __o; } __temp = { __b }; __builtin_aarch64_st3_lanev8hi ((__builtin_aarch64_simd_hi *) __ptr, __temp.__o, __c); } 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst3q_lane_p64 (poly64_t *__ptr, poly64x2x3_t __b, const int __c) { union { poly64x2x3_t __i; __builtin_aarch64_simd_ci __o; } __temp = { __b }; __builtin_aarch64_st3_lanev2di ((__builtin_aarch64_simd_di *) __ptr, __temp.__o, __c); } 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst3q_lane_s8 (int8_t *__ptr, int8x16x3_t __b, const int __c) { union { int8x16x3_t __i; __builtin_aarch64_simd_ci __o; } __temp = { __b }; __builtin_aarch64_st3_lanev16qi ((__builtin_aarch64_simd_qi *) __ptr, __temp.__o, __c); } 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst3q_lane_s16 (int16_t *__ptr, int16x8x3_t __b, const int __c) { union { int16x8x3_t __i; __builtin_aarch64_simd_ci __o; } __temp = { __b }; __builtin_aarch64_st3_lanev8hi ((__builtin_aarch64_simd_hi *) __ptr, __temp.__o, __c); } 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst3q_lane_s32 (int32_t *__ptr, int32x4x3_t __b, const int __c) { union { int32x4x3_t __i; __builtin_aarch64_simd_ci __o; } __temp = { __b }; __builtin_aarch64_st3_lanev4si ((__builtin_aarch64_simd_si *) __ptr, __temp.__o, __c); } 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst3q_lane_s64 (int64_t *__ptr, int64x2x3_t __b, const int __c) { union { int64x2x3_t __i; __builtin_aarch64_simd_ci __o; } __temp = { __b }; __builtin_aarch64_st3_lanev2di ((__builtin_aarch64_simd_di *) __ptr, __temp.__o, __c); } 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst3q_lane_u8 (uint8_t *__ptr, uint8x16x3_t __b, const int __c) { union { uint8x16x3_t __i; __builtin_aarch64_simd_ci __o; } __temp = { __b }; __builtin_aarch64_st3_lanev16qi ((__builtin_aarch64_simd_qi *) __ptr, __temp.__o, __c); } 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst3q_lane_u16 (uint16_t *__ptr, uint16x8x3_t __b, const int __c) { union { uint16x8x3_t __i; __builtin_aarch64_simd_ci __o; } __temp = { __b }; __builtin_aarch64_st3_lanev8hi ((__builtin_aarch64_simd_hi *) __ptr, __temp.__o, __c); } 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst3q_lane_u32 (uint32_t *__ptr, uint32x4x3_t __b, const int __c) { union { uint32x4x3_t __i; __builtin_aarch64_simd_ci __o; } __temp = { __b }; __builtin_aarch64_st3_lanev4si ((__builtin_aarch64_simd_si *) __ptr, __temp.__o, __c); } 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst3q_lane_u64 (uint64_t *__ptr, uint64x2x3_t __b, const int __c) { union { uint64x2x3_t __i; __builtin_aarch64_simd_ci __o; } __temp = { __b }; __builtin_aarch64_st3_lanev2di ((__builtin_aarch64_simd_di *) __ptr, __temp.__o, __c); } 5209: # 11192 "/usr/lib/gcc/aarch64-linux-gnu/10/include/arm_neon.h" 3 4 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst4_lane_f16 (float16_t *__ptr, float16x4x4_t __b, const int __c) { __builtin_aarch64_simd_xi __o; float16x8x4_t __temp; __temp.val[0] = vcombine_f16 (__b.val[0], vcreate_f16 (((uint64_t) 0))); __temp.val[1] = vcombine_f16 (__b.val[1], vcreate_f16 (((uint64_t) 0))); __temp.val[2] = vcombine_f16 (__b.val[2], vcreate_f16 (((uint64_t) 0))); __temp.val[3] = vcombine_f16 (__b.val[3], vcreate_f16 (((uint64_t) 0))); __o = __builtin_aarch64_set_qregxiv8hf (__o, (float16x8_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregxiv8hf (__o, (float16x8_t) __temp.val[1], 1); __o = __builtin_aarch64_set_qregxiv8hf (__o, (float16x8_t) __temp.val[2], 2); __o = __builtin_aarch64_set_qregxiv8hf (__o, (float16x8_t) __temp.val[3], 3); __builtin_aarch64_st4_lanev4hf ((__builtin_aarch64_simd_hf *) __ptr, __o, __c); } 5209: 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst4_lane_f32 (float32_t *__ptr, float32x2x4_t __b, const int __c) { __builtin_aarch64_simd_xi __o; float32x4x4_t __temp; __temp.val[0] = vcombine_f32 (__b.val[0], vcreate_f32 (((uint64_t) 0))); __temp.val[1] = vcombine_f32 (__b.val[1], vcreate_f32 (((uint64_t) 0))); __temp.val[2] = vcombine_f32 (__b.val[2], vcreate_f32 (((uint64_t) 0))); __temp.val[3] = vcombine_f32 (__b.val[3], vcreate_f32 (((uint64_t) 0))); __o = __builtin_aarch64_set_qregxiv4sf (__o, (float32x4_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregxiv4sf (__o, (float32x4_t) __temp.val[1], 1); __o = __builtin_aarch64_set_qregxiv4sf (__o, (float32x4_t) __temp.val[2], 2); __o = __builtin_aarch64_set_qregxiv4sf (__o, (float32x4_t) __temp.val[3], 3); __builtin_aarch64_st4_lanev2sf ((__builtin_aarch64_simd_sf *) __ptr, __o, __c); } 5209: 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst4_lane_f64 (float64_t *__ptr, float64x1x4_t __b, const int __c) { __builtin_aarch64_simd_xi __o; float64x2x4_t __temp; __temp.val[0] = vcombine_f64 (__b.val[0], vcreate_f64 (((uint64_t) 0))); __temp.val[1] = vcombine_f64 (__b.val[1], vcreate_f64 (((uint64_t) 0))); __temp.val[2] = vcombine_f64 (__b.val[2], vcreate_f64 (((uint64_t) 0))); __temp.val[3] = vcombine_f64 (__b.val[3], vcreate_f64 (((uint64_t) 0))); __o = __builtin_aarch64_set_qregxiv2df (__o, (float64x2_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregxiv2df (__o, (float64x2_t) __temp.val[1], 1); __o = __builtin_aarch64_set_qregxiv2df (__o, (float64x2_t) __temp.val[2], 2); __o = __builtin_aarch64_set_qregxiv2df (__o, (float64x2_t) __temp.val[3], 3); __builtin_aarch64_st4_lanedf ((__builtin_aarch64_simd_df *) __ptr, __o, __c); } 5209: 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst4_lane_p8 (poly8_t *__ptr, poly8x8x4_t __b, const int __c) { __builtin_aarch64_simd_xi __o; poly8x16x4_t __temp; __temp.val[0] = vcombine_p8 (__b.val[0], vcreate_p8 (((uint64_t) 0))); __temp.val[1] = vcombine_p8 (__b.val[1], vcreate_p8 (((uint64_t) 0))); __temp.val[2] = vcombine_p8 (__b.val[2], vcreate_p8 (((uint64_t) 0))); __temp.val[3] = vcombine_p8 (__b.val[3], vcreate_p8 (((uint64_t) 0))); __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __temp.val[1], 1); __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __temp.val[2], 2); __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __temp.val[3], 3); __builtin_aarch64_st4_lanev8qi ((__builtin_aarch64_simd_qi *) __ptr, __o, __c); } 5209: 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst4_lane_p16 (poly16_t *__ptr, poly16x4x4_t __b, const int __c) { __builtin_aarch64_simd_xi __o; poly16x8x4_t __temp; __temp.val[0] = vcombine_p16 (__b.val[0], vcreate_p16 (((uint64_t) 0))); __temp.val[1] = vcombine_p16 (__b.val[1], vcreate_p16 (((uint64_t) 0))); __temp.val[2] = vcombine_p16 (__b.val[2], vcreate_p16 (((uint64_t) 0))); __temp.val[3] = vcombine_p16 (__b.val[3], vcreate_p16 (((uint64_t) 0))); __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __temp.val[1], 1); __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __temp.val[2], 2); __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __temp.val[3], 3); __builtin_aarch64_st4_lanev4hi ((__builtin_aarch64_simd_hi *) __ptr, __o, __c); } 5209: 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst4_lane_p64 (poly64_t *__ptr, poly64x1x4_t __b, const int __c) { __builtin_aarch64_simd_xi __o; poly64x2x4_t __temp; __temp.val[0] = vcombine_p64 (__b.val[0], vcreate_p64 (((uint64_t) 0))); __temp.val[1] = vcombine_p64 (__b.val[1], vcreate_p64 (((uint64_t) 0))); __temp.val[2] = vcombine_p64 (__b.val[2], vcreate_p64 (((uint64_t) 0))); __temp.val[3] = vcombine_p64 (__b.val[3], vcreate_p64 (((uint64_t) 0))); __o = __builtin_aarch64_set_qregxiv2di_ssps (__o, (poly64x2_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregxiv2di_ssps (__o, (poly64x2_t) __temp.val[1], 1); __o = __builtin_aarch64_set_qregxiv2di_ssps (__o, (poly64x2_t) __temp.val[2], 2); __o = __builtin_aarch64_set_qregxiv2di_ssps (__o, (poly64x2_t) __temp.val[3], 3); __builtin_aarch64_st4_lanedi ((__builtin_aarch64_simd_di *) __ptr, __o, __c); } 5209: 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst4_lane_s8 (int8_t *__ptr, int8x8x4_t __b, const int __c) { __builtin_aarch64_simd_xi __o; int8x16x4_t __temp; __temp.val[0] = vcombine_s8 (__b.val[0], vcreate_s8 (((uint64_t) 0))); __temp.val[1] = vcombine_s8 (__b.val[1], vcreate_s8 (((uint64_t) 0))); __temp.val[2] = vcombine_s8 (__b.val[2], vcreate_s8 (((uint64_t) 0))); __temp.val[3] = vcombine_s8 (__b.val[3], vcreate_s8 (((uint64_t) 0))); __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __temp.val[1], 1); __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __temp.val[2], 2); __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __temp.val[3], 3); __builtin_aarch64_st4_lanev8qi ((__builtin_aarch64_simd_qi *) __ptr, __o, __c); } 5209: 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst4_lane_s16 (int16_t *__ptr, int16x4x4_t __b, const int __c) { __builtin_aarch64_simd_xi __o; int16x8x4_t __temp; __temp.val[0] = vcombine_s16 (__b.val[0], vcreate_s16 (((uint64_t) 0))); __temp.val[1] = vcombine_s16 (__b.val[1], vcreate_s16 (((uint64_t) 0))); __temp.val[2] = vcombine_s16 (__b.val[2], vcreate_s16 (((uint64_t) 0))); __temp.val[3] = vcombine_s16 (__b.val[3], vcreate_s16 (((uint64_t) 0))); __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __temp.val[1], 1); __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __temp.val[2], 2); __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __temp.val[3], 3); __builtin_aarch64_st4_lanev4hi ((__builtin_aarch64_simd_hi *) __ptr, __o, __c); } 5209: 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst4_lane_s32 (int32_t *__ptr, int32x2x4_t __b, const int __c) { __builtin_aarch64_simd_xi __o; int32x4x4_t __temp; __temp.val[0] = vcombine_s32 (__b.val[0], vcreate_s32 (((uint64_t) 0))); __temp.val[1] = vcombine_s32 (__b.val[1], vcreate_s32 (((uint64_t) 0))); __temp.val[2] = vcombine_s32 (__b.val[2], vcreate_s32 (((uint64_t) 0))); __temp.val[3] = vcombine_s32 (__b.val[3], vcreate_s32 (((uint64_t) 0))); __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __temp.val[1], 1); __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __temp.val[2], 2); __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __temp.val[3], 3); __builtin_aarch64_st4_lanev2si ((__builtin_aarch64_simd_si *) __ptr, __o, __c); } 5209: 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst4_lane_s64 (int64_t *__ptr, int64x1x4_t __b, const int __c) { __builtin_aarch64_simd_xi __o; int64x2x4_t __temp; __temp.val[0] = vcombine_s64 (__b.val[0], vcreate_s64 (((uint64_t) 0))); __temp.val[1] = vcombine_s64 (__b.val[1], vcreate_s64 (((uint64_t) 0))); __temp.val[2] = vcombine_s64 (__b.val[2], vcreate_s64 (((uint64_t) 0))); __temp.val[3] = vcombine_s64 (__b.val[3], vcreate_s64 (((uint64_t) 0))); __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) __temp.val[1], 1); __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) __temp.val[2], 2); __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) __temp.val[3], 3); __builtin_aarch64_st4_lanedi ((__builtin_aarch64_simd_di *) __ptr, __o, __c); } 5209: 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst4_lane_u8 (uint8_t *__ptr, uint8x8x4_t __b, const int __c) { __builtin_aarch64_simd_xi __o; uint8x16x4_t __temp; __temp.val[0] = vcombine_u8 (__b.val[0], vcreate_u8 (((uint64_t) 0))); __temp.val[1] = vcombine_u8 (__b.val[1], vcreate_u8 (((uint64_t) 0))); __temp.val[2] = vcombine_u8 (__b.val[2], vcreate_u8 (((uint64_t) 0))); __temp.val[3] = vcombine_u8 (__b.val[3], vcreate_u8 (((uint64_t) 0))); __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __temp.val[1], 1); __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __temp.val[2], 2); __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __temp.val[3], 3); __builtin_aarch64_st4_lanev8qi ((__builtin_aarch64_simd_qi *) __ptr, __o, __c); } 5209: 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst4_lane_u16 (uint16_t *__ptr, uint16x4x4_t __b, const int __c) { __builtin_aarch64_simd_xi __o; uint16x8x4_t __temp; __temp.val[0] = vcombine_u16 (__b.val[0], vcreate_u16 (((uint64_t) 0))); __temp.val[1] = vcombine_u16 (__b.val[1], vcreate_u16 (((uint64_t) 0))); __temp.val[2] = vcombine_u16 (__b.val[2], vcreate_u16 (((uint64_t) 0))); __temp.val[3] = vcombine_u16 (__b.val[3], vcreate_u16 (((uint64_t) 0))); __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __temp.val[1], 1); __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __temp.val[2], 2); __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __temp.val[3], 3); __builtin_aarch64_st4_lanev4hi ((__builtin_aarch64_simd_hi *) __ptr, __o, __c); } 5209: 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst4_lane_u32 (uint32_t *__ptr, uint32x2x4_t __b, const int __c) { __builtin_aarch64_simd_xi __o; uint32x4x4_t __temp; __temp.val[0] = vcombine_u32 (__b.val[0], vcreate_u32 (((uint64_t) 0))); __temp.val[1] = vcombine_u32 (__b.val[1], vcreate_u32 (((uint64_t) 0))); __temp.val[2] = vcombine_u32 (__b.val[2], vcreate_u32 (((uint64_t) 0))); __temp.val[3] = vcombine_u32 (__b.val[3], vcreate_u32 (((uint64_t) 0))); __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __temp.val[1], 1); __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __temp.val[2], 2); __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __temp.val[3], 3); __builtin_aarch64_st4_lanev2si ((__builtin_aarch64_simd_si *) __ptr, __o, __c); } 5209: 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst4_lane_u64 (uint64_t *__ptr, uint64x1x4_t __b, const int __c) { __builtin_aarch64_simd_xi __o; uint64x2x4_t __temp; __temp.val[0] = vcombine_u64 (__b.val[0], vcreate_u64 (((uint64_t) 0))); __temp.val[1] = vcombine_u64 (__b.val[1], vcreate_u64 (((uint64_t) 0))); __temp.val[2] = vcombine_u64 (__b.val[2], vcreate_u64 (((uint64_t) 0))); __temp.val[3] = vcombine_u64 (__b.val[3], vcreate_u64 (((uint64_t) 0))); __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) __temp.val[1], 1); __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) __temp.val[2], 2); __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) __temp.val[3], 3); __builtin_aarch64_st4_lanedi ((__builtin_aarch64_simd_di *) __ptr, __o, __c); } 5209: # 11234 "/usr/lib/gcc/aarch64-linux-gnu/10/include/arm_neon.h" 3 4 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst4q_lane_f16 (float16_t *__ptr, float16x8x4_t __b, const int __c) { union { float16x8x4_t __i; __builtin_aarch64_simd_xi __o; } __temp = { __b }; __builtin_aarch64_st4_lanev8hf ((__builtin_aarch64_simd_hf *) __ptr, __temp.__o, __c); } 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst4q_lane_f32 (float32_t *__ptr, float32x4x4_t __b, const int __c) { union { float32x4x4_t __i; __builtin_aarch64_simd_xi __o; } __temp = { __b }; __builtin_aarch64_st4_lanev4sf ((__builtin_aarch64_simd_sf *) __ptr, __temp.__o, __c); } 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst4q_lane_f64 (float64_t *__ptr, float64x2x4_t __b, const int __c) { union { float64x2x4_t __i; __builtin_aarch64_simd_xi __o; } __temp = { __b }; __builtin_aarch64_st4_lanev2df ((__builtin_aarch64_simd_df *) __ptr, __temp.__o, __c); } 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst4q_lane_p8 (poly8_t *__ptr, poly8x16x4_t __b, const int __c) { union { poly8x16x4_t __i; __builtin_aarch64_simd_xi __o; } __temp = { __b }; __builtin_aarch64_st4_lanev16qi ((__builtin_aarch64_simd_qi *) __ptr, __temp.__o, __c); } 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst4q_lane_p16 (poly16_t *__ptr, poly16x8x4_t __b, const int __c) { union { poly16x8x4_t __i; __builtin_aarch64_simd_xi __o; } __temp = { __b }; __builtin_aarch64_st4_lanev8hi ((__builtin_aarch64_simd_hi *) __ptr, __temp.__o, __c); } 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst4q_lane_p64 (poly64_t *__ptr, poly64x2x4_t __b, const int __c) { union { poly64x2x4_t __i; __builtin_aarch64_simd_xi __o; } __temp = { __b }; __builtin_aarch64_st4_lanev2di ((__builtin_aarch64_simd_di *) __ptr, __temp.__o, __c); } 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst4q_lane_s8 (int8_t *__ptr, int8x16x4_t __b, const int __c) { union { int8x16x4_t __i; __builtin_aarch64_simd_xi __o; } __temp = { __b }; __builtin_aarch64_st4_lanev16qi ((__builtin_aarch64_simd_qi *) __ptr, __temp.__o, __c); } 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst4q_lane_s16 (int16_t *__ptr, int16x8x4_t __b, const int __c) { union { int16x8x4_t __i; __builtin_aarch64_simd_xi __o; } __temp = { __b }; __builtin_aarch64_st4_lanev8hi ((__builtin_aarch64_simd_hi *) __ptr, __temp.__o, __c); } 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst4q_lane_s32 (int32_t *__ptr, int32x4x4_t __b, const int __c) { union { int32x4x4_t __i; __builtin_aarch64_simd_xi __o; } __temp = { __b }; __builtin_aarch64_st4_lanev4si ((__builtin_aarch64_simd_si *) __ptr, __temp.__o, __c); } 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst4q_lane_s64 (int64_t *__ptr, int64x2x4_t __b, const int __c) { union { int64x2x4_t __i; __builtin_aarch64_simd_xi __o; } __temp = { __b }; __builtin_aarch64_st4_lanev2di ((__builtin_aarch64_simd_di *) __ptr, __temp.__o, __c); } 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst4q_lane_u8 (uint8_t *__ptr, uint8x16x4_t __b, const int __c) { union { uint8x16x4_t __i; __builtin_aarch64_simd_xi __o; } __temp = { __b }; __builtin_aarch64_st4_lanev16qi ((__builtin_aarch64_simd_qi *) __ptr, __temp.__o, __c); } 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst4q_lane_u16 (uint16_t *__ptr, uint16x8x4_t __b, const int __c) { union { uint16x8x4_t __i; __builtin_aarch64_simd_xi __o; } __temp = { __b }; __builtin_aarch64_st4_lanev8hi ((__builtin_aarch64_simd_hi *) __ptr, __temp.__o, __c); } 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst4q_lane_u32 (uint32_t *__ptr, uint32x4x4_t __b, const int __c) { union { uint32x4x4_t __i; __builtin_aarch64_simd_xi __o; } __temp = { __b }; __builtin_aarch64_st4_lanev4si ((__builtin_aarch64_simd_si *) __ptr, __temp.__o, __c); } 5209: __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vst4q_lane_u64 (uint64_t *__ptr, uint64x2x4_t __b, const int __c) { union { uint64x2x4_t __i; __builtin_aarch64_simd_xi __o; } __temp = { __b }; __builtin_aarch64_st4_lanev2di ((__builtin_aarch64_simd_di *) __ptr, __temp.__o, __c); } 5209: 5209: __extension__ extern __inline int64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddlv_s32 (int32x2_t __a) 5209: { 5209: int64_t __result; 5209: __asm__ ("saddlp %0.1d, %1.2s" : "=w"(__result) : "w"(__a) : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddlv_u32 (uint32x2_t __a) 5209: { 5209: uint64_t __result; 5209: __asm__ ("uaddlp %0.1d, %1.2s" : "=w"(__result) : "w"(__a) : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmulh_laneq_s16 (int16x4_t __a, int16x8_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_sqdmulh_laneqv4hi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmulh_laneq_s32 (int32x2_t __a, int32x4_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_sqdmulh_laneqv2si (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmulhq_laneq_s16 (int16x8_t __a, int16x8_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_sqdmulh_laneqv8hi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmulhq_laneq_s32 (int32x4_t __a, int32x4_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_sqdmulh_laneqv4si (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrdmulh_laneq_s16 (int16x4_t __a, int16x8_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_sqrdmulh_laneqv4hi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrdmulh_laneq_s32 (int32x2_t __a, int32x4_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_sqrdmulh_laneqv2si (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrdmulhq_laneq_s16 (int16x8_t __a, int16x8_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_sqrdmulh_laneqv8hi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrdmulhq_laneq_s32 (int32x4_t __a, int32x4_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_sqrdmulh_laneqv4si (__a, __b, __c); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline poly8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqtbl1_p8 (poly8x16_t __a, uint8x8_t __b) 5209: { 5209: poly8x8_t __result; 5209: __asm__ ("tbl %0.8b, {%1.16b}, %2.8b" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqtbl1_s8 (int8x16_t __a, uint8x8_t __b) 5209: { 5209: int8x8_t __result; 5209: __asm__ ("tbl %0.8b, {%1.16b}, %2.8b" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqtbl1_u8 (uint8x16_t __a, uint8x8_t __b) 5209: { 5209: uint8x8_t __result; 5209: __asm__ ("tbl %0.8b, {%1.16b}, %2.8b" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline poly8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqtbl1q_p8 (poly8x16_t __a, uint8x16_t __b) 5209: { 5209: poly8x16_t __result; 5209: __asm__ ("tbl %0.16b, {%1.16b}, %2.16b" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqtbl1q_s8 (int8x16_t __a, uint8x16_t __b) 5209: { 5209: int8x16_t __result; 5209: __asm__ ("tbl %0.16b, {%1.16b}, %2.16b" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqtbl1q_u8 (uint8x16_t __a, uint8x16_t __b) 5209: { 5209: uint8x16_t __result; 5209: __asm__ ("tbl %0.16b, {%1.16b}, %2.16b" 5209: : "=w"(__result) 5209: : "w"(__a), "w"(__b) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqtbx1_s8 (int8x8_t __r, int8x16_t __tab, uint8x8_t __idx) 5209: { 5209: int8x8_t __result = __r; 5209: __asm__ ("tbx %0.8b,{%1.16b},%2.8b" 5209: : "+w"(__result) 5209: : "w"(__tab), "w"(__idx) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqtbx1_u8 (uint8x8_t __r, uint8x16_t __tab, uint8x8_t __idx) 5209: { 5209: uint8x8_t __result = __r; 5209: __asm__ ("tbx %0.8b,{%1.16b},%2.8b" 5209: : "+w"(__result) 5209: : "w"(__tab), "w"(__idx) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline poly8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqtbx1_p8 (poly8x8_t __r, poly8x16_t __tab, uint8x8_t __idx) 5209: { 5209: poly8x8_t __result = __r; 5209: __asm__ ("tbx %0.8b,{%1.16b},%2.8b" 5209: : "+w"(__result) 5209: : "w"(__tab), "w"(__idx) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqtbx1q_s8 (int8x16_t __r, int8x16_t __tab, uint8x16_t __idx) 5209: { 5209: int8x16_t __result = __r; 5209: __asm__ ("tbx %0.16b,{%1.16b},%2.16b" 5209: : "+w"(__result) 5209: : "w"(__tab), "w"(__idx) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqtbx1q_u8 (uint8x16_t __r, uint8x16_t __tab, uint8x16_t __idx) 5209: { 5209: uint8x16_t __result = __r; 5209: __asm__ ("tbx %0.16b,{%1.16b},%2.16b" 5209: : "+w"(__result) 5209: : "w"(__tab), "w"(__idx) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline poly8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqtbx1q_p8 (poly8x16_t __r, poly8x16_t __tab, uint8x16_t __idx) 5209: { 5209: poly8x16_t __result = __r; 5209: __asm__ ("tbx %0.16b,{%1.16b},%2.16b" 5209: : "+w"(__result) 5209: : "w"(__tab), "w"(__idx) 5209: : ); 5209: return __result; 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtbl1_s8 (int8x8_t __tab, int8x8_t __idx) 5209: { 5209: int8x8_t __result; 5209: int8x16_t __temp = vcombine_s8 (__tab, vcreate_s8 (((uint64_t) 0x0))); 5209: __asm__ ("tbl %0.8b, {%1.16b}, %2.8b" 5209: : "=w"(__result) 5209: : "w"(__temp), "w"(__idx) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtbl1_u8 (uint8x8_t __tab, uint8x8_t __idx) 5209: { 5209: uint8x8_t __result; 5209: uint8x16_t __temp = vcombine_u8 (__tab, vcreate_u8 (((uint64_t) 0x0))); 5209: __asm__ ("tbl %0.8b, {%1.16b}, %2.8b" 5209: : "=w"(__result) 5209: : "w"(__temp), "w"(__idx) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline poly8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtbl1_p8 (poly8x8_t __tab, uint8x8_t __idx) 5209: { 5209: poly8x8_t __result; 5209: poly8x16_t __temp = vcombine_p8 (__tab, vcreate_p8 (((uint64_t) 0x0))); 5209: __asm__ ("tbl %0.8b, {%1.16b}, %2.8b" 5209: : "=w"(__result) 5209: : "w"(__temp), "w"(__idx) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtbl2_s8 (int8x8x2_t __tab, int8x8_t __idx) 5209: { 5209: int8x8_t __result; 5209: int8x16_t __temp = vcombine_s8 (__tab.val[0], __tab.val[1]); 5209: __asm__ ("tbl %0.8b, {%1.16b}, %2.8b" 5209: : "=w"(__result) 5209: : "w"(__temp), "w"(__idx) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtbl2_u8 (uint8x8x2_t __tab, uint8x8_t __idx) 5209: { 5209: uint8x8_t __result; 5209: uint8x16_t __temp = vcombine_u8 (__tab.val[0], __tab.val[1]); 5209: __asm__ ("tbl %0.8b, {%1.16b}, %2.8b" 5209: : "=w"(__result) 5209: : "w"(__temp), "w"(__idx) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline poly8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtbl2_p8 (poly8x8x2_t __tab, uint8x8_t __idx) 5209: { 5209: poly8x8_t __result; 5209: poly8x16_t __temp = vcombine_p8 (__tab.val[0], __tab.val[1]); 5209: __asm__ ("tbl %0.8b, {%1.16b}, %2.8b" 5209: : "=w"(__result) 5209: : "w"(__temp), "w"(__idx) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtbl3_s8 (int8x8x3_t __tab, int8x8_t __idx) 5209: { 5209: int8x8_t __result; 5209: int8x16x2_t __temp; 5209: __builtin_aarch64_simd_oi __o; 5209: __temp.val[0] = vcombine_s8 (__tab.val[0], __tab.val[1]); 5209: __temp.val[1] = vcombine_s8 (__tab.val[2], vcreate_s8 (((uint64_t) 0x0))); 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, 5209: (int8x16_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, 5209: (int8x16_t) __temp.val[1], 1); 5209: __result = __builtin_aarch64_tbl3v8qi (__o, __idx); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtbl3_u8 (uint8x8x3_t __tab, uint8x8_t __idx) 5209: { 5209: uint8x8_t __result; 5209: uint8x16x2_t __temp; 5209: __builtin_aarch64_simd_oi __o; 5209: __temp.val[0] = vcombine_u8 (__tab.val[0], __tab.val[1]); 5209: __temp.val[1] = vcombine_u8 (__tab.val[2], vcreate_u8 (((uint64_t) 0x0))); 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, 5209: (int8x16_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, 5209: (int8x16_t) __temp.val[1], 1); 5209: __result = (uint8x8_t)__builtin_aarch64_tbl3v8qi (__o, (int8x8_t)__idx); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline poly8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtbl3_p8 (poly8x8x3_t __tab, uint8x8_t __idx) 5209: { 5209: poly8x8_t __result; 5209: poly8x16x2_t __temp; 5209: __builtin_aarch64_simd_oi __o; 5209: __temp.val[0] = vcombine_p8 (__tab.val[0], __tab.val[1]); 5209: __temp.val[1] = vcombine_p8 (__tab.val[2], vcreate_p8 (((uint64_t) 0x0))); 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, 5209: (int8x16_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, 5209: (int8x16_t) __temp.val[1], 1); 5209: __result = (poly8x8_t)__builtin_aarch64_tbl3v8qi (__o, (int8x8_t)__idx); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtbl4_s8 (int8x8x4_t __tab, int8x8_t __idx) 5209: { 5209: int8x8_t __result; 5209: int8x16x2_t __temp; 5209: __builtin_aarch64_simd_oi __o; 5209: __temp.val[0] = vcombine_s8 (__tab.val[0], __tab.val[1]); 5209: __temp.val[1] = vcombine_s8 (__tab.val[2], __tab.val[3]); 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, 5209: (int8x16_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, 5209: (int8x16_t) __temp.val[1], 1); 5209: __result = __builtin_aarch64_tbl3v8qi (__o, __idx); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtbl4_u8 (uint8x8x4_t __tab, uint8x8_t __idx) 5209: { 5209: uint8x8_t __result; 5209: uint8x16x2_t __temp; 5209: __builtin_aarch64_simd_oi __o; 5209: __temp.val[0] = vcombine_u8 (__tab.val[0], __tab.val[1]); 5209: __temp.val[1] = vcombine_u8 (__tab.val[2], __tab.val[3]); 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, 5209: (int8x16_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, 5209: (int8x16_t) __temp.val[1], 1); 5209: __result = (uint8x8_t)__builtin_aarch64_tbl3v8qi (__o, (int8x8_t)__idx); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline poly8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtbl4_p8 (poly8x8x4_t __tab, uint8x8_t __idx) 5209: { 5209: poly8x8_t __result; 5209: poly8x16x2_t __temp; 5209: __builtin_aarch64_simd_oi __o; 5209: __temp.val[0] = vcombine_p8 (__tab.val[0], __tab.val[1]); 5209: __temp.val[1] = vcombine_p8 (__tab.val[2], __tab.val[3]); 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, 5209: (int8x16_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, 5209: (int8x16_t) __temp.val[1], 1); 5209: __result = (poly8x8_t)__builtin_aarch64_tbl3v8qi (__o, (int8x8_t)__idx); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtbx2_s8 (int8x8_t __r, int8x8x2_t __tab, int8x8_t __idx) 5209: { 5209: int8x8_t __result = __r; 5209: int8x16_t __temp = vcombine_s8 (__tab.val[0], __tab.val[1]); 5209: __asm__ ("tbx %0.8b, {%1.16b}, %2.8b" 5209: : "+w"(__result) 5209: : "w"(__temp), "w"(__idx) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtbx2_u8 (uint8x8_t __r, uint8x8x2_t __tab, uint8x8_t __idx) 5209: { 5209: uint8x8_t __result = __r; 5209: uint8x16_t __temp = vcombine_u8 (__tab.val[0], __tab.val[1]); 5209: __asm__ ("tbx %0.8b, {%1.16b}, %2.8b" 5209: : "+w"(__result) 5209: : "w"(__temp), "w"(__idx) 5209: : ); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline poly8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtbx2_p8 (poly8x8_t __r, poly8x8x2_t __tab, uint8x8_t __idx) 5209: { 5209: poly8x8_t __result = __r; 5209: poly8x16_t __temp = vcombine_p8 (__tab.val[0], __tab.val[1]); 5209: __asm__ ("tbx %0.8b, {%1.16b}, %2.8b" 5209: : "+w"(__result) 5209: : "w"(__temp), "w"(__idx) 5209: : ); 5209: return __result; 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: __extension__ extern __inline float32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabds_f32 (float32_t __a, float32_t __b) 5209: { 5209: return __builtin_aarch64_fabdsf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabdd_f64 (float64_t __a, float64_t __b) 5209: { 5209: return __builtin_aarch64_fabddf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabd_f32 (float32x2_t __a, float32x2_t __b) 5209: { 5209: return __builtin_aarch64_fabdv2sf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabd_f64 (float64x1_t __a, float64x1_t __b) 5209: { 5209: return (float64x1_t) {vabdd_f64 (vget_lane_f64 (__a, 0), 5209: vget_lane_f64 (__b, 0))}; 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabdq_f32 (float32x4_t __a, float32x4_t __b) 5209: { 5209: return __builtin_aarch64_fabdv4sf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabdq_f64 (float64x2_t __a, float64x2_t __b) 5209: { 5209: return __builtin_aarch64_fabdv2df (__a, __b); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabs_f32 (float32x2_t __a) 5209: { 5209: return __builtin_aarch64_absv2sf (__a); 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabs_f64 (float64x1_t __a) 5209: { 5209: return (float64x1_t) {__builtin_fabs (__a[0])}; 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabs_s8 (int8x8_t __a) 5209: { 5209: return __builtin_aarch64_absv8qi (__a); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabs_s16 (int16x4_t __a) 5209: { 5209: return __builtin_aarch64_absv4hi (__a); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabs_s32 (int32x2_t __a) 5209: { 5209: return __builtin_aarch64_absv2si (__a); 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabs_s64 (int64x1_t __a) 5209: { 5209: return (int64x1_t) {__builtin_aarch64_absdi (__a[0])}; 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabsq_f32 (float32x4_t __a) 5209: { 5209: return __builtin_aarch64_absv4sf (__a); 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabsq_f64 (float64x2_t __a) 5209: { 5209: return __builtin_aarch64_absv2df (__a); 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabsq_s8 (int8x16_t __a) 5209: { 5209: return __builtin_aarch64_absv16qi (__a); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabsq_s16 (int16x8_t __a) 5209: { 5209: return __builtin_aarch64_absv8hi (__a); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabsq_s32 (int32x4_t __a) 5209: { 5209: return __builtin_aarch64_absv4si (__a); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabsq_s64 (int64x2_t __a) 5209: { 5209: return __builtin_aarch64_absv2di (__a); 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: __extension__ extern __inline int64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabsd_s64 (int64_t __a) 5209: { 5209: return __a < 0 ? - (uint64_t) __a : __a; 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline int64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddd_s64 (int64_t __a, int64_t __b) 5209: { 5209: return __a + __b; 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddd_u64 (uint64_t __a, uint64_t __b) 5209: { 5209: return __a + __b; 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline int8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddv_s8 (int8x8_t __a) 5209: { 5209: return __builtin_aarch64_reduc_plus_scal_v8qi (__a); 5209: } 5209: 5209: __extension__ extern __inline int16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddv_s16 (int16x4_t __a) 5209: { 5209: return __builtin_aarch64_reduc_plus_scal_v4hi (__a); 5209: } 5209: 5209: __extension__ extern __inline int32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddv_s32 (int32x2_t __a) 5209: { 5209: return __builtin_aarch64_reduc_plus_scal_v2si (__a); 5209: } 5209: 5209: __extension__ extern __inline uint8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddv_u8 (uint8x8_t __a) 5209: { 5209: return (uint8_t) __builtin_aarch64_reduc_plus_scal_v8qi ((int8x8_t) __a); 5209: } 5209: 5209: __extension__ extern __inline uint16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddv_u16 (uint16x4_t __a) 5209: { 5209: return (uint16_t) __builtin_aarch64_reduc_plus_scal_v4hi ((int16x4_t) __a); 5209: } 5209: 5209: __extension__ extern __inline uint32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddv_u32 (uint32x2_t __a) 5209: { 5209: return (int32_t) __builtin_aarch64_reduc_plus_scal_v2si ((int32x2_t) __a); 5209: } 5209: 5209: __extension__ extern __inline int8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddvq_s8 (int8x16_t __a) 5209: { 5209: return __builtin_aarch64_reduc_plus_scal_v16qi (__a); 5209: } 5209: 5209: __extension__ extern __inline int16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddvq_s16 (int16x8_t __a) 5209: { 5209: return __builtin_aarch64_reduc_plus_scal_v8hi (__a); 5209: } 5209: 5209: __extension__ extern __inline int32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddvq_s32 (int32x4_t __a) 5209: { 5209: return __builtin_aarch64_reduc_plus_scal_v4si (__a); 5209: } 5209: 5209: __extension__ extern __inline int64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddvq_s64 (int64x2_t __a) 5209: { 5209: return __builtin_aarch64_reduc_plus_scal_v2di (__a); 5209: } 5209: 5209: __extension__ extern __inline uint8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddvq_u8 (uint8x16_t __a) 5209: { 5209: return (uint8_t) __builtin_aarch64_reduc_plus_scal_v16qi ((int8x16_t) __a); 5209: } 5209: 5209: __extension__ extern __inline uint16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddvq_u16 (uint16x8_t __a) 5209: { 5209: return (uint16_t) __builtin_aarch64_reduc_plus_scal_v8hi ((int16x8_t) __a); 5209: } 5209: 5209: __extension__ extern __inline uint32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddvq_u32 (uint32x4_t __a) 5209: { 5209: return (uint32_t) __builtin_aarch64_reduc_plus_scal_v4si ((int32x4_t) __a); 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddvq_u64 (uint64x2_t __a) 5209: { 5209: return (uint64_t) __builtin_aarch64_reduc_plus_scal_v2di ((int64x2_t) __a); 5209: } 5209: 5209: __extension__ extern __inline float32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddv_f32 (float32x2_t __a) 5209: { 5209: return __builtin_aarch64_reduc_plus_scal_v2sf (__a); 5209: } 5209: 5209: __extension__ extern __inline float32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddvq_f32 (float32x4_t __a) 5209: { 5209: return __builtin_aarch64_reduc_plus_scal_v4sf (__a); 5209: } 5209: 5209: __extension__ extern __inline float64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddvq_f64 (float64x2_t __a) 5209: { 5209: return __builtin_aarch64_reduc_plus_scal_v2df (__a); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vbsl_f16 (uint16x4_t __a, float16x4_t __b, float16x4_t __c) 5209: { 5209: return __builtin_aarch64_simd_bslv4hf_suss (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vbsl_f32 (uint32x2_t __a, float32x2_t __b, float32x2_t __c) 5209: { 5209: return __builtin_aarch64_simd_bslv2sf_suss (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vbsl_f64 (uint64x1_t __a, float64x1_t __b, float64x1_t __c) 5209: { 5209: return (float64x1_t) 5209: { __builtin_aarch64_simd_bsldf_suss (__a[0], __b[0], __c[0]) }; 5209: } 5209: 5209: __extension__ extern __inline poly8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vbsl_p8 (uint8x8_t __a, poly8x8_t __b, poly8x8_t __c) 5209: { 5209: return __builtin_aarch64_simd_bslv8qi_pupp (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline poly16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vbsl_p16 (uint16x4_t __a, poly16x4_t __b, poly16x4_t __c) 5209: { 5209: return __builtin_aarch64_simd_bslv4hi_pupp (__a, __b, __c); 5209: } 5209: __extension__ extern __inline poly64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vbsl_p64 (uint64x1_t __a, poly64x1_t __b, poly64x1_t __c) 5209: { 5209: return (poly64x1_t) 5209: {__builtin_aarch64_simd_bsldi_pupp (__a[0], __b[0], __c[0])}; 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vbsl_s8 (uint8x8_t __a, int8x8_t __b, int8x8_t __c) 5209: { 5209: return __builtin_aarch64_simd_bslv8qi_suss (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vbsl_s16 (uint16x4_t __a, int16x4_t __b, int16x4_t __c) 5209: { 5209: return __builtin_aarch64_simd_bslv4hi_suss (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vbsl_s32 (uint32x2_t __a, int32x2_t __b, int32x2_t __c) 5209: { 5209: return __builtin_aarch64_simd_bslv2si_suss (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vbsl_s64 (uint64x1_t __a, int64x1_t __b, int64x1_t __c) 5209: { 5209: return (int64x1_t) 5209: {__builtin_aarch64_simd_bsldi_suss (__a[0], __b[0], __c[0])}; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vbsl_u8 (uint8x8_t __a, uint8x8_t __b, uint8x8_t __c) 5209: { 5209: return __builtin_aarch64_simd_bslv8qi_uuuu (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vbsl_u16 (uint16x4_t __a, uint16x4_t __b, uint16x4_t __c) 5209: { 5209: return __builtin_aarch64_simd_bslv4hi_uuuu (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vbsl_u32 (uint32x2_t __a, uint32x2_t __b, uint32x2_t __c) 5209: { 5209: return __builtin_aarch64_simd_bslv2si_uuuu (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vbsl_u64 (uint64x1_t __a, uint64x1_t __b, uint64x1_t __c) 5209: { 5209: return (uint64x1_t) 5209: {__builtin_aarch64_simd_bsldi_uuuu (__a[0], __b[0], __c[0])}; 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vbslq_f16 (uint16x8_t __a, float16x8_t __b, float16x8_t __c) 5209: { 5209: return __builtin_aarch64_simd_bslv8hf_suss (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vbslq_f32 (uint32x4_t __a, float32x4_t __b, float32x4_t __c) 5209: { 5209: return __builtin_aarch64_simd_bslv4sf_suss (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vbslq_f64 (uint64x2_t __a, float64x2_t __b, float64x2_t __c) 5209: { 5209: return __builtin_aarch64_simd_bslv2df_suss (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline poly8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vbslq_p8 (uint8x16_t __a, poly8x16_t __b, poly8x16_t __c) 5209: { 5209: return __builtin_aarch64_simd_bslv16qi_pupp (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline poly16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vbslq_p16 (uint16x8_t __a, poly16x8_t __b, poly16x8_t __c) 5209: { 5209: return __builtin_aarch64_simd_bslv8hi_pupp (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vbslq_s8 (uint8x16_t __a, int8x16_t __b, int8x16_t __c) 5209: { 5209: return __builtin_aarch64_simd_bslv16qi_suss (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vbslq_s16 (uint16x8_t __a, int16x8_t __b, int16x8_t __c) 5209: { 5209: return __builtin_aarch64_simd_bslv8hi_suss (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline poly64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vbslq_p64 (uint64x2_t __a, poly64x2_t __b, poly64x2_t __c) 5209: { 5209: return __builtin_aarch64_simd_bslv2di_pupp (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vbslq_s32 (uint32x4_t __a, int32x4_t __b, int32x4_t __c) 5209: { 5209: return __builtin_aarch64_simd_bslv4si_suss (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vbslq_s64 (uint64x2_t __a, int64x2_t __b, int64x2_t __c) 5209: { 5209: return __builtin_aarch64_simd_bslv2di_suss (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vbslq_u8 (uint8x16_t __a, uint8x16_t __b, uint8x16_t __c) 5209: { 5209: return __builtin_aarch64_simd_bslv16qi_uuuu (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vbslq_u16 (uint16x8_t __a, uint16x8_t __b, uint16x8_t __c) 5209: { 5209: return __builtin_aarch64_simd_bslv8hi_uuuu (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vbslq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c) 5209: { 5209: return __builtin_aarch64_simd_bslv4si_uuuu (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vbslq_u64 (uint64x2_t __a, uint64x2_t __b, uint64x2_t __c) 5209: { 5209: return __builtin_aarch64_simd_bslv2di_uuuu (__a, __b, __c); 5209: } 5209: 5209: 5209: #pragma GCC push_options 5209: #pragma GCC target ("+nothing+rdma") 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrdmlah_s16 (int16x4_t __a, int16x4_t __b, int16x4_t __c) 5209: { 5209: return __builtin_aarch64_sqrdmlahv4hi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrdmlah_s32 (int32x2_t __a, int32x2_t __b, int32x2_t __c) 5209: { 5209: return __builtin_aarch64_sqrdmlahv2si (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrdmlahq_s16 (int16x8_t __a, int16x8_t __b, int16x8_t __c) 5209: { 5209: return __builtin_aarch64_sqrdmlahv8hi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrdmlahq_s32 (int32x4_t __a, int32x4_t __b, int32x4_t __c) 5209: { 5209: return __builtin_aarch64_sqrdmlahv4si (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrdmlsh_s16 (int16x4_t __a, int16x4_t __b, int16x4_t __c) 5209: { 5209: return __builtin_aarch64_sqrdmlshv4hi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrdmlsh_s32 (int32x2_t __a, int32x2_t __b, int32x2_t __c) 5209: { 5209: return __builtin_aarch64_sqrdmlshv2si (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrdmlshq_s16 (int16x8_t __a, int16x8_t __b, int16x8_t __c) 5209: { 5209: return __builtin_aarch64_sqrdmlshv8hi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrdmlshq_s32 (int32x4_t __a, int32x4_t __b, int32x4_t __c) 5209: { 5209: return __builtin_aarch64_sqrdmlshv4si (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrdmlah_laneq_s16 (int16x4_t __a, int16x4_t __b, int16x8_t __c, const int __d) 5209: { 5209: return __builtin_aarch64_sqrdmlah_laneqv4hi (__a, __b, __c, __d); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrdmlah_laneq_s32 (int32x2_t __a, int32x2_t __b, int32x4_t __c, const int __d) 5209: { 5209: return __builtin_aarch64_sqrdmlah_laneqv2si (__a, __b, __c, __d); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrdmlahq_laneq_s16 (int16x8_t __a, int16x8_t __b, int16x8_t __c, const int __d) 5209: { 5209: return __builtin_aarch64_sqrdmlah_laneqv8hi (__a, __b, __c, __d); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrdmlahq_laneq_s32 (int32x4_t __a, int32x4_t __b, int32x4_t __c, const int __d) 5209: { 5209: return __builtin_aarch64_sqrdmlah_laneqv4si (__a, __b, __c, __d); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrdmlsh_laneq_s16 (int16x4_t __a, int16x4_t __b, int16x8_t __c, const int __d) 5209: { 5209: return __builtin_aarch64_sqrdmlsh_laneqv4hi (__a, __b, __c, __d); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrdmlsh_laneq_s32 (int32x2_t __a, int32x2_t __b, int32x4_t __c, const int __d) 5209: { 5209: return __builtin_aarch64_sqrdmlsh_laneqv2si (__a, __b, __c, __d); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrdmlshq_laneq_s16 (int16x8_t __a, int16x8_t __b, int16x8_t __c, const int __d) 5209: { 5209: return __builtin_aarch64_sqrdmlsh_laneqv8hi (__a, __b, __c, __d); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrdmlshq_laneq_s32 (int32x4_t __a, int32x4_t __b, int32x4_t __c, const int __d) 5209: { 5209: return __builtin_aarch64_sqrdmlsh_laneqv4si (__a, __b, __c, __d); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrdmlah_lane_s16 (int16x4_t __a, int16x4_t __b, int16x4_t __c, const int __d) 5209: { 5209: return __builtin_aarch64_sqrdmlah_lanev4hi (__a, __b, __c, __d); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrdmlah_lane_s32 (int32x2_t __a, int32x2_t __b, int32x2_t __c, const int __d) 5209: { 5209: return __builtin_aarch64_sqrdmlah_lanev2si (__a, __b, __c, __d); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrdmlahq_lane_s16 (int16x8_t __a, int16x8_t __b, int16x4_t __c, const int __d) 5209: { 5209: return __builtin_aarch64_sqrdmlah_lanev8hi (__a, __b, __c, __d); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrdmlahq_lane_s32 (int32x4_t __a, int32x4_t __b, int32x2_t __c, const int __d) 5209: { 5209: return __builtin_aarch64_sqrdmlah_lanev4si (__a, __b, __c, __d); 5209: } 5209: 5209: __extension__ extern __inline int16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrdmlahh_s16 (int16_t __a, int16_t __b, int16_t __c) 5209: { 5209: return (int16_t) __builtin_aarch64_sqrdmlahhi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrdmlahh_lane_s16 (int16_t __a, int16_t __b, int16x4_t __c, const int __d) 5209: { 5209: return __builtin_aarch64_sqrdmlah_lanehi (__a, __b, __c, __d); 5209: } 5209: 5209: __extension__ extern __inline int16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrdmlahh_laneq_s16 (int16_t __a, int16_t __b, int16x8_t __c, const int __d) 5209: { 5209: return __builtin_aarch64_sqrdmlah_laneqhi (__a, __b, __c, __d); 5209: } 5209: 5209: __extension__ extern __inline int32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrdmlahs_s32 (int32_t __a, int32_t __b, int32_t __c) 5209: { 5209: return (int32_t) __builtin_aarch64_sqrdmlahsi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrdmlahs_lane_s32 (int32_t __a, int32_t __b, int32x2_t __c, const int __d) 5209: { 5209: return __builtin_aarch64_sqrdmlah_lanesi (__a, __b, __c, __d); 5209: } 5209: 5209: __extension__ extern __inline int32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrdmlahs_laneq_s32 (int32_t __a, int32_t __b, int32x4_t __c, const int __d) 5209: { 5209: return __builtin_aarch64_sqrdmlah_laneqsi (__a, __b, __c, __d); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrdmlsh_lane_s16 (int16x4_t __a, int16x4_t __b, int16x4_t __c, const int __d) 5209: { 5209: return __builtin_aarch64_sqrdmlsh_lanev4hi (__a, __b, __c, __d); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrdmlsh_lane_s32 (int32x2_t __a, int32x2_t __b, int32x2_t __c, const int __d) 5209: { 5209: return __builtin_aarch64_sqrdmlsh_lanev2si (__a, __b, __c, __d); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrdmlshq_lane_s16 (int16x8_t __a, int16x8_t __b, int16x4_t __c, const int __d) 5209: { 5209: return __builtin_aarch64_sqrdmlsh_lanev8hi (__a, __b, __c, __d); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrdmlshq_lane_s32 (int32x4_t __a, int32x4_t __b, int32x2_t __c, const int __d) 5209: { 5209: return __builtin_aarch64_sqrdmlsh_lanev4si (__a, __b, __c, __d); 5209: } 5209: 5209: __extension__ extern __inline int16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrdmlshh_s16 (int16_t __a, int16_t __b, int16_t __c) 5209: { 5209: return (int16_t) __builtin_aarch64_sqrdmlshhi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrdmlshh_lane_s16 (int16_t __a, int16_t __b, int16x4_t __c, const int __d) 5209: { 5209: return __builtin_aarch64_sqrdmlsh_lanehi (__a, __b, __c, __d); 5209: } 5209: 5209: __extension__ extern __inline int16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrdmlshh_laneq_s16 (int16_t __a, int16_t __b, int16x8_t __c, const int __d) 5209: { 5209: return __builtin_aarch64_sqrdmlsh_laneqhi (__a, __b, __c, __d); 5209: } 5209: 5209: __extension__ extern __inline int32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrdmlshs_s32 (int32_t __a, int32_t __b, int32_t __c) 5209: { 5209: return (int32_t) __builtin_aarch64_sqrdmlshsi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrdmlshs_lane_s32 (int32_t __a, int32_t __b, int32x2_t __c, const int __d) 5209: { 5209: return __builtin_aarch64_sqrdmlsh_lanesi (__a, __b, __c, __d); 5209: } 5209: 5209: __extension__ extern __inline int32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrdmlshs_laneq_s32 (int32_t __a, int32_t __b, int32x4_t __c, const int __d) 5209: { 5209: return __builtin_aarch64_sqrdmlsh_laneqsi (__a, __b, __c, __d); 5209: } 5209: #pragma GCC pop_options 5209: 5209: #pragma GCC push_options 5209: #pragma GCC target ("+nothing+crypto") 5209: 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaeseq_u8 (uint8x16_t data, uint8x16_t key) 5209: { 5209: return __builtin_aarch64_crypto_aesev16qi_uuu (data, key); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaesdq_u8 (uint8x16_t data, uint8x16_t key) 5209: { 5209: return __builtin_aarch64_crypto_aesdv16qi_uuu (data, key); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaesmcq_u8 (uint8x16_t data) 5209: { 5209: return __builtin_aarch64_crypto_aesmcv16qi_uu (data); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaesimcq_u8 (uint8x16_t data) 5209: { 5209: return __builtin_aarch64_crypto_aesimcv16qi_uu (data); 5209: } 5209: #pragma GCC pop_options 5209: 5209: 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcage_f64 (float64x1_t __a, float64x1_t __b) 5209: { 5209: return vabs_f64 (__a) >= vabs_f64 (__b); 5209: } 5209: 5209: __extension__ extern __inline uint32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcages_f32 (float32_t __a, float32_t __b) 5209: { 5209: return __builtin_fabsf (__a) >= __builtin_fabsf (__b) ? -1 : 0; 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcage_f32 (float32x2_t __a, float32x2_t __b) 5209: { 5209: return vabs_f32 (__a) >= vabs_f32 (__b); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcageq_f32 (float32x4_t __a, float32x4_t __b) 5209: { 5209: return vabsq_f32 (__a) >= vabsq_f32 (__b); 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcaged_f64 (float64_t __a, float64_t __b) 5209: { 5209: return __builtin_fabs (__a) >= __builtin_fabs (__b) ? -1 : 0; 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcageq_f64 (float64x2_t __a, float64x2_t __b) 5209: { 5209: return vabsq_f64 (__a) >= vabsq_f64 (__b); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline uint32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcagts_f32 (float32_t __a, float32_t __b) 5209: { 5209: return __builtin_fabsf (__a) > __builtin_fabsf (__b) ? -1 : 0; 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcagt_f32 (float32x2_t __a, float32x2_t __b) 5209: { 5209: return vabs_f32 (__a) > vabs_f32 (__b); 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcagt_f64 (float64x1_t __a, float64x1_t __b) 5209: { 5209: return vabs_f64 (__a) > vabs_f64 (__b); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcagtq_f32 (float32x4_t __a, float32x4_t __b) 5209: { 5209: return vabsq_f32 (__a) > vabsq_f32 (__b); 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcagtd_f64 (float64_t __a, float64_t __b) 5209: { 5209: return __builtin_fabs (__a) > __builtin_fabs (__b) ? -1 : 0; 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcagtq_f64 (float64x2_t __a, float64x2_t __b) 5209: { 5209: return vabsq_f64 (__a) > vabsq_f64 (__b); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcale_f32 (float32x2_t __a, float32x2_t __b) 5209: { 5209: return vabs_f32 (__a) <= vabs_f32 (__b); 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcale_f64 (float64x1_t __a, float64x1_t __b) 5209: { 5209: return vabs_f64 (__a) <= vabs_f64 (__b); 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcaled_f64 (float64_t __a, float64_t __b) 5209: { 5209: return __builtin_fabs (__a) <= __builtin_fabs (__b) ? -1 : 0; 5209: } 5209: 5209: __extension__ extern __inline uint32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcales_f32 (float32_t __a, float32_t __b) 5209: { 5209: return __builtin_fabsf (__a) <= __builtin_fabsf (__b) ? -1 : 0; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcaleq_f32 (float32x4_t __a, float32x4_t __b) 5209: { 5209: return vabsq_f32 (__a) <= vabsq_f32 (__b); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcaleq_f64 (float64x2_t __a, float64x2_t __b) 5209: { 5209: return vabsq_f64 (__a) <= vabsq_f64 (__b); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcalt_f32 (float32x2_t __a, float32x2_t __b) 5209: { 5209: return vabs_f32 (__a) < vabs_f32 (__b); 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcalt_f64 (float64x1_t __a, float64x1_t __b) 5209: { 5209: return vabs_f64 (__a) < vabs_f64 (__b); 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcaltd_f64 (float64_t __a, float64_t __b) 5209: { 5209: return __builtin_fabs (__a) < __builtin_fabs (__b) ? -1 : 0; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcaltq_f32 (float32x4_t __a, float32x4_t __b) 5209: { 5209: return vabsq_f32 (__a) < vabsq_f32 (__b); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcaltq_f64 (float64x2_t __a, float64x2_t __b) 5209: { 5209: return vabsq_f64 (__a) < vabsq_f64 (__b); 5209: } 5209: 5209: __extension__ extern __inline uint32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcalts_f32 (float32_t __a, float32_t __b) 5209: { 5209: return __builtin_fabsf (__a) < __builtin_fabsf (__b) ? -1 : 0; 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vceq_f32 (float32x2_t __a, float32x2_t __b) 5209: { 5209: return (uint32x2_t) (__a == __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vceq_f64 (float64x1_t __a, float64x1_t __b) 5209: { 5209: return (uint64x1_t) (__a == __b); 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vceq_p8 (poly8x8_t __a, poly8x8_t __b) 5209: { 5209: return (uint8x8_t) (__a == __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vceq_p64 (poly64x1_t __a, poly64x1_t __b) 5209: { 5209: return (uint64x1_t) (__a == __b); 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vceq_s8 (int8x8_t __a, int8x8_t __b) 5209: { 5209: return (uint8x8_t) (__a == __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vceq_s16 (int16x4_t __a, int16x4_t __b) 5209: { 5209: return (uint16x4_t) (__a == __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vceq_s32 (int32x2_t __a, int32x2_t __b) 5209: { 5209: return (uint32x2_t) (__a == __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vceq_s64 (int64x1_t __a, int64x1_t __b) 5209: { 5209: return (uint64x1_t) (__a == __b); 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vceq_u8 (uint8x8_t __a, uint8x8_t __b) 5209: { 5209: return (__a == __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vceq_u16 (uint16x4_t __a, uint16x4_t __b) 5209: { 5209: return (__a == __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vceq_u32 (uint32x2_t __a, uint32x2_t __b) 5209: { 5209: return (__a == __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vceq_u64 (uint64x1_t __a, uint64x1_t __b) 5209: { 5209: return (__a == __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vceqq_f32 (float32x4_t __a, float32x4_t __b) 5209: { 5209: return (uint32x4_t) (__a == __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vceqq_f64 (float64x2_t __a, float64x2_t __b) 5209: { 5209: return (uint64x2_t) (__a == __b); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vceqq_p8 (poly8x16_t __a, poly8x16_t __b) 5209: { 5209: return (uint8x16_t) (__a == __b); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vceqq_s8 (int8x16_t __a, int8x16_t __b) 5209: { 5209: return (uint8x16_t) (__a == __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vceqq_s16 (int16x8_t __a, int16x8_t __b) 5209: { 5209: return (uint16x8_t) (__a == __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vceqq_s32 (int32x4_t __a, int32x4_t __b) 5209: { 5209: return (uint32x4_t) (__a == __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vceqq_s64 (int64x2_t __a, int64x2_t __b) 5209: { 5209: return (uint64x2_t) (__a == __b); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vceqq_u8 (uint8x16_t __a, uint8x16_t __b) 5209: { 5209: return (__a == __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vceqq_u16 (uint16x8_t __a, uint16x8_t __b) 5209: { 5209: return (__a == __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vceqq_u32 (uint32x4_t __a, uint32x4_t __b) 5209: { 5209: return (__a == __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vceqq_u64 (uint64x2_t __a, uint64x2_t __b) 5209: { 5209: return (__a == __b); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline uint32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vceqs_f32 (float32_t __a, float32_t __b) 5209: { 5209: return __a == __b ? -1 : 0; 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vceqd_s64 (int64_t __a, int64_t __b) 5209: { 5209: return __a == __b ? -1ll : 0ll; 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vceqd_u64 (uint64_t __a, uint64_t __b) 5209: { 5209: return __a == __b ? -1ll : 0ll; 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vceqd_f64 (float64_t __a, float64_t __b) 5209: { 5209: return __a == __b ? -1ll : 0ll; 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vceqz_f32 (float32x2_t __a) 5209: { 5209: return (uint32x2_t) (__a == 0.0f); 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vceqz_f64 (float64x1_t __a) 5209: { 5209: return (uint64x1_t) (__a == (float64x1_t) {0.0}); 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vceqz_p8 (poly8x8_t __a) 5209: { 5209: return (uint8x8_t) (__a == 0); 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vceqz_s8 (int8x8_t __a) 5209: { 5209: return (uint8x8_t) (__a == 0); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vceqz_s16 (int16x4_t __a) 5209: { 5209: return (uint16x4_t) (__a == 0); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vceqz_s32 (int32x2_t __a) 5209: { 5209: return (uint32x2_t) (__a == 0); 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vceqz_s64 (int64x1_t __a) 5209: { 5209: return (uint64x1_t) (__a == ((int64_t) 0)); 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vceqz_u8 (uint8x8_t __a) 5209: { 5209: return (__a == 0); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vceqz_u16 (uint16x4_t __a) 5209: { 5209: return (__a == 0); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vceqz_u32 (uint32x2_t __a) 5209: { 5209: return (__a == 0); 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vceqz_u64 (uint64x1_t __a) 5209: { 5209: return (__a == ((uint64_t) 0)); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vceqzq_f32 (float32x4_t __a) 5209: { 5209: return (uint32x4_t) (__a == 0.0f); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vceqzq_f64 (float64x2_t __a) 5209: { 5209: return (uint64x2_t) (__a == 0.0f); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vceqzq_p8 (poly8x16_t __a) 5209: { 5209: return (uint8x16_t) (__a == 0); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vceqzq_s8 (int8x16_t __a) 5209: { 5209: return (uint8x16_t) (__a == 0); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vceqzq_s16 (int16x8_t __a) 5209: { 5209: return (uint16x8_t) (__a == 0); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vceqzq_s32 (int32x4_t __a) 5209: { 5209: return (uint32x4_t) (__a == 0); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vceqzq_s64 (int64x2_t __a) 5209: { 5209: return (uint64x2_t) (__a == ((int64_t) 0)); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vceqzq_u8 (uint8x16_t __a) 5209: { 5209: return (__a == 0); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vceqzq_u16 (uint16x8_t __a) 5209: { 5209: return (__a == 0); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vceqzq_u32 (uint32x4_t __a) 5209: { 5209: return (__a == 0); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vceqzq_u64 (uint64x2_t __a) 5209: { 5209: return (__a == ((uint64_t) 0)); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline uint32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vceqzs_f32 (float32_t __a) 5209: { 5209: return __a == 0.0f ? -1 : 0; 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vceqzd_s64 (int64_t __a) 5209: { 5209: return __a == 0 ? -1ll : 0ll; 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vceqzd_u64 (uint64_t __a) 5209: { 5209: return __a == 0 ? -1ll : 0ll; 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vceqzd_f64 (float64_t __a) 5209: { 5209: return __a == 0.0 ? -1ll : 0ll; 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcge_f32 (float32x2_t __a, float32x2_t __b) 5209: { 5209: return (uint32x2_t) (__a >= __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcge_f64 (float64x1_t __a, float64x1_t __b) 5209: { 5209: return (uint64x1_t) (__a >= __b); 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcge_s8 (int8x8_t __a, int8x8_t __b) 5209: { 5209: return (uint8x8_t) (__a >= __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcge_s16 (int16x4_t __a, int16x4_t __b) 5209: { 5209: return (uint16x4_t) (__a >= __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcge_s32 (int32x2_t __a, int32x2_t __b) 5209: { 5209: return (uint32x2_t) (__a >= __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcge_s64 (int64x1_t __a, int64x1_t __b) 5209: { 5209: return (uint64x1_t) (__a >= __b); 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcge_u8 (uint8x8_t __a, uint8x8_t __b) 5209: { 5209: return (__a >= __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcge_u16 (uint16x4_t __a, uint16x4_t __b) 5209: { 5209: return (__a >= __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcge_u32 (uint32x2_t __a, uint32x2_t __b) 5209: { 5209: return (__a >= __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcge_u64 (uint64x1_t __a, uint64x1_t __b) 5209: { 5209: return (__a >= __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgeq_f32 (float32x4_t __a, float32x4_t __b) 5209: { 5209: return (uint32x4_t) (__a >= __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgeq_f64 (float64x2_t __a, float64x2_t __b) 5209: { 5209: return (uint64x2_t) (__a >= __b); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgeq_s8 (int8x16_t __a, int8x16_t __b) 5209: { 5209: return (uint8x16_t) (__a >= __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgeq_s16 (int16x8_t __a, int16x8_t __b) 5209: { 5209: return (uint16x8_t) (__a >= __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgeq_s32 (int32x4_t __a, int32x4_t __b) 5209: { 5209: return (uint32x4_t) (__a >= __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgeq_s64 (int64x2_t __a, int64x2_t __b) 5209: { 5209: return (uint64x2_t) (__a >= __b); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgeq_u8 (uint8x16_t __a, uint8x16_t __b) 5209: { 5209: return (__a >= __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgeq_u16 (uint16x8_t __a, uint16x8_t __b) 5209: { 5209: return (__a >= __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgeq_u32 (uint32x4_t __a, uint32x4_t __b) 5209: { 5209: return (__a >= __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgeq_u64 (uint64x2_t __a, uint64x2_t __b) 5209: { 5209: return (__a >= __b); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline uint32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcges_f32 (float32_t __a, float32_t __b) 5209: { 5209: return __a >= __b ? -1 : 0; 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcged_s64 (int64_t __a, int64_t __b) 5209: { 5209: return __a >= __b ? -1ll : 0ll; 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcged_u64 (uint64_t __a, uint64_t __b) 5209: { 5209: return __a >= __b ? -1ll : 0ll; 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcged_f64 (float64_t __a, float64_t __b) 5209: { 5209: return __a >= __b ? -1ll : 0ll; 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgez_f32 (float32x2_t __a) 5209: { 5209: return (uint32x2_t) (__a >= 0.0f); 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgez_f64 (float64x1_t __a) 5209: { 5209: return (uint64x1_t) (__a[0] >= (float64x1_t) {0.0}); 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgez_s8 (int8x8_t __a) 5209: { 5209: return (uint8x8_t) (__a >= 0); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgez_s16 (int16x4_t __a) 5209: { 5209: return (uint16x4_t) (__a >= 0); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgez_s32 (int32x2_t __a) 5209: { 5209: return (uint32x2_t) (__a >= 0); 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgez_s64 (int64x1_t __a) 5209: { 5209: return (uint64x1_t) (__a >= ((int64_t) 0)); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgezq_f32 (float32x4_t __a) 5209: { 5209: return (uint32x4_t) (__a >= 0.0f); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgezq_f64 (float64x2_t __a) 5209: { 5209: return (uint64x2_t) (__a >= 0.0); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgezq_s8 (int8x16_t __a) 5209: { 5209: return (uint8x16_t) (__a >= 0); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgezq_s16 (int16x8_t __a) 5209: { 5209: return (uint16x8_t) (__a >= 0); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgezq_s32 (int32x4_t __a) 5209: { 5209: return (uint32x4_t) (__a >= 0); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgezq_s64 (int64x2_t __a) 5209: { 5209: return (uint64x2_t) (__a >= ((int64_t) 0)); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline uint32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgezs_f32 (float32_t __a) 5209: { 5209: return __a >= 0.0f ? -1 : 0; 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgezd_s64 (int64_t __a) 5209: { 5209: return __a >= 0 ? -1ll : 0ll; 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgezd_f64 (float64_t __a) 5209: { 5209: return __a >= 0.0 ? -1ll : 0ll; 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgt_f32 (float32x2_t __a, float32x2_t __b) 5209: { 5209: return (uint32x2_t) (__a > __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgt_f64 (float64x1_t __a, float64x1_t __b) 5209: { 5209: return (uint64x1_t) (__a > __b); 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgt_s8 (int8x8_t __a, int8x8_t __b) 5209: { 5209: return (uint8x8_t) (__a > __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgt_s16 (int16x4_t __a, int16x4_t __b) 5209: { 5209: return (uint16x4_t) (__a > __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgt_s32 (int32x2_t __a, int32x2_t __b) 5209: { 5209: return (uint32x2_t) (__a > __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgt_s64 (int64x1_t __a, int64x1_t __b) 5209: { 5209: return (uint64x1_t) (__a > __b); 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgt_u8 (uint8x8_t __a, uint8x8_t __b) 5209: { 5209: return (__a > __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgt_u16 (uint16x4_t __a, uint16x4_t __b) 5209: { 5209: return (__a > __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgt_u32 (uint32x2_t __a, uint32x2_t __b) 5209: { 5209: return (__a > __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgt_u64 (uint64x1_t __a, uint64x1_t __b) 5209: { 5209: return (__a > __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgtq_f32 (float32x4_t __a, float32x4_t __b) 5209: { 5209: return (uint32x4_t) (__a > __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgtq_f64 (float64x2_t __a, float64x2_t __b) 5209: { 5209: return (uint64x2_t) (__a > __b); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgtq_s8 (int8x16_t __a, int8x16_t __b) 5209: { 5209: return (uint8x16_t) (__a > __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgtq_s16 (int16x8_t __a, int16x8_t __b) 5209: { 5209: return (uint16x8_t) (__a > __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgtq_s32 (int32x4_t __a, int32x4_t __b) 5209: { 5209: return (uint32x4_t) (__a > __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgtq_s64 (int64x2_t __a, int64x2_t __b) 5209: { 5209: return (uint64x2_t) (__a > __b); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgtq_u8 (uint8x16_t __a, uint8x16_t __b) 5209: { 5209: return (__a > __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgtq_u16 (uint16x8_t __a, uint16x8_t __b) 5209: { 5209: return (__a > __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgtq_u32 (uint32x4_t __a, uint32x4_t __b) 5209: { 5209: return (__a > __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgtq_u64 (uint64x2_t __a, uint64x2_t __b) 5209: { 5209: return (__a > __b); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline uint32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgts_f32 (float32_t __a, float32_t __b) 5209: { 5209: return __a > __b ? -1 : 0; 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgtd_s64 (int64_t __a, int64_t __b) 5209: { 5209: return __a > __b ? -1ll : 0ll; 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgtd_u64 (uint64_t __a, uint64_t __b) 5209: { 5209: return __a > __b ? -1ll : 0ll; 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgtd_f64 (float64_t __a, float64_t __b) 5209: { 5209: return __a > __b ? -1ll : 0ll; 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgtz_f32 (float32x2_t __a) 5209: { 5209: return (uint32x2_t) (__a > 0.0f); 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgtz_f64 (float64x1_t __a) 5209: { 5209: return (uint64x1_t) (__a > (float64x1_t) {0.0}); 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgtz_s8 (int8x8_t __a) 5209: { 5209: return (uint8x8_t) (__a > 0); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgtz_s16 (int16x4_t __a) 5209: { 5209: return (uint16x4_t) (__a > 0); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgtz_s32 (int32x2_t __a) 5209: { 5209: return (uint32x2_t) (__a > 0); 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgtz_s64 (int64x1_t __a) 5209: { 5209: return (uint64x1_t) (__a > ((int64_t) 0)); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgtzq_f32 (float32x4_t __a) 5209: { 5209: return (uint32x4_t) (__a > 0.0f); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgtzq_f64 (float64x2_t __a) 5209: { 5209: return (uint64x2_t) (__a > 0.0); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgtzq_s8 (int8x16_t __a) 5209: { 5209: return (uint8x16_t) (__a > 0); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgtzq_s16 (int16x8_t __a) 5209: { 5209: return (uint16x8_t) (__a > 0); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgtzq_s32 (int32x4_t __a) 5209: { 5209: return (uint32x4_t) (__a > 0); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgtzq_s64 (int64x2_t __a) 5209: { 5209: return (uint64x2_t) (__a > ((int64_t) 0)); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline uint32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgtzs_f32 (float32_t __a) 5209: { 5209: return __a > 0.0f ? -1 : 0; 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgtzd_s64 (int64_t __a) 5209: { 5209: return __a > 0 ? -1ll : 0ll; 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgtzd_f64 (float64_t __a) 5209: { 5209: return __a > 0.0 ? -1ll : 0ll; 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcle_f32 (float32x2_t __a, float32x2_t __b) 5209: { 5209: return (uint32x2_t) (__a <= __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcle_f64 (float64x1_t __a, float64x1_t __b) 5209: { 5209: return (uint64x1_t) (__a <= __b); 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcle_s8 (int8x8_t __a, int8x8_t __b) 5209: { 5209: return (uint8x8_t) (__a <= __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcle_s16 (int16x4_t __a, int16x4_t __b) 5209: { 5209: return (uint16x4_t) (__a <= __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcle_s32 (int32x2_t __a, int32x2_t __b) 5209: { 5209: return (uint32x2_t) (__a <= __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcle_s64 (int64x1_t __a, int64x1_t __b) 5209: { 5209: return (uint64x1_t) (__a <= __b); 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcle_u8 (uint8x8_t __a, uint8x8_t __b) 5209: { 5209: return (__a <= __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcle_u16 (uint16x4_t __a, uint16x4_t __b) 5209: { 5209: return (__a <= __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcle_u32 (uint32x2_t __a, uint32x2_t __b) 5209: { 5209: return (__a <= __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcle_u64 (uint64x1_t __a, uint64x1_t __b) 5209: { 5209: return (__a <= __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcleq_f32 (float32x4_t __a, float32x4_t __b) 5209: { 5209: return (uint32x4_t) (__a <= __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcleq_f64 (float64x2_t __a, float64x2_t __b) 5209: { 5209: return (uint64x2_t) (__a <= __b); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcleq_s8 (int8x16_t __a, int8x16_t __b) 5209: { 5209: return (uint8x16_t) (__a <= __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcleq_s16 (int16x8_t __a, int16x8_t __b) 5209: { 5209: return (uint16x8_t) (__a <= __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcleq_s32 (int32x4_t __a, int32x4_t __b) 5209: { 5209: return (uint32x4_t) (__a <= __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcleq_s64 (int64x2_t __a, int64x2_t __b) 5209: { 5209: return (uint64x2_t) (__a <= __b); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcleq_u8 (uint8x16_t __a, uint8x16_t __b) 5209: { 5209: return (__a <= __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcleq_u16 (uint16x8_t __a, uint16x8_t __b) 5209: { 5209: return (__a <= __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcleq_u32 (uint32x4_t __a, uint32x4_t __b) 5209: { 5209: return (__a <= __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcleq_u64 (uint64x2_t __a, uint64x2_t __b) 5209: { 5209: return (__a <= __b); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline uint32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcles_f32 (float32_t __a, float32_t __b) 5209: { 5209: return __a <= __b ? -1 : 0; 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcled_s64 (int64_t __a, int64_t __b) 5209: { 5209: return __a <= __b ? -1ll : 0ll; 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcled_u64 (uint64_t __a, uint64_t __b) 5209: { 5209: return __a <= __b ? -1ll : 0ll; 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcled_f64 (float64_t __a, float64_t __b) 5209: { 5209: return __a <= __b ? -1ll : 0ll; 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vclez_f32 (float32x2_t __a) 5209: { 5209: return (uint32x2_t) (__a <= 0.0f); 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vclez_f64 (float64x1_t __a) 5209: { 5209: return (uint64x1_t) (__a <= (float64x1_t) {0.0}); 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vclez_s8 (int8x8_t __a) 5209: { 5209: return (uint8x8_t) (__a <= 0); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vclez_s16 (int16x4_t __a) 5209: { 5209: return (uint16x4_t) (__a <= 0); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vclez_s32 (int32x2_t __a) 5209: { 5209: return (uint32x2_t) (__a <= 0); 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vclez_s64 (int64x1_t __a) 5209: { 5209: return (uint64x1_t) (__a <= ((int64_t) 0)); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vclezq_f32 (float32x4_t __a) 5209: { 5209: return (uint32x4_t) (__a <= 0.0f); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vclezq_f64 (float64x2_t __a) 5209: { 5209: return (uint64x2_t) (__a <= 0.0); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vclezq_s8 (int8x16_t __a) 5209: { 5209: return (uint8x16_t) (__a <= 0); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vclezq_s16 (int16x8_t __a) 5209: { 5209: return (uint16x8_t) (__a <= 0); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vclezq_s32 (int32x4_t __a) 5209: { 5209: return (uint32x4_t) (__a <= 0); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vclezq_s64 (int64x2_t __a) 5209: { 5209: return (uint64x2_t) (__a <= ((int64_t) 0)); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline uint32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vclezs_f32 (float32_t __a) 5209: { 5209: return __a <= 0.0f ? -1 : 0; 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vclezd_s64 (int64_t __a) 5209: { 5209: return __a <= 0 ? -1ll : 0ll; 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vclezd_f64 (float64_t __a) 5209: { 5209: return __a <= 0.0 ? -1ll : 0ll; 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vclt_f32 (float32x2_t __a, float32x2_t __b) 5209: { 5209: return (uint32x2_t) (__a < __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vclt_f64 (float64x1_t __a, float64x1_t __b) 5209: { 5209: return (uint64x1_t) (__a < __b); 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vclt_s8 (int8x8_t __a, int8x8_t __b) 5209: { 5209: return (uint8x8_t) (__a < __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vclt_s16 (int16x4_t __a, int16x4_t __b) 5209: { 5209: return (uint16x4_t) (__a < __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vclt_s32 (int32x2_t __a, int32x2_t __b) 5209: { 5209: return (uint32x2_t) (__a < __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vclt_s64 (int64x1_t __a, int64x1_t __b) 5209: { 5209: return (uint64x1_t) (__a < __b); 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vclt_u8 (uint8x8_t __a, uint8x8_t __b) 5209: { 5209: return (__a < __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vclt_u16 (uint16x4_t __a, uint16x4_t __b) 5209: { 5209: return (__a < __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vclt_u32 (uint32x2_t __a, uint32x2_t __b) 5209: { 5209: return (__a < __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vclt_u64 (uint64x1_t __a, uint64x1_t __b) 5209: { 5209: return (__a < __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcltq_f32 (float32x4_t __a, float32x4_t __b) 5209: { 5209: return (uint32x4_t) (__a < __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcltq_f64 (float64x2_t __a, float64x2_t __b) 5209: { 5209: return (uint64x2_t) (__a < __b); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcltq_s8 (int8x16_t __a, int8x16_t __b) 5209: { 5209: return (uint8x16_t) (__a < __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcltq_s16 (int16x8_t __a, int16x8_t __b) 5209: { 5209: return (uint16x8_t) (__a < __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcltq_s32 (int32x4_t __a, int32x4_t __b) 5209: { 5209: return (uint32x4_t) (__a < __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcltq_s64 (int64x2_t __a, int64x2_t __b) 5209: { 5209: return (uint64x2_t) (__a < __b); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcltq_u8 (uint8x16_t __a, uint8x16_t __b) 5209: { 5209: return (__a < __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcltq_u16 (uint16x8_t __a, uint16x8_t __b) 5209: { 5209: return (__a < __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcltq_u32 (uint32x4_t __a, uint32x4_t __b) 5209: { 5209: return (__a < __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcltq_u64 (uint64x2_t __a, uint64x2_t __b) 5209: { 5209: return (__a < __b); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline uint32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vclts_f32 (float32_t __a, float32_t __b) 5209: { 5209: return __a < __b ? -1 : 0; 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcltd_s64 (int64_t __a, int64_t __b) 5209: { 5209: return __a < __b ? -1ll : 0ll; 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcltd_u64 (uint64_t __a, uint64_t __b) 5209: { 5209: return __a < __b ? -1ll : 0ll; 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcltd_f64 (float64_t __a, float64_t __b) 5209: { 5209: return __a < __b ? -1ll : 0ll; 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcltz_f32 (float32x2_t __a) 5209: { 5209: return (uint32x2_t) (__a < 0.0f); 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcltz_f64 (float64x1_t __a) 5209: { 5209: return (uint64x1_t) (__a < (float64x1_t) {0.0}); 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcltz_s8 (int8x8_t __a) 5209: { 5209: return (uint8x8_t) (__a < 0); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcltz_s16 (int16x4_t __a) 5209: { 5209: return (uint16x4_t) (__a < 0); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcltz_s32 (int32x2_t __a) 5209: { 5209: return (uint32x2_t) (__a < 0); 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcltz_s64 (int64x1_t __a) 5209: { 5209: return (uint64x1_t) (__a < ((int64_t) 0)); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcltzq_f32 (float32x4_t __a) 5209: { 5209: return (uint32x4_t) (__a < 0.0f); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcltzq_f64 (float64x2_t __a) 5209: { 5209: return (uint64x2_t) (__a < 0.0); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcltzq_s8 (int8x16_t __a) 5209: { 5209: return (uint8x16_t) (__a < 0); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcltzq_s16 (int16x8_t __a) 5209: { 5209: return (uint16x8_t) (__a < 0); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcltzq_s32 (int32x4_t __a) 5209: { 5209: return (uint32x4_t) (__a < 0); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcltzq_s64 (int64x2_t __a) 5209: { 5209: return (uint64x2_t) (__a < ((int64_t) 0)); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline uint32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcltzs_f32 (float32_t __a) 5209: { 5209: return __a < 0.0f ? -1 : 0; 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcltzd_s64 (int64_t __a) 5209: { 5209: return __a < 0 ? -1ll : 0ll; 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcltzd_f64 (float64_t __a) 5209: { 5209: return __a < 0.0 ? -1ll : 0ll; 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcls_s8 (int8x8_t __a) 5209: { 5209: return __builtin_aarch64_clrsbv8qi (__a); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcls_s16 (int16x4_t __a) 5209: { 5209: return __builtin_aarch64_clrsbv4hi (__a); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcls_s32 (int32x2_t __a) 5209: { 5209: return __builtin_aarch64_clrsbv2si (__a); 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vclsq_s8 (int8x16_t __a) 5209: { 5209: return __builtin_aarch64_clrsbv16qi (__a); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vclsq_s16 (int16x8_t __a) 5209: { 5209: return __builtin_aarch64_clrsbv8hi (__a); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vclsq_s32 (int32x4_t __a) 5209: { 5209: return __builtin_aarch64_clrsbv4si (__a); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vclz_s8 (int8x8_t __a) 5209: { 5209: return __builtin_aarch64_clzv8qi (__a); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vclz_s16 (int16x4_t __a) 5209: { 5209: return __builtin_aarch64_clzv4hi (__a); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vclz_s32 (int32x2_t __a) 5209: { 5209: return __builtin_aarch64_clzv2si (__a); 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vclz_u8 (uint8x8_t __a) 5209: { 5209: return (uint8x8_t)__builtin_aarch64_clzv8qi ((int8x8_t)__a); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vclz_u16 (uint16x4_t __a) 5209: { 5209: return (uint16x4_t)__builtin_aarch64_clzv4hi ((int16x4_t)__a); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vclz_u32 (uint32x2_t __a) 5209: { 5209: return (uint32x2_t)__builtin_aarch64_clzv2si ((int32x2_t)__a); 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vclzq_s8 (int8x16_t __a) 5209: { 5209: return __builtin_aarch64_clzv16qi (__a); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vclzq_s16 (int16x8_t __a) 5209: { 5209: return __builtin_aarch64_clzv8hi (__a); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vclzq_s32 (int32x4_t __a) 5209: { 5209: return __builtin_aarch64_clzv4si (__a); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vclzq_u8 (uint8x16_t __a) 5209: { 5209: return (uint8x16_t)__builtin_aarch64_clzv16qi ((int8x16_t)__a); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vclzq_u16 (uint16x8_t __a) 5209: { 5209: return (uint16x8_t)__builtin_aarch64_clzv8hi ((int16x8_t)__a); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vclzq_u32 (uint32x4_t __a) 5209: { 5209: return (uint32x4_t)__builtin_aarch64_clzv4si ((int32x4_t)__a); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline poly8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcnt_p8 (poly8x8_t __a) 5209: { 5209: return (poly8x8_t) __builtin_aarch64_popcountv8qi ((int8x8_t) __a); 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcnt_s8 (int8x8_t __a) 5209: { 5209: return __builtin_aarch64_popcountv8qi (__a); 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcnt_u8 (uint8x8_t __a) 5209: { 5209: return (uint8x8_t) __builtin_aarch64_popcountv8qi ((int8x8_t) __a); 5209: } 5209: 5209: __extension__ extern __inline poly8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcntq_p8 (poly8x16_t __a) 5209: { 5209: return (poly8x16_t) __builtin_aarch64_popcountv16qi ((int8x16_t) __a); 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcntq_s8 (int8x16_t __a) 5209: { 5209: return __builtin_aarch64_popcountv16qi (__a); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcntq_u8 (uint8x16_t __a) 5209: { 5209: return (uint8x16_t) __builtin_aarch64_popcountv16qi ((int8x16_t) __a); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcopy_lane_f32 (float32x2_t __a, const int __lane1, 5209: float32x2_t __b, const int __lane2) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __lane1); __a[__lane1] = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane2); __b[__lane2]; }); __a; }) 5209: ; 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcopy_lane_f64 (float64x1_t __a, const int __lane1, 5209: float64x1_t __b, const int __lane2) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __lane1); __a[__lane1] = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane2); __b[__lane2]; }); __a; }) 5209: ; 5209: } 5209: 5209: __extension__ extern __inline poly8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcopy_lane_p8 (poly8x8_t __a, const int __lane1, 5209: poly8x8_t __b, const int __lane2) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __lane1); __a[__lane1] = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane2); __b[__lane2]; }); __a; }) 5209: ; 5209: } 5209: 5209: __extension__ extern __inline poly16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcopy_lane_p16 (poly16x4_t __a, const int __lane1, 5209: poly16x4_t __b, const int __lane2) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __lane1); __a[__lane1] = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane2); __b[__lane2]; }); __a; }) 5209: ; 5209: } 5209: 5209: __extension__ extern __inline poly64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcopy_lane_p64 (poly64x1_t __a, const int __lane1, 5209: poly64x1_t __b, const int __lane2) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __lane1); __a[__lane1] = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane2); __b[__lane2]; }); __a; }) 5209: ; 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcopy_lane_s8 (int8x8_t __a, const int __lane1, 5209: int8x8_t __b, const int __lane2) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __lane1); __a[__lane1] = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane2); __b[__lane2]; }); __a; }) 5209: ; 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcopy_lane_s16 (int16x4_t __a, const int __lane1, 5209: int16x4_t __b, const int __lane2) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __lane1); __a[__lane1] = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane2); __b[__lane2]; }); __a; }) 5209: ; 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcopy_lane_s32 (int32x2_t __a, const int __lane1, 5209: int32x2_t __b, const int __lane2) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __lane1); __a[__lane1] = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane2); __b[__lane2]; }); __a; }) 5209: ; 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcopy_lane_s64 (int64x1_t __a, const int __lane1, 5209: int64x1_t __b, const int __lane2) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __lane1); __a[__lane1] = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane2); __b[__lane2]; }); __a; }) 5209: ; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcopy_lane_u8 (uint8x8_t __a, const int __lane1, 5209: uint8x8_t __b, const int __lane2) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __lane1); __a[__lane1] = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane2); __b[__lane2]; }); __a; }) 5209: ; 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcopy_lane_u16 (uint16x4_t __a, const int __lane1, 5209: uint16x4_t __b, const int __lane2) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __lane1); __a[__lane1] = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane2); __b[__lane2]; }); __a; }) 5209: ; 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcopy_lane_u32 (uint32x2_t __a, const int __lane1, 5209: uint32x2_t __b, const int __lane2) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __lane1); __a[__lane1] = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane2); __b[__lane2]; }); __a; }) 5209: ; 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcopy_lane_u64 (uint64x1_t __a, const int __lane1, 5209: uint64x1_t __b, const int __lane2) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __lane1); __a[__lane1] = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane2); __b[__lane2]; }); __a; }) 5209: ; 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcopy_laneq_f32 (float32x2_t __a, const int __lane1, 5209: float32x4_t __b, const int __lane2) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __lane1); __a[__lane1] = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane2); __b[__lane2]; }); __a; }) 5209: ; 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcopy_laneq_f64 (float64x1_t __a, const int __lane1, 5209: float64x2_t __b, const int __lane2) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __lane1); __a[__lane1] = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane2); __b[__lane2]; }); __a; }) 5209: ; 5209: } 5209: 5209: __extension__ extern __inline poly8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcopy_laneq_p8 (poly8x8_t __a, const int __lane1, 5209: poly8x16_t __b, const int __lane2) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __lane1); __a[__lane1] = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane2); __b[__lane2]; }); __a; }) 5209: ; 5209: } 5209: 5209: __extension__ extern __inline poly16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcopy_laneq_p16 (poly16x4_t __a, const int __lane1, 5209: poly16x8_t __b, const int __lane2) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __lane1); __a[__lane1] = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane2); __b[__lane2]; }); __a; }) 5209: ; 5209: } 5209: 5209: __extension__ extern __inline poly64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcopy_laneq_p64 (poly64x1_t __a, const int __lane1, 5209: poly64x2_t __b, const int __lane2) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __lane1); __a[__lane1] = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane2); __b[__lane2]; }); __a; }) 5209: ; 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcopy_laneq_s8 (int8x8_t __a, const int __lane1, 5209: int8x16_t __b, const int __lane2) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __lane1); __a[__lane1] = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane2); __b[__lane2]; }); __a; }) 5209: ; 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcopy_laneq_s16 (int16x4_t __a, const int __lane1, 5209: int16x8_t __b, const int __lane2) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __lane1); __a[__lane1] = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane2); __b[__lane2]; }); __a; }) 5209: ; 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcopy_laneq_s32 (int32x2_t __a, const int __lane1, 5209: int32x4_t __b, const int __lane2) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __lane1); __a[__lane1] = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane2); __b[__lane2]; }); __a; }) 5209: ; 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcopy_laneq_s64 (int64x1_t __a, const int __lane1, 5209: int64x2_t __b, const int __lane2) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __lane1); __a[__lane1] = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane2); __b[__lane2]; }); __a; }) 5209: ; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcopy_laneq_u8 (uint8x8_t __a, const int __lane1, 5209: uint8x16_t __b, const int __lane2) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __lane1); __a[__lane1] = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane2); __b[__lane2]; }); __a; }) 5209: ; 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcopy_laneq_u16 (uint16x4_t __a, const int __lane1, 5209: uint16x8_t __b, const int __lane2) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __lane1); __a[__lane1] = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane2); __b[__lane2]; }); __a; }) 5209: ; 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcopy_laneq_u32 (uint32x2_t __a, const int __lane1, 5209: uint32x4_t __b, const int __lane2) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __lane1); __a[__lane1] = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane2); __b[__lane2]; }); __a; }) 5209: ; 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcopy_laneq_u64 (uint64x1_t __a, const int __lane1, 5209: uint64x2_t __b, const int __lane2) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __lane1); __a[__lane1] = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane2); __b[__lane2]; }); __a; }) 5209: ; 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcopyq_lane_f32 (float32x4_t __a, const int __lane1, 5209: float32x2_t __b, const int __lane2) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __lane1); __a[__lane1] = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane2); __b[__lane2]; }); __a; }) 5209: ; 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcopyq_lane_f64 (float64x2_t __a, const int __lane1, 5209: float64x1_t __b, const int __lane2) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __lane1); __a[__lane1] = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane2); __b[__lane2]; }); __a; }) 5209: ; 5209: } 5209: 5209: __extension__ extern __inline poly8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcopyq_lane_p8 (poly8x16_t __a, const int __lane1, 5209: poly8x8_t __b, const int __lane2) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __lane1); __a[__lane1] = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane2); __b[__lane2]; }); __a; }) 5209: ; 5209: } 5209: 5209: __extension__ extern __inline poly16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcopyq_lane_p16 (poly16x8_t __a, const int __lane1, 5209: poly16x4_t __b, const int __lane2) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __lane1); __a[__lane1] = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane2); __b[__lane2]; }); __a; }) 5209: ; 5209: } 5209: 5209: __extension__ extern __inline poly64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcopyq_lane_p64 (poly64x2_t __a, const int __lane1, 5209: poly64x1_t __b, const int __lane2) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __lane1); __a[__lane1] = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane2); __b[__lane2]; }); __a; }) 5209: ; 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcopyq_lane_s8 (int8x16_t __a, const int __lane1, 5209: int8x8_t __b, const int __lane2) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __lane1); __a[__lane1] = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane2); __b[__lane2]; }); __a; }) 5209: ; 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcopyq_lane_s16 (int16x8_t __a, const int __lane1, 5209: int16x4_t __b, const int __lane2) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __lane1); __a[__lane1] = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane2); __b[__lane2]; }); __a; }) 5209: ; 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcopyq_lane_s32 (int32x4_t __a, const int __lane1, 5209: int32x2_t __b, const int __lane2) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __lane1); __a[__lane1] = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane2); __b[__lane2]; }); __a; }) 5209: ; 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcopyq_lane_s64 (int64x2_t __a, const int __lane1, 5209: int64x1_t __b, const int __lane2) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __lane1); __a[__lane1] = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane2); __b[__lane2]; }); __a; }) 5209: ; 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcopyq_lane_u8 (uint8x16_t __a, const int __lane1, 5209: uint8x8_t __b, const int __lane2) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __lane1); __a[__lane1] = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane2); __b[__lane2]; }); __a; }) 5209: ; 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcopyq_lane_u16 (uint16x8_t __a, const int __lane1, 5209: uint16x4_t __b, const int __lane2) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __lane1); __a[__lane1] = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane2); __b[__lane2]; }); __a; }) 5209: ; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcopyq_lane_u32 (uint32x4_t __a, const int __lane1, 5209: uint32x2_t __b, const int __lane2) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __lane1); __a[__lane1] = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane2); __b[__lane2]; }); __a; }) 5209: ; 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcopyq_lane_u64 (uint64x2_t __a, const int __lane1, 5209: uint64x1_t __b, const int __lane2) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __lane1); __a[__lane1] = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane2); __b[__lane2]; }); __a; }) 5209: ; 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcopyq_laneq_f32 (float32x4_t __a, const int __lane1, 5209: float32x4_t __b, const int __lane2) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __lane1); __a[__lane1] = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane2); __b[__lane2]; }); __a; }) 5209: ; 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcopyq_laneq_f64 (float64x2_t __a, const int __lane1, 5209: float64x2_t __b, const int __lane2) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __lane1); __a[__lane1] = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane2); __b[__lane2]; }); __a; }) 5209: ; 5209: } 5209: 5209: __extension__ extern __inline poly8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcopyq_laneq_p8 (poly8x16_t __a, const int __lane1, 5209: poly8x16_t __b, const int __lane2) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __lane1); __a[__lane1] = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane2); __b[__lane2]; }); __a; }) 5209: ; 5209: } 5209: 5209: __extension__ extern __inline poly16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcopyq_laneq_p16 (poly16x8_t __a, const int __lane1, 5209: poly16x8_t __b, const int __lane2) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __lane1); __a[__lane1] = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane2); __b[__lane2]; }); __a; }) 5209: ; 5209: } 5209: 5209: __extension__ extern __inline poly64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcopyq_laneq_p64 (poly64x2_t __a, const int __lane1, 5209: poly64x2_t __b, const int __lane2) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __lane1); __a[__lane1] = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane2); __b[__lane2]; }); __a; }) 5209: ; 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcopyq_laneq_s8 (int8x16_t __a, const int __lane1, 5209: int8x16_t __b, const int __lane2) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __lane1); __a[__lane1] = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane2); __b[__lane2]; }); __a; }) 5209: ; 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcopyq_laneq_s16 (int16x8_t __a, const int __lane1, 5209: int16x8_t __b, const int __lane2) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __lane1); __a[__lane1] = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane2); __b[__lane2]; }); __a; }) 5209: ; 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcopyq_laneq_s32 (int32x4_t __a, const int __lane1, 5209: int32x4_t __b, const int __lane2) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __lane1); __a[__lane1] = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane2); __b[__lane2]; }); __a; }) 5209: ; 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcopyq_laneq_s64 (int64x2_t __a, const int __lane1, 5209: int64x2_t __b, const int __lane2) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __lane1); __a[__lane1] = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane2); __b[__lane2]; }); __a; }) 5209: ; 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcopyq_laneq_u8 (uint8x16_t __a, const int __lane1, 5209: uint8x16_t __b, const int __lane2) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __lane1); __a[__lane1] = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane2); __b[__lane2]; }); __a; }) 5209: ; 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcopyq_laneq_u16 (uint16x8_t __a, const int __lane1, 5209: uint16x8_t __b, const int __lane2) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __lane1); __a[__lane1] = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane2); __b[__lane2]; }); __a; }) 5209: ; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcopyq_laneq_u32 (uint32x4_t __a, const int __lane1, 5209: uint32x4_t __b, const int __lane2) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __lane1); __a[__lane1] = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane2); __b[__lane2]; }); __a; }) 5209: ; 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcopyq_laneq_u64 (uint64x2_t __a, const int __lane1, 5209: uint64x2_t __b, const int __lane2) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __lane1); __a[__lane1] = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane2); __b[__lane2]; }); __a; }) 5209: ; 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvt_f16_f32 (float32x4_t __a) 5209: { 5209: return __builtin_aarch64_float_truncate_lo_v4hf (__a); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvt_high_f16_f32 (float16x4_t __a, float32x4_t __b) 5209: { 5209: return __builtin_aarch64_float_truncate_hi_v8hf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvt_f32_f64 (float64x2_t __a) 5209: { 5209: return __builtin_aarch64_float_truncate_lo_v2sf (__a); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvt_high_f32_f64 (float32x2_t __a, float64x2_t __b) 5209: { 5209: return __builtin_aarch64_float_truncate_hi_v4sf (__a, __b); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvt_f32_f16 (float16x4_t __a) 5209: { 5209: return __builtin_aarch64_float_extend_lo_v4sf (__a); 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvt_f64_f32 (float32x2_t __a) 5209: { 5209: 5209: return __builtin_aarch64_float_extend_lo_v2df (__a); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvt_high_f32_f16 (float16x8_t __a) 5209: { 5209: return __builtin_aarch64_vec_unpacks_hi_v8hf (__a); 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvt_high_f64_f32 (float32x4_t __a) 5209: { 5209: return __builtin_aarch64_vec_unpacks_hi_v4sf (__a); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtd_n_f64_s64 (int64_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_scvtfdi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtd_n_f64_u64 (uint64_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_ucvtfdi_sus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvts_n_f32_s32 (int32_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_scvtfsi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvts_n_f32_u32 (uint32_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_ucvtfsi_sus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvt_n_f32_s32 (int32x2_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_scvtfv2si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvt_n_f32_u32 (uint32x2_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_ucvtfv2si_sus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvt_n_f64_s64 (int64x1_t __a, const int __b) 5209: { 5209: return (float64x1_t) 5209: { __builtin_aarch64_scvtfdi (vget_lane_s64 (__a, 0), __b) }; 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvt_n_f64_u64 (uint64x1_t __a, const int __b) 5209: { 5209: return (float64x1_t) 5209: { __builtin_aarch64_ucvtfdi_sus (vget_lane_u64 (__a, 0), __b) }; 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtq_n_f32_s32 (int32x4_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_scvtfv4si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtq_n_f32_u32 (uint32x4_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_ucvtfv4si_sus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtq_n_f64_s64 (int64x2_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_scvtfv2di (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtq_n_f64_u64 (uint64x2_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_ucvtfv2di_sus (__a, __b); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline int64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtd_n_s64_f64 (float64_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_fcvtzsdf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtd_n_u64_f64 (float64_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_fcvtzudf_uss (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvts_n_s32_f32 (float32_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_fcvtzssf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvts_n_u32_f32 (float32_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_fcvtzusf_uss (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvt_n_s32_f32 (float32x2_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_fcvtzsv2sf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvt_n_u32_f32 (float32x2_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_fcvtzuv2sf_uss (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvt_n_s64_f64 (float64x1_t __a, const int __b) 5209: { 5209: return (int64x1_t) 5209: { __builtin_aarch64_fcvtzsdf (vget_lane_f64 (__a, 0), __b) }; 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvt_n_u64_f64 (float64x1_t __a, const int __b) 5209: { 5209: return (uint64x1_t) 5209: { __builtin_aarch64_fcvtzudf_uss (vget_lane_f64 (__a, 0), __b) }; 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtq_n_s32_f32 (float32x4_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_fcvtzsv4sf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtq_n_u32_f32 (float32x4_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_fcvtzuv4sf_uss (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtq_n_s64_f64 (float64x2_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_fcvtzsv2df (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtq_n_u64_f64 (float64x2_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_fcvtzuv2df_uss (__a, __b); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtd_f64_s64 (int64_t __a) 5209: { 5209: return (float64_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtd_f64_u64 (uint64_t __a) 5209: { 5209: return (float64_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvts_f32_s32 (int32_t __a) 5209: { 5209: return (float32_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvts_f32_u32 (uint32_t __a) 5209: { 5209: return (float32_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvt_f32_s32 (int32x2_t __a) 5209: { 5209: return __builtin_aarch64_floatv2siv2sf (__a); 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvt_f32_u32 (uint32x2_t __a) 5209: { 5209: return __builtin_aarch64_floatunsv2siv2sf ((int32x2_t) __a); 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvt_f64_s64 (int64x1_t __a) 5209: { 5209: return (float64x1_t) { vget_lane_s64 (__a, 0) }; 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvt_f64_u64 (uint64x1_t __a) 5209: { 5209: return (float64x1_t) { vget_lane_u64 (__a, 0) }; 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtq_f32_s32 (int32x4_t __a) 5209: { 5209: return __builtin_aarch64_floatv4siv4sf (__a); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtq_f32_u32 (uint32x4_t __a) 5209: { 5209: return __builtin_aarch64_floatunsv4siv4sf ((int32x4_t) __a); 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtq_f64_s64 (int64x2_t __a) 5209: { 5209: return __builtin_aarch64_floatv2div2df (__a); 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtq_f64_u64 (uint64x2_t __a) 5209: { 5209: return __builtin_aarch64_floatunsv2div2df ((int64x2_t) __a); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline int64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtd_s64_f64 (float64_t __a) 5209: { 5209: return (int64_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtd_u64_f64 (float64_t __a) 5209: { 5209: return (uint64_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvts_s32_f32 (float32_t __a) 5209: { 5209: return (int32_t) __a; 5209: } 5209: 5209: __extension__ extern __inline uint32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvts_u32_f32 (float32_t __a) 5209: { 5209: return (uint32_t) __a; 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvt_s32_f32 (float32x2_t __a) 5209: { 5209: return __builtin_aarch64_lbtruncv2sfv2si (__a); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvt_u32_f32 (float32x2_t __a) 5209: { 5209: return __builtin_aarch64_lbtruncuv2sfv2si_us (__a); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtq_s32_f32 (float32x4_t __a) 5209: { 5209: return __builtin_aarch64_lbtruncv4sfv4si (__a); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtq_u32_f32 (float32x4_t __a) 5209: { 5209: return __builtin_aarch64_lbtruncuv4sfv4si_us (__a); 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvt_s64_f64 (float64x1_t __a) 5209: { 5209: return (int64x1_t) {vcvtd_s64_f64 (__a[0])}; 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvt_u64_f64 (float64x1_t __a) 5209: { 5209: return (uint64x1_t) {vcvtd_u64_f64 (__a[0])}; 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtq_s64_f64 (float64x2_t __a) 5209: { 5209: return __builtin_aarch64_lbtruncv2dfv2di (__a); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtq_u64_f64 (float64x2_t __a) 5209: { 5209: return __builtin_aarch64_lbtruncuv2dfv2di_us (__a); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline int64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtad_s64_f64 (float64_t __a) 5209: { 5209: return __builtin_aarch64_lrounddfdi (__a); 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtad_u64_f64 (float64_t __a) 5209: { 5209: return __builtin_aarch64_lroundudfdi_us (__a); 5209: } 5209: 5209: __extension__ extern __inline int32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtas_s32_f32 (float32_t __a) 5209: { 5209: return __builtin_aarch64_lroundsfsi (__a); 5209: } 5209: 5209: __extension__ extern __inline uint32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtas_u32_f32 (float32_t __a) 5209: { 5209: return __builtin_aarch64_lroundusfsi_us (__a); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvta_s32_f32 (float32x2_t __a) 5209: { 5209: return __builtin_aarch64_lroundv2sfv2si (__a); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvta_u32_f32 (float32x2_t __a) 5209: { 5209: return __builtin_aarch64_lrounduv2sfv2si_us (__a); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtaq_s32_f32 (float32x4_t __a) 5209: { 5209: return __builtin_aarch64_lroundv4sfv4si (__a); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtaq_u32_f32 (float32x4_t __a) 5209: { 5209: return __builtin_aarch64_lrounduv4sfv4si_us (__a); 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvta_s64_f64 (float64x1_t __a) 5209: { 5209: return (int64x1_t) {vcvtad_s64_f64 (__a[0])}; 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvta_u64_f64 (float64x1_t __a) 5209: { 5209: return (uint64x1_t) {vcvtad_u64_f64 (__a[0])}; 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtaq_s64_f64 (float64x2_t __a) 5209: { 5209: return __builtin_aarch64_lroundv2dfv2di (__a); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtaq_u64_f64 (float64x2_t __a) 5209: { 5209: return __builtin_aarch64_lrounduv2dfv2di_us (__a); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline int64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtmd_s64_f64 (float64_t __a) 5209: { 5209: return __builtin_llfloor (__a); 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtmd_u64_f64 (float64_t __a) 5209: { 5209: return __builtin_aarch64_lfloorudfdi_us (__a); 5209: } 5209: 5209: __extension__ extern __inline int32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtms_s32_f32 (float32_t __a) 5209: { 5209: return __builtin_ifloorf (__a); 5209: } 5209: 5209: __extension__ extern __inline uint32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtms_u32_f32 (float32_t __a) 5209: { 5209: return __builtin_aarch64_lfloorusfsi_us (__a); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtm_s32_f32 (float32x2_t __a) 5209: { 5209: return __builtin_aarch64_lfloorv2sfv2si (__a); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtm_u32_f32 (float32x2_t __a) 5209: { 5209: return __builtin_aarch64_lflooruv2sfv2si_us (__a); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtmq_s32_f32 (float32x4_t __a) 5209: { 5209: return __builtin_aarch64_lfloorv4sfv4si (__a); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtmq_u32_f32 (float32x4_t __a) 5209: { 5209: return __builtin_aarch64_lflooruv4sfv4si_us (__a); 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtm_s64_f64 (float64x1_t __a) 5209: { 5209: return (int64x1_t) {vcvtmd_s64_f64 (__a[0])}; 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtm_u64_f64 (float64x1_t __a) 5209: { 5209: return (uint64x1_t) {vcvtmd_u64_f64 (__a[0])}; 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtmq_s64_f64 (float64x2_t __a) 5209: { 5209: return __builtin_aarch64_lfloorv2dfv2di (__a); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtmq_u64_f64 (float64x2_t __a) 5209: { 5209: return __builtin_aarch64_lflooruv2dfv2di_us (__a); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline int64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtnd_s64_f64 (float64_t __a) 5209: { 5209: return __builtin_aarch64_lfrintndfdi (__a); 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtnd_u64_f64 (float64_t __a) 5209: { 5209: return __builtin_aarch64_lfrintnudfdi_us (__a); 5209: } 5209: 5209: __extension__ extern __inline int32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtns_s32_f32 (float32_t __a) 5209: { 5209: return __builtin_aarch64_lfrintnsfsi (__a); 5209: } 5209: 5209: __extension__ extern __inline uint32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtns_u32_f32 (float32_t __a) 5209: { 5209: return __builtin_aarch64_lfrintnusfsi_us (__a); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtn_s32_f32 (float32x2_t __a) 5209: { 5209: return __builtin_aarch64_lfrintnv2sfv2si (__a); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtn_u32_f32 (float32x2_t __a) 5209: { 5209: return __builtin_aarch64_lfrintnuv2sfv2si_us (__a); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtnq_s32_f32 (float32x4_t __a) 5209: { 5209: return __builtin_aarch64_lfrintnv4sfv4si (__a); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtnq_u32_f32 (float32x4_t __a) 5209: { 5209: return __builtin_aarch64_lfrintnuv4sfv4si_us (__a); 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtn_s64_f64 (float64x1_t __a) 5209: { 5209: return (int64x1_t) {vcvtnd_s64_f64 (__a[0])}; 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtn_u64_f64 (float64x1_t __a) 5209: { 5209: return (uint64x1_t) {vcvtnd_u64_f64 (__a[0])}; 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtnq_s64_f64 (float64x2_t __a) 5209: { 5209: return __builtin_aarch64_lfrintnv2dfv2di (__a); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtnq_u64_f64 (float64x2_t __a) 5209: { 5209: return __builtin_aarch64_lfrintnuv2dfv2di_us (__a); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline int64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtpd_s64_f64 (float64_t __a) 5209: { 5209: return __builtin_llceil (__a); 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtpd_u64_f64 (float64_t __a) 5209: { 5209: return __builtin_aarch64_lceiludfdi_us (__a); 5209: } 5209: 5209: __extension__ extern __inline int32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtps_s32_f32 (float32_t __a) 5209: { 5209: return __builtin_iceilf (__a); 5209: } 5209: 5209: __extension__ extern __inline uint32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtps_u32_f32 (float32_t __a) 5209: { 5209: return __builtin_aarch64_lceilusfsi_us (__a); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtp_s32_f32 (float32x2_t __a) 5209: { 5209: return __builtin_aarch64_lceilv2sfv2si (__a); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtp_u32_f32 (float32x2_t __a) 5209: { 5209: return __builtin_aarch64_lceiluv2sfv2si_us (__a); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtpq_s32_f32 (float32x4_t __a) 5209: { 5209: return __builtin_aarch64_lceilv4sfv4si (__a); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtpq_u32_f32 (float32x4_t __a) 5209: { 5209: return __builtin_aarch64_lceiluv4sfv4si_us (__a); 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtp_s64_f64 (float64x1_t __a) 5209: { 5209: return (int64x1_t) {vcvtpd_s64_f64 (__a[0])}; 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtp_u64_f64 (float64x1_t __a) 5209: { 5209: return (uint64x1_t) {vcvtpd_u64_f64 (__a[0])}; 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtpq_s64_f64 (float64x2_t __a) 5209: { 5209: return __builtin_aarch64_lceilv2dfv2di (__a); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtpq_u64_f64 (float64x2_t __a) 5209: { 5209: return __builtin_aarch64_lceiluv2dfv2di_us (__a); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdup_n_f16 (float16_t __a) 5209: { 5209: return (float16x4_t) {__a, __a, __a, __a}; 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdup_n_f32 (float32_t __a) 5209: { 5209: return (float32x2_t) {__a, __a}; 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdup_n_f64 (float64_t __a) 5209: { 5209: return (float64x1_t) {__a}; 5209: } 5209: 5209: __extension__ extern __inline poly8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdup_n_p8 (poly8_t __a) 5209: { 5209: return (poly8x8_t) {__a, __a, __a, __a, __a, __a, __a, __a}; 5209: } 5209: 5209: __extension__ extern __inline poly16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdup_n_p16 (poly16_t __a) 5209: { 5209: return (poly16x4_t) {__a, __a, __a, __a}; 5209: } 5209: 5209: __extension__ extern __inline poly64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdup_n_p64 (poly64_t __a) 5209: { 5209: return (poly64x1_t) {__a}; 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdup_n_s8 (int8_t __a) 5209: { 5209: return (int8x8_t) {__a, __a, __a, __a, __a, __a, __a, __a}; 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdup_n_s16 (int16_t __a) 5209: { 5209: return (int16x4_t) {__a, __a, __a, __a}; 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdup_n_s32 (int32_t __a) 5209: { 5209: return (int32x2_t) {__a, __a}; 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdup_n_s64 (int64_t __a) 5209: { 5209: return (int64x1_t) {__a}; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdup_n_u8 (uint8_t __a) 5209: { 5209: return (uint8x8_t) {__a, __a, __a, __a, __a, __a, __a, __a}; 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdup_n_u16 (uint16_t __a) 5209: { 5209: return (uint16x4_t) {__a, __a, __a, __a}; 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdup_n_u32 (uint32_t __a) 5209: { 5209: return (uint32x2_t) {__a, __a}; 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdup_n_u64 (uint64_t __a) 5209: { 5209: return (uint64x1_t) {__a}; 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdupq_n_f16 (float16_t __a) 5209: { 5209: return (float16x8_t) {__a, __a, __a, __a, __a, __a, __a, __a}; 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdupq_n_f32 (float32_t __a) 5209: { 5209: return (float32x4_t) {__a, __a, __a, __a}; 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdupq_n_f64 (float64_t __a) 5209: { 5209: return (float64x2_t) {__a, __a}; 5209: } 5209: 5209: __extension__ extern __inline poly8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdupq_n_p8 (uint32_t __a) 5209: { 5209: return (poly8x16_t) {__a, __a, __a, __a, __a, __a, __a, __a, 5209: __a, __a, __a, __a, __a, __a, __a, __a}; 5209: } 5209: 5209: __extension__ extern __inline poly16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdupq_n_p16 (uint32_t __a) 5209: { 5209: return (poly16x8_t) {__a, __a, __a, __a, __a, __a, __a, __a}; 5209: } 5209: 5209: __extension__ extern __inline poly64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdupq_n_p64 (uint64_t __a) 5209: { 5209: return (poly64x2_t) {__a, __a}; 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdupq_n_s8 (int32_t __a) 5209: { 5209: return (int8x16_t) {__a, __a, __a, __a, __a, __a, __a, __a, 5209: __a, __a, __a, __a, __a, __a, __a, __a}; 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdupq_n_s16 (int32_t __a) 5209: { 5209: return (int16x8_t) {__a, __a, __a, __a, __a, __a, __a, __a}; 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdupq_n_s32 (int32_t __a) 5209: { 5209: return (int32x4_t) {__a, __a, __a, __a}; 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdupq_n_s64 (int64_t __a) 5209: { 5209: return (int64x2_t) {__a, __a}; 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdupq_n_u8 (uint32_t __a) 5209: { 5209: return (uint8x16_t) {__a, __a, __a, __a, __a, __a, __a, __a, 5209: __a, __a, __a, __a, __a, __a, __a, __a}; 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdupq_n_u16 (uint32_t __a) 5209: { 5209: return (uint16x8_t) {__a, __a, __a, __a, __a, __a, __a, __a}; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdupq_n_u32 (uint32_t __a) 5209: { 5209: return (uint32x4_t) {__a, __a, __a, __a}; 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdupq_n_u64 (uint64_t __a) 5209: { 5209: return (uint64x2_t) {__a, __a}; 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdup_lane_f16 (float16x4_t __a, const int __b) 5209: { 5209: return vdup_n_f16 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; })); 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdup_lane_f32 (float32x2_t __a, const int __b) 5209: { 5209: return vdup_n_f32 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; })); 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdup_lane_f64 (float64x1_t __a, const int __b) 5209: { 5209: return vdup_n_f64 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; })); 5209: } 5209: 5209: __extension__ extern __inline poly8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdup_lane_p8 (poly8x8_t __a, const int __b) 5209: { 5209: return vdup_n_p8 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; })); 5209: } 5209: 5209: __extension__ extern __inline poly16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdup_lane_p16 (poly16x4_t __a, const int __b) 5209: { 5209: return vdup_n_p16 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; })); 5209: } 5209: 5209: __extension__ extern __inline poly64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdup_lane_p64 (poly64x1_t __a, const int __b) 5209: { 5209: return vdup_n_p64 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; })); 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdup_lane_s8 (int8x8_t __a, const int __b) 5209: { 5209: return vdup_n_s8 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; })); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdup_lane_s16 (int16x4_t __a, const int __b) 5209: { 5209: return vdup_n_s16 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; })); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdup_lane_s32 (int32x2_t __a, const int __b) 5209: { 5209: return vdup_n_s32 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; })); 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdup_lane_s64 (int64x1_t __a, const int __b) 5209: { 5209: return vdup_n_s64 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; })); 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdup_lane_u8 (uint8x8_t __a, const int __b) 5209: { 5209: return vdup_n_u8 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; })); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdup_lane_u16 (uint16x4_t __a, const int __b) 5209: { 5209: return vdup_n_u16 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; })); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdup_lane_u32 (uint32x2_t __a, const int __b) 5209: { 5209: return vdup_n_u32 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; })); 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdup_lane_u64 (uint64x1_t __a, const int __b) 5209: { 5209: return vdup_n_u64 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; })); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdup_laneq_f16 (float16x8_t __a, const int __b) 5209: { 5209: return vdup_n_f16 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; })); 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdup_laneq_f32 (float32x4_t __a, const int __b) 5209: { 5209: return vdup_n_f32 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; })); 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdup_laneq_f64 (float64x2_t __a, const int __b) 5209: { 5209: return vdup_n_f64 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; })); 5209: } 5209: 5209: __extension__ extern __inline poly8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdup_laneq_p8 (poly8x16_t __a, const int __b) 5209: { 5209: return vdup_n_p8 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; })); 5209: } 5209: 5209: __extension__ extern __inline poly16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdup_laneq_p16 (poly16x8_t __a, const int __b) 5209: { 5209: return vdup_n_p16 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; })); 5209: } 5209: 5209: __extension__ extern __inline poly64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdup_laneq_p64 (poly64x2_t __a, const int __b) 5209: { 5209: return vdup_n_p64 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; })); 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdup_laneq_s8 (int8x16_t __a, const int __b) 5209: { 5209: return vdup_n_s8 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; })); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdup_laneq_s16 (int16x8_t __a, const int __b) 5209: { 5209: return vdup_n_s16 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; })); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdup_laneq_s32 (int32x4_t __a, const int __b) 5209: { 5209: return vdup_n_s32 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; })); 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdup_laneq_s64 (int64x2_t __a, const int __b) 5209: { 5209: return vdup_n_s64 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; })); 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdup_laneq_u8 (uint8x16_t __a, const int __b) 5209: { 5209: return vdup_n_u8 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; })); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdup_laneq_u16 (uint16x8_t __a, const int __b) 5209: { 5209: return vdup_n_u16 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; })); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdup_laneq_u32 (uint32x4_t __a, const int __b) 5209: { 5209: return vdup_n_u32 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; })); 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdup_laneq_u64 (uint64x2_t __a, const int __b) 5209: { 5209: return vdup_n_u64 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; })); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdupq_lane_f16 (float16x4_t __a, const int __b) 5209: { 5209: return vdupq_n_f16 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; })); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdupq_lane_f32 (float32x2_t __a, const int __b) 5209: { 5209: return vdupq_n_f32 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; })); 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdupq_lane_f64 (float64x1_t __a, const int __b) 5209: { 5209: return vdupq_n_f64 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; })); 5209: } 5209: 5209: __extension__ extern __inline poly8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdupq_lane_p8 (poly8x8_t __a, const int __b) 5209: { 5209: return vdupq_n_p8 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; })); 5209: } 5209: 5209: __extension__ extern __inline poly16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdupq_lane_p16 (poly16x4_t __a, const int __b) 5209: { 5209: return vdupq_n_p16 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; })); 5209: } 5209: 5209: __extension__ extern __inline poly64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdupq_lane_p64 (poly64x1_t __a, const int __b) 5209: { 5209: return vdupq_n_p64 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; })); 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdupq_lane_s8 (int8x8_t __a, const int __b) 5209: { 5209: return vdupq_n_s8 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; })); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdupq_lane_s16 (int16x4_t __a, const int __b) 5209: { 5209: return vdupq_n_s16 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; })); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdupq_lane_s32 (int32x2_t __a, const int __b) 5209: { 5209: return vdupq_n_s32 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; })); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdupq_lane_s64 (int64x1_t __a, const int __b) 5209: { 5209: return vdupq_n_s64 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; })); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdupq_lane_u8 (uint8x8_t __a, const int __b) 5209: { 5209: return vdupq_n_u8 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; })); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdupq_lane_u16 (uint16x4_t __a, const int __b) 5209: { 5209: return vdupq_n_u16 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; })); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdupq_lane_u32 (uint32x2_t __a, const int __b) 5209: { 5209: return vdupq_n_u32 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; })); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdupq_lane_u64 (uint64x1_t __a, const int __b) 5209: { 5209: return vdupq_n_u64 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; })); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdupq_laneq_f16 (float16x8_t __a, const int __b) 5209: { 5209: return vdupq_n_f16 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; })); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdupq_laneq_f32 (float32x4_t __a, const int __b) 5209: { 5209: return vdupq_n_f32 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; })); 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdupq_laneq_f64 (float64x2_t __a, const int __b) 5209: { 5209: return vdupq_n_f64 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; })); 5209: } 5209: 5209: __extension__ extern __inline poly8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdupq_laneq_p8 (poly8x16_t __a, const int __b) 5209: { 5209: return vdupq_n_p8 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; })); 5209: } 5209: 5209: __extension__ extern __inline poly16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdupq_laneq_p16 (poly16x8_t __a, const int __b) 5209: { 5209: return vdupq_n_p16 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; })); 5209: } 5209: 5209: __extension__ extern __inline poly64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdupq_laneq_p64 (poly64x2_t __a, const int __b) 5209: { 5209: return vdupq_n_p64 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; })); 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdupq_laneq_s8 (int8x16_t __a, const int __b) 5209: { 5209: return vdupq_n_s8 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; })); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdupq_laneq_s16 (int16x8_t __a, const int __b) 5209: { 5209: return vdupq_n_s16 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; })); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdupq_laneq_s32 (int32x4_t __a, const int __b) 5209: { 5209: return vdupq_n_s32 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; })); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdupq_laneq_s64 (int64x2_t __a, const int __b) 5209: { 5209: return vdupq_n_s64 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; })); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdupq_laneq_u8 (uint8x16_t __a, const int __b) 5209: { 5209: return vdupq_n_u8 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; })); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdupq_laneq_u16 (uint16x8_t __a, const int __b) 5209: { 5209: return vdupq_n_u16 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; })); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdupq_laneq_u32 (uint32x4_t __a, const int __b) 5209: { 5209: return vdupq_n_u32 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; })); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdupq_laneq_u64 (uint64x2_t __a, const int __b) 5209: { 5209: return vdupq_n_u64 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; })); 5209: } 5209: 5209: 5209: __extension__ extern __inline poly8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdupb_lane_p8 (poly8x8_t __a, const int __b) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; }); 5209: } 5209: 5209: __extension__ extern __inline int8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdupb_lane_s8 (int8x8_t __a, const int __b) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; }); 5209: } 5209: 5209: __extension__ extern __inline uint8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdupb_lane_u8 (uint8x8_t __a, const int __b) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; }); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vduph_lane_f16 (float16x4_t __a, const int __b) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; }); 5209: } 5209: 5209: __extension__ extern __inline poly16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vduph_lane_p16 (poly16x4_t __a, const int __b) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; }); 5209: } 5209: 5209: __extension__ extern __inline int16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vduph_lane_s16 (int16x4_t __a, const int __b) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; }); 5209: } 5209: 5209: __extension__ extern __inline uint16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vduph_lane_u16 (uint16x4_t __a, const int __b) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; }); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdups_lane_f32 (float32x2_t __a, const int __b) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; }); 5209: } 5209: 5209: __extension__ extern __inline int32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdups_lane_s32 (int32x2_t __a, const int __b) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; }); 5209: } 5209: 5209: __extension__ extern __inline uint32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdups_lane_u32 (uint32x2_t __a, const int __b) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; }); 5209: } 5209: 5209: 5209: __extension__ extern __inline float64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdupd_lane_f64 (float64x1_t __a, const int __b) 5209: { 5209: __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); 5209: return __a[0]; 5209: } 5209: 5209: __extension__ extern __inline int64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdupd_lane_s64 (int64x1_t __a, const int __b) 5209: { 5209: __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); 5209: return __a[0]; 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdupd_lane_u64 (uint64x1_t __a, const int __b) 5209: { 5209: __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); 5209: return __a[0]; 5209: } 5209: 5209: 5209: __extension__ extern __inline poly8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdupb_laneq_p8 (poly8x16_t __a, const int __b) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; }); 5209: } 5209: 5209: __extension__ extern __inline int8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdupb_laneq_s8 (int8x16_t __a, const int __b) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; }); 5209: } 5209: 5209: __extension__ extern __inline uint8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdupb_laneq_u8 (uint8x16_t __a, const int __b) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; }); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vduph_laneq_f16 (float16x8_t __a, const int __b) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; }); 5209: } 5209: 5209: __extension__ extern __inline poly16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vduph_laneq_p16 (poly16x8_t __a, const int __b) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; }); 5209: } 5209: 5209: __extension__ extern __inline int16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vduph_laneq_s16 (int16x8_t __a, const int __b) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; }); 5209: } 5209: 5209: __extension__ extern __inline uint16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vduph_laneq_u16 (uint16x8_t __a, const int __b) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; }); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdups_laneq_f32 (float32x4_t __a, const int __b) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; }); 5209: } 5209: 5209: __extension__ extern __inline int32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdups_laneq_s32 (int32x4_t __a, const int __b) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; }); 5209: } 5209: 5209: __extension__ extern __inline uint32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdups_laneq_u32 (uint32x4_t __a, const int __b) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; }); 5209: } 5209: 5209: 5209: __extension__ extern __inline float64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdupd_laneq_f64 (float64x2_t __a, const int __b) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; }); 5209: } 5209: 5209: __extension__ extern __inline int64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdupd_laneq_s64 (int64x2_t __a, const int __b) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; }); 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdupd_laneq_u64 (uint64x2_t __a, const int __b) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __b); __a[__b]; }); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vext_f16 (float16x4_t __a, float16x4_t __b, __const int __c) 5209: { 5209: __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __c); 5209: 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, 5209: (uint16x4_t) {__c, __c + 1, __c + 2, __c + 3}); 5209: 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vext_f32 (float32x2_t __a, float32x2_t __b, __const int __c) 5209: { 5209: __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __c); 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint32x2_t) {__c, __c+1}); 5209: 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vext_f64 (float64x1_t __a, float64x1_t __b, __const int __c) 5209: { 5209: __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __c); 5209: 5209: return __a; 5209: } 5209: __extension__ extern __inline poly8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vext_p8 (poly8x8_t __a, poly8x8_t __b, __const int __c) 5209: { 5209: __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __c); 5209: 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, 5209: (uint8x8_t) {__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7}); 5209: 5209: } 5209: 5209: __extension__ extern __inline poly16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vext_p16 (poly16x4_t __a, poly16x4_t __b, __const int __c) 5209: { 5209: __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __c); 5209: 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint16x4_t) {__c, __c+1, __c+2, __c+3}); 5209: 5209: } 5209: 5209: __extension__ extern __inline poly64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vext_p64 (poly64x1_t __a, poly64x1_t __b, __const int __c) 5209: { 5209: __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __c); 5209: 5209: return __a; 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vext_s8 (int8x8_t __a, int8x8_t __b, __const int __c) 5209: { 5209: __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __c); 5209: 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, 5209: (uint8x8_t) {__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7}); 5209: 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vext_s16 (int16x4_t __a, int16x4_t __b, __const int __c) 5209: { 5209: __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __c); 5209: 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint16x4_t) {__c, __c+1, __c+2, __c+3}); 5209: 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vext_s32 (int32x2_t __a, int32x2_t __b, __const int __c) 5209: { 5209: __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __c); 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint32x2_t) {__c, __c+1}); 5209: 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vext_s64 (int64x1_t __a, int64x1_t __b, __const int __c) 5209: { 5209: __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __c); 5209: 5209: return __a; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vext_u8 (uint8x8_t __a, uint8x8_t __b, __const int __c) 5209: { 5209: __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __c); 5209: 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, 5209: (uint8x8_t) {__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7}); 5209: 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vext_u16 (uint16x4_t __a, uint16x4_t __b, __const int __c) 5209: { 5209: __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __c); 5209: 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint16x4_t) {__c, __c+1, __c+2, __c+3}); 5209: 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vext_u32 (uint32x2_t __a, uint32x2_t __b, __const int __c) 5209: { 5209: __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __c); 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint32x2_t) {__c, __c+1}); 5209: 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vext_u64 (uint64x1_t __a, uint64x1_t __b, __const int __c) 5209: { 5209: __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __c); 5209: 5209: return __a; 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vextq_f16 (float16x8_t __a, float16x8_t __b, __const int __c) 5209: { 5209: __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __c); 5209: 5209: 5209: 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, 5209: (uint16x8_t) {__c, __c + 1, __c + 2, __c + 3, 5209: __c + 4, __c + 5, __c + 6, __c + 7}); 5209: 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vextq_f32 (float32x4_t __a, float32x4_t __b, __const int __c) 5209: { 5209: __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __c); 5209: 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint32x4_t) {__c, __c+1, __c+2, __c+3}); 5209: 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vextq_f64 (float64x2_t __a, float64x2_t __b, __const int __c) 5209: { 5209: __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __c); 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint64x2_t) {__c, __c+1}); 5209: 5209: } 5209: 5209: __extension__ extern __inline poly8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vextq_p8 (poly8x16_t __a, poly8x16_t __b, __const int __c) 5209: { 5209: __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __c); 5209: 5209: 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint8x16_t) 5209: {__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7, 5209: __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15}); 5209: 5209: } 5209: 5209: __extension__ extern __inline poly16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vextq_p16 (poly16x8_t __a, poly16x8_t __b, __const int __c) 5209: { 5209: __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __c); 5209: 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, 5209: (uint16x8_t) {__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7}); 5209: 5209: } 5209: 5209: __extension__ extern __inline poly64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vextq_p64 (poly64x2_t __a, poly64x2_t __b, __const int __c) 5209: { 5209: __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __c); 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint64x2_t) {__c, __c+1}); 5209: 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vextq_s8 (int8x16_t __a, int8x16_t __b, __const int __c) 5209: { 5209: __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __c); 5209: 5209: 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint8x16_t) 5209: {__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7, 5209: __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15}); 5209: 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vextq_s16 (int16x8_t __a, int16x8_t __b, __const int __c) 5209: { 5209: __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __c); 5209: 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, 5209: (uint16x8_t) {__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7}); 5209: 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vextq_s32 (int32x4_t __a, int32x4_t __b, __const int __c) 5209: { 5209: __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __c); 5209: 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint32x4_t) {__c, __c+1, __c+2, __c+3}); 5209: 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vextq_s64 (int64x2_t __a, int64x2_t __b, __const int __c) 5209: { 5209: __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __c); 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint64x2_t) {__c, __c+1}); 5209: 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vextq_u8 (uint8x16_t __a, uint8x16_t __b, __const int __c) 5209: { 5209: __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __c); 5209: 5209: 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint8x16_t) 5209: {__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7, 5209: __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15}); 5209: 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vextq_u16 (uint16x8_t __a, uint16x8_t __b, __const int __c) 5209: { 5209: __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __c); 5209: 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, 5209: (uint16x8_t) {__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7}); 5209: 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vextq_u32 (uint32x4_t __a, uint32x4_t __b, __const int __c) 5209: { 5209: __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __c); 5209: 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint32x4_t) {__c, __c+1, __c+2, __c+3}); 5209: 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vextq_u64 (uint64x2_t __a, uint64x2_t __b, __const int __c) 5209: { 5209: __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __c); 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint64x2_t) {__c, __c+1}); 5209: 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfma_f64 (float64x1_t __a, float64x1_t __b, float64x1_t __c) 5209: { 5209: return (float64x1_t) {__builtin_fma (__b[0], __c[0], __a[0])}; 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfma_f32 (float32x2_t __a, float32x2_t __b, float32x2_t __c) 5209: { 5209: return __builtin_aarch64_fmav2sf (__b, __c, __a); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmaq_f32 (float32x4_t __a, float32x4_t __b, float32x4_t __c) 5209: { 5209: return __builtin_aarch64_fmav4sf (__b, __c, __a); 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmaq_f64 (float64x2_t __a, float64x2_t __b, float64x2_t __c) 5209: { 5209: return __builtin_aarch64_fmav2df (__b, __c, __a); 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfma_n_f32 (float32x2_t __a, float32x2_t __b, float32_t __c) 5209: { 5209: return __builtin_aarch64_fmav2sf (__b, vdup_n_f32 (__c), __a); 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfma_n_f64 (float64x1_t __a, float64x1_t __b, float64_t __c) 5209: { 5209: return (float64x1_t) {__b[0] * __c + __a[0]}; 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmaq_n_f32 (float32x4_t __a, float32x4_t __b, float32_t __c) 5209: { 5209: return __builtin_aarch64_fmav4sf (__b, vdupq_n_f32 (__c), __a); 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmaq_n_f64 (float64x2_t __a, float64x2_t __b, float64_t __c) 5209: { 5209: return __builtin_aarch64_fmav2df (__b, vdupq_n_f64 (__c), __a); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfma_lane_f32 (float32x2_t __a, float32x2_t __b, 5209: float32x2_t __c, const int __lane) 5209: { 5209: return __builtin_aarch64_fmav2sf (__b, 5209: vdup_n_f32 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; })), 5209: __a); 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfma_lane_f64 (float64x1_t __a, float64x1_t __b, 5209: float64x1_t __c, const int __lane) 5209: { 5209: return (float64x1_t) {__builtin_fma (__b[0], __c[0], __a[0])}; 5209: } 5209: 5209: __extension__ extern __inline float64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmad_lane_f64 (float64_t __a, float64_t __b, 5209: float64x1_t __c, const int __lane) 5209: { 5209: return __builtin_fma (__b, __c[0], __a); 5209: } 5209: 5209: __extension__ extern __inline float32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmas_lane_f32 (float32_t __a, float32_t __b, 5209: float32x2_t __c, const int __lane) 5209: { 5209: return __builtin_fmaf (__b, __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; }), __a); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfma_laneq_f32 (float32x2_t __a, float32x2_t __b, 5209: float32x4_t __c, const int __lane) 5209: { 5209: return __builtin_aarch64_fmav2sf (__b, 5209: vdup_n_f32 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; })), 5209: __a); 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfma_laneq_f64 (float64x1_t __a, float64x1_t __b, 5209: float64x2_t __c, const int __lane) 5209: { 5209: float64_t __c0 = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; }); 5209: return (float64x1_t) {__builtin_fma (__b[0], __c0, __a[0])}; 5209: } 5209: 5209: __extension__ extern __inline float64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmad_laneq_f64 (float64_t __a, float64_t __b, 5209: float64x2_t __c, const int __lane) 5209: { 5209: return __builtin_fma (__b, __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; }), __a); 5209: } 5209: 5209: __extension__ extern __inline float32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmas_laneq_f32 (float32_t __a, float32_t __b, 5209: float32x4_t __c, const int __lane) 5209: { 5209: return __builtin_fmaf (__b, __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; }), __a); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmaq_lane_f32 (float32x4_t __a, float32x4_t __b, 5209: float32x2_t __c, const int __lane) 5209: { 5209: return __builtin_aarch64_fmav4sf (__b, 5209: vdupq_n_f32 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; })), 5209: __a); 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmaq_lane_f64 (float64x2_t __a, float64x2_t __b, 5209: float64x1_t __c, const int __lane) 5209: { 5209: return __builtin_aarch64_fmav2df (__b, vdupq_n_f64 (__c[0]), __a); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmaq_laneq_f32 (float32x4_t __a, float32x4_t __b, 5209: float32x4_t __c, const int __lane) 5209: { 5209: return __builtin_aarch64_fmav4sf (__b, 5209: vdupq_n_f32 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; })), 5209: __a); 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmaq_laneq_f64 (float64x2_t __a, float64x2_t __b, 5209: float64x2_t __c, const int __lane) 5209: { 5209: return __builtin_aarch64_fmav2df (__b, 5209: vdupq_n_f64 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; })), 5209: __a); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfms_f64 (float64x1_t __a, float64x1_t __b, float64x1_t __c) 5209: { 5209: return (float64x1_t) {__builtin_fma (-__b[0], __c[0], __a[0])}; 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfms_f32 (float32x2_t __a, float32x2_t __b, float32x2_t __c) 5209: { 5209: return __builtin_aarch64_fmav2sf (-__b, __c, __a); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmsq_f32 (float32x4_t __a, float32x4_t __b, float32x4_t __c) 5209: { 5209: return __builtin_aarch64_fmav4sf (-__b, __c, __a); 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmsq_f64 (float64x2_t __a, float64x2_t __b, float64x2_t __c) 5209: { 5209: return __builtin_aarch64_fmav2df (-__b, __c, __a); 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfms_n_f32 (float32x2_t __a, float32x2_t __b, float32_t __c) 5209: { 5209: return __builtin_aarch64_fmav2sf (-__b, vdup_n_f32 (__c), __a); 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfms_n_f64 (float64x1_t __a, float64x1_t __b, float64_t __c) 5209: { 5209: return (float64x1_t) {-__b[0] * __c + __a[0]}; 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmsq_n_f32 (float32x4_t __a, float32x4_t __b, float32_t __c) 5209: { 5209: return __builtin_aarch64_fmav4sf (-__b, vdupq_n_f32 (__c), __a); 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmsq_n_f64 (float64x2_t __a, float64x2_t __b, float64_t __c) 5209: { 5209: return __builtin_aarch64_fmav2df (-__b, vdupq_n_f64 (__c), __a); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfms_lane_f32 (float32x2_t __a, float32x2_t __b, 5209: float32x2_t __c, const int __lane) 5209: { 5209: return __builtin_aarch64_fmav2sf (-__b, 5209: vdup_n_f32 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; })), 5209: __a); 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfms_lane_f64 (float64x1_t __a, float64x1_t __b, 5209: float64x1_t __c, const int __lane) 5209: { 5209: return (float64x1_t) {__builtin_fma (-__b[0], __c[0], __a[0])}; 5209: } 5209: 5209: __extension__ extern __inline float64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmsd_lane_f64 (float64_t __a, float64_t __b, 5209: float64x1_t __c, const int __lane) 5209: { 5209: return __builtin_fma (-__b, __c[0], __a); 5209: } 5209: 5209: __extension__ extern __inline float32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmss_lane_f32 (float32_t __a, float32_t __b, 5209: float32x2_t __c, const int __lane) 5209: { 5209: return __builtin_fmaf (-__b, __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; }), __a); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfms_laneq_f32 (float32x2_t __a, float32x2_t __b, 5209: float32x4_t __c, const int __lane) 5209: { 5209: return __builtin_aarch64_fmav2sf (-__b, 5209: vdup_n_f32 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; })), 5209: __a); 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfms_laneq_f64 (float64x1_t __a, float64x1_t __b, 5209: float64x2_t __c, const int __lane) 5209: { 5209: float64_t __c0 = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; }); 5209: return (float64x1_t) {__builtin_fma (-__b[0], __c0, __a[0])}; 5209: } 5209: 5209: __extension__ extern __inline float64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmsd_laneq_f64 (float64_t __a, float64_t __b, 5209: float64x2_t __c, const int __lane) 5209: { 5209: return __builtin_fma (-__b, __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; }), __a); 5209: } 5209: 5209: __extension__ extern __inline float32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmss_laneq_f32 (float32_t __a, float32_t __b, 5209: float32x4_t __c, const int __lane) 5209: { 5209: return __builtin_fmaf (-__b, __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; }), __a); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmsq_lane_f32 (float32x4_t __a, float32x4_t __b, 5209: float32x2_t __c, const int __lane) 5209: { 5209: return __builtin_aarch64_fmav4sf (-__b, 5209: vdupq_n_f32 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; })), 5209: __a); 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmsq_lane_f64 (float64x2_t __a, float64x2_t __b, 5209: float64x1_t __c, const int __lane) 5209: { 5209: return __builtin_aarch64_fmav2df (-__b, vdupq_n_f64 (__c[0]), __a); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmsq_laneq_f32 (float32x4_t __a, float32x4_t __b, 5209: float32x4_t __c, const int __lane) 5209: { 5209: return __builtin_aarch64_fmav4sf (-__b, 5209: vdupq_n_f32 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; })), 5209: __a); 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmsq_laneq_f64 (float64x2_t __a, float64x2_t __b, 5209: float64x2_t __c, const int __lane) 5209: { 5209: return __builtin_aarch64_fmav2df (-__b, 5209: vdupq_n_f64 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; })), 5209: __a); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_f16 (const float16_t *__a) 5209: { 5209: return __builtin_aarch64_ld1v4hf (__a); 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_f32 (const float32_t *__a) 5209: { 5209: return __builtin_aarch64_ld1v2sf ((const __builtin_aarch64_simd_sf *) __a); 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_f64 (const float64_t *__a) 5209: { 5209: return (float64x1_t) {*__a}; 5209: } 5209: 5209: __extension__ extern __inline poly8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_p8 (const poly8_t *__a) 5209: { 5209: return (poly8x8_t) 5209: __builtin_aarch64_ld1v8qi ((const __builtin_aarch64_simd_qi *) __a); 5209: } 5209: 5209: __extension__ extern __inline poly16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_p16 (const poly16_t *__a) 5209: { 5209: return (poly16x4_t) 5209: __builtin_aarch64_ld1v4hi ((const __builtin_aarch64_simd_hi *) __a); 5209: } 5209: 5209: __extension__ extern __inline poly64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_p64 (const poly64_t *__a) 5209: { 5209: return (poly64x1_t) {*__a}; 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_s8 (const int8_t *__a) 5209: { 5209: return __builtin_aarch64_ld1v8qi ((const __builtin_aarch64_simd_qi *) __a); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_s16 (const int16_t *__a) 5209: { 5209: return __builtin_aarch64_ld1v4hi ((const __builtin_aarch64_simd_hi *) __a); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_s32 (const int32_t *__a) 5209: { 5209: return __builtin_aarch64_ld1v2si ((const __builtin_aarch64_simd_si *) __a); 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_s64 (const int64_t *__a) 5209: { 5209: return (int64x1_t) {*__a}; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_u8 (const uint8_t *__a) 5209: { 5209: return (uint8x8_t) 5209: __builtin_aarch64_ld1v8qi ((const __builtin_aarch64_simd_qi *) __a); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_u16 (const uint16_t *__a) 5209: { 5209: return (uint16x4_t) 5209: __builtin_aarch64_ld1v4hi ((const __builtin_aarch64_simd_hi *) __a); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_u32 (const uint32_t *__a) 5209: { 5209: return (uint32x2_t) 5209: __builtin_aarch64_ld1v2si ((const __builtin_aarch64_simd_si *) __a); 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_u64 (const uint64_t *__a) 5209: { 5209: return (uint64x1_t) {*__a}; 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline uint8x8x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_u8_x3 (const uint8_t *__a) 5209: { 5209: uint8x8x3_t __i; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = (__builtin_aarch64_simd_ci)__builtin_aarch64_ld1x3v8qi ((const __builtin_aarch64_simd_qi *) __a); 5209: __i.val[0] = (uint8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 0); 5209: __i.val[1] = (uint8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 1); 5209: __i.val[2] = (uint8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 2); 5209: return __i; 5209: } 5209: 5209: __extension__ extern __inline int8x8x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_s8_x3 (const uint8_t *__a) 5209: { 5209: int8x8x3_t __i; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld1x3v8qi ((const __builtin_aarch64_simd_qi *) __a); 5209: __i.val[0] = (int8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 0); 5209: __i.val[1] = (int8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 1); 5209: __i.val[2] = (int8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 2); 5209: return __i; 5209: } 5209: 5209: __extension__ extern __inline uint16x4x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_u16_x3 (const uint16_t *__a) 5209: { 5209: uint16x4x3_t __i; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld1x3v4hi ((const __builtin_aarch64_simd_hi *) __a); 5209: __i.val[0] = (uint16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 0); 5209: __i.val[1] = (uint16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 1); 5209: __i.val[2] = (uint16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 2); 5209: return __i; 5209: } 5209: 5209: __extension__ extern __inline int16x4x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_s16_x3 (const int16_t *__a) 5209: { 5209: int16x4x3_t __i; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld1x3v4hi ((const __builtin_aarch64_simd_hi *) __a); 5209: __i.val[0] = (int16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 0); 5209: __i.val[1] = (int16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 1); 5209: __i.val[2] = (int16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 2); 5209: return __i; 5209: } 5209: 5209: __extension__ extern __inline uint32x2x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_u32_x3 (const uint32_t *__a) 5209: { 5209: uint32x2x3_t __i; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld1x3v2si ((const __builtin_aarch64_simd_si *) __a); 5209: __i.val[0] = (uint32x2_t) __builtin_aarch64_get_dregciv2si (__o, 0); 5209: __i.val[1] = (uint32x2_t) __builtin_aarch64_get_dregciv2si (__o, 1); 5209: __i.val[2] = (uint32x2_t) __builtin_aarch64_get_dregciv2si (__o, 2); 5209: return __i; 5209: } 5209: 5209: __extension__ extern __inline int32x2x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_s32_x3 (const uint32_t *__a) 5209: { 5209: int32x2x3_t __i; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld1x3v2si ((const __builtin_aarch64_simd_si *) __a); 5209: __i.val[0] = (int32x2_t) __builtin_aarch64_get_dregciv2si (__o, 0); 5209: __i.val[1] = (int32x2_t) __builtin_aarch64_get_dregciv2si (__o, 1); 5209: __i.val[2] = (int32x2_t) __builtin_aarch64_get_dregciv2si (__o, 2); 5209: return __i; 5209: } 5209: 5209: __extension__ extern __inline uint64x1x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_u64_x3 (const uint64_t *__a) 5209: { 5209: uint64x1x3_t __i; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld1x3di ((const __builtin_aarch64_simd_di *) __a); 5209: __i.val[0] = (uint64x1_t) __builtin_aarch64_get_dregcidi (__o, 0); 5209: __i.val[1] = (uint64x1_t) __builtin_aarch64_get_dregcidi (__o, 1); 5209: __i.val[2] = (uint64x1_t) __builtin_aarch64_get_dregcidi (__o, 2); 5209: return __i; 5209: } 5209: 5209: __extension__ extern __inline int64x1x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_s64_x3 (const int64_t *__a) 5209: { 5209: int64x1x3_t __i; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld1x3di ((const __builtin_aarch64_simd_di *) __a); 5209: __i.val[0] = (int64x1_t) __builtin_aarch64_get_dregcidi (__o, 0); 5209: __i.val[1] = (int64x1_t) __builtin_aarch64_get_dregcidi (__o, 1); 5209: __i.val[2] = (int64x1_t) __builtin_aarch64_get_dregcidi (__o, 2); 5209: 5209: return __i; 5209: } 5209: 5209: __extension__ extern __inline float16x4x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_f16_x3 (const float16_t *__a) 5209: { 5209: float16x4x3_t __i; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld1x3v4hf ((const __builtin_aarch64_simd_hf *) __a); 5209: __i.val[0] = (float16x4_t) __builtin_aarch64_get_dregciv4hf (__o, 0); 5209: __i.val[1] = (float16x4_t) __builtin_aarch64_get_dregciv4hf (__o, 1); 5209: __i.val[2] = (float16x4_t) __builtin_aarch64_get_dregciv4hf (__o, 2); 5209: return __i; 5209: } 5209: 5209: __extension__ extern __inline float32x2x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_f32_x3 (const float32_t *__a) 5209: { 5209: float32x2x3_t __i; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld1x3v2sf ((const __builtin_aarch64_simd_sf *) __a); 5209: __i.val[0] = (float32x2_t) __builtin_aarch64_get_dregciv2sf (__o, 0); 5209: __i.val[1] = (float32x2_t) __builtin_aarch64_get_dregciv2sf (__o, 1); 5209: __i.val[2] = (float32x2_t) __builtin_aarch64_get_dregciv2sf (__o, 2); 5209: return __i; 5209: } 5209: 5209: __extension__ extern __inline float64x1x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_f64_x3 (const float64_t *__a) 5209: { 5209: float64x1x3_t __i; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld1x3df ((const __builtin_aarch64_simd_df *) __a); 5209: __i.val[0] = (float64x1_t) __builtin_aarch64_get_dregcidi (__o, 0); 5209: __i.val[1] = (float64x1_t) __builtin_aarch64_get_dregcidi (__o, 1); 5209: __i.val[2] = (float64x1_t) __builtin_aarch64_get_dregcidi (__o, 2); 5209: return __i; 5209: } 5209: 5209: __extension__ extern __inline poly8x8x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_p8_x3 (const poly8_t *__a) 5209: { 5209: poly8x8x3_t __i; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld1x3v8qi ((const __builtin_aarch64_simd_qi *) __a); 5209: __i.val[0] = (poly8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 0); 5209: __i.val[1] = (poly8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 1); 5209: __i.val[2] = (poly8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 2); 5209: return __i; 5209: } 5209: 5209: __extension__ extern __inline poly16x4x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_p16_x3 (const poly16_t *__a) 5209: { 5209: poly16x4x3_t __i; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld1x3v4hi ((const __builtin_aarch64_simd_hi *) __a); 5209: __i.val[0] = (poly16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 0); 5209: __i.val[1] = (poly16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 1); 5209: __i.val[2] = (poly16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 2); 5209: return __i; 5209: } 5209: 5209: __extension__ extern __inline poly64x1x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_p64_x3 (const poly64_t *__a) 5209: { 5209: poly64x1x3_t __i; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld1x3di ((const __builtin_aarch64_simd_di *) __a); 5209: __i.val[0] = (poly64x1_t) __builtin_aarch64_get_dregcidi (__o, 0); 5209: __i.val[1] = (poly64x1_t) __builtin_aarch64_get_dregcidi (__o, 1); 5209: __i.val[2] = (poly64x1_t) __builtin_aarch64_get_dregcidi (__o, 2); 5209: 5209: return __i; 5209: } 5209: 5209: __extension__ extern __inline uint8x16x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_u8_x3 (const uint8_t *__a) 5209: { 5209: uint8x16x3_t __i; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld1x3v16qi ((const __builtin_aarch64_simd_qi *) __a); 5209: __i.val[0] = (uint8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 0); 5209: __i.val[1] = (uint8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 1); 5209: __i.val[2] = (uint8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 2); 5209: return __i; 5209: } 5209: 5209: __extension__ extern __inline int8x16x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_s8_x3 (const int8_t *__a) 5209: { 5209: int8x16x3_t __i; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld1x3v16qi ((const __builtin_aarch64_simd_qi *) __a); 5209: __i.val[0] = (int8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 0); 5209: __i.val[1] = (int8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 1); 5209: __i.val[2] = (int8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 2); 5209: return __i; 5209: } 5209: 5209: __extension__ extern __inline uint16x8x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_u16_x3 (const uint16_t *__a) 5209: { 5209: uint16x8x3_t __i; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld1x3v8hi ((const __builtin_aarch64_simd_hi *) __a); 5209: __i.val[0] = (uint16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 0); 5209: __i.val[1] = (uint16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 1); 5209: __i.val[2] = (uint16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 2); 5209: return __i; 5209: } 5209: 5209: __extension__ extern __inline int16x8x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_s16_x3 (const int16_t *__a) 5209: { 5209: int16x8x3_t __i; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld1x3v8hi ((const __builtin_aarch64_simd_hi *) __a); 5209: __i.val[0] = (int16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 0); 5209: __i.val[1] = (int16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 1); 5209: __i.val[2] = (int16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 2); 5209: return __i; 5209: } 5209: 5209: __extension__ extern __inline uint32x4x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_u32_x3 (const uint32_t *__a) 5209: { 5209: uint32x4x3_t __i; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld1x3v4si ((const __builtin_aarch64_simd_si *) __a); 5209: __i.val[0] = (uint32x4_t) __builtin_aarch64_get_qregciv4si (__o, 0); 5209: __i.val[1] = (uint32x4_t) __builtin_aarch64_get_qregciv4si (__o, 1); 5209: __i.val[2] = (uint32x4_t) __builtin_aarch64_get_qregciv4si (__o, 2); 5209: return __i; 5209: } 5209: 5209: __extension__ extern __inline int32x4x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_s32_x3 (const int32_t *__a) 5209: { 5209: int32x4x3_t __i; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld1x3v4si ((const __builtin_aarch64_simd_si *) __a); 5209: __i.val[0] = (int32x4_t) __builtin_aarch64_get_qregciv4si (__o, 0); 5209: __i.val[1] = (int32x4_t) __builtin_aarch64_get_qregciv4si (__o, 1); 5209: __i.val[2] = (int32x4_t) __builtin_aarch64_get_qregciv4si (__o, 2); 5209: return __i; 5209: } 5209: 5209: __extension__ extern __inline uint64x2x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_u64_x3 (const uint64_t *__a) 5209: { 5209: uint64x2x3_t __i; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld1x3v2di ((const __builtin_aarch64_simd_di *) __a); 5209: __i.val[0] = (uint64x2_t) __builtin_aarch64_get_qregciv2di (__o, 0); 5209: __i.val[1] = (uint64x2_t) __builtin_aarch64_get_qregciv2di (__o, 1); 5209: __i.val[2] = (uint64x2_t) __builtin_aarch64_get_qregciv2di (__o, 2); 5209: return __i; 5209: } 5209: 5209: __extension__ extern __inline int64x2x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_s64_x3 (const int64_t *__a) 5209: { 5209: int64x2x3_t __i; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld1x3v2di ((const __builtin_aarch64_simd_di *) __a); 5209: __i.val[0] = (int64x2_t) __builtin_aarch64_get_qregciv2di (__o, 0); 5209: __i.val[1] = (int64x2_t) __builtin_aarch64_get_qregciv2di (__o, 1); 5209: __i.val[2] = (int64x2_t) __builtin_aarch64_get_qregciv2di (__o, 2); 5209: return __i; 5209: } 5209: 5209: __extension__ extern __inline float16x8x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_f16_x3 (const float16_t *__a) 5209: { 5209: float16x8x3_t __i; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld1x3v8hf ((const __builtin_aarch64_simd_hf *) __a); 5209: __i.val[0] = (float16x8_t) __builtin_aarch64_get_qregciv8hf (__o, 0); 5209: __i.val[1] = (float16x8_t) __builtin_aarch64_get_qregciv8hf (__o, 1); 5209: __i.val[2] = (float16x8_t) __builtin_aarch64_get_qregciv8hf (__o, 2); 5209: return __i; 5209: } 5209: 5209: __extension__ extern __inline float32x4x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_f32_x3 (const float32_t *__a) 5209: { 5209: float32x4x3_t __i; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld1x3v4sf ((const __builtin_aarch64_simd_sf *) __a); 5209: __i.val[0] = (float32x4_t) __builtin_aarch64_get_qregciv4sf (__o, 0); 5209: __i.val[1] = (float32x4_t) __builtin_aarch64_get_qregciv4sf (__o, 1); 5209: __i.val[2] = (float32x4_t) __builtin_aarch64_get_qregciv4sf (__o, 2); 5209: return __i; 5209: } 5209: 5209: __extension__ extern __inline float64x2x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_f64_x3 (const float64_t *__a) 5209: { 5209: float64x2x3_t __i; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld1x3v2df ((const __builtin_aarch64_simd_df *) __a); 5209: __i.val[0] = (float64x2_t) __builtin_aarch64_get_qregciv2df (__o, 0); 5209: __i.val[1] = (float64x2_t) __builtin_aarch64_get_qregciv2df (__o, 1); 5209: __i.val[2] = (float64x2_t) __builtin_aarch64_get_qregciv2df (__o, 2); 5209: return __i; 5209: } 5209: 5209: __extension__ extern __inline poly8x16x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_p8_x3 (const poly8_t *__a) 5209: { 5209: poly8x16x3_t __i; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld1x3v16qi ((const __builtin_aarch64_simd_qi *) __a); 5209: __i.val[0] = (poly8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 0); 5209: __i.val[1] = (poly8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 1); 5209: __i.val[2] = (poly8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 2); 5209: return __i; 5209: } 5209: 5209: __extension__ extern __inline poly16x8x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_p16_x3 (const poly16_t *__a) 5209: { 5209: poly16x8x3_t __i; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld1x3v8hi ((const __builtin_aarch64_simd_hi *) __a); 5209: __i.val[0] = (poly16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 0); 5209: __i.val[1] = (poly16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 1); 5209: __i.val[2] = (poly16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 2); 5209: return __i; 5209: } 5209: 5209: __extension__ extern __inline poly64x2x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_p64_x3 (const poly64_t *__a) 5209: { 5209: poly64x2x3_t __i; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld1x3v2di ((const __builtin_aarch64_simd_di *) __a); 5209: __i.val[0] = (poly64x2_t) __builtin_aarch64_get_qregciv2di (__o, 0); 5209: __i.val[1] = (poly64x2_t) __builtin_aarch64_get_qregciv2di (__o, 1); 5209: __i.val[2] = (poly64x2_t) __builtin_aarch64_get_qregciv2di (__o, 2); 5209: return __i; 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_f16 (const float16_t *__a) 5209: { 5209: return __builtin_aarch64_ld1v8hf (__a); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_f32 (const float32_t *__a) 5209: { 5209: return __builtin_aarch64_ld1v4sf ((const __builtin_aarch64_simd_sf *) __a); 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_f64 (const float64_t *__a) 5209: { 5209: return __builtin_aarch64_ld1v2df ((const __builtin_aarch64_simd_df *) __a); 5209: } 5209: 5209: __extension__ extern __inline poly8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_p8 (const poly8_t *__a) 5209: { 5209: return (poly8x16_t) 5209: __builtin_aarch64_ld1v16qi ((const __builtin_aarch64_simd_qi *) __a); 5209: } 5209: 5209: __extension__ extern __inline poly16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_p16 (const poly16_t *__a) 5209: { 5209: return (poly16x8_t) 5209: __builtin_aarch64_ld1v8hi ((const __builtin_aarch64_simd_hi *) __a); 5209: } 5209: 5209: __extension__ extern __inline poly64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_p64 (const poly64_t *__a) 5209: { 5209: return (poly64x2_t) 5209: __builtin_aarch64_ld1v2di ((const __builtin_aarch64_simd_di *) __a); 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_s8 (const int8_t *__a) 5209: { 5209: return __builtin_aarch64_ld1v16qi ((const __builtin_aarch64_simd_qi *) __a); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_s16 (const int16_t *__a) 5209: { 5209: return __builtin_aarch64_ld1v8hi ((const __builtin_aarch64_simd_hi *) __a); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_s32 (const int32_t *__a) 5209: { 5209: return __builtin_aarch64_ld1v4si ((const __builtin_aarch64_simd_si *) __a); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_s64 (const int64_t *__a) 5209: { 5209: return __builtin_aarch64_ld1v2di ((const __builtin_aarch64_simd_di *) __a); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_u8 (const uint8_t *__a) 5209: { 5209: return (uint8x16_t) 5209: __builtin_aarch64_ld1v16qi ((const __builtin_aarch64_simd_qi *) __a); 5209: } 5209: 5209: __extension__ extern __inline uint8x8x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_u8_x2 (const uint8_t *__a) 5209: { 5209: uint8x8x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld1x2v8qi ((const __builtin_aarch64_simd_qi *) __a); 5209: ret.val[0] = (uint8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 0); 5209: ret.val[1] = (uint8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline int8x8x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_s8_x2 (const int8_t *__a) 5209: { 5209: int8x8x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld1x2v8qi ((const __builtin_aarch64_simd_qi *) __a); 5209: ret.val[0] = (int8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 0); 5209: ret.val[1] = (int8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline uint16x4x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_u16_x2 (const uint16_t *__a) 5209: { 5209: uint16x4x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld1x2v4hi ((const __builtin_aarch64_simd_hi *) __a); 5209: ret.val[0] = (uint16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 0); 5209: ret.val[1] = (uint16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline int16x4x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_s16_x2 (const int16_t *__a) 5209: { 5209: int16x4x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld1x2v4hi ((const __builtin_aarch64_simd_hi *) __a); 5209: ret.val[0] = (int16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 0); 5209: ret.val[1] = (int16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline uint32x2x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_u32_x2 (const uint32_t *__a) 5209: { 5209: uint32x2x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld1x2v2si ((const __builtin_aarch64_simd_si *) __a); 5209: ret.val[0] = (uint32x2_t) __builtin_aarch64_get_dregoiv2si (__o, 0); 5209: ret.val[1] = (uint32x2_t) __builtin_aarch64_get_dregoiv2si (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline int32x2x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_s32_x2 (const int32_t *__a) 5209: { 5209: int32x2x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld1x2v2si ((const __builtin_aarch64_simd_si *) __a); 5209: ret.val[0] = (int32x2_t) __builtin_aarch64_get_dregoiv2si (__o, 0); 5209: ret.val[1] = (int32x2_t) __builtin_aarch64_get_dregoiv2si (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline uint64x1x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_u64_x2 (const uint64_t *__a) 5209: { 5209: uint64x1x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld1x2di ((const __builtin_aarch64_simd_di *) __a); 5209: ret.val[0] = (uint64x1_t) __builtin_aarch64_get_dregoidi (__o, 0); 5209: ret.val[1] = (uint64x1_t) __builtin_aarch64_get_dregoidi (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline int64x1x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_s64_x2 (const int64_t *__a) 5209: { 5209: int64x1x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld1x2di ((const __builtin_aarch64_simd_di *) __a); 5209: ret.val[0] = (int64x1_t) __builtin_aarch64_get_dregoidi (__o, 0); 5209: ret.val[1] = (int64x1_t) __builtin_aarch64_get_dregoidi (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline float16x4x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_f16_x2 (const float16_t *__a) 5209: { 5209: float16x4x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld1x2v4hf ((const __builtin_aarch64_simd_hf *) __a); 5209: ret.val[0] = (float16x4_t) __builtin_aarch64_get_dregoiv4hf (__o, 0); 5209: ret.val[1] = (float16x4_t) __builtin_aarch64_get_dregoiv4hf (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline float32x2x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_f32_x2 (const float32_t *__a) 5209: { 5209: float32x2x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld1x2v2sf ((const __builtin_aarch64_simd_sf *) __a); 5209: ret.val[0] = (float32x2_t) __builtin_aarch64_get_dregoiv2sf (__o, 0); 5209: ret.val[1] = (float32x2_t) __builtin_aarch64_get_dregoiv2sf (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline float64x1x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_f64_x2 (const float64_t *__a) 5209: { 5209: float64x1x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld1x2df ((const __builtin_aarch64_simd_df *) __a); 5209: ret.val[0] = (float64x1_t) {__builtin_aarch64_get_dregoidf (__o, 0)}; 5209: ret.val[1] = (float64x1_t) {__builtin_aarch64_get_dregoidf (__o, 1)}; 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline poly8x8x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_p8_x2 (const poly8_t *__a) 5209: { 5209: poly8x8x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld1x2v8qi ((const __builtin_aarch64_simd_qi *) __a); 5209: ret.val[0] = (poly8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 0); 5209: ret.val[1] = (poly8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline poly16x4x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_p16_x2 (const poly16_t *__a) 5209: { 5209: poly16x4x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld1x2v4hi ((const __builtin_aarch64_simd_hi *) __a); 5209: ret.val[0] = (poly16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 0); 5209: ret.val[1] = (poly16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline poly64x1x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_p64_x2 (const poly64_t *__a) 5209: { 5209: poly64x1x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld1x2di ((const __builtin_aarch64_simd_di *) __a); 5209: ret.val[0] = (poly64x1_t) __builtin_aarch64_get_dregoidi (__o, 0); 5209: ret.val[1] = (poly64x1_t) __builtin_aarch64_get_dregoidi (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline uint8x16x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_u8_x2 (const uint8_t *__a) 5209: { 5209: uint8x16x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld1x2v16qi ((const __builtin_aarch64_simd_qi *) __a); 5209: ret.val[0] = (uint8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 0); 5209: ret.val[1] = (uint8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline int8x16x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_s8_x2 (const int8_t *__a) 5209: { 5209: int8x16x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld1x2v16qi ((const __builtin_aarch64_simd_qi *) __a); 5209: ret.val[0] = (int8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 0); 5209: ret.val[1] = (int8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline uint16x8x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_u16_x2 (const uint16_t *__a) 5209: { 5209: uint16x8x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld1x2v8hi ((const __builtin_aarch64_simd_hi *) __a); 5209: ret.val[0] = (uint16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 0); 5209: ret.val[1] = (uint16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline int16x8x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_s16_x2 (const int16_t *__a) 5209: { 5209: int16x8x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld1x2v8hi ((const __builtin_aarch64_simd_hi *) __a); 5209: ret.val[0] = (int16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 0); 5209: ret.val[1] = (int16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline uint32x4x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_u32_x2 (const uint32_t *__a) 5209: { 5209: uint32x4x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld1x2v4si ((const __builtin_aarch64_simd_si *) __a); 5209: ret.val[0] = (uint32x4_t) __builtin_aarch64_get_qregoiv4si (__o, 0); 5209: ret.val[1] = (uint32x4_t) __builtin_aarch64_get_qregoiv4si (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline int32x4x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_s32_x2 (const int32_t *__a) 5209: { 5209: int32x4x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld1x2v4si ((const __builtin_aarch64_simd_si *) __a); 5209: ret.val[0] = (int32x4_t) __builtin_aarch64_get_qregoiv4si (__o, 0); 5209: ret.val[1] = (int32x4_t) __builtin_aarch64_get_qregoiv4si (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline uint64x2x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_u64_x2 (const uint64_t *__a) 5209: { 5209: uint64x2x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld1x2v2di ((const __builtin_aarch64_simd_di *) __a); 5209: ret.val[0] = (uint64x2_t) __builtin_aarch64_get_qregoiv2di (__o, 0); 5209: ret.val[1] = (uint64x2_t) __builtin_aarch64_get_qregoiv2di (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline int64x2x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_s64_x2 (const int64_t *__a) 5209: { 5209: int64x2x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld1x2v2di ((const __builtin_aarch64_simd_di *) __a); 5209: ret.val[0] = (int64x2_t) __builtin_aarch64_get_qregoiv2di (__o, 0); 5209: ret.val[1] = (int64x2_t) __builtin_aarch64_get_qregoiv2di (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline float16x8x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_f16_x2 (const float16_t *__a) 5209: { 5209: float16x8x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld1x2v8hf ((const __builtin_aarch64_simd_hf *) __a); 5209: ret.val[0] = (float16x8_t) __builtin_aarch64_get_qregoiv8hf (__o, 0); 5209: ret.val[1] = (float16x8_t) __builtin_aarch64_get_qregoiv8hf (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline float32x4x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_f32_x2 (const float32_t *__a) 5209: { 5209: float32x4x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld1x2v4sf ((const __builtin_aarch64_simd_sf *) __a); 5209: ret.val[0] = (float32x4_t) __builtin_aarch64_get_qregoiv4sf (__o, 0); 5209: ret.val[1] = (float32x4_t) __builtin_aarch64_get_qregoiv4sf (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline float64x2x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_f64_x2 (const float64_t *__a) 5209: { 5209: float64x2x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld1x2v2df ((const __builtin_aarch64_simd_df *) __a); 5209: ret.val[0] = (float64x2_t) __builtin_aarch64_get_qregoiv2df (__o, 0); 5209: ret.val[1] = (float64x2_t) __builtin_aarch64_get_qregoiv2df (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline poly8x16x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_p8_x2 (const poly8_t *__a) 5209: { 5209: poly8x16x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld1x2v16qi ((const __builtin_aarch64_simd_qi *) __a); 5209: ret.val[0] = (poly8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 0); 5209: ret.val[1] = (poly8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline poly16x8x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_p16_x2 (const poly16_t *__a) 5209: { 5209: poly16x8x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld1x2v8hi ((const __builtin_aarch64_simd_hi *) __a); 5209: ret.val[0] = (poly16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 0); 5209: ret.val[1] = (poly16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline poly64x2x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_p64_x2 (const poly64_t *__a) 5209: { 5209: poly64x2x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld1x2v2di ((const __builtin_aarch64_simd_di *) __a); 5209: ret.val[0] = (poly64x2_t) __builtin_aarch64_get_qregoiv2di (__o, 0); 5209: ret.val[1] = (poly64x2_t) __builtin_aarch64_get_qregoiv2di (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_u16 (const uint16_t *__a) 5209: { 5209: return (uint16x8_t) 5209: __builtin_aarch64_ld1v8hi ((const __builtin_aarch64_simd_hi *) __a); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_u32 (const uint32_t *__a) 5209: { 5209: return (uint32x4_t) 5209: __builtin_aarch64_ld1v4si ((const __builtin_aarch64_simd_si *) __a); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_u64 (const uint64_t *__a) 5209: { 5209: return (uint64x2_t) 5209: __builtin_aarch64_ld1v2di ((const __builtin_aarch64_simd_di *) __a); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline int8x8x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_s8_x4 (const int8_t *__a) 5209: { 5209: union { int8x8x4_t __i; __builtin_aarch64_simd_xi __o; } __au; 5209: __au.__o 5209: = __builtin_aarch64_ld1x4v8qi ((const __builtin_aarch64_simd_qi *) __a); 5209: return __au.__i; 5209: } 5209: 5209: __extension__ extern __inline int8x16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_s8_x4 (const int8_t *__a) 5209: { 5209: union { int8x16x4_t __i; __builtin_aarch64_simd_xi __o; } __au; 5209: __au.__o 5209: = __builtin_aarch64_ld1x4v16qi ((const __builtin_aarch64_simd_qi *) __a); 5209: return __au.__i; 5209: } 5209: 5209: __extension__ extern __inline int16x4x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_s16_x4 (const int16_t *__a) 5209: { 5209: union { int16x4x4_t __i; __builtin_aarch64_simd_xi __o; } __au; 5209: __au.__o 5209: = __builtin_aarch64_ld1x4v4hi ((const __builtin_aarch64_simd_hi *) __a); 5209: return __au.__i; 5209: } 5209: 5209: __extension__ extern __inline int16x8x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_s16_x4 (const int16_t *__a) 5209: { 5209: union { int16x8x4_t __i; __builtin_aarch64_simd_xi __o; } __au; 5209: __au.__o 5209: = __builtin_aarch64_ld1x4v8hi ((const __builtin_aarch64_simd_hi *) __a); 5209: return __au.__i; 5209: } 5209: 5209: __extension__ extern __inline int32x2x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_s32_x4 (const int32_t *__a) 5209: { 5209: union { int32x2x4_t __i; __builtin_aarch64_simd_xi __o; } __au; 5209: __au.__o 5209: = __builtin_aarch64_ld1x4v2si ((const __builtin_aarch64_simd_si *) __a); 5209: return __au.__i; 5209: } 5209: 5209: __extension__ extern __inline int32x4x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_s32_x4 (const int32_t *__a) 5209: { 5209: union { int32x4x4_t __i; __builtin_aarch64_simd_xi __o; } __au; 5209: __au.__o 5209: = __builtin_aarch64_ld1x4v4si ((const __builtin_aarch64_simd_si *) __a); 5209: return __au.__i; 5209: } 5209: 5209: __extension__ extern __inline uint8x8x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_u8_x4 (const uint8_t *__a) 5209: { 5209: union { uint8x8x4_t __i; __builtin_aarch64_simd_xi __o; } __au; 5209: __au.__o 5209: = __builtin_aarch64_ld1x4v8qi ((const __builtin_aarch64_simd_qi *) __a); 5209: return __au.__i; 5209: } 5209: 5209: __extension__ extern __inline uint8x16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_u8_x4 (const uint8_t *__a) 5209: { 5209: union { uint8x16x4_t __i; __builtin_aarch64_simd_xi __o; } __au; 5209: __au.__o 5209: = __builtin_aarch64_ld1x4v16qi ((const __builtin_aarch64_simd_qi *) __a); 5209: return __au.__i; 5209: } 5209: 5209: __extension__ extern __inline uint16x4x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_u16_x4 (const uint16_t *__a) 5209: { 5209: union { uint16x4x4_t __i; __builtin_aarch64_simd_xi __o; } __au; 5209: __au.__o 5209: = __builtin_aarch64_ld1x4v4hi ((const __builtin_aarch64_simd_hi *) __a); 5209: return __au.__i; 5209: } 5209: 5209: __extension__ extern __inline uint16x8x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_u16_x4 (const uint16_t *__a) 5209: { 5209: union { uint16x8x4_t __i; __builtin_aarch64_simd_xi __o; } __au; 5209: __au.__o 5209: = __builtin_aarch64_ld1x4v8hi ((const __builtin_aarch64_simd_hi *) __a); 5209: return __au.__i; 5209: } 5209: 5209: __extension__ extern __inline uint32x2x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_u32_x4 (const uint32_t *__a) 5209: { 5209: union { uint32x2x4_t __i; __builtin_aarch64_simd_xi __o; } __au; 5209: __au.__o 5209: = __builtin_aarch64_ld1x4v2si ((const __builtin_aarch64_simd_si *) __a); 5209: return __au.__i; 5209: } 5209: 5209: __extension__ extern __inline uint32x4x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_u32_x4 (const uint32_t *__a) 5209: { 5209: union { uint32x4x4_t __i; __builtin_aarch64_simd_xi __o; } __au; 5209: __au.__o 5209: = __builtin_aarch64_ld1x4v4si ((const __builtin_aarch64_simd_si *) __a); 5209: return __au.__i; 5209: } 5209: 5209: __extension__ extern __inline float16x4x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_f16_x4 (const float16_t *__a) 5209: { 5209: union { float16x4x4_t __i; __builtin_aarch64_simd_xi __o; } __au; 5209: __au.__o 5209: = __builtin_aarch64_ld1x4v4hf ((const __builtin_aarch64_simd_hf *) __a); 5209: return __au.__i; 5209: } 5209: 5209: __extension__ extern __inline float16x8x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_f16_x4 (const float16_t *__a) 5209: { 5209: union { float16x8x4_t __i; __builtin_aarch64_simd_xi __o; } __au; 5209: __au.__o 5209: = __builtin_aarch64_ld1x4v8hf ((const __builtin_aarch64_simd_hf *) __a); 5209: return __au.__i; 5209: } 5209: 5209: __extension__ extern __inline float32x2x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_f32_x4 (const float32_t *__a) 5209: { 5209: union { float32x2x4_t __i; __builtin_aarch64_simd_xi __o; } __au; 5209: __au.__o 5209: = __builtin_aarch64_ld1x4v2sf ((const __builtin_aarch64_simd_sf *) __a); 5209: return __au.__i; 5209: } 5209: 5209: __extension__ extern __inline float32x4x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_f32_x4 (const float32_t *__a) 5209: { 5209: union { float32x4x4_t __i; __builtin_aarch64_simd_xi __o; } __au; 5209: __au.__o 5209: = __builtin_aarch64_ld1x4v4sf ((const __builtin_aarch64_simd_sf *) __a); 5209: return __au.__i; 5209: } 5209: 5209: __extension__ extern __inline poly8x8x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_p8_x4 (const poly8_t *__a) 5209: { 5209: union { poly8x8x4_t __i; __builtin_aarch64_simd_xi __o; } __au; 5209: __au.__o 5209: = __builtin_aarch64_ld1x4v8qi ((const __builtin_aarch64_simd_qi *) __a); 5209: return __au.__i; 5209: } 5209: 5209: __extension__ extern __inline poly8x16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_p8_x4 (const poly8_t *__a) 5209: { 5209: union { poly8x16x4_t __i; __builtin_aarch64_simd_xi __o; } __au; 5209: __au.__o 5209: = __builtin_aarch64_ld1x4v16qi ((const __builtin_aarch64_simd_qi *) __a); 5209: return __au.__i; 5209: } 5209: 5209: __extension__ extern __inline poly16x4x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_p16_x4 (const poly16_t *__a) 5209: { 5209: union { poly16x4x4_t __i; __builtin_aarch64_simd_xi __o; } __au; 5209: __au.__o 5209: = __builtin_aarch64_ld1x4v4hi ((const __builtin_aarch64_simd_hi *) __a); 5209: return __au.__i; 5209: } 5209: 5209: __extension__ extern __inline poly16x8x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_p16_x4 (const poly16_t *__a) 5209: { 5209: union { poly16x8x4_t __i; __builtin_aarch64_simd_xi __o; } __au; 5209: __au.__o 5209: = __builtin_aarch64_ld1x4v8hi ((const __builtin_aarch64_simd_hi *) __a); 5209: return __au.__i; 5209: } 5209: 5209: __extension__ extern __inline int64x1x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_s64_x4 (const int64_t *__a) 5209: { 5209: union { int64x1x4_t __i; __builtin_aarch64_simd_xi __o; } __au; 5209: __au.__o 5209: = __builtin_aarch64_ld1x4di ((const __builtin_aarch64_simd_di *) __a); 5209: return __au.__i; 5209: } 5209: 5209: __extension__ extern __inline uint64x1x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_u64_x4 (const uint64_t *__a) 5209: { 5209: union { uint64x1x4_t __i; __builtin_aarch64_simd_xi __o; } __au; 5209: __au.__o 5209: = __builtin_aarch64_ld1x4di ((const __builtin_aarch64_simd_di *) __a); 5209: return __au.__i; 5209: } 5209: 5209: __extension__ extern __inline poly64x1x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_p64_x4 (const poly64_t *__a) 5209: { 5209: union { poly64x1x4_t __i; __builtin_aarch64_simd_xi __o; } __au; 5209: __au.__o 5209: = __builtin_aarch64_ld1x4di ((const __builtin_aarch64_simd_di *) __a); 5209: return __au.__i; 5209: } 5209: 5209: __extension__ extern __inline int64x2x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_s64_x4 (const int64_t *__a) 5209: { 5209: union { int64x2x4_t __i; __builtin_aarch64_simd_xi __o; } __au; 5209: __au.__o 5209: = __builtin_aarch64_ld1x4v2di ((const __builtin_aarch64_simd_di *) __a); 5209: return __au.__i; 5209: } 5209: 5209: __extension__ extern __inline uint64x2x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_u64_x4 (const uint64_t *__a) 5209: { 5209: union { uint64x2x4_t __i; __builtin_aarch64_simd_xi __o; } __au; 5209: __au.__o 5209: = __builtin_aarch64_ld1x4v2di ((const __builtin_aarch64_simd_di *) __a); 5209: return __au.__i; 5209: } 5209: 5209: __extension__ extern __inline poly64x2x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_p64_x4 (const poly64_t *__a) 5209: { 5209: union { poly64x2x4_t __i; __builtin_aarch64_simd_xi __o; } __au; 5209: __au.__o 5209: = __builtin_aarch64_ld1x4v2di ((const __builtin_aarch64_simd_di *) __a); 5209: return __au.__i; 5209: } 5209: 5209: __extension__ extern __inline float64x1x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_f64_x4 (const float64_t *__a) 5209: { 5209: union { float64x1x4_t __i; __builtin_aarch64_simd_xi __o; } __au; 5209: __au.__o 5209: = __builtin_aarch64_ld1x4df ((const __builtin_aarch64_simd_df *) __a); 5209: return __au.__i; 5209: } 5209: 5209: __extension__ extern __inline float64x2x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_f64_x4 (const float64_t *__a) 5209: { 5209: union { float64x2x4_t __i; __builtin_aarch64_simd_xi __o; } __au; 5209: __au.__o 5209: = __builtin_aarch64_ld1x4v2df ((const __builtin_aarch64_simd_df *) __a); 5209: return __au.__i; 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_dup_f16 (const float16_t* __a) 5209: { 5209: return vdup_n_f16 (*__a); 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_dup_f32 (const float32_t* __a) 5209: { 5209: return vdup_n_f32 (*__a); 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_dup_f64 (const float64_t* __a) 5209: { 5209: return vdup_n_f64 (*__a); 5209: } 5209: 5209: __extension__ extern __inline poly8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_dup_p8 (const poly8_t* __a) 5209: { 5209: return vdup_n_p8 (*__a); 5209: } 5209: 5209: __extension__ extern __inline poly16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_dup_p16 (const poly16_t* __a) 5209: { 5209: return vdup_n_p16 (*__a); 5209: } 5209: 5209: __extension__ extern __inline poly64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_dup_p64 (const poly64_t* __a) 5209: { 5209: return vdup_n_p64 (*__a); 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_dup_s8 (const int8_t* __a) 5209: { 5209: return vdup_n_s8 (*__a); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_dup_s16 (const int16_t* __a) 5209: { 5209: return vdup_n_s16 (*__a); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_dup_s32 (const int32_t* __a) 5209: { 5209: return vdup_n_s32 (*__a); 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_dup_s64 (const int64_t* __a) 5209: { 5209: return vdup_n_s64 (*__a); 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_dup_u8 (const uint8_t* __a) 5209: { 5209: return vdup_n_u8 (*__a); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_dup_u16 (const uint16_t* __a) 5209: { 5209: return vdup_n_u16 (*__a); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_dup_u32 (const uint32_t* __a) 5209: { 5209: return vdup_n_u32 (*__a); 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_dup_u64 (const uint64_t* __a) 5209: { 5209: return vdup_n_u64 (*__a); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_dup_f16 (const float16_t* __a) 5209: { 5209: return vdupq_n_f16 (*__a); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_dup_f32 (const float32_t* __a) 5209: { 5209: return vdupq_n_f32 (*__a); 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_dup_f64 (const float64_t* __a) 5209: { 5209: return vdupq_n_f64 (*__a); 5209: } 5209: 5209: __extension__ extern __inline poly8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_dup_p8 (const poly8_t* __a) 5209: { 5209: return vdupq_n_p8 (*__a); 5209: } 5209: 5209: __extension__ extern __inline poly16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_dup_p16 (const poly16_t* __a) 5209: { 5209: return vdupq_n_p16 (*__a); 5209: } 5209: 5209: __extension__ extern __inline poly64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_dup_p64 (const poly64_t* __a) 5209: { 5209: return vdupq_n_p64 (*__a); 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_dup_s8 (const int8_t* __a) 5209: { 5209: return vdupq_n_s8 (*__a); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_dup_s16 (const int16_t* __a) 5209: { 5209: return vdupq_n_s16 (*__a); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_dup_s32 (const int32_t* __a) 5209: { 5209: return vdupq_n_s32 (*__a); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_dup_s64 (const int64_t* __a) 5209: { 5209: return vdupq_n_s64 (*__a); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_dup_u8 (const uint8_t* __a) 5209: { 5209: return vdupq_n_u8 (*__a); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_dup_u16 (const uint16_t* __a) 5209: { 5209: return vdupq_n_u16 (*__a); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_dup_u32 (const uint32_t* __a) 5209: { 5209: return vdupq_n_u32 (*__a); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_dup_u64 (const uint64_t* __a) 5209: { 5209: return vdupq_n_u64 (*__a); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_lane_f16 (const float16_t *__src, float16x4_t __vec, const int __lane) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__vec), sizeof(__vec[0]), __lane); __vec[__lane] = *__src; __vec; }); 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_lane_f32 (const float32_t *__src, float32x2_t __vec, const int __lane) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__vec), sizeof(__vec[0]), __lane); __vec[__lane] = *__src; __vec; }); 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_lane_f64 (const float64_t *__src, float64x1_t __vec, const int __lane) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__vec), sizeof(__vec[0]), __lane); __vec[__lane] = *__src; __vec; }); 5209: } 5209: 5209: __extension__ extern __inline poly8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_lane_p8 (const poly8_t *__src, poly8x8_t __vec, const int __lane) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__vec), sizeof(__vec[0]), __lane); __vec[__lane] = *__src; __vec; }); 5209: } 5209: 5209: __extension__ extern __inline poly16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_lane_p16 (const poly16_t *__src, poly16x4_t __vec, const int __lane) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__vec), sizeof(__vec[0]), __lane); __vec[__lane] = *__src; __vec; }); 5209: } 5209: 5209: __extension__ extern __inline poly64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_lane_p64 (const poly64_t *__src, poly64x1_t __vec, const int __lane) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__vec), sizeof(__vec[0]), __lane); __vec[__lane] = *__src; __vec; }); 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_lane_s8 (const int8_t *__src, int8x8_t __vec, const int __lane) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__vec), sizeof(__vec[0]), __lane); __vec[__lane] = *__src; __vec; }); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_lane_s16 (const int16_t *__src, int16x4_t __vec, const int __lane) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__vec), sizeof(__vec[0]), __lane); __vec[__lane] = *__src; __vec; }); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_lane_s32 (const int32_t *__src, int32x2_t __vec, const int __lane) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__vec), sizeof(__vec[0]), __lane); __vec[__lane] = *__src; __vec; }); 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_lane_s64 (const int64_t *__src, int64x1_t __vec, const int __lane) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__vec), sizeof(__vec[0]), __lane); __vec[__lane] = *__src; __vec; }); 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_lane_u8 (const uint8_t *__src, uint8x8_t __vec, const int __lane) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__vec), sizeof(__vec[0]), __lane); __vec[__lane] = *__src; __vec; }); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_lane_u16 (const uint16_t *__src, uint16x4_t __vec, const int __lane) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__vec), sizeof(__vec[0]), __lane); __vec[__lane] = *__src; __vec; }); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_lane_u32 (const uint32_t *__src, uint32x2_t __vec, const int __lane) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__vec), sizeof(__vec[0]), __lane); __vec[__lane] = *__src; __vec; }); 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1_lane_u64 (const uint64_t *__src, uint64x1_t __vec, const int __lane) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__vec), sizeof(__vec[0]), __lane); __vec[__lane] = *__src; __vec; }); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_lane_f16 (const float16_t *__src, float16x8_t __vec, const int __lane) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__vec), sizeof(__vec[0]), __lane); __vec[__lane] = *__src; __vec; }); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_lane_f32 (const float32_t *__src, float32x4_t __vec, const int __lane) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__vec), sizeof(__vec[0]), __lane); __vec[__lane] = *__src; __vec; }); 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_lane_f64 (const float64_t *__src, float64x2_t __vec, const int __lane) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__vec), sizeof(__vec[0]), __lane); __vec[__lane] = *__src; __vec; }); 5209: } 5209: 5209: __extension__ extern __inline poly8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_lane_p8 (const poly8_t *__src, poly8x16_t __vec, const int __lane) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__vec), sizeof(__vec[0]), __lane); __vec[__lane] = *__src; __vec; }); 5209: } 5209: 5209: __extension__ extern __inline poly16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_lane_p16 (const poly16_t *__src, poly16x8_t __vec, const int __lane) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__vec), sizeof(__vec[0]), __lane); __vec[__lane] = *__src; __vec; }); 5209: } 5209: 5209: __extension__ extern __inline poly64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_lane_p64 (const poly64_t *__src, poly64x2_t __vec, const int __lane) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__vec), sizeof(__vec[0]), __lane); __vec[__lane] = *__src; __vec; }); 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_lane_s8 (const int8_t *__src, int8x16_t __vec, const int __lane) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__vec), sizeof(__vec[0]), __lane); __vec[__lane] = *__src; __vec; }); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_lane_s16 (const int16_t *__src, int16x8_t __vec, const int __lane) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__vec), sizeof(__vec[0]), __lane); __vec[__lane] = *__src; __vec; }); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_lane_s32 (const int32_t *__src, int32x4_t __vec, const int __lane) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__vec), sizeof(__vec[0]), __lane); __vec[__lane] = *__src; __vec; }); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_lane_s64 (const int64_t *__src, int64x2_t __vec, const int __lane) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__vec), sizeof(__vec[0]), __lane); __vec[__lane] = *__src; __vec; }); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_lane_u8 (const uint8_t *__src, uint8x16_t __vec, const int __lane) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__vec), sizeof(__vec[0]), __lane); __vec[__lane] = *__src; __vec; }); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_lane_u16 (const uint16_t *__src, uint16x8_t __vec, const int __lane) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__vec), sizeof(__vec[0]), __lane); __vec[__lane] = *__src; __vec; }); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_lane_u32 (const uint32_t *__src, uint32x4_t __vec, const int __lane) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__vec), sizeof(__vec[0]), __lane); __vec[__lane] = *__src; __vec; }); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld1q_lane_u64 (const uint64_t *__src, uint64x2_t __vec, const int __lane) 5209: { 5209: return __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__vec), sizeof(__vec[0]), __lane); __vec[__lane] = *__src; __vec; }); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline int64x1x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld2_s64 (const int64_t * __a) 5209: { 5209: int64x1x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld2di ((const __builtin_aarch64_simd_di *) __a); 5209: ret.val[0] = (int64x1_t) __builtin_aarch64_get_dregoidi (__o, 0); 5209: ret.val[1] = (int64x1_t) __builtin_aarch64_get_dregoidi (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline uint64x1x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld2_u64 (const uint64_t * __a) 5209: { 5209: uint64x1x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld2di ((const __builtin_aarch64_simd_di *) __a); 5209: ret.val[0] = (uint64x1_t) __builtin_aarch64_get_dregoidi (__o, 0); 5209: ret.val[1] = (uint64x1_t) __builtin_aarch64_get_dregoidi (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline float64x1x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld2_f64 (const float64_t * __a) 5209: { 5209: float64x1x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld2df ((const __builtin_aarch64_simd_df *) __a); 5209: ret.val[0] = (float64x1_t) {__builtin_aarch64_get_dregoidf (__o, 0)}; 5209: ret.val[1] = (float64x1_t) {__builtin_aarch64_get_dregoidf (__o, 1)}; 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline int8x8x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld2_s8 (const int8_t * __a) 5209: { 5209: int8x8x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld2v8qi ((const __builtin_aarch64_simd_qi *) __a); 5209: ret.val[0] = (int8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 0); 5209: ret.val[1] = (int8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline poly8x8x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld2_p8 (const poly8_t * __a) 5209: { 5209: poly8x8x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld2v8qi ((const __builtin_aarch64_simd_qi *) __a); 5209: ret.val[0] = (poly8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 0); 5209: ret.val[1] = (poly8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline poly64x1x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld2_p64 (const poly64_t * __a) 5209: { 5209: poly64x1x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld2di ((const __builtin_aarch64_simd_di *) __a); 5209: ret.val[0] = (poly64x1_t) __builtin_aarch64_get_dregoidi_pss (__o, 0); 5209: ret.val[1] = (poly64x1_t) __builtin_aarch64_get_dregoidi_pss (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline int16x4x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld2_s16 (const int16_t * __a) 5209: { 5209: int16x4x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld2v4hi ((const __builtin_aarch64_simd_hi *) __a); 5209: ret.val[0] = (int16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 0); 5209: ret.val[1] = (int16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline poly16x4x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld2_p16 (const poly16_t * __a) 5209: { 5209: poly16x4x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld2v4hi ((const __builtin_aarch64_simd_hi *) __a); 5209: ret.val[0] = (poly16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 0); 5209: ret.val[1] = (poly16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline int32x2x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld2_s32 (const int32_t * __a) 5209: { 5209: int32x2x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld2v2si ((const __builtin_aarch64_simd_si *) __a); 5209: ret.val[0] = (int32x2_t) __builtin_aarch64_get_dregoiv2si (__o, 0); 5209: ret.val[1] = (int32x2_t) __builtin_aarch64_get_dregoiv2si (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline uint8x8x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld2_u8 (const uint8_t * __a) 5209: { 5209: uint8x8x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld2v8qi ((const __builtin_aarch64_simd_qi *) __a); 5209: ret.val[0] = (uint8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 0); 5209: ret.val[1] = (uint8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline uint16x4x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld2_u16 (const uint16_t * __a) 5209: { 5209: uint16x4x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld2v4hi ((const __builtin_aarch64_simd_hi *) __a); 5209: ret.val[0] = (uint16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 0); 5209: ret.val[1] = (uint16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline uint32x2x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld2_u32 (const uint32_t * __a) 5209: { 5209: uint32x2x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld2v2si ((const __builtin_aarch64_simd_si *) __a); 5209: ret.val[0] = (uint32x2_t) __builtin_aarch64_get_dregoiv2si (__o, 0); 5209: ret.val[1] = (uint32x2_t) __builtin_aarch64_get_dregoiv2si (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline float16x4x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld2_f16 (const float16_t * __a) 5209: { 5209: float16x4x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld2v4hf (__a); 5209: ret.val[0] = __builtin_aarch64_get_dregoiv4hf (__o, 0); 5209: ret.val[1] = __builtin_aarch64_get_dregoiv4hf (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline float32x2x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld2_f32 (const float32_t * __a) 5209: { 5209: float32x2x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld2v2sf ((const __builtin_aarch64_simd_sf *) __a); 5209: ret.val[0] = (float32x2_t) __builtin_aarch64_get_dregoiv2sf (__o, 0); 5209: ret.val[1] = (float32x2_t) __builtin_aarch64_get_dregoiv2sf (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline int8x16x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld2q_s8 (const int8_t * __a) 5209: { 5209: int8x16x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld2v16qi ((const __builtin_aarch64_simd_qi *) __a); 5209: ret.val[0] = (int8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 0); 5209: ret.val[1] = (int8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline poly8x16x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld2q_p8 (const poly8_t * __a) 5209: { 5209: poly8x16x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld2v16qi ((const __builtin_aarch64_simd_qi *) __a); 5209: ret.val[0] = (poly8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 0); 5209: ret.val[1] = (poly8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline int16x8x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld2q_s16 (const int16_t * __a) 5209: { 5209: int16x8x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld2v8hi ((const __builtin_aarch64_simd_hi *) __a); 5209: ret.val[0] = (int16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 0); 5209: ret.val[1] = (int16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline poly16x8x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld2q_p16 (const poly16_t * __a) 5209: { 5209: poly16x8x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld2v8hi ((const __builtin_aarch64_simd_hi *) __a); 5209: ret.val[0] = (poly16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 0); 5209: ret.val[1] = (poly16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline poly64x2x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld2q_p64 (const poly64_t * __a) 5209: { 5209: poly64x2x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld2v2di ((const __builtin_aarch64_simd_di *) __a); 5209: ret.val[0] = (poly64x2_t) __builtin_aarch64_get_qregoiv2di_pss (__o, 0); 5209: ret.val[1] = (poly64x2_t) __builtin_aarch64_get_qregoiv2di_pss (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline int32x4x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld2q_s32 (const int32_t * __a) 5209: { 5209: int32x4x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld2v4si ((const __builtin_aarch64_simd_si *) __a); 5209: ret.val[0] = (int32x4_t) __builtin_aarch64_get_qregoiv4si (__o, 0); 5209: ret.val[1] = (int32x4_t) __builtin_aarch64_get_qregoiv4si (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline int64x2x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld2q_s64 (const int64_t * __a) 5209: { 5209: int64x2x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld2v2di ((const __builtin_aarch64_simd_di *) __a); 5209: ret.val[0] = (int64x2_t) __builtin_aarch64_get_qregoiv2di (__o, 0); 5209: ret.val[1] = (int64x2_t) __builtin_aarch64_get_qregoiv2di (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline uint8x16x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld2q_u8 (const uint8_t * __a) 5209: { 5209: uint8x16x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld2v16qi ((const __builtin_aarch64_simd_qi *) __a); 5209: ret.val[0] = (uint8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 0); 5209: ret.val[1] = (uint8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline uint16x8x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld2q_u16 (const uint16_t * __a) 5209: { 5209: uint16x8x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld2v8hi ((const __builtin_aarch64_simd_hi *) __a); 5209: ret.val[0] = (uint16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 0); 5209: ret.val[1] = (uint16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline uint32x4x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld2q_u32 (const uint32_t * __a) 5209: { 5209: uint32x4x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld2v4si ((const __builtin_aarch64_simd_si *) __a); 5209: ret.val[0] = (uint32x4_t) __builtin_aarch64_get_qregoiv4si (__o, 0); 5209: ret.val[1] = (uint32x4_t) __builtin_aarch64_get_qregoiv4si (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline uint64x2x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld2q_u64 (const uint64_t * __a) 5209: { 5209: uint64x2x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld2v2di ((const __builtin_aarch64_simd_di *) __a); 5209: ret.val[0] = (uint64x2_t) __builtin_aarch64_get_qregoiv2di (__o, 0); 5209: ret.val[1] = (uint64x2_t) __builtin_aarch64_get_qregoiv2di (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline float16x8x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld2q_f16 (const float16_t * __a) 5209: { 5209: float16x8x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld2v8hf (__a); 5209: ret.val[0] = __builtin_aarch64_get_qregoiv8hf (__o, 0); 5209: ret.val[1] = __builtin_aarch64_get_qregoiv8hf (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline float32x4x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld2q_f32 (const float32_t * __a) 5209: { 5209: float32x4x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld2v4sf ((const __builtin_aarch64_simd_sf *) __a); 5209: ret.val[0] = (float32x4_t) __builtin_aarch64_get_qregoiv4sf (__o, 0); 5209: ret.val[1] = (float32x4_t) __builtin_aarch64_get_qregoiv4sf (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline float64x2x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld2q_f64 (const float64_t * __a) 5209: { 5209: float64x2x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld2v2df ((const __builtin_aarch64_simd_df *) __a); 5209: ret.val[0] = (float64x2_t) __builtin_aarch64_get_qregoiv2df (__o, 0); 5209: ret.val[1] = (float64x2_t) __builtin_aarch64_get_qregoiv2df (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline int64x1x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld3_s64 (const int64_t * __a) 5209: { 5209: int64x1x3_t ret; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld3di ((const __builtin_aarch64_simd_di *) __a); 5209: ret.val[0] = (int64x1_t) __builtin_aarch64_get_dregcidi (__o, 0); 5209: ret.val[1] = (int64x1_t) __builtin_aarch64_get_dregcidi (__o, 1); 5209: ret.val[2] = (int64x1_t) __builtin_aarch64_get_dregcidi (__o, 2); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline uint64x1x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld3_u64 (const uint64_t * __a) 5209: { 5209: uint64x1x3_t ret; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld3di ((const __builtin_aarch64_simd_di *) __a); 5209: ret.val[0] = (uint64x1_t) __builtin_aarch64_get_dregcidi (__o, 0); 5209: ret.val[1] = (uint64x1_t) __builtin_aarch64_get_dregcidi (__o, 1); 5209: ret.val[2] = (uint64x1_t) __builtin_aarch64_get_dregcidi (__o, 2); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline float64x1x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld3_f64 (const float64_t * __a) 5209: { 5209: float64x1x3_t ret; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld3df ((const __builtin_aarch64_simd_df *) __a); 5209: ret.val[0] = (float64x1_t) {__builtin_aarch64_get_dregcidf (__o, 0)}; 5209: ret.val[1] = (float64x1_t) {__builtin_aarch64_get_dregcidf (__o, 1)}; 5209: ret.val[2] = (float64x1_t) {__builtin_aarch64_get_dregcidf (__o, 2)}; 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline int8x8x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld3_s8 (const int8_t * __a) 5209: { 5209: int8x8x3_t ret; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld3v8qi ((const __builtin_aarch64_simd_qi *) __a); 5209: ret.val[0] = (int8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 0); 5209: ret.val[1] = (int8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 1); 5209: ret.val[2] = (int8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 2); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline poly8x8x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld3_p8 (const poly8_t * __a) 5209: { 5209: poly8x8x3_t ret; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld3v8qi ((const __builtin_aarch64_simd_qi *) __a); 5209: ret.val[0] = (poly8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 0); 5209: ret.val[1] = (poly8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 1); 5209: ret.val[2] = (poly8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 2); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline int16x4x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld3_s16 (const int16_t * __a) 5209: { 5209: int16x4x3_t ret; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld3v4hi ((const __builtin_aarch64_simd_hi *) __a); 5209: ret.val[0] = (int16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 0); 5209: ret.val[1] = (int16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 1); 5209: ret.val[2] = (int16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 2); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline poly16x4x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld3_p16 (const poly16_t * __a) 5209: { 5209: poly16x4x3_t ret; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld3v4hi ((const __builtin_aarch64_simd_hi *) __a); 5209: ret.val[0] = (poly16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 0); 5209: ret.val[1] = (poly16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 1); 5209: ret.val[2] = (poly16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 2); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline int32x2x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld3_s32 (const int32_t * __a) 5209: { 5209: int32x2x3_t ret; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld3v2si ((const __builtin_aarch64_simd_si *) __a); 5209: ret.val[0] = (int32x2_t) __builtin_aarch64_get_dregciv2si (__o, 0); 5209: ret.val[1] = (int32x2_t) __builtin_aarch64_get_dregciv2si (__o, 1); 5209: ret.val[2] = (int32x2_t) __builtin_aarch64_get_dregciv2si (__o, 2); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline uint8x8x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld3_u8 (const uint8_t * __a) 5209: { 5209: uint8x8x3_t ret; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld3v8qi ((const __builtin_aarch64_simd_qi *) __a); 5209: ret.val[0] = (uint8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 0); 5209: ret.val[1] = (uint8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 1); 5209: ret.val[2] = (uint8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 2); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline uint16x4x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld3_u16 (const uint16_t * __a) 5209: { 5209: uint16x4x3_t ret; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld3v4hi ((const __builtin_aarch64_simd_hi *) __a); 5209: ret.val[0] = (uint16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 0); 5209: ret.val[1] = (uint16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 1); 5209: ret.val[2] = (uint16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 2); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline uint32x2x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld3_u32 (const uint32_t * __a) 5209: { 5209: uint32x2x3_t ret; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld3v2si ((const __builtin_aarch64_simd_si *) __a); 5209: ret.val[0] = (uint32x2_t) __builtin_aarch64_get_dregciv2si (__o, 0); 5209: ret.val[1] = (uint32x2_t) __builtin_aarch64_get_dregciv2si (__o, 1); 5209: ret.val[2] = (uint32x2_t) __builtin_aarch64_get_dregciv2si (__o, 2); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline float16x4x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld3_f16 (const float16_t * __a) 5209: { 5209: float16x4x3_t ret; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld3v4hf (__a); 5209: ret.val[0] = __builtin_aarch64_get_dregciv4hf (__o, 0); 5209: ret.val[1] = __builtin_aarch64_get_dregciv4hf (__o, 1); 5209: ret.val[2] = __builtin_aarch64_get_dregciv4hf (__o, 2); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline float32x2x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld3_f32 (const float32_t * __a) 5209: { 5209: float32x2x3_t ret; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld3v2sf ((const __builtin_aarch64_simd_sf *) __a); 5209: ret.val[0] = (float32x2_t) __builtin_aarch64_get_dregciv2sf (__o, 0); 5209: ret.val[1] = (float32x2_t) __builtin_aarch64_get_dregciv2sf (__o, 1); 5209: ret.val[2] = (float32x2_t) __builtin_aarch64_get_dregciv2sf (__o, 2); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline poly64x1x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld3_p64 (const poly64_t * __a) 5209: { 5209: poly64x1x3_t ret; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld3di ((const __builtin_aarch64_simd_di *) __a); 5209: ret.val[0] = (poly64x1_t) __builtin_aarch64_get_dregcidi_pss (__o, 0); 5209: ret.val[1] = (poly64x1_t) __builtin_aarch64_get_dregcidi_pss (__o, 1); 5209: ret.val[2] = (poly64x1_t) __builtin_aarch64_get_dregcidi_pss (__o, 2); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline int8x16x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld3q_s8 (const int8_t * __a) 5209: { 5209: int8x16x3_t ret; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld3v16qi ((const __builtin_aarch64_simd_qi *) __a); 5209: ret.val[0] = (int8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 0); 5209: ret.val[1] = (int8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 1); 5209: ret.val[2] = (int8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 2); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline poly8x16x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld3q_p8 (const poly8_t * __a) 5209: { 5209: poly8x16x3_t ret; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld3v16qi ((const __builtin_aarch64_simd_qi *) __a); 5209: ret.val[0] = (poly8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 0); 5209: ret.val[1] = (poly8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 1); 5209: ret.val[2] = (poly8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 2); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline int16x8x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld3q_s16 (const int16_t * __a) 5209: { 5209: int16x8x3_t ret; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld3v8hi ((const __builtin_aarch64_simd_hi *) __a); 5209: ret.val[0] = (int16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 0); 5209: ret.val[1] = (int16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 1); 5209: ret.val[2] = (int16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 2); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline poly16x8x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld3q_p16 (const poly16_t * __a) 5209: { 5209: poly16x8x3_t ret; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld3v8hi ((const __builtin_aarch64_simd_hi *) __a); 5209: ret.val[0] = (poly16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 0); 5209: ret.val[1] = (poly16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 1); 5209: ret.val[2] = (poly16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 2); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline int32x4x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld3q_s32 (const int32_t * __a) 5209: { 5209: int32x4x3_t ret; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld3v4si ((const __builtin_aarch64_simd_si *) __a); 5209: ret.val[0] = (int32x4_t) __builtin_aarch64_get_qregciv4si (__o, 0); 5209: ret.val[1] = (int32x4_t) __builtin_aarch64_get_qregciv4si (__o, 1); 5209: ret.val[2] = (int32x4_t) __builtin_aarch64_get_qregciv4si (__o, 2); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline int64x2x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld3q_s64 (const int64_t * __a) 5209: { 5209: int64x2x3_t ret; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld3v2di ((const __builtin_aarch64_simd_di *) __a); 5209: ret.val[0] = (int64x2_t) __builtin_aarch64_get_qregciv2di (__o, 0); 5209: ret.val[1] = (int64x2_t) __builtin_aarch64_get_qregciv2di (__o, 1); 5209: ret.val[2] = (int64x2_t) __builtin_aarch64_get_qregciv2di (__o, 2); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline uint8x16x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld3q_u8 (const uint8_t * __a) 5209: { 5209: uint8x16x3_t ret; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld3v16qi ((const __builtin_aarch64_simd_qi *) __a); 5209: ret.val[0] = (uint8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 0); 5209: ret.val[1] = (uint8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 1); 5209: ret.val[2] = (uint8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 2); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline uint16x8x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld3q_u16 (const uint16_t * __a) 5209: { 5209: uint16x8x3_t ret; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld3v8hi ((const __builtin_aarch64_simd_hi *) __a); 5209: ret.val[0] = (uint16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 0); 5209: ret.val[1] = (uint16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 1); 5209: ret.val[2] = (uint16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 2); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline uint32x4x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld3q_u32 (const uint32_t * __a) 5209: { 5209: uint32x4x3_t ret; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld3v4si ((const __builtin_aarch64_simd_si *) __a); 5209: ret.val[0] = (uint32x4_t) __builtin_aarch64_get_qregciv4si (__o, 0); 5209: ret.val[1] = (uint32x4_t) __builtin_aarch64_get_qregciv4si (__o, 1); 5209: ret.val[2] = (uint32x4_t) __builtin_aarch64_get_qregciv4si (__o, 2); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline uint64x2x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld3q_u64 (const uint64_t * __a) 5209: { 5209: uint64x2x3_t ret; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld3v2di ((const __builtin_aarch64_simd_di *) __a); 5209: ret.val[0] = (uint64x2_t) __builtin_aarch64_get_qregciv2di (__o, 0); 5209: ret.val[1] = (uint64x2_t) __builtin_aarch64_get_qregciv2di (__o, 1); 5209: ret.val[2] = (uint64x2_t) __builtin_aarch64_get_qregciv2di (__o, 2); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline float16x8x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld3q_f16 (const float16_t * __a) 5209: { 5209: float16x8x3_t ret; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld3v8hf (__a); 5209: ret.val[0] = __builtin_aarch64_get_qregciv8hf (__o, 0); 5209: ret.val[1] = __builtin_aarch64_get_qregciv8hf (__o, 1); 5209: ret.val[2] = __builtin_aarch64_get_qregciv8hf (__o, 2); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline float32x4x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld3q_f32 (const float32_t * __a) 5209: { 5209: float32x4x3_t ret; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld3v4sf ((const __builtin_aarch64_simd_sf *) __a); 5209: ret.val[0] = (float32x4_t) __builtin_aarch64_get_qregciv4sf (__o, 0); 5209: ret.val[1] = (float32x4_t) __builtin_aarch64_get_qregciv4sf (__o, 1); 5209: ret.val[2] = (float32x4_t) __builtin_aarch64_get_qregciv4sf (__o, 2); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline float64x2x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld3q_f64 (const float64_t * __a) 5209: { 5209: float64x2x3_t ret; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld3v2df ((const __builtin_aarch64_simd_df *) __a); 5209: ret.val[0] = (float64x2_t) __builtin_aarch64_get_qregciv2df (__o, 0); 5209: ret.val[1] = (float64x2_t) __builtin_aarch64_get_qregciv2df (__o, 1); 5209: ret.val[2] = (float64x2_t) __builtin_aarch64_get_qregciv2df (__o, 2); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline poly64x2x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld3q_p64 (const poly64_t * __a) 5209: { 5209: poly64x2x3_t ret; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld3v2di ((const __builtin_aarch64_simd_di *) __a); 5209: ret.val[0] = (poly64x2_t) __builtin_aarch64_get_qregciv2di_pss (__o, 0); 5209: ret.val[1] = (poly64x2_t) __builtin_aarch64_get_qregciv2di_pss (__o, 1); 5209: ret.val[2] = (poly64x2_t) __builtin_aarch64_get_qregciv2di_pss (__o, 2); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline int64x1x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld4_s64 (const int64_t * __a) 5209: { 5209: int64x1x4_t ret; 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_ld4di ((const __builtin_aarch64_simd_di *) __a); 5209: ret.val[0] = (int64x1_t) __builtin_aarch64_get_dregxidi (__o, 0); 5209: ret.val[1] = (int64x1_t) __builtin_aarch64_get_dregxidi (__o, 1); 5209: ret.val[2] = (int64x1_t) __builtin_aarch64_get_dregxidi (__o, 2); 5209: ret.val[3] = (int64x1_t) __builtin_aarch64_get_dregxidi (__o, 3); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline uint64x1x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld4_u64 (const uint64_t * __a) 5209: { 5209: uint64x1x4_t ret; 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_ld4di ((const __builtin_aarch64_simd_di *) __a); 5209: ret.val[0] = (uint64x1_t) __builtin_aarch64_get_dregxidi (__o, 0); 5209: ret.val[1] = (uint64x1_t) __builtin_aarch64_get_dregxidi (__o, 1); 5209: ret.val[2] = (uint64x1_t) __builtin_aarch64_get_dregxidi (__o, 2); 5209: ret.val[3] = (uint64x1_t) __builtin_aarch64_get_dregxidi (__o, 3); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline float64x1x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld4_f64 (const float64_t * __a) 5209: { 5209: float64x1x4_t ret; 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_ld4df ((const __builtin_aarch64_simd_df *) __a); 5209: ret.val[0] = (float64x1_t) {__builtin_aarch64_get_dregxidf (__o, 0)}; 5209: ret.val[1] = (float64x1_t) {__builtin_aarch64_get_dregxidf (__o, 1)}; 5209: ret.val[2] = (float64x1_t) {__builtin_aarch64_get_dregxidf (__o, 2)}; 5209: ret.val[3] = (float64x1_t) {__builtin_aarch64_get_dregxidf (__o, 3)}; 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline int8x8x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld4_s8 (const int8_t * __a) 5209: { 5209: int8x8x4_t ret; 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_ld4v8qi ((const __builtin_aarch64_simd_qi *) __a); 5209: ret.val[0] = (int8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 0); 5209: ret.val[1] = (int8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 1); 5209: ret.val[2] = (int8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 2); 5209: ret.val[3] = (int8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 3); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline poly8x8x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld4_p8 (const poly8_t * __a) 5209: { 5209: poly8x8x4_t ret; 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_ld4v8qi ((const __builtin_aarch64_simd_qi *) __a); 5209: ret.val[0] = (poly8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 0); 5209: ret.val[1] = (poly8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 1); 5209: ret.val[2] = (poly8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 2); 5209: ret.val[3] = (poly8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 3); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline int16x4x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld4_s16 (const int16_t * __a) 5209: { 5209: int16x4x4_t ret; 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_ld4v4hi ((const __builtin_aarch64_simd_hi *) __a); 5209: ret.val[0] = (int16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 0); 5209: ret.val[1] = (int16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 1); 5209: ret.val[2] = (int16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 2); 5209: ret.val[3] = (int16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 3); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline poly16x4x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld4_p16 (const poly16_t * __a) 5209: { 5209: poly16x4x4_t ret; 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_ld4v4hi ((const __builtin_aarch64_simd_hi *) __a); 5209: ret.val[0] = (poly16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 0); 5209: ret.val[1] = (poly16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 1); 5209: ret.val[2] = (poly16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 2); 5209: ret.val[3] = (poly16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 3); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline int32x2x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld4_s32 (const int32_t * __a) 5209: { 5209: int32x2x4_t ret; 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_ld4v2si ((const __builtin_aarch64_simd_si *) __a); 5209: ret.val[0] = (int32x2_t) __builtin_aarch64_get_dregxiv2si (__o, 0); 5209: ret.val[1] = (int32x2_t) __builtin_aarch64_get_dregxiv2si (__o, 1); 5209: ret.val[2] = (int32x2_t) __builtin_aarch64_get_dregxiv2si (__o, 2); 5209: ret.val[3] = (int32x2_t) __builtin_aarch64_get_dregxiv2si (__o, 3); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline uint8x8x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld4_u8 (const uint8_t * __a) 5209: { 5209: uint8x8x4_t ret; 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_ld4v8qi ((const __builtin_aarch64_simd_qi *) __a); 5209: ret.val[0] = (uint8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 0); 5209: ret.val[1] = (uint8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 1); 5209: ret.val[2] = (uint8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 2); 5209: ret.val[3] = (uint8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 3); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline uint16x4x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld4_u16 (const uint16_t * __a) 5209: { 5209: uint16x4x4_t ret; 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_ld4v4hi ((const __builtin_aarch64_simd_hi *) __a); 5209: ret.val[0] = (uint16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 0); 5209: ret.val[1] = (uint16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 1); 5209: ret.val[2] = (uint16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 2); 5209: ret.val[3] = (uint16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 3); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline uint32x2x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld4_u32 (const uint32_t * __a) 5209: { 5209: uint32x2x4_t ret; 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_ld4v2si ((const __builtin_aarch64_simd_si *) __a); 5209: ret.val[0] = (uint32x2_t) __builtin_aarch64_get_dregxiv2si (__o, 0); 5209: ret.val[1] = (uint32x2_t) __builtin_aarch64_get_dregxiv2si (__o, 1); 5209: ret.val[2] = (uint32x2_t) __builtin_aarch64_get_dregxiv2si (__o, 2); 5209: ret.val[3] = (uint32x2_t) __builtin_aarch64_get_dregxiv2si (__o, 3); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline float16x4x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld4_f16 (const float16_t * __a) 5209: { 5209: float16x4x4_t ret; 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_ld4v4hf (__a); 5209: ret.val[0] = __builtin_aarch64_get_dregxiv4hf (__o, 0); 5209: ret.val[1] = __builtin_aarch64_get_dregxiv4hf (__o, 1); 5209: ret.val[2] = __builtin_aarch64_get_dregxiv4hf (__o, 2); 5209: ret.val[3] = __builtin_aarch64_get_dregxiv4hf (__o, 3); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline float32x2x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld4_f32 (const float32_t * __a) 5209: { 5209: float32x2x4_t ret; 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_ld4v2sf ((const __builtin_aarch64_simd_sf *) __a); 5209: ret.val[0] = (float32x2_t) __builtin_aarch64_get_dregxiv2sf (__o, 0); 5209: ret.val[1] = (float32x2_t) __builtin_aarch64_get_dregxiv2sf (__o, 1); 5209: ret.val[2] = (float32x2_t) __builtin_aarch64_get_dregxiv2sf (__o, 2); 5209: ret.val[3] = (float32x2_t) __builtin_aarch64_get_dregxiv2sf (__o, 3); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline poly64x1x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld4_p64 (const poly64_t * __a) 5209: { 5209: poly64x1x4_t ret; 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_ld4di ((const __builtin_aarch64_simd_di *) __a); 5209: ret.val[0] = (poly64x1_t) __builtin_aarch64_get_dregxidi_pss (__o, 0); 5209: ret.val[1] = (poly64x1_t) __builtin_aarch64_get_dregxidi_pss (__o, 1); 5209: ret.val[2] = (poly64x1_t) __builtin_aarch64_get_dregxidi_pss (__o, 2); 5209: ret.val[3] = (poly64x1_t) __builtin_aarch64_get_dregxidi_pss (__o, 3); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline int8x16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld4q_s8 (const int8_t * __a) 5209: { 5209: int8x16x4_t ret; 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_ld4v16qi ((const __builtin_aarch64_simd_qi *) __a); 5209: ret.val[0] = (int8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 0); 5209: ret.val[1] = (int8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 1); 5209: ret.val[2] = (int8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 2); 5209: ret.val[3] = (int8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 3); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline poly8x16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld4q_p8 (const poly8_t * __a) 5209: { 5209: poly8x16x4_t ret; 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_ld4v16qi ((const __builtin_aarch64_simd_qi *) __a); 5209: ret.val[0] = (poly8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 0); 5209: ret.val[1] = (poly8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 1); 5209: ret.val[2] = (poly8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 2); 5209: ret.val[3] = (poly8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 3); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline int16x8x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld4q_s16 (const int16_t * __a) 5209: { 5209: int16x8x4_t ret; 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_ld4v8hi ((const __builtin_aarch64_simd_hi *) __a); 5209: ret.val[0] = (int16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 0); 5209: ret.val[1] = (int16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 1); 5209: ret.val[2] = (int16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 2); 5209: ret.val[3] = (int16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 3); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline poly16x8x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld4q_p16 (const poly16_t * __a) 5209: { 5209: poly16x8x4_t ret; 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_ld4v8hi ((const __builtin_aarch64_simd_hi *) __a); 5209: ret.val[0] = (poly16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 0); 5209: ret.val[1] = (poly16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 1); 5209: ret.val[2] = (poly16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 2); 5209: ret.val[3] = (poly16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 3); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline int32x4x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld4q_s32 (const int32_t * __a) 5209: { 5209: int32x4x4_t ret; 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_ld4v4si ((const __builtin_aarch64_simd_si *) __a); 5209: ret.val[0] = (int32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 0); 5209: ret.val[1] = (int32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 1); 5209: ret.val[2] = (int32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 2); 5209: ret.val[3] = (int32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 3); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline int64x2x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld4q_s64 (const int64_t * __a) 5209: { 5209: int64x2x4_t ret; 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_ld4v2di ((const __builtin_aarch64_simd_di *) __a); 5209: ret.val[0] = (int64x2_t) __builtin_aarch64_get_qregxiv2di (__o, 0); 5209: ret.val[1] = (int64x2_t) __builtin_aarch64_get_qregxiv2di (__o, 1); 5209: ret.val[2] = (int64x2_t) __builtin_aarch64_get_qregxiv2di (__o, 2); 5209: ret.val[3] = (int64x2_t) __builtin_aarch64_get_qregxiv2di (__o, 3); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline uint8x16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld4q_u8 (const uint8_t * __a) 5209: { 5209: uint8x16x4_t ret; 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_ld4v16qi ((const __builtin_aarch64_simd_qi *) __a); 5209: ret.val[0] = (uint8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 0); 5209: ret.val[1] = (uint8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 1); 5209: ret.val[2] = (uint8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 2); 5209: ret.val[3] = (uint8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 3); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline uint16x8x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld4q_u16 (const uint16_t * __a) 5209: { 5209: uint16x8x4_t ret; 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_ld4v8hi ((const __builtin_aarch64_simd_hi *) __a); 5209: ret.val[0] = (uint16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 0); 5209: ret.val[1] = (uint16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 1); 5209: ret.val[2] = (uint16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 2); 5209: ret.val[3] = (uint16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 3); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline uint32x4x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld4q_u32 (const uint32_t * __a) 5209: { 5209: uint32x4x4_t ret; 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_ld4v4si ((const __builtin_aarch64_simd_si *) __a); 5209: ret.val[0] = (uint32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 0); 5209: ret.val[1] = (uint32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 1); 5209: ret.val[2] = (uint32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 2); 5209: ret.val[3] = (uint32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 3); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline uint64x2x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld4q_u64 (const uint64_t * __a) 5209: { 5209: uint64x2x4_t ret; 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_ld4v2di ((const __builtin_aarch64_simd_di *) __a); 5209: ret.val[0] = (uint64x2_t) __builtin_aarch64_get_qregxiv2di (__o, 0); 5209: ret.val[1] = (uint64x2_t) __builtin_aarch64_get_qregxiv2di (__o, 1); 5209: ret.val[2] = (uint64x2_t) __builtin_aarch64_get_qregxiv2di (__o, 2); 5209: ret.val[3] = (uint64x2_t) __builtin_aarch64_get_qregxiv2di (__o, 3); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline float16x8x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld4q_f16 (const float16_t * __a) 5209: { 5209: float16x8x4_t ret; 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_ld4v8hf (__a); 5209: ret.val[0] = __builtin_aarch64_get_qregxiv8hf (__o, 0); 5209: ret.val[1] = __builtin_aarch64_get_qregxiv8hf (__o, 1); 5209: ret.val[2] = __builtin_aarch64_get_qregxiv8hf (__o, 2); 5209: ret.val[3] = __builtin_aarch64_get_qregxiv8hf (__o, 3); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline float32x4x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld4q_f32 (const float32_t * __a) 5209: { 5209: float32x4x4_t ret; 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_ld4v4sf ((const __builtin_aarch64_simd_sf *) __a); 5209: ret.val[0] = (float32x4_t) __builtin_aarch64_get_qregxiv4sf (__o, 0); 5209: ret.val[1] = (float32x4_t) __builtin_aarch64_get_qregxiv4sf (__o, 1); 5209: ret.val[2] = (float32x4_t) __builtin_aarch64_get_qregxiv4sf (__o, 2); 5209: ret.val[3] = (float32x4_t) __builtin_aarch64_get_qregxiv4sf (__o, 3); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline float64x2x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld4q_f64 (const float64_t * __a) 5209: { 5209: float64x2x4_t ret; 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_ld4v2df ((const __builtin_aarch64_simd_df *) __a); 5209: ret.val[0] = (float64x2_t) __builtin_aarch64_get_qregxiv2df (__o, 0); 5209: ret.val[1] = (float64x2_t) __builtin_aarch64_get_qregxiv2df (__o, 1); 5209: ret.val[2] = (float64x2_t) __builtin_aarch64_get_qregxiv2df (__o, 2); 5209: ret.val[3] = (float64x2_t) __builtin_aarch64_get_qregxiv2df (__o, 3); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline poly64x2x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld4q_p64 (const poly64_t * __a) 5209: { 5209: poly64x2x4_t ret; 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_ld4v2di ((const __builtin_aarch64_simd_di *) __a); 5209: ret.val[0] = (poly64x2_t) __builtin_aarch64_get_qregxiv2di_pss (__o, 0); 5209: ret.val[1] = (poly64x2_t) __builtin_aarch64_get_qregxiv2di_pss (__o, 1); 5209: ret.val[2] = (poly64x2_t) __builtin_aarch64_get_qregxiv2di_pss (__o, 2); 5209: ret.val[3] = (poly64x2_t) __builtin_aarch64_get_qregxiv2di_pss (__o, 3); 5209: return ret; 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline int8x8x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld2_dup_s8 (const int8_t * __a) 5209: { 5209: int8x8x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld2rv8qi ((const __builtin_aarch64_simd_qi *) __a); 5209: ret.val[0] = (int8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 0); 5209: ret.val[1] = (int8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline int16x4x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld2_dup_s16 (const int16_t * __a) 5209: { 5209: int16x4x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld2rv4hi ((const __builtin_aarch64_simd_hi *) __a); 5209: ret.val[0] = (int16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 0); 5209: ret.val[1] = (int16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline int32x2x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld2_dup_s32 (const int32_t * __a) 5209: { 5209: int32x2x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld2rv2si ((const __builtin_aarch64_simd_si *) __a); 5209: ret.val[0] = (int32x2_t) __builtin_aarch64_get_dregoiv2si (__o, 0); 5209: ret.val[1] = (int32x2_t) __builtin_aarch64_get_dregoiv2si (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline float16x4x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld2_dup_f16 (const float16_t * __a) 5209: { 5209: float16x4x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld2rv4hf ((const __builtin_aarch64_simd_hf *) __a); 5209: ret.val[0] = __builtin_aarch64_get_dregoiv4hf (__o, 0); 5209: ret.val[1] = (float16x4_t) __builtin_aarch64_get_dregoiv4hf (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline float32x2x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld2_dup_f32 (const float32_t * __a) 5209: { 5209: float32x2x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld2rv2sf ((const __builtin_aarch64_simd_sf *) __a); 5209: ret.val[0] = (float32x2_t) __builtin_aarch64_get_dregoiv2sf (__o, 0); 5209: ret.val[1] = (float32x2_t) __builtin_aarch64_get_dregoiv2sf (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline float64x1x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld2_dup_f64 (const float64_t * __a) 5209: { 5209: float64x1x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld2rdf ((const __builtin_aarch64_simd_df *) __a); 5209: ret.val[0] = (float64x1_t) {__builtin_aarch64_get_dregoidf (__o, 0)}; 5209: ret.val[1] = (float64x1_t) {__builtin_aarch64_get_dregoidf (__o, 1)}; 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline uint8x8x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld2_dup_u8 (const uint8_t * __a) 5209: { 5209: uint8x8x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld2rv8qi ((const __builtin_aarch64_simd_qi *) __a); 5209: ret.val[0] = (uint8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 0); 5209: ret.val[1] = (uint8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline uint16x4x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld2_dup_u16 (const uint16_t * __a) 5209: { 5209: uint16x4x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld2rv4hi ((const __builtin_aarch64_simd_hi *) __a); 5209: ret.val[0] = (uint16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 0); 5209: ret.val[1] = (uint16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline uint32x2x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld2_dup_u32 (const uint32_t * __a) 5209: { 5209: uint32x2x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld2rv2si ((const __builtin_aarch64_simd_si *) __a); 5209: ret.val[0] = (uint32x2_t) __builtin_aarch64_get_dregoiv2si (__o, 0); 5209: ret.val[1] = (uint32x2_t) __builtin_aarch64_get_dregoiv2si (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline poly8x8x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld2_dup_p8 (const poly8_t * __a) 5209: { 5209: poly8x8x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld2rv8qi ((const __builtin_aarch64_simd_qi *) __a); 5209: ret.val[0] = (poly8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 0); 5209: ret.val[1] = (poly8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline poly16x4x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld2_dup_p16 (const poly16_t * __a) 5209: { 5209: poly16x4x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld2rv4hi ((const __builtin_aarch64_simd_hi *) __a); 5209: ret.val[0] = (poly16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 0); 5209: ret.val[1] = (poly16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline poly64x1x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld2_dup_p64 (const poly64_t * __a) 5209: { 5209: poly64x1x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld2rv2di ((const __builtin_aarch64_simd_di *) __a); 5209: ret.val[0] = (poly64x1_t) __builtin_aarch64_get_dregoidi_pss (__o, 0); 5209: ret.val[1] = (poly64x1_t) __builtin_aarch64_get_dregoidi_pss (__o, 1); 5209: return ret; 5209: } 5209: 5209: 5209: __extension__ extern __inline int64x1x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld2_dup_s64 (const int64_t * __a) 5209: { 5209: int64x1x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld2rdi ((const __builtin_aarch64_simd_di *) __a); 5209: ret.val[0] = (int64x1_t) __builtin_aarch64_get_dregoidi (__o, 0); 5209: ret.val[1] = (int64x1_t) __builtin_aarch64_get_dregoidi (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline uint64x1x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld2_dup_u64 (const uint64_t * __a) 5209: { 5209: uint64x1x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld2rdi ((const __builtin_aarch64_simd_di *) __a); 5209: ret.val[0] = (uint64x1_t) __builtin_aarch64_get_dregoidi (__o, 0); 5209: ret.val[1] = (uint64x1_t) __builtin_aarch64_get_dregoidi (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline int8x16x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld2q_dup_s8 (const int8_t * __a) 5209: { 5209: int8x16x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld2rv16qi ((const __builtin_aarch64_simd_qi *) __a); 5209: ret.val[0] = (int8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 0); 5209: ret.val[1] = (int8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline poly8x16x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld2q_dup_p8 (const poly8_t * __a) 5209: { 5209: poly8x16x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld2rv16qi ((const __builtin_aarch64_simd_qi *) __a); 5209: ret.val[0] = (poly8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 0); 5209: ret.val[1] = (poly8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline int16x8x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld2q_dup_s16 (const int16_t * __a) 5209: { 5209: int16x8x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld2rv8hi ((const __builtin_aarch64_simd_hi *) __a); 5209: ret.val[0] = (int16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 0); 5209: ret.val[1] = (int16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline poly16x8x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld2q_dup_p16 (const poly16_t * __a) 5209: { 5209: poly16x8x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld2rv8hi ((const __builtin_aarch64_simd_hi *) __a); 5209: ret.val[0] = (poly16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 0); 5209: ret.val[1] = (poly16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline int32x4x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld2q_dup_s32 (const int32_t * __a) 5209: { 5209: int32x4x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld2rv4si ((const __builtin_aarch64_simd_si *) __a); 5209: ret.val[0] = (int32x4_t) __builtin_aarch64_get_qregoiv4si (__o, 0); 5209: ret.val[1] = (int32x4_t) __builtin_aarch64_get_qregoiv4si (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline int64x2x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld2q_dup_s64 (const int64_t * __a) 5209: { 5209: int64x2x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld2rv2di ((const __builtin_aarch64_simd_di *) __a); 5209: ret.val[0] = (int64x2_t) __builtin_aarch64_get_qregoiv2di (__o, 0); 5209: ret.val[1] = (int64x2_t) __builtin_aarch64_get_qregoiv2di (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline uint8x16x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld2q_dup_u8 (const uint8_t * __a) 5209: { 5209: uint8x16x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld2rv16qi ((const __builtin_aarch64_simd_qi *) __a); 5209: ret.val[0] = (uint8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 0); 5209: ret.val[1] = (uint8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline uint16x8x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld2q_dup_u16 (const uint16_t * __a) 5209: { 5209: uint16x8x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld2rv8hi ((const __builtin_aarch64_simd_hi *) __a); 5209: ret.val[0] = (uint16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 0); 5209: ret.val[1] = (uint16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline uint32x4x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld2q_dup_u32 (const uint32_t * __a) 5209: { 5209: uint32x4x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld2rv4si ((const __builtin_aarch64_simd_si *) __a); 5209: ret.val[0] = (uint32x4_t) __builtin_aarch64_get_qregoiv4si (__o, 0); 5209: ret.val[1] = (uint32x4_t) __builtin_aarch64_get_qregoiv4si (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline uint64x2x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld2q_dup_u64 (const uint64_t * __a) 5209: { 5209: uint64x2x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld2rv2di ((const __builtin_aarch64_simd_di *) __a); 5209: ret.val[0] = (uint64x2_t) __builtin_aarch64_get_qregoiv2di (__o, 0); 5209: ret.val[1] = (uint64x2_t) __builtin_aarch64_get_qregoiv2di (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline float16x8x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld2q_dup_f16 (const float16_t * __a) 5209: { 5209: float16x8x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld2rv8hf ((const __builtin_aarch64_simd_hf *) __a); 5209: ret.val[0] = (float16x8_t) __builtin_aarch64_get_qregoiv8hf (__o, 0); 5209: ret.val[1] = __builtin_aarch64_get_qregoiv8hf (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline float32x4x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld2q_dup_f32 (const float32_t * __a) 5209: { 5209: float32x4x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld2rv4sf ((const __builtin_aarch64_simd_sf *) __a); 5209: ret.val[0] = (float32x4_t) __builtin_aarch64_get_qregoiv4sf (__o, 0); 5209: ret.val[1] = (float32x4_t) __builtin_aarch64_get_qregoiv4sf (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline float64x2x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld2q_dup_f64 (const float64_t * __a) 5209: { 5209: float64x2x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld2rv2df ((const __builtin_aarch64_simd_df *) __a); 5209: ret.val[0] = (float64x2_t) __builtin_aarch64_get_qregoiv2df (__o, 0); 5209: ret.val[1] = (float64x2_t) __builtin_aarch64_get_qregoiv2df (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline poly64x2x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld2q_dup_p64 (const poly64_t * __a) 5209: { 5209: poly64x2x2_t ret; 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_ld2rv2di ((const __builtin_aarch64_simd_di *) __a); 5209: ret.val[0] = (poly64x2_t) __builtin_aarch64_get_qregoiv2di_pss (__o, 0); 5209: ret.val[1] = (poly64x2_t) __builtin_aarch64_get_qregoiv2di_pss (__o, 1); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline int64x1x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld3_dup_s64 (const int64_t * __a) 5209: { 5209: int64x1x3_t ret; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld3rdi ((const __builtin_aarch64_simd_di *) __a); 5209: ret.val[0] = (int64x1_t) __builtin_aarch64_get_dregcidi (__o, 0); 5209: ret.val[1] = (int64x1_t) __builtin_aarch64_get_dregcidi (__o, 1); 5209: ret.val[2] = (int64x1_t) __builtin_aarch64_get_dregcidi (__o, 2); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline uint64x1x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld3_dup_u64 (const uint64_t * __a) 5209: { 5209: uint64x1x3_t ret; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld3rdi ((const __builtin_aarch64_simd_di *) __a); 5209: ret.val[0] = (uint64x1_t) __builtin_aarch64_get_dregcidi (__o, 0); 5209: ret.val[1] = (uint64x1_t) __builtin_aarch64_get_dregcidi (__o, 1); 5209: ret.val[2] = (uint64x1_t) __builtin_aarch64_get_dregcidi (__o, 2); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline float64x1x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld3_dup_f64 (const float64_t * __a) 5209: { 5209: float64x1x3_t ret; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld3rdf ((const __builtin_aarch64_simd_df *) __a); 5209: ret.val[0] = (float64x1_t) {__builtin_aarch64_get_dregcidf (__o, 0)}; 5209: ret.val[1] = (float64x1_t) {__builtin_aarch64_get_dregcidf (__o, 1)}; 5209: ret.val[2] = (float64x1_t) {__builtin_aarch64_get_dregcidf (__o, 2)}; 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline int8x8x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld3_dup_s8 (const int8_t * __a) 5209: { 5209: int8x8x3_t ret; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld3rv8qi ((const __builtin_aarch64_simd_qi *) __a); 5209: ret.val[0] = (int8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 0); 5209: ret.val[1] = (int8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 1); 5209: ret.val[2] = (int8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 2); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline poly8x8x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld3_dup_p8 (const poly8_t * __a) 5209: { 5209: poly8x8x3_t ret; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld3rv8qi ((const __builtin_aarch64_simd_qi *) __a); 5209: ret.val[0] = (poly8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 0); 5209: ret.val[1] = (poly8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 1); 5209: ret.val[2] = (poly8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 2); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline int16x4x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld3_dup_s16 (const int16_t * __a) 5209: { 5209: int16x4x3_t ret; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld3rv4hi ((const __builtin_aarch64_simd_hi *) __a); 5209: ret.val[0] = (int16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 0); 5209: ret.val[1] = (int16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 1); 5209: ret.val[2] = (int16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 2); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline poly16x4x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld3_dup_p16 (const poly16_t * __a) 5209: { 5209: poly16x4x3_t ret; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld3rv4hi ((const __builtin_aarch64_simd_hi *) __a); 5209: ret.val[0] = (poly16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 0); 5209: ret.val[1] = (poly16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 1); 5209: ret.val[2] = (poly16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 2); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline int32x2x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld3_dup_s32 (const int32_t * __a) 5209: { 5209: int32x2x3_t ret; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld3rv2si ((const __builtin_aarch64_simd_si *) __a); 5209: ret.val[0] = (int32x2_t) __builtin_aarch64_get_dregciv2si (__o, 0); 5209: ret.val[1] = (int32x2_t) __builtin_aarch64_get_dregciv2si (__o, 1); 5209: ret.val[2] = (int32x2_t) __builtin_aarch64_get_dregciv2si (__o, 2); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline uint8x8x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld3_dup_u8 (const uint8_t * __a) 5209: { 5209: uint8x8x3_t ret; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld3rv8qi ((const __builtin_aarch64_simd_qi *) __a); 5209: ret.val[0] = (uint8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 0); 5209: ret.val[1] = (uint8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 1); 5209: ret.val[2] = (uint8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 2); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline uint16x4x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld3_dup_u16 (const uint16_t * __a) 5209: { 5209: uint16x4x3_t ret; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld3rv4hi ((const __builtin_aarch64_simd_hi *) __a); 5209: ret.val[0] = (uint16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 0); 5209: ret.val[1] = (uint16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 1); 5209: ret.val[2] = (uint16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 2); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline uint32x2x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld3_dup_u32 (const uint32_t * __a) 5209: { 5209: uint32x2x3_t ret; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld3rv2si ((const __builtin_aarch64_simd_si *) __a); 5209: ret.val[0] = (uint32x2_t) __builtin_aarch64_get_dregciv2si (__o, 0); 5209: ret.val[1] = (uint32x2_t) __builtin_aarch64_get_dregciv2si (__o, 1); 5209: ret.val[2] = (uint32x2_t) __builtin_aarch64_get_dregciv2si (__o, 2); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline float16x4x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld3_dup_f16 (const float16_t * __a) 5209: { 5209: float16x4x3_t ret; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld3rv4hf ((const __builtin_aarch64_simd_hf *) __a); 5209: ret.val[0] = (float16x4_t) __builtin_aarch64_get_dregciv4hf (__o, 0); 5209: ret.val[1] = (float16x4_t) __builtin_aarch64_get_dregciv4hf (__o, 1); 5209: ret.val[2] = (float16x4_t) __builtin_aarch64_get_dregciv4hf (__o, 2); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline float32x2x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld3_dup_f32 (const float32_t * __a) 5209: { 5209: float32x2x3_t ret; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld3rv2sf ((const __builtin_aarch64_simd_sf *) __a); 5209: ret.val[0] = (float32x2_t) __builtin_aarch64_get_dregciv2sf (__o, 0); 5209: ret.val[1] = (float32x2_t) __builtin_aarch64_get_dregciv2sf (__o, 1); 5209: ret.val[2] = (float32x2_t) __builtin_aarch64_get_dregciv2sf (__o, 2); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline poly64x1x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld3_dup_p64 (const poly64_t * __a) 5209: { 5209: poly64x1x3_t ret; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld3rv2di ((const __builtin_aarch64_simd_di *) __a); 5209: ret.val[0] = (poly64x1_t) __builtin_aarch64_get_dregcidi_pss (__o, 0); 5209: ret.val[1] = (poly64x1_t) __builtin_aarch64_get_dregcidi_pss (__o, 1); 5209: ret.val[2] = (poly64x1_t) __builtin_aarch64_get_dregcidi_pss (__o, 2); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline int8x16x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld3q_dup_s8 (const int8_t * __a) 5209: { 5209: int8x16x3_t ret; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld3rv16qi ((const __builtin_aarch64_simd_qi *) __a); 5209: ret.val[0] = (int8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 0); 5209: ret.val[1] = (int8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 1); 5209: ret.val[2] = (int8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 2); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline poly8x16x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld3q_dup_p8 (const poly8_t * __a) 5209: { 5209: poly8x16x3_t ret; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld3rv16qi ((const __builtin_aarch64_simd_qi *) __a); 5209: ret.val[0] = (poly8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 0); 5209: ret.val[1] = (poly8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 1); 5209: ret.val[2] = (poly8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 2); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline int16x8x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld3q_dup_s16 (const int16_t * __a) 5209: { 5209: int16x8x3_t ret; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld3rv8hi ((const __builtin_aarch64_simd_hi *) __a); 5209: ret.val[0] = (int16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 0); 5209: ret.val[1] = (int16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 1); 5209: ret.val[2] = (int16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 2); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline poly16x8x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld3q_dup_p16 (const poly16_t * __a) 5209: { 5209: poly16x8x3_t ret; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld3rv8hi ((const __builtin_aarch64_simd_hi *) __a); 5209: ret.val[0] = (poly16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 0); 5209: ret.val[1] = (poly16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 1); 5209: ret.val[2] = (poly16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 2); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline int32x4x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld3q_dup_s32 (const int32_t * __a) 5209: { 5209: int32x4x3_t ret; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld3rv4si ((const __builtin_aarch64_simd_si *) __a); 5209: ret.val[0] = (int32x4_t) __builtin_aarch64_get_qregciv4si (__o, 0); 5209: ret.val[1] = (int32x4_t) __builtin_aarch64_get_qregciv4si (__o, 1); 5209: ret.val[2] = (int32x4_t) __builtin_aarch64_get_qregciv4si (__o, 2); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline int64x2x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld3q_dup_s64 (const int64_t * __a) 5209: { 5209: int64x2x3_t ret; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld3rv2di ((const __builtin_aarch64_simd_di *) __a); 5209: ret.val[0] = (int64x2_t) __builtin_aarch64_get_qregciv2di (__o, 0); 5209: ret.val[1] = (int64x2_t) __builtin_aarch64_get_qregciv2di (__o, 1); 5209: ret.val[2] = (int64x2_t) __builtin_aarch64_get_qregciv2di (__o, 2); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline uint8x16x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld3q_dup_u8 (const uint8_t * __a) 5209: { 5209: uint8x16x3_t ret; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld3rv16qi ((const __builtin_aarch64_simd_qi *) __a); 5209: ret.val[0] = (uint8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 0); 5209: ret.val[1] = (uint8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 1); 5209: ret.val[2] = (uint8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 2); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline uint16x8x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld3q_dup_u16 (const uint16_t * __a) 5209: { 5209: uint16x8x3_t ret; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld3rv8hi ((const __builtin_aarch64_simd_hi *) __a); 5209: ret.val[0] = (uint16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 0); 5209: ret.val[1] = (uint16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 1); 5209: ret.val[2] = (uint16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 2); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline uint32x4x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld3q_dup_u32 (const uint32_t * __a) 5209: { 5209: uint32x4x3_t ret; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld3rv4si ((const __builtin_aarch64_simd_si *) __a); 5209: ret.val[0] = (uint32x4_t) __builtin_aarch64_get_qregciv4si (__o, 0); 5209: ret.val[1] = (uint32x4_t) __builtin_aarch64_get_qregciv4si (__o, 1); 5209: ret.val[2] = (uint32x4_t) __builtin_aarch64_get_qregciv4si (__o, 2); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline uint64x2x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld3q_dup_u64 (const uint64_t * __a) 5209: { 5209: uint64x2x3_t ret; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld3rv2di ((const __builtin_aarch64_simd_di *) __a); 5209: ret.val[0] = (uint64x2_t) __builtin_aarch64_get_qregciv2di (__o, 0); 5209: ret.val[1] = (uint64x2_t) __builtin_aarch64_get_qregciv2di (__o, 1); 5209: ret.val[2] = (uint64x2_t) __builtin_aarch64_get_qregciv2di (__o, 2); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline float16x8x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld3q_dup_f16 (const float16_t * __a) 5209: { 5209: float16x8x3_t ret; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld3rv8hf ((const __builtin_aarch64_simd_hf *) __a); 5209: ret.val[0] = (float16x8_t) __builtin_aarch64_get_qregciv8hf (__o, 0); 5209: ret.val[1] = (float16x8_t) __builtin_aarch64_get_qregciv8hf (__o, 1); 5209: ret.val[2] = (float16x8_t) __builtin_aarch64_get_qregciv8hf (__o, 2); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline float32x4x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld3q_dup_f32 (const float32_t * __a) 5209: { 5209: float32x4x3_t ret; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld3rv4sf ((const __builtin_aarch64_simd_sf *) __a); 5209: ret.val[0] = (float32x4_t) __builtin_aarch64_get_qregciv4sf (__o, 0); 5209: ret.val[1] = (float32x4_t) __builtin_aarch64_get_qregciv4sf (__o, 1); 5209: ret.val[2] = (float32x4_t) __builtin_aarch64_get_qregciv4sf (__o, 2); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline float64x2x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld3q_dup_f64 (const float64_t * __a) 5209: { 5209: float64x2x3_t ret; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld3rv2df ((const __builtin_aarch64_simd_df *) __a); 5209: ret.val[0] = (float64x2_t) __builtin_aarch64_get_qregciv2df (__o, 0); 5209: ret.val[1] = (float64x2_t) __builtin_aarch64_get_qregciv2df (__o, 1); 5209: ret.val[2] = (float64x2_t) __builtin_aarch64_get_qregciv2df (__o, 2); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline poly64x2x3_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld3q_dup_p64 (const poly64_t * __a) 5209: { 5209: poly64x2x3_t ret; 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_ld3rv2di ((const __builtin_aarch64_simd_di *) __a); 5209: ret.val[0] = (poly64x2_t) __builtin_aarch64_get_qregciv2di_pss (__o, 0); 5209: ret.val[1] = (poly64x2_t) __builtin_aarch64_get_qregciv2di_pss (__o, 1); 5209: ret.val[2] = (poly64x2_t) __builtin_aarch64_get_qregciv2di_pss (__o, 2); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline int64x1x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld4_dup_s64 (const int64_t * __a) 5209: { 5209: int64x1x4_t ret; 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_ld4rdi ((const __builtin_aarch64_simd_di *) __a); 5209: ret.val[0] = (int64x1_t) __builtin_aarch64_get_dregxidi (__o, 0); 5209: ret.val[1] = (int64x1_t) __builtin_aarch64_get_dregxidi (__o, 1); 5209: ret.val[2] = (int64x1_t) __builtin_aarch64_get_dregxidi (__o, 2); 5209: ret.val[3] = (int64x1_t) __builtin_aarch64_get_dregxidi (__o, 3); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline uint64x1x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld4_dup_u64 (const uint64_t * __a) 5209: { 5209: uint64x1x4_t ret; 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_ld4rdi ((const __builtin_aarch64_simd_di *) __a); 5209: ret.val[0] = (uint64x1_t) __builtin_aarch64_get_dregxidi (__o, 0); 5209: ret.val[1] = (uint64x1_t) __builtin_aarch64_get_dregxidi (__o, 1); 5209: ret.val[2] = (uint64x1_t) __builtin_aarch64_get_dregxidi (__o, 2); 5209: ret.val[3] = (uint64x1_t) __builtin_aarch64_get_dregxidi (__o, 3); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline float64x1x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld4_dup_f64 (const float64_t * __a) 5209: { 5209: float64x1x4_t ret; 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_ld4rdf ((const __builtin_aarch64_simd_df *) __a); 5209: ret.val[0] = (float64x1_t) {__builtin_aarch64_get_dregxidf (__o, 0)}; 5209: ret.val[1] = (float64x1_t) {__builtin_aarch64_get_dregxidf (__o, 1)}; 5209: ret.val[2] = (float64x1_t) {__builtin_aarch64_get_dregxidf (__o, 2)}; 5209: ret.val[3] = (float64x1_t) {__builtin_aarch64_get_dregxidf (__o, 3)}; 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline int8x8x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld4_dup_s8 (const int8_t * __a) 5209: { 5209: int8x8x4_t ret; 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_ld4rv8qi ((const __builtin_aarch64_simd_qi *) __a); 5209: ret.val[0] = (int8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 0); 5209: ret.val[1] = (int8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 1); 5209: ret.val[2] = (int8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 2); 5209: ret.val[3] = (int8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 3); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline poly8x8x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld4_dup_p8 (const poly8_t * __a) 5209: { 5209: poly8x8x4_t ret; 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_ld4rv8qi ((const __builtin_aarch64_simd_qi *) __a); 5209: ret.val[0] = (poly8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 0); 5209: ret.val[1] = (poly8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 1); 5209: ret.val[2] = (poly8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 2); 5209: ret.val[3] = (poly8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 3); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline int16x4x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld4_dup_s16 (const int16_t * __a) 5209: { 5209: int16x4x4_t ret; 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_ld4rv4hi ((const __builtin_aarch64_simd_hi *) __a); 5209: ret.val[0] = (int16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 0); 5209: ret.val[1] = (int16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 1); 5209: ret.val[2] = (int16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 2); 5209: ret.val[3] = (int16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 3); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline poly16x4x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld4_dup_p16 (const poly16_t * __a) 5209: { 5209: poly16x4x4_t ret; 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_ld4rv4hi ((const __builtin_aarch64_simd_hi *) __a); 5209: ret.val[0] = (poly16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 0); 5209: ret.val[1] = (poly16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 1); 5209: ret.val[2] = (poly16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 2); 5209: ret.val[3] = (poly16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 3); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline int32x2x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld4_dup_s32 (const int32_t * __a) 5209: { 5209: int32x2x4_t ret; 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_ld4rv2si ((const __builtin_aarch64_simd_si *) __a); 5209: ret.val[0] = (int32x2_t) __builtin_aarch64_get_dregxiv2si (__o, 0); 5209: ret.val[1] = (int32x2_t) __builtin_aarch64_get_dregxiv2si (__o, 1); 5209: ret.val[2] = (int32x2_t) __builtin_aarch64_get_dregxiv2si (__o, 2); 5209: ret.val[3] = (int32x2_t) __builtin_aarch64_get_dregxiv2si (__o, 3); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline uint8x8x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld4_dup_u8 (const uint8_t * __a) 5209: { 5209: uint8x8x4_t ret; 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_ld4rv8qi ((const __builtin_aarch64_simd_qi *) __a); 5209: ret.val[0] = (uint8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 0); 5209: ret.val[1] = (uint8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 1); 5209: ret.val[2] = (uint8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 2); 5209: ret.val[3] = (uint8x8_t) __builtin_aarch64_get_dregxiv8qi (__o, 3); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline uint16x4x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld4_dup_u16 (const uint16_t * __a) 5209: { 5209: uint16x4x4_t ret; 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_ld4rv4hi ((const __builtin_aarch64_simd_hi *) __a); 5209: ret.val[0] = (uint16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 0); 5209: ret.val[1] = (uint16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 1); 5209: ret.val[2] = (uint16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 2); 5209: ret.val[3] = (uint16x4_t) __builtin_aarch64_get_dregxiv4hi (__o, 3); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline uint32x2x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld4_dup_u32 (const uint32_t * __a) 5209: { 5209: uint32x2x4_t ret; 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_ld4rv2si ((const __builtin_aarch64_simd_si *) __a); 5209: ret.val[0] = (uint32x2_t) __builtin_aarch64_get_dregxiv2si (__o, 0); 5209: ret.val[1] = (uint32x2_t) __builtin_aarch64_get_dregxiv2si (__o, 1); 5209: ret.val[2] = (uint32x2_t) __builtin_aarch64_get_dregxiv2si (__o, 2); 5209: ret.val[3] = (uint32x2_t) __builtin_aarch64_get_dregxiv2si (__o, 3); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline float16x4x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld4_dup_f16 (const float16_t * __a) 5209: { 5209: float16x4x4_t ret; 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_ld4rv4hf ((const __builtin_aarch64_simd_hf *) __a); 5209: ret.val[0] = (float16x4_t) __builtin_aarch64_get_dregxiv4hf (__o, 0); 5209: ret.val[1] = (float16x4_t) __builtin_aarch64_get_dregxiv4hf (__o, 1); 5209: ret.val[2] = (float16x4_t) __builtin_aarch64_get_dregxiv4hf (__o, 2); 5209: ret.val[3] = (float16x4_t) __builtin_aarch64_get_dregxiv4hf (__o, 3); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline float32x2x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld4_dup_f32 (const float32_t * __a) 5209: { 5209: float32x2x4_t ret; 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_ld4rv2sf ((const __builtin_aarch64_simd_sf *) __a); 5209: ret.val[0] = (float32x2_t) __builtin_aarch64_get_dregxiv2sf (__o, 0); 5209: ret.val[1] = (float32x2_t) __builtin_aarch64_get_dregxiv2sf (__o, 1); 5209: ret.val[2] = (float32x2_t) __builtin_aarch64_get_dregxiv2sf (__o, 2); 5209: ret.val[3] = (float32x2_t) __builtin_aarch64_get_dregxiv2sf (__o, 3); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline poly64x1x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld4_dup_p64 (const poly64_t * __a) 5209: { 5209: poly64x1x4_t ret; 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_ld4rv2di ((const __builtin_aarch64_simd_di *) __a); 5209: ret.val[0] = (poly64x1_t) __builtin_aarch64_get_dregxidi_pss (__o, 0); 5209: ret.val[1] = (poly64x1_t) __builtin_aarch64_get_dregxidi_pss (__o, 1); 5209: ret.val[2] = (poly64x1_t) __builtin_aarch64_get_dregxidi_pss (__o, 2); 5209: ret.val[3] = (poly64x1_t) __builtin_aarch64_get_dregxidi_pss (__o, 3); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline int8x16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld4q_dup_s8 (const int8_t * __a) 5209: { 5209: int8x16x4_t ret; 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_ld4rv16qi ((const __builtin_aarch64_simd_qi *) __a); 5209: ret.val[0] = (int8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 0); 5209: ret.val[1] = (int8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 1); 5209: ret.val[2] = (int8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 2); 5209: ret.val[3] = (int8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 3); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline poly8x16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld4q_dup_p8 (const poly8_t * __a) 5209: { 5209: poly8x16x4_t ret; 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_ld4rv16qi ((const __builtin_aarch64_simd_qi *) __a); 5209: ret.val[0] = (poly8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 0); 5209: ret.val[1] = (poly8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 1); 5209: ret.val[2] = (poly8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 2); 5209: ret.val[3] = (poly8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 3); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline int16x8x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld4q_dup_s16 (const int16_t * __a) 5209: { 5209: int16x8x4_t ret; 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_ld4rv8hi ((const __builtin_aarch64_simd_hi *) __a); 5209: ret.val[0] = (int16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 0); 5209: ret.val[1] = (int16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 1); 5209: ret.val[2] = (int16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 2); 5209: ret.val[3] = (int16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 3); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline poly16x8x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld4q_dup_p16 (const poly16_t * __a) 5209: { 5209: poly16x8x4_t ret; 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_ld4rv8hi ((const __builtin_aarch64_simd_hi *) __a); 5209: ret.val[0] = (poly16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 0); 5209: ret.val[1] = (poly16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 1); 5209: ret.val[2] = (poly16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 2); 5209: ret.val[3] = (poly16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 3); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline int32x4x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld4q_dup_s32 (const int32_t * __a) 5209: { 5209: int32x4x4_t ret; 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_ld4rv4si ((const __builtin_aarch64_simd_si *) __a); 5209: ret.val[0] = (int32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 0); 5209: ret.val[1] = (int32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 1); 5209: ret.val[2] = (int32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 2); 5209: ret.val[3] = (int32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 3); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline int64x2x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld4q_dup_s64 (const int64_t * __a) 5209: { 5209: int64x2x4_t ret; 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_ld4rv2di ((const __builtin_aarch64_simd_di *) __a); 5209: ret.val[0] = (int64x2_t) __builtin_aarch64_get_qregxiv2di (__o, 0); 5209: ret.val[1] = (int64x2_t) __builtin_aarch64_get_qregxiv2di (__o, 1); 5209: ret.val[2] = (int64x2_t) __builtin_aarch64_get_qregxiv2di (__o, 2); 5209: ret.val[3] = (int64x2_t) __builtin_aarch64_get_qregxiv2di (__o, 3); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline uint8x16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld4q_dup_u8 (const uint8_t * __a) 5209: { 5209: uint8x16x4_t ret; 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_ld4rv16qi ((const __builtin_aarch64_simd_qi *) __a); 5209: ret.val[0] = (uint8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 0); 5209: ret.val[1] = (uint8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 1); 5209: ret.val[2] = (uint8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 2); 5209: ret.val[3] = (uint8x16_t) __builtin_aarch64_get_qregxiv16qi (__o, 3); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline uint16x8x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld4q_dup_u16 (const uint16_t * __a) 5209: { 5209: uint16x8x4_t ret; 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_ld4rv8hi ((const __builtin_aarch64_simd_hi *) __a); 5209: ret.val[0] = (uint16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 0); 5209: ret.val[1] = (uint16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 1); 5209: ret.val[2] = (uint16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 2); 5209: ret.val[3] = (uint16x8_t) __builtin_aarch64_get_qregxiv8hi (__o, 3); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline uint32x4x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld4q_dup_u32 (const uint32_t * __a) 5209: { 5209: uint32x4x4_t ret; 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_ld4rv4si ((const __builtin_aarch64_simd_si *) __a); 5209: ret.val[0] = (uint32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 0); 5209: ret.val[1] = (uint32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 1); 5209: ret.val[2] = (uint32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 2); 5209: ret.val[3] = (uint32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 3); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline uint64x2x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld4q_dup_u64 (const uint64_t * __a) 5209: { 5209: uint64x2x4_t ret; 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_ld4rv2di ((const __builtin_aarch64_simd_di *) __a); 5209: ret.val[0] = (uint64x2_t) __builtin_aarch64_get_qregxiv2di (__o, 0); 5209: ret.val[1] = (uint64x2_t) __builtin_aarch64_get_qregxiv2di (__o, 1); 5209: ret.val[2] = (uint64x2_t) __builtin_aarch64_get_qregxiv2di (__o, 2); 5209: ret.val[3] = (uint64x2_t) __builtin_aarch64_get_qregxiv2di (__o, 3); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline float16x8x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld4q_dup_f16 (const float16_t * __a) 5209: { 5209: float16x8x4_t ret; 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_ld4rv8hf ((const __builtin_aarch64_simd_hf *) __a); 5209: ret.val[0] = (float16x8_t) __builtin_aarch64_get_qregxiv8hf (__o, 0); 5209: ret.val[1] = (float16x8_t) __builtin_aarch64_get_qregxiv8hf (__o, 1); 5209: ret.val[2] = (float16x8_t) __builtin_aarch64_get_qregxiv8hf (__o, 2); 5209: ret.val[3] = (float16x8_t) __builtin_aarch64_get_qregxiv8hf (__o, 3); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline float32x4x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld4q_dup_f32 (const float32_t * __a) 5209: { 5209: float32x4x4_t ret; 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_ld4rv4sf ((const __builtin_aarch64_simd_sf *) __a); 5209: ret.val[0] = (float32x4_t) __builtin_aarch64_get_qregxiv4sf (__o, 0); 5209: ret.val[1] = (float32x4_t) __builtin_aarch64_get_qregxiv4sf (__o, 1); 5209: ret.val[2] = (float32x4_t) __builtin_aarch64_get_qregxiv4sf (__o, 2); 5209: ret.val[3] = (float32x4_t) __builtin_aarch64_get_qregxiv4sf (__o, 3); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline float64x2x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld4q_dup_f64 (const float64_t * __a) 5209: { 5209: float64x2x4_t ret; 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_ld4rv2df ((const __builtin_aarch64_simd_df *) __a); 5209: ret.val[0] = (float64x2_t) __builtin_aarch64_get_qregxiv2df (__o, 0); 5209: ret.val[1] = (float64x2_t) __builtin_aarch64_get_qregxiv2df (__o, 1); 5209: ret.val[2] = (float64x2_t) __builtin_aarch64_get_qregxiv2df (__o, 2); 5209: ret.val[3] = (float64x2_t) __builtin_aarch64_get_qregxiv2df (__o, 3); 5209: return ret; 5209: } 5209: 5209: __extension__ extern __inline poly64x2x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vld4q_dup_p64 (const poly64_t * __a) 5209: { 5209: poly64x2x4_t ret; 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_ld4rv2di ((const __builtin_aarch64_simd_di *) __a); 5209: ret.val[0] = (poly64x2_t) __builtin_aarch64_get_qregxiv2di_pss (__o, 0); 5209: ret.val[1] = (poly64x2_t) __builtin_aarch64_get_qregxiv2di_pss (__o, 1); 5209: ret.val[2] = (poly64x2_t) __builtin_aarch64_get_qregxiv2di_pss (__o, 2); 5209: ret.val[3] = (poly64x2_t) __builtin_aarch64_get_qregxiv2di_pss (__o, 3); 5209: return ret; 5209: } 5209: # 20869 "/usr/lib/gcc/aarch64-linux-gnu/10/include/arm_neon.h" 3 4 5209: __extension__ extern __inline float16x4x2_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld2_lane_f16 (const float16_t * __ptr, float16x4x2_t __b, const int __c) { __builtin_aarch64_simd_oi __o; float16x8x2_t __temp; __temp.val[0] = vcombine_f16 (__b.val[0], vcreate_f16 (0)); __temp.val[1] = vcombine_f16 (__b.val[1], vcreate_f16 (0)); __o = __builtin_aarch64_set_qregoiv8hf (__o, (float16x8_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregoiv8hf (__o, (float16x8_t) __temp.val[1], 1); __o = __builtin_aarch64_ld2_lanev4hf ( (__builtin_aarch64_simd_hf *) __ptr, __o, __c); __b.val[0] = (float16x4_t) __builtin_aarch64_get_dregoidi (__o, 0); __b.val[1] = (float16x4_t) __builtin_aarch64_get_dregoidi (__o, 1); return __b; } 5209: 5209: __extension__ extern __inline float32x2x2_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld2_lane_f32 (const float32_t * __ptr, float32x2x2_t __b, const int __c) { __builtin_aarch64_simd_oi __o; float32x4x2_t __temp; __temp.val[0] = vcombine_f32 (__b.val[0], vcreate_f32 (0)); __temp.val[1] = vcombine_f32 (__b.val[1], vcreate_f32 (0)); __o = __builtin_aarch64_set_qregoiv4sf (__o, (float32x4_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregoiv4sf (__o, (float32x4_t) __temp.val[1], 1); __o = __builtin_aarch64_ld2_lanev2sf ( (__builtin_aarch64_simd_sf *) __ptr, __o, __c); __b.val[0] = (float32x2_t) __builtin_aarch64_get_dregoidi (__o, 0); __b.val[1] = (float32x2_t) __builtin_aarch64_get_dregoidi (__o, 1); return __b; } 5209: 5209: __extension__ extern __inline float64x1x2_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld2_lane_f64 (const float64_t * __ptr, float64x1x2_t __b, const int __c) { __builtin_aarch64_simd_oi __o; float64x2x2_t __temp; __temp.val[0] = vcombine_f64 (__b.val[0], vcreate_f64 (0)); __temp.val[1] = vcombine_f64 (__b.val[1], vcreate_f64 (0)); __o = __builtin_aarch64_set_qregoiv2df (__o, (float64x2_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregoiv2df (__o, (float64x2_t) __temp.val[1], 1); __o = __builtin_aarch64_ld2_lanedf ( (__builtin_aarch64_simd_df *) __ptr, __o, __c); __b.val[0] = (float64x1_t) __builtin_aarch64_get_dregoidi (__o, 0); __b.val[1] = (float64x1_t) __builtin_aarch64_get_dregoidi (__o, 1); return __b; } 5209: 5209: __extension__ extern __inline poly8x8x2_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld2_lane_p8 (const poly8_t * __ptr, poly8x8x2_t __b, const int __c) { __builtin_aarch64_simd_oi __o; poly8x16x2_t __temp; __temp.val[0] = vcombine_p8 (__b.val[0], vcreate_p8 (0)); __temp.val[1] = vcombine_p8 (__b.val[1], vcreate_p8 (0)); __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __temp.val[1], 1); __o = __builtin_aarch64_ld2_lanev8qi ( (__builtin_aarch64_simd_qi *) __ptr, __o, __c); __b.val[0] = (poly8x8_t) __builtin_aarch64_get_dregoidi (__o, 0); __b.val[1] = (poly8x8_t) __builtin_aarch64_get_dregoidi (__o, 1); return __b; } 5209: 5209: __extension__ extern __inline poly16x4x2_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld2_lane_p16 (const poly16_t * __ptr, poly16x4x2_t __b, const int __c) { __builtin_aarch64_simd_oi __o; poly16x8x2_t __temp; __temp.val[0] = vcombine_p16 (__b.val[0], vcreate_p16 (0)); __temp.val[1] = vcombine_p16 (__b.val[1], vcreate_p16 (0)); __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __temp.val[1], 1); __o = __builtin_aarch64_ld2_lanev4hi ( (__builtin_aarch64_simd_hi *) __ptr, __o, __c); __b.val[0] = (poly16x4_t) __builtin_aarch64_get_dregoidi (__o, 0); __b.val[1] = (poly16x4_t) __builtin_aarch64_get_dregoidi (__o, 1); return __b; } 5209: 5209: __extension__ extern __inline poly64x1x2_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld2_lane_p64 (const poly64_t * __ptr, poly64x1x2_t __b, const int __c) { __builtin_aarch64_simd_oi __o; poly64x2x2_t __temp; __temp.val[0] = vcombine_p64 (__b.val[0], vcreate_p64 (0)); __temp.val[1] = vcombine_p64 (__b.val[1], vcreate_p64 (0)); __o = __builtin_aarch64_set_qregoiv2di_ssps (__o, (poly64x2_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregoiv2di_ssps (__o, (poly64x2_t) __temp.val[1], 1); __o = __builtin_aarch64_ld2_lanedi ( (__builtin_aarch64_simd_di *) __ptr, __o, __c); __b.val[0] = (poly64x1_t) __builtin_aarch64_get_dregoidi (__o, 0); __b.val[1] = (poly64x1_t) __builtin_aarch64_get_dregoidi (__o, 1); return __b; } 5209: 5209: __extension__ extern __inline int8x8x2_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld2_lane_s8 (const int8_t * __ptr, int8x8x2_t __b, const int __c) { __builtin_aarch64_simd_oi __o; int8x16x2_t __temp; __temp.val[0] = vcombine_s8 (__b.val[0], vcreate_s8 (0)); __temp.val[1] = vcombine_s8 (__b.val[1], vcreate_s8 (0)); __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __temp.val[1], 1); __o = __builtin_aarch64_ld2_lanev8qi ( (__builtin_aarch64_simd_qi *) __ptr, __o, __c); __b.val[0] = (int8x8_t) __builtin_aarch64_get_dregoidi (__o, 0); __b.val[1] = (int8x8_t) __builtin_aarch64_get_dregoidi (__o, 1); return __b; } 5209: 5209: __extension__ extern __inline int16x4x2_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld2_lane_s16 (const int16_t * __ptr, int16x4x2_t __b, const int __c) { __builtin_aarch64_simd_oi __o; int16x8x2_t __temp; __temp.val[0] = vcombine_s16 (__b.val[0], vcreate_s16 (0)); __temp.val[1] = vcombine_s16 (__b.val[1], vcreate_s16 (0)); __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __temp.val[1], 1); __o = __builtin_aarch64_ld2_lanev4hi ( (__builtin_aarch64_simd_hi *) __ptr, __o, __c); __b.val[0] = (int16x4_t) __builtin_aarch64_get_dregoidi (__o, 0); __b.val[1] = (int16x4_t) __builtin_aarch64_get_dregoidi (__o, 1); return __b; } 5209: 5209: __extension__ extern __inline int32x2x2_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld2_lane_s32 (const int32_t * __ptr, int32x2x2_t __b, const int __c) { __builtin_aarch64_simd_oi __o; int32x4x2_t __temp; __temp.val[0] = vcombine_s32 (__b.val[0], vcreate_s32 (0)); __temp.val[1] = vcombine_s32 (__b.val[1], vcreate_s32 (0)); __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __temp.val[1], 1); __o = __builtin_aarch64_ld2_lanev2si ( (__builtin_aarch64_simd_si *) __ptr, __o, __c); __b.val[0] = (int32x2_t) __builtin_aarch64_get_dregoidi (__o, 0); __b.val[1] = (int32x2_t) __builtin_aarch64_get_dregoidi (__o, 1); return __b; } 5209: 5209: __extension__ extern __inline int64x1x2_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld2_lane_s64 (const int64_t * __ptr, int64x1x2_t __b, const int __c) { __builtin_aarch64_simd_oi __o; int64x2x2_t __temp; __temp.val[0] = vcombine_s64 (__b.val[0], vcreate_s64 (0)); __temp.val[1] = vcombine_s64 (__b.val[1], vcreate_s64 (0)); __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) __temp.val[1], 1); __o = __builtin_aarch64_ld2_lanedi ( (__builtin_aarch64_simd_di *) __ptr, __o, __c); __b.val[0] = (int64x1_t) __builtin_aarch64_get_dregoidi (__o, 0); __b.val[1] = (int64x1_t) __builtin_aarch64_get_dregoidi (__o, 1); return __b; } 5209: 5209: __extension__ extern __inline uint8x8x2_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld2_lane_u8 (const uint8_t * __ptr, uint8x8x2_t __b, const int __c) { __builtin_aarch64_simd_oi __o; uint8x16x2_t __temp; __temp.val[0] = vcombine_u8 (__b.val[0], vcreate_u8 (0)); __temp.val[1] = vcombine_u8 (__b.val[1], vcreate_u8 (0)); __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __temp.val[1], 1); __o = __builtin_aarch64_ld2_lanev8qi ( (__builtin_aarch64_simd_qi *) __ptr, __o, __c); __b.val[0] = (uint8x8_t) __builtin_aarch64_get_dregoidi (__o, 0); __b.val[1] = (uint8x8_t) __builtin_aarch64_get_dregoidi (__o, 1); return __b; } 5209: 5209: __extension__ extern __inline uint16x4x2_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld2_lane_u16 (const uint16_t * __ptr, uint16x4x2_t __b, const int __c) { __builtin_aarch64_simd_oi __o; uint16x8x2_t __temp; __temp.val[0] = vcombine_u16 (__b.val[0], vcreate_u16 (0)); __temp.val[1] = vcombine_u16 (__b.val[1], vcreate_u16 (0)); __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __temp.val[1], 1); __o = __builtin_aarch64_ld2_lanev4hi ( (__builtin_aarch64_simd_hi *) __ptr, __o, __c); __b.val[0] = (uint16x4_t) __builtin_aarch64_get_dregoidi (__o, 0); __b.val[1] = (uint16x4_t) __builtin_aarch64_get_dregoidi (__o, 1); return __b; } 5209: 5209: __extension__ extern __inline uint32x2x2_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld2_lane_u32 (const uint32_t * __ptr, uint32x2x2_t __b, const int __c) { __builtin_aarch64_simd_oi __o; uint32x4x2_t __temp; __temp.val[0] = vcombine_u32 (__b.val[0], vcreate_u32 (0)); __temp.val[1] = vcombine_u32 (__b.val[1], vcreate_u32 (0)); __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __temp.val[1], 1); __o = __builtin_aarch64_ld2_lanev2si ( (__builtin_aarch64_simd_si *) __ptr, __o, __c); __b.val[0] = (uint32x2_t) __builtin_aarch64_get_dregoidi (__o, 0); __b.val[1] = (uint32x2_t) __builtin_aarch64_get_dregoidi (__o, 1); return __b; } 5209: 5209: __extension__ extern __inline uint64x1x2_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld2_lane_u64 (const uint64_t * __ptr, uint64x1x2_t __b, const int __c) { __builtin_aarch64_simd_oi __o; uint64x2x2_t __temp; __temp.val[0] = vcombine_u64 (__b.val[0], vcreate_u64 (0)); __temp.val[1] = vcombine_u64 (__b.val[1], vcreate_u64 (0)); __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) __temp.val[1], 1); __o = __builtin_aarch64_ld2_lanedi ( (__builtin_aarch64_simd_di *) __ptr, __o, __c); __b.val[0] = (uint64x1_t) __builtin_aarch64_get_dregoidi (__o, 0); __b.val[1] = (uint64x1_t) __builtin_aarch64_get_dregoidi (__o, 1); return __b; } 5209: # 20918 "/usr/lib/gcc/aarch64-linux-gnu/10/include/arm_neon.h" 3 4 5209: __extension__ extern __inline float16x8x2_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld2q_lane_f16 (const float16_t * __ptr, float16x8x2_t __b, const int __c) { __builtin_aarch64_simd_oi __o; float16x8x2_t ret; __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __b.val[0], 0); __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __b.val[1], 1); __o = __builtin_aarch64_ld2_lanev8hf ( (__builtin_aarch64_simd_hf *) __ptr, __o, __c); ret.val[0] = (float16x8_t) __builtin_aarch64_get_qregoiv4si (__o, 0); ret.val[1] = (float16x8_t) __builtin_aarch64_get_qregoiv4si (__o, 1); return ret; } 5209: __extension__ extern __inline float32x4x2_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld2q_lane_f32 (const float32_t * __ptr, float32x4x2_t __b, const int __c) { __builtin_aarch64_simd_oi __o; float32x4x2_t ret; __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __b.val[0], 0); __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __b.val[1], 1); __o = __builtin_aarch64_ld2_lanev4sf ( (__builtin_aarch64_simd_sf *) __ptr, __o, __c); ret.val[0] = (float32x4_t) __builtin_aarch64_get_qregoiv4si (__o, 0); ret.val[1] = (float32x4_t) __builtin_aarch64_get_qregoiv4si (__o, 1); return ret; } 5209: __extension__ extern __inline float64x2x2_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld2q_lane_f64 (const float64_t * __ptr, float64x2x2_t __b, const int __c) { __builtin_aarch64_simd_oi __o; float64x2x2_t ret; __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __b.val[0], 0); __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __b.val[1], 1); __o = __builtin_aarch64_ld2_lanev2df ( (__builtin_aarch64_simd_df *) __ptr, __o, __c); ret.val[0] = (float64x2_t) __builtin_aarch64_get_qregoiv4si (__o, 0); ret.val[1] = (float64x2_t) __builtin_aarch64_get_qregoiv4si (__o, 1); return ret; } 5209: __extension__ extern __inline poly8x16x2_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld2q_lane_p8 (const poly8_t * __ptr, poly8x16x2_t __b, const int __c) { __builtin_aarch64_simd_oi __o; poly8x16x2_t ret; __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __b.val[0], 0); __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __b.val[1], 1); __o = __builtin_aarch64_ld2_lanev16qi ( (__builtin_aarch64_simd_qi *) __ptr, __o, __c); ret.val[0] = (poly8x16_t) __builtin_aarch64_get_qregoiv4si (__o, 0); ret.val[1] = (poly8x16_t) __builtin_aarch64_get_qregoiv4si (__o, 1); return ret; } 5209: __extension__ extern __inline poly16x8x2_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld2q_lane_p16 (const poly16_t * __ptr, poly16x8x2_t __b, const int __c) { __builtin_aarch64_simd_oi __o; poly16x8x2_t ret; __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __b.val[0], 0); __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __b.val[1], 1); __o = __builtin_aarch64_ld2_lanev8hi ( (__builtin_aarch64_simd_hi *) __ptr, __o, __c); ret.val[0] = (poly16x8_t) __builtin_aarch64_get_qregoiv4si (__o, 0); ret.val[1] = (poly16x8_t) __builtin_aarch64_get_qregoiv4si (__o, 1); return ret; } 5209: __extension__ extern __inline poly64x2x2_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld2q_lane_p64 (const poly64_t * __ptr, poly64x2x2_t __b, const int __c) { __builtin_aarch64_simd_oi __o; poly64x2x2_t ret; __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __b.val[0], 0); __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __b.val[1], 1); __o = __builtin_aarch64_ld2_lanev2di ( (__builtin_aarch64_simd_di *) __ptr, __o, __c); ret.val[0] = (poly64x2_t) __builtin_aarch64_get_qregoiv4si (__o, 0); ret.val[1] = (poly64x2_t) __builtin_aarch64_get_qregoiv4si (__o, 1); return ret; } 5209: __extension__ extern __inline int8x16x2_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld2q_lane_s8 (const int8_t * __ptr, int8x16x2_t __b, const int __c) { __builtin_aarch64_simd_oi __o; int8x16x2_t ret; __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __b.val[0], 0); __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __b.val[1], 1); __o = __builtin_aarch64_ld2_lanev16qi ( (__builtin_aarch64_simd_qi *) __ptr, __o, __c); ret.val[0] = (int8x16_t) __builtin_aarch64_get_qregoiv4si (__o, 0); ret.val[1] = (int8x16_t) __builtin_aarch64_get_qregoiv4si (__o, 1); return ret; } 5209: __extension__ extern __inline int16x8x2_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld2q_lane_s16 (const int16_t * __ptr, int16x8x2_t __b, const int __c) { __builtin_aarch64_simd_oi __o; int16x8x2_t ret; __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __b.val[0], 0); __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __b.val[1], 1); __o = __builtin_aarch64_ld2_lanev8hi ( (__builtin_aarch64_simd_hi *) __ptr, __o, __c); ret.val[0] = (int16x8_t) __builtin_aarch64_get_qregoiv4si (__o, 0); ret.val[1] = (int16x8_t) __builtin_aarch64_get_qregoiv4si (__o, 1); return ret; } 5209: __extension__ extern __inline int32x4x2_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld2q_lane_s32 (const int32_t * __ptr, int32x4x2_t __b, const int __c) { __builtin_aarch64_simd_oi __o; int32x4x2_t ret; __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __b.val[0], 0); __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __b.val[1], 1); __o = __builtin_aarch64_ld2_lanev4si ( (__builtin_aarch64_simd_si *) __ptr, __o, __c); ret.val[0] = (int32x4_t) __builtin_aarch64_get_qregoiv4si (__o, 0); ret.val[1] = (int32x4_t) __builtin_aarch64_get_qregoiv4si (__o, 1); return ret; } 5209: __extension__ extern __inline int64x2x2_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld2q_lane_s64 (const int64_t * __ptr, int64x2x2_t __b, const int __c) { __builtin_aarch64_simd_oi __o; int64x2x2_t ret; __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __b.val[0], 0); __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __b.val[1], 1); __o = __builtin_aarch64_ld2_lanev2di ( (__builtin_aarch64_simd_di *) __ptr, __o, __c); ret.val[0] = (int64x2_t) __builtin_aarch64_get_qregoiv4si (__o, 0); ret.val[1] = (int64x2_t) __builtin_aarch64_get_qregoiv4si (__o, 1); return ret; } 5209: __extension__ extern __inline uint8x16x2_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld2q_lane_u8 (const uint8_t * __ptr, uint8x16x2_t __b, const int __c) { __builtin_aarch64_simd_oi __o; uint8x16x2_t ret; __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __b.val[0], 0); __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __b.val[1], 1); __o = __builtin_aarch64_ld2_lanev16qi ( (__builtin_aarch64_simd_qi *) __ptr, __o, __c); ret.val[0] = (uint8x16_t) __builtin_aarch64_get_qregoiv4si (__o, 0); ret.val[1] = (uint8x16_t) __builtin_aarch64_get_qregoiv4si (__o, 1); return ret; } 5209: __extension__ extern __inline uint16x8x2_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld2q_lane_u16 (const uint16_t * __ptr, uint16x8x2_t __b, const int __c) { __builtin_aarch64_simd_oi __o; uint16x8x2_t ret; __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __b.val[0], 0); __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __b.val[1], 1); __o = __builtin_aarch64_ld2_lanev8hi ( (__builtin_aarch64_simd_hi *) __ptr, __o, __c); ret.val[0] = (uint16x8_t) __builtin_aarch64_get_qregoiv4si (__o, 0); ret.val[1] = (uint16x8_t) __builtin_aarch64_get_qregoiv4si (__o, 1); return ret; } 5209: __extension__ extern __inline uint32x4x2_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld2q_lane_u32 (const uint32_t * __ptr, uint32x4x2_t __b, const int __c) { __builtin_aarch64_simd_oi __o; uint32x4x2_t ret; __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __b.val[0], 0); __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __b.val[1], 1); __o = __builtin_aarch64_ld2_lanev4si ( (__builtin_aarch64_simd_si *) __ptr, __o, __c); ret.val[0] = (uint32x4_t) __builtin_aarch64_get_qregoiv4si (__o, 0); ret.val[1] = (uint32x4_t) __builtin_aarch64_get_qregoiv4si (__o, 1); return ret; } 5209: __extension__ extern __inline uint64x2x2_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld2q_lane_u64 (const uint64_t * __ptr, uint64x2x2_t __b, const int __c) { __builtin_aarch64_simd_oi __o; uint64x2x2_t ret; __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __b.val[0], 0); __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __b.val[1], 1); __o = __builtin_aarch64_ld2_lanev2di ( (__builtin_aarch64_simd_di *) __ptr, __o, __c); ret.val[0] = (uint64x2_t) __builtin_aarch64_get_qregoiv4si (__o, 0); ret.val[1] = (uint64x2_t) __builtin_aarch64_get_qregoiv4si (__o, 1); return ret; } 5209: # 20968 "/usr/lib/gcc/aarch64-linux-gnu/10/include/arm_neon.h" 3 4 5209: __extension__ extern __inline float16x4x3_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld3_lane_f16 (const float16_t * __ptr, float16x4x3_t __b, const int __c) { __builtin_aarch64_simd_ci __o; float16x8x3_t __temp; __temp.val[0] = vcombine_f16 (__b.val[0], vcreate_f16 (0)); __temp.val[1] = vcombine_f16 (__b.val[1], vcreate_f16 (0)); __temp.val[2] = vcombine_f16 (__b.val[2], vcreate_f16 (0)); __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) __temp.val[1], 1); __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) __temp.val[2], 2); __o = __builtin_aarch64_ld3_lanev4hf ( (__builtin_aarch64_simd_hf *) __ptr, __o, __c); __b.val[0] = (float16x4_t) __builtin_aarch64_get_dregcidi (__o, 0); __b.val[1] = (float16x4_t) __builtin_aarch64_get_dregcidi (__o, 1); __b.val[2] = (float16x4_t) __builtin_aarch64_get_dregcidi (__o, 2); return __b; } 5209: 5209: __extension__ extern __inline float32x2x3_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld3_lane_f32 (const float32_t * __ptr, float32x2x3_t __b, const int __c) { __builtin_aarch64_simd_ci __o; float32x4x3_t __temp; __temp.val[0] = vcombine_f32 (__b.val[0], vcreate_f32 (0)); __temp.val[1] = vcombine_f32 (__b.val[1], vcreate_f32 (0)); __temp.val[2] = vcombine_f32 (__b.val[2], vcreate_f32 (0)); __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) __temp.val[1], 1); __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) __temp.val[2], 2); __o = __builtin_aarch64_ld3_lanev2sf ( (__builtin_aarch64_simd_sf *) __ptr, __o, __c); __b.val[0] = (float32x2_t) __builtin_aarch64_get_dregcidi (__o, 0); __b.val[1] = (float32x2_t) __builtin_aarch64_get_dregcidi (__o, 1); __b.val[2] = (float32x2_t) __builtin_aarch64_get_dregcidi (__o, 2); return __b; } 5209: 5209: __extension__ extern __inline float64x1x3_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld3_lane_f64 (const float64_t * __ptr, float64x1x3_t __b, const int __c) { __builtin_aarch64_simd_ci __o; float64x2x3_t __temp; __temp.val[0] = vcombine_f64 (__b.val[0], vcreate_f64 (0)); __temp.val[1] = vcombine_f64 (__b.val[1], vcreate_f64 (0)); __temp.val[2] = vcombine_f64 (__b.val[2], vcreate_f64 (0)); __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) __temp.val[1], 1); __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) __temp.val[2], 2); __o = __builtin_aarch64_ld3_lanedf ( (__builtin_aarch64_simd_df *) __ptr, __o, __c); __b.val[0] = (float64x1_t) __builtin_aarch64_get_dregcidi (__o, 0); __b.val[1] = (float64x1_t) __builtin_aarch64_get_dregcidi (__o, 1); __b.val[2] = (float64x1_t) __builtin_aarch64_get_dregcidi (__o, 2); return __b; } 5209: 5209: __extension__ extern __inline poly8x8x3_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld3_lane_p8 (const poly8_t * __ptr, poly8x8x3_t __b, const int __c) { __builtin_aarch64_simd_ci __o; poly8x16x3_t __temp; __temp.val[0] = vcombine_p8 (__b.val[0], vcreate_p8 (0)); __temp.val[1] = vcombine_p8 (__b.val[1], vcreate_p8 (0)); __temp.val[2] = vcombine_p8 (__b.val[2], vcreate_p8 (0)); __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __temp.val[1], 1); __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __temp.val[2], 2); __o = __builtin_aarch64_ld3_lanev8qi ( (__builtin_aarch64_simd_qi *) __ptr, __o, __c); __b.val[0] = (poly8x8_t) __builtin_aarch64_get_dregcidi (__o, 0); __b.val[1] = (poly8x8_t) __builtin_aarch64_get_dregcidi (__o, 1); __b.val[2] = (poly8x8_t) __builtin_aarch64_get_dregcidi (__o, 2); return __b; } 5209: 5209: __extension__ extern __inline poly16x4x3_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld3_lane_p16 (const poly16_t * __ptr, poly16x4x3_t __b, const int __c) { __builtin_aarch64_simd_ci __o; poly16x8x3_t __temp; __temp.val[0] = vcombine_p16 (__b.val[0], vcreate_p16 (0)); __temp.val[1] = vcombine_p16 (__b.val[1], vcreate_p16 (0)); __temp.val[2] = vcombine_p16 (__b.val[2], vcreate_p16 (0)); __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __temp.val[1], 1); __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __temp.val[2], 2); __o = __builtin_aarch64_ld3_lanev4hi ( (__builtin_aarch64_simd_hi *) __ptr, __o, __c); __b.val[0] = (poly16x4_t) __builtin_aarch64_get_dregcidi (__o, 0); __b.val[1] = (poly16x4_t) __builtin_aarch64_get_dregcidi (__o, 1); __b.val[2] = (poly16x4_t) __builtin_aarch64_get_dregcidi (__o, 2); return __b; } 5209: 5209: __extension__ extern __inline poly64x1x3_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld3_lane_p64 (const poly64_t * __ptr, poly64x1x3_t __b, const int __c) { __builtin_aarch64_simd_ci __o; poly64x2x3_t __temp; __temp.val[0] = vcombine_p64 (__b.val[0], vcreate_p64 (0)); __temp.val[1] = vcombine_p64 (__b.val[1], vcreate_p64 (0)); __temp.val[2] = vcombine_p64 (__b.val[2], vcreate_p64 (0)); __o = __builtin_aarch64_set_qregciv2di_ssps (__o, (poly64x2_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregciv2di_ssps (__o, (poly64x2_t) __temp.val[1], 1); __o = __builtin_aarch64_set_qregciv2di_ssps (__o, (poly64x2_t) __temp.val[2], 2); __o = __builtin_aarch64_ld3_lanedi ( (__builtin_aarch64_simd_di *) __ptr, __o, __c); __b.val[0] = (poly64x1_t) __builtin_aarch64_get_dregcidi (__o, 0); __b.val[1] = (poly64x1_t) __builtin_aarch64_get_dregcidi (__o, 1); __b.val[2] = (poly64x1_t) __builtin_aarch64_get_dregcidi (__o, 2); return __b; } 5209: 5209: __extension__ extern __inline int8x8x3_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld3_lane_s8 (const int8_t * __ptr, int8x8x3_t __b, const int __c) { __builtin_aarch64_simd_ci __o; int8x16x3_t __temp; __temp.val[0] = vcombine_s8 (__b.val[0], vcreate_s8 (0)); __temp.val[1] = vcombine_s8 (__b.val[1], vcreate_s8 (0)); __temp.val[2] = vcombine_s8 (__b.val[2], vcreate_s8 (0)); __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __temp.val[1], 1); __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __temp.val[2], 2); __o = __builtin_aarch64_ld3_lanev8qi ( (__builtin_aarch64_simd_qi *) __ptr, __o, __c); __b.val[0] = (int8x8_t) __builtin_aarch64_get_dregcidi (__o, 0); __b.val[1] = (int8x8_t) __builtin_aarch64_get_dregcidi (__o, 1); __b.val[2] = (int8x8_t) __builtin_aarch64_get_dregcidi (__o, 2); return __b; } 5209: 5209: __extension__ extern __inline int16x4x3_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld3_lane_s16 (const int16_t * __ptr, int16x4x3_t __b, const int __c) { __builtin_aarch64_simd_ci __o; int16x8x3_t __temp; __temp.val[0] = vcombine_s16 (__b.val[0], vcreate_s16 (0)); __temp.val[1] = vcombine_s16 (__b.val[1], vcreate_s16 (0)); __temp.val[2] = vcombine_s16 (__b.val[2], vcreate_s16 (0)); __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __temp.val[1], 1); __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __temp.val[2], 2); __o = __builtin_aarch64_ld3_lanev4hi ( (__builtin_aarch64_simd_hi *) __ptr, __o, __c); __b.val[0] = (int16x4_t) __builtin_aarch64_get_dregcidi (__o, 0); __b.val[1] = (int16x4_t) __builtin_aarch64_get_dregcidi (__o, 1); __b.val[2] = (int16x4_t) __builtin_aarch64_get_dregcidi (__o, 2); return __b; } 5209: 5209: __extension__ extern __inline int32x2x3_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld3_lane_s32 (const int32_t * __ptr, int32x2x3_t __b, const int __c) { __builtin_aarch64_simd_ci __o; int32x4x3_t __temp; __temp.val[0] = vcombine_s32 (__b.val[0], vcreate_s32 (0)); __temp.val[1] = vcombine_s32 (__b.val[1], vcreate_s32 (0)); __temp.val[2] = vcombine_s32 (__b.val[2], vcreate_s32 (0)); __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __temp.val[1], 1); __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __temp.val[2], 2); __o = __builtin_aarch64_ld3_lanev2si ( (__builtin_aarch64_simd_si *) __ptr, __o, __c); __b.val[0] = (int32x2_t) __builtin_aarch64_get_dregcidi (__o, 0); __b.val[1] = (int32x2_t) __builtin_aarch64_get_dregcidi (__o, 1); __b.val[2] = (int32x2_t) __builtin_aarch64_get_dregcidi (__o, 2); return __b; } 5209: 5209: __extension__ extern __inline int64x1x3_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld3_lane_s64 (const int64_t * __ptr, int64x1x3_t __b, const int __c) { __builtin_aarch64_simd_ci __o; int64x2x3_t __temp; __temp.val[0] = vcombine_s64 (__b.val[0], vcreate_s64 (0)); __temp.val[1] = vcombine_s64 (__b.val[1], vcreate_s64 (0)); __temp.val[2] = vcombine_s64 (__b.val[2], vcreate_s64 (0)); __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __temp.val[1], 1); __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __temp.val[2], 2); __o = __builtin_aarch64_ld3_lanedi ( (__builtin_aarch64_simd_di *) __ptr, __o, __c); __b.val[0] = (int64x1_t) __builtin_aarch64_get_dregcidi (__o, 0); __b.val[1] = (int64x1_t) __builtin_aarch64_get_dregcidi (__o, 1); __b.val[2] = (int64x1_t) __builtin_aarch64_get_dregcidi (__o, 2); return __b; } 5209: 5209: __extension__ extern __inline uint8x8x3_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld3_lane_u8 (const uint8_t * __ptr, uint8x8x3_t __b, const int __c) { __builtin_aarch64_simd_ci __o; uint8x16x3_t __temp; __temp.val[0] = vcombine_u8 (__b.val[0], vcreate_u8 (0)); __temp.val[1] = vcombine_u8 (__b.val[1], vcreate_u8 (0)); __temp.val[2] = vcombine_u8 (__b.val[2], vcreate_u8 (0)); __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __temp.val[1], 1); __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __temp.val[2], 2); __o = __builtin_aarch64_ld3_lanev8qi ( (__builtin_aarch64_simd_qi *) __ptr, __o, __c); __b.val[0] = (uint8x8_t) __builtin_aarch64_get_dregcidi (__o, 0); __b.val[1] = (uint8x8_t) __builtin_aarch64_get_dregcidi (__o, 1); __b.val[2] = (uint8x8_t) __builtin_aarch64_get_dregcidi (__o, 2); return __b; } 5209: 5209: __extension__ extern __inline uint16x4x3_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld3_lane_u16 (const uint16_t * __ptr, uint16x4x3_t __b, const int __c) { __builtin_aarch64_simd_ci __o; uint16x8x3_t __temp; __temp.val[0] = vcombine_u16 (__b.val[0], vcreate_u16 (0)); __temp.val[1] = vcombine_u16 (__b.val[1], vcreate_u16 (0)); __temp.val[2] = vcombine_u16 (__b.val[2], vcreate_u16 (0)); __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __temp.val[1], 1); __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __temp.val[2], 2); __o = __builtin_aarch64_ld3_lanev4hi ( (__builtin_aarch64_simd_hi *) __ptr, __o, __c); __b.val[0] = (uint16x4_t) __builtin_aarch64_get_dregcidi (__o, 0); __b.val[1] = (uint16x4_t) __builtin_aarch64_get_dregcidi (__o, 1); __b.val[2] = (uint16x4_t) __builtin_aarch64_get_dregcidi (__o, 2); return __b; } 5209: 5209: __extension__ extern __inline uint32x2x3_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld3_lane_u32 (const uint32_t * __ptr, uint32x2x3_t __b, const int __c) { __builtin_aarch64_simd_ci __o; uint32x4x3_t __temp; __temp.val[0] = vcombine_u32 (__b.val[0], vcreate_u32 (0)); __temp.val[1] = vcombine_u32 (__b.val[1], vcreate_u32 (0)); __temp.val[2] = vcombine_u32 (__b.val[2], vcreate_u32 (0)); __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __temp.val[1], 1); __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __temp.val[2], 2); __o = __builtin_aarch64_ld3_lanev2si ( (__builtin_aarch64_simd_si *) __ptr, __o, __c); __b.val[0] = (uint32x2_t) __builtin_aarch64_get_dregcidi (__o, 0); __b.val[1] = (uint32x2_t) __builtin_aarch64_get_dregcidi (__o, 1); __b.val[2] = (uint32x2_t) __builtin_aarch64_get_dregcidi (__o, 2); return __b; } 5209: 5209: __extension__ extern __inline uint64x1x3_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld3_lane_u64 (const uint64_t * __ptr, uint64x1x3_t __b, const int __c) { __builtin_aarch64_simd_ci __o; uint64x2x3_t __temp; __temp.val[0] = vcombine_u64 (__b.val[0], vcreate_u64 (0)); __temp.val[1] = vcombine_u64 (__b.val[1], vcreate_u64 (0)); __temp.val[2] = vcombine_u64 (__b.val[2], vcreate_u64 (0)); __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __temp.val[1], 1); __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __temp.val[2], 2); __o = __builtin_aarch64_ld3_lanedi ( (__builtin_aarch64_simd_di *) __ptr, __o, __c); __b.val[0] = (uint64x1_t) __builtin_aarch64_get_dregcidi (__o, 0); __b.val[1] = (uint64x1_t) __builtin_aarch64_get_dregcidi (__o, 1); __b.val[2] = (uint64x1_t) __builtin_aarch64_get_dregcidi (__o, 2); return __b; } 5209: # 21019 "/usr/lib/gcc/aarch64-linux-gnu/10/include/arm_neon.h" 3 4 5209: __extension__ extern __inline float16x8x3_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld3q_lane_f16 (const float16_t * __ptr, float16x8x3_t __b, const int __c) { __builtin_aarch64_simd_ci __o; float16x8x3_t ret; __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __b.val[0], 0); __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __b.val[1], 1); __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __b.val[2], 2); __o = __builtin_aarch64_ld3_lanev8hf ( (__builtin_aarch64_simd_hf *) __ptr, __o, __c); ret.val[0] = (float16x8_t) __builtin_aarch64_get_qregciv4si (__o, 0); ret.val[1] = (float16x8_t) __builtin_aarch64_get_qregciv4si (__o, 1); ret.val[2] = (float16x8_t) __builtin_aarch64_get_qregciv4si (__o, 2); return ret; } 5209: __extension__ extern __inline float32x4x3_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld3q_lane_f32 (const float32_t * __ptr, float32x4x3_t __b, const int __c) { __builtin_aarch64_simd_ci __o; float32x4x3_t ret; __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __b.val[0], 0); __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __b.val[1], 1); __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __b.val[2], 2); __o = __builtin_aarch64_ld3_lanev4sf ( (__builtin_aarch64_simd_sf *) __ptr, __o, __c); ret.val[0] = (float32x4_t) __builtin_aarch64_get_qregciv4si (__o, 0); ret.val[1] = (float32x4_t) __builtin_aarch64_get_qregciv4si (__o, 1); ret.val[2] = (float32x4_t) __builtin_aarch64_get_qregciv4si (__o, 2); return ret; } 5209: __extension__ extern __inline float64x2x3_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld3q_lane_f64 (const float64_t * __ptr, float64x2x3_t __b, const int __c) { __builtin_aarch64_simd_ci __o; float64x2x3_t ret; __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __b.val[0], 0); __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __b.val[1], 1); __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __b.val[2], 2); __o = __builtin_aarch64_ld3_lanev2df ( (__builtin_aarch64_simd_df *) __ptr, __o, __c); ret.val[0] = (float64x2_t) __builtin_aarch64_get_qregciv4si (__o, 0); ret.val[1] = (float64x2_t) __builtin_aarch64_get_qregciv4si (__o, 1); ret.val[2] = (float64x2_t) __builtin_aarch64_get_qregciv4si (__o, 2); return ret; } 5209: __extension__ extern __inline poly8x16x3_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld3q_lane_p8 (const poly8_t * __ptr, poly8x16x3_t __b, const int __c) { __builtin_aarch64_simd_ci __o; poly8x16x3_t ret; __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __b.val[0], 0); __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __b.val[1], 1); __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __b.val[2], 2); __o = __builtin_aarch64_ld3_lanev16qi ( (__builtin_aarch64_simd_qi *) __ptr, __o, __c); ret.val[0] = (poly8x16_t) __builtin_aarch64_get_qregciv4si (__o, 0); ret.val[1] = (poly8x16_t) __builtin_aarch64_get_qregciv4si (__o, 1); ret.val[2] = (poly8x16_t) __builtin_aarch64_get_qregciv4si (__o, 2); return ret; } 5209: __extension__ extern __inline poly16x8x3_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld3q_lane_p16 (const poly16_t * __ptr, poly16x8x3_t __b, const int __c) { __builtin_aarch64_simd_ci __o; poly16x8x3_t ret; __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __b.val[0], 0); __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __b.val[1], 1); __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __b.val[2], 2); __o = __builtin_aarch64_ld3_lanev8hi ( (__builtin_aarch64_simd_hi *) __ptr, __o, __c); ret.val[0] = (poly16x8_t) __builtin_aarch64_get_qregciv4si (__o, 0); ret.val[1] = (poly16x8_t) __builtin_aarch64_get_qregciv4si (__o, 1); ret.val[2] = (poly16x8_t) __builtin_aarch64_get_qregciv4si (__o, 2); return ret; } 5209: __extension__ extern __inline poly64x2x3_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld3q_lane_p64 (const poly64_t * __ptr, poly64x2x3_t __b, const int __c) { __builtin_aarch64_simd_ci __o; poly64x2x3_t ret; __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __b.val[0], 0); __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __b.val[1], 1); __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __b.val[2], 2); __o = __builtin_aarch64_ld3_lanev2di ( (__builtin_aarch64_simd_di *) __ptr, __o, __c); ret.val[0] = (poly64x2_t) __builtin_aarch64_get_qregciv4si (__o, 0); ret.val[1] = (poly64x2_t) __builtin_aarch64_get_qregciv4si (__o, 1); ret.val[2] = (poly64x2_t) __builtin_aarch64_get_qregciv4si (__o, 2); return ret; } 5209: __extension__ extern __inline int8x16x3_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld3q_lane_s8 (const int8_t * __ptr, int8x16x3_t __b, const int __c) { __builtin_aarch64_simd_ci __o; int8x16x3_t ret; __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __b.val[0], 0); __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __b.val[1], 1); __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __b.val[2], 2); __o = __builtin_aarch64_ld3_lanev16qi ( (__builtin_aarch64_simd_qi *) __ptr, __o, __c); ret.val[0] = (int8x16_t) __builtin_aarch64_get_qregciv4si (__o, 0); ret.val[1] = (int8x16_t) __builtin_aarch64_get_qregciv4si (__o, 1); ret.val[2] = (int8x16_t) __builtin_aarch64_get_qregciv4si (__o, 2); return ret; } 5209: __extension__ extern __inline int16x8x3_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld3q_lane_s16 (const int16_t * __ptr, int16x8x3_t __b, const int __c) { __builtin_aarch64_simd_ci __o; int16x8x3_t ret; __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __b.val[0], 0); __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __b.val[1], 1); __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __b.val[2], 2); __o = __builtin_aarch64_ld3_lanev8hi ( (__builtin_aarch64_simd_hi *) __ptr, __o, __c); ret.val[0] = (int16x8_t) __builtin_aarch64_get_qregciv4si (__o, 0); ret.val[1] = (int16x8_t) __builtin_aarch64_get_qregciv4si (__o, 1); ret.val[2] = (int16x8_t) __builtin_aarch64_get_qregciv4si (__o, 2); return ret; } 5209: __extension__ extern __inline int32x4x3_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld3q_lane_s32 (const int32_t * __ptr, int32x4x3_t __b, const int __c) { __builtin_aarch64_simd_ci __o; int32x4x3_t ret; __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __b.val[0], 0); __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __b.val[1], 1); __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __b.val[2], 2); __o = __builtin_aarch64_ld3_lanev4si ( (__builtin_aarch64_simd_si *) __ptr, __o, __c); ret.val[0] = (int32x4_t) __builtin_aarch64_get_qregciv4si (__o, 0); ret.val[1] = (int32x4_t) __builtin_aarch64_get_qregciv4si (__o, 1); ret.val[2] = (int32x4_t) __builtin_aarch64_get_qregciv4si (__o, 2); return ret; } 5209: __extension__ extern __inline int64x2x3_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld3q_lane_s64 (const int64_t * __ptr, int64x2x3_t __b, const int __c) { __builtin_aarch64_simd_ci __o; int64x2x3_t ret; __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __b.val[0], 0); __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __b.val[1], 1); __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __b.val[2], 2); __o = __builtin_aarch64_ld3_lanev2di ( (__builtin_aarch64_simd_di *) __ptr, __o, __c); ret.val[0] = (int64x2_t) __builtin_aarch64_get_qregciv4si (__o, 0); ret.val[1] = (int64x2_t) __builtin_aarch64_get_qregciv4si (__o, 1); ret.val[2] = (int64x2_t) __builtin_aarch64_get_qregciv4si (__o, 2); return ret; } 5209: __extension__ extern __inline uint8x16x3_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld3q_lane_u8 (const uint8_t * __ptr, uint8x16x3_t __b, const int __c) { __builtin_aarch64_simd_ci __o; uint8x16x3_t ret; __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __b.val[0], 0); __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __b.val[1], 1); __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __b.val[2], 2); __o = __builtin_aarch64_ld3_lanev16qi ( (__builtin_aarch64_simd_qi *) __ptr, __o, __c); ret.val[0] = (uint8x16_t) __builtin_aarch64_get_qregciv4si (__o, 0); ret.val[1] = (uint8x16_t) __builtin_aarch64_get_qregciv4si (__o, 1); ret.val[2] = (uint8x16_t) __builtin_aarch64_get_qregciv4si (__o, 2); return ret; } 5209: __extension__ extern __inline uint16x8x3_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld3q_lane_u16 (const uint16_t * __ptr, uint16x8x3_t __b, const int __c) { __builtin_aarch64_simd_ci __o; uint16x8x3_t ret; __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __b.val[0], 0); __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __b.val[1], 1); __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __b.val[2], 2); __o = __builtin_aarch64_ld3_lanev8hi ( (__builtin_aarch64_simd_hi *) __ptr, __o, __c); ret.val[0] = (uint16x8_t) __builtin_aarch64_get_qregciv4si (__o, 0); ret.val[1] = (uint16x8_t) __builtin_aarch64_get_qregciv4si (__o, 1); ret.val[2] = (uint16x8_t) __builtin_aarch64_get_qregciv4si (__o, 2); return ret; } 5209: __extension__ extern __inline uint32x4x3_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld3q_lane_u32 (const uint32_t * __ptr, uint32x4x3_t __b, const int __c) { __builtin_aarch64_simd_ci __o; uint32x4x3_t ret; __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __b.val[0], 0); __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __b.val[1], 1); __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __b.val[2], 2); __o = __builtin_aarch64_ld3_lanev4si ( (__builtin_aarch64_simd_si *) __ptr, __o, __c); ret.val[0] = (uint32x4_t) __builtin_aarch64_get_qregciv4si (__o, 0); ret.val[1] = (uint32x4_t) __builtin_aarch64_get_qregciv4si (__o, 1); ret.val[2] = (uint32x4_t) __builtin_aarch64_get_qregciv4si (__o, 2); return ret; } 5209: __extension__ extern __inline uint64x2x3_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld3q_lane_u64 (const uint64_t * __ptr, uint64x2x3_t __b, const int __c) { __builtin_aarch64_simd_ci __o; uint64x2x3_t ret; __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __b.val[0], 0); __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __b.val[1], 1); __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __b.val[2], 2); __o = __builtin_aarch64_ld3_lanev2di ( (__builtin_aarch64_simd_di *) __ptr, __o, __c); ret.val[0] = (uint64x2_t) __builtin_aarch64_get_qregciv4si (__o, 0); ret.val[1] = (uint64x2_t) __builtin_aarch64_get_qregciv4si (__o, 1); ret.val[2] = (uint64x2_t) __builtin_aarch64_get_qregciv4si (__o, 2); return ret; } 5209: # 21077 "/usr/lib/gcc/aarch64-linux-gnu/10/include/arm_neon.h" 3 4 5209: __extension__ extern __inline float16x4x4_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld4_lane_f16 (const float16_t * __ptr, float16x4x4_t __b, const int __c) { __builtin_aarch64_simd_xi __o; float16x8x4_t __temp; __temp.val[0] = vcombine_f16 (__b.val[0], vcreate_f16 (0)); __temp.val[1] = vcombine_f16 (__b.val[1], vcreate_f16 (0)); __temp.val[2] = vcombine_f16 (__b.val[2], vcreate_f16 (0)); __temp.val[3] = vcombine_f16 (__b.val[3], vcreate_f16 (0)); __o = __builtin_aarch64_set_qregxiv8hf (__o, (float16x8_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregxiv8hf (__o, (float16x8_t) __temp.val[1], 1); __o = __builtin_aarch64_set_qregxiv8hf (__o, (float16x8_t) __temp.val[2], 2); __o = __builtin_aarch64_set_qregxiv8hf (__o, (float16x8_t) __temp.val[3], 3); __o = __builtin_aarch64_ld4_lanev4hf ( (__builtin_aarch64_simd_hf *) __ptr, __o, __c); __b.val[0] = (float16x4_t) __builtin_aarch64_get_dregxidi (__o, 0); __b.val[1] = (float16x4_t) __builtin_aarch64_get_dregxidi (__o, 1); __b.val[2] = (float16x4_t) __builtin_aarch64_get_dregxidi (__o, 2); __b.val[3] = (float16x4_t) __builtin_aarch64_get_dregxidi (__o, 3); return __b; } 5209: 5209: __extension__ extern __inline float32x2x4_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld4_lane_f32 (const float32_t * __ptr, float32x2x4_t __b, const int __c) { __builtin_aarch64_simd_xi __o; float32x4x4_t __temp; __temp.val[0] = vcombine_f32 (__b.val[0], vcreate_f32 (0)); __temp.val[1] = vcombine_f32 (__b.val[1], vcreate_f32 (0)); __temp.val[2] = vcombine_f32 (__b.val[2], vcreate_f32 (0)); __temp.val[3] = vcombine_f32 (__b.val[3], vcreate_f32 (0)); __o = __builtin_aarch64_set_qregxiv4sf (__o, (float32x4_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregxiv4sf (__o, (float32x4_t) __temp.val[1], 1); __o = __builtin_aarch64_set_qregxiv4sf (__o, (float32x4_t) __temp.val[2], 2); __o = __builtin_aarch64_set_qregxiv4sf (__o, (float32x4_t) __temp.val[3], 3); __o = __builtin_aarch64_ld4_lanev2sf ( (__builtin_aarch64_simd_sf *) __ptr, __o, __c); __b.val[0] = (float32x2_t) __builtin_aarch64_get_dregxidi (__o, 0); __b.val[1] = (float32x2_t) __builtin_aarch64_get_dregxidi (__o, 1); __b.val[2] = (float32x2_t) __builtin_aarch64_get_dregxidi (__o, 2); __b.val[3] = (float32x2_t) __builtin_aarch64_get_dregxidi (__o, 3); return __b; } 5209: 5209: __extension__ extern __inline float64x1x4_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld4_lane_f64 (const float64_t * __ptr, float64x1x4_t __b, const int __c) { __builtin_aarch64_simd_xi __o; float64x2x4_t __temp; __temp.val[0] = vcombine_f64 (__b.val[0], vcreate_f64 (0)); __temp.val[1] = vcombine_f64 (__b.val[1], vcreate_f64 (0)); __temp.val[2] = vcombine_f64 (__b.val[2], vcreate_f64 (0)); __temp.val[3] = vcombine_f64 (__b.val[3], vcreate_f64 (0)); __o = __builtin_aarch64_set_qregxiv2df (__o, (float64x2_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregxiv2df (__o, (float64x2_t) __temp.val[1], 1); __o = __builtin_aarch64_set_qregxiv2df (__o, (float64x2_t) __temp.val[2], 2); __o = __builtin_aarch64_set_qregxiv2df (__o, (float64x2_t) __temp.val[3], 3); __o = __builtin_aarch64_ld4_lanedf ( (__builtin_aarch64_simd_df *) __ptr, __o, __c); __b.val[0] = (float64x1_t) __builtin_aarch64_get_dregxidi (__o, 0); __b.val[1] = (float64x1_t) __builtin_aarch64_get_dregxidi (__o, 1); __b.val[2] = (float64x1_t) __builtin_aarch64_get_dregxidi (__o, 2); __b.val[3] = (float64x1_t) __builtin_aarch64_get_dregxidi (__o, 3); return __b; } 5209: 5209: __extension__ extern __inline poly8x8x4_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld4_lane_p8 (const poly8_t * __ptr, poly8x8x4_t __b, const int __c) { __builtin_aarch64_simd_xi __o; poly8x16x4_t __temp; __temp.val[0] = vcombine_p8 (__b.val[0], vcreate_p8 (0)); __temp.val[1] = vcombine_p8 (__b.val[1], vcreate_p8 (0)); __temp.val[2] = vcombine_p8 (__b.val[2], vcreate_p8 (0)); __temp.val[3] = vcombine_p8 (__b.val[3], vcreate_p8 (0)); __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __temp.val[1], 1); __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __temp.val[2], 2); __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __temp.val[3], 3); __o = __builtin_aarch64_ld4_lanev8qi ( (__builtin_aarch64_simd_qi *) __ptr, __o, __c); __b.val[0] = (poly8x8_t) __builtin_aarch64_get_dregxidi (__o, 0); __b.val[1] = (poly8x8_t) __builtin_aarch64_get_dregxidi (__o, 1); __b.val[2] = (poly8x8_t) __builtin_aarch64_get_dregxidi (__o, 2); __b.val[3] = (poly8x8_t) __builtin_aarch64_get_dregxidi (__o, 3); return __b; } 5209: 5209: __extension__ extern __inline poly16x4x4_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld4_lane_p16 (const poly16_t * __ptr, poly16x4x4_t __b, const int __c) { __builtin_aarch64_simd_xi __o; poly16x8x4_t __temp; __temp.val[0] = vcombine_p16 (__b.val[0], vcreate_p16 (0)); __temp.val[1] = vcombine_p16 (__b.val[1], vcreate_p16 (0)); __temp.val[2] = vcombine_p16 (__b.val[2], vcreate_p16 (0)); __temp.val[3] = vcombine_p16 (__b.val[3], vcreate_p16 (0)); __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __temp.val[1], 1); __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __temp.val[2], 2); __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __temp.val[3], 3); __o = __builtin_aarch64_ld4_lanev4hi ( (__builtin_aarch64_simd_hi *) __ptr, __o, __c); __b.val[0] = (poly16x4_t) __builtin_aarch64_get_dregxidi (__o, 0); __b.val[1] = (poly16x4_t) __builtin_aarch64_get_dregxidi (__o, 1); __b.val[2] = (poly16x4_t) __builtin_aarch64_get_dregxidi (__o, 2); __b.val[3] = (poly16x4_t) __builtin_aarch64_get_dregxidi (__o, 3); return __b; } 5209: 5209: __extension__ extern __inline poly64x1x4_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld4_lane_p64 (const poly64_t * __ptr, poly64x1x4_t __b, const int __c) { __builtin_aarch64_simd_xi __o; poly64x2x4_t __temp; __temp.val[0] = vcombine_p64 (__b.val[0], vcreate_p64 (0)); __temp.val[1] = vcombine_p64 (__b.val[1], vcreate_p64 (0)); __temp.val[2] = vcombine_p64 (__b.val[2], vcreate_p64 (0)); __temp.val[3] = vcombine_p64 (__b.val[3], vcreate_p64 (0)); __o = __builtin_aarch64_set_qregxiv2di_ssps (__o, (poly64x2_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregxiv2di_ssps (__o, (poly64x2_t) __temp.val[1], 1); __o = __builtin_aarch64_set_qregxiv2di_ssps (__o, (poly64x2_t) __temp.val[2], 2); __o = __builtin_aarch64_set_qregxiv2di_ssps (__o, (poly64x2_t) __temp.val[3], 3); __o = __builtin_aarch64_ld4_lanedi ( (__builtin_aarch64_simd_di *) __ptr, __o, __c); __b.val[0] = (poly64x1_t) __builtin_aarch64_get_dregxidi (__o, 0); __b.val[1] = (poly64x1_t) __builtin_aarch64_get_dregxidi (__o, 1); __b.val[2] = (poly64x1_t) __builtin_aarch64_get_dregxidi (__o, 2); __b.val[3] = (poly64x1_t) __builtin_aarch64_get_dregxidi (__o, 3); return __b; } 5209: 5209: __extension__ extern __inline int8x8x4_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld4_lane_s8 (const int8_t * __ptr, int8x8x4_t __b, const int __c) { __builtin_aarch64_simd_xi __o; int8x16x4_t __temp; __temp.val[0] = vcombine_s8 (__b.val[0], vcreate_s8 (0)); __temp.val[1] = vcombine_s8 (__b.val[1], vcreate_s8 (0)); __temp.val[2] = vcombine_s8 (__b.val[2], vcreate_s8 (0)); __temp.val[3] = vcombine_s8 (__b.val[3], vcreate_s8 (0)); __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __temp.val[1], 1); __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __temp.val[2], 2); __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __temp.val[3], 3); __o = __builtin_aarch64_ld4_lanev8qi ( (__builtin_aarch64_simd_qi *) __ptr, __o, __c); __b.val[0] = (int8x8_t) __builtin_aarch64_get_dregxidi (__o, 0); __b.val[1] = (int8x8_t) __builtin_aarch64_get_dregxidi (__o, 1); __b.val[2] = (int8x8_t) __builtin_aarch64_get_dregxidi (__o, 2); __b.val[3] = (int8x8_t) __builtin_aarch64_get_dregxidi (__o, 3); return __b; } 5209: 5209: __extension__ extern __inline int16x4x4_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld4_lane_s16 (const int16_t * __ptr, int16x4x4_t __b, const int __c) { __builtin_aarch64_simd_xi __o; int16x8x4_t __temp; __temp.val[0] = vcombine_s16 (__b.val[0], vcreate_s16 (0)); __temp.val[1] = vcombine_s16 (__b.val[1], vcreate_s16 (0)); __temp.val[2] = vcombine_s16 (__b.val[2], vcreate_s16 (0)); __temp.val[3] = vcombine_s16 (__b.val[3], vcreate_s16 (0)); __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __temp.val[1], 1); __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __temp.val[2], 2); __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __temp.val[3], 3); __o = __builtin_aarch64_ld4_lanev4hi ( (__builtin_aarch64_simd_hi *) __ptr, __o, __c); __b.val[0] = (int16x4_t) __builtin_aarch64_get_dregxidi (__o, 0); __b.val[1] = (int16x4_t) __builtin_aarch64_get_dregxidi (__o, 1); __b.val[2] = (int16x4_t) __builtin_aarch64_get_dregxidi (__o, 2); __b.val[3] = (int16x4_t) __builtin_aarch64_get_dregxidi (__o, 3); return __b; } 5209: 5209: __extension__ extern __inline int32x2x4_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld4_lane_s32 (const int32_t * __ptr, int32x2x4_t __b, const int __c) { __builtin_aarch64_simd_xi __o; int32x4x4_t __temp; __temp.val[0] = vcombine_s32 (__b.val[0], vcreate_s32 (0)); __temp.val[1] = vcombine_s32 (__b.val[1], vcreate_s32 (0)); __temp.val[2] = vcombine_s32 (__b.val[2], vcreate_s32 (0)); __temp.val[3] = vcombine_s32 (__b.val[3], vcreate_s32 (0)); __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __temp.val[1], 1); __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __temp.val[2], 2); __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __temp.val[3], 3); __o = __builtin_aarch64_ld4_lanev2si ( (__builtin_aarch64_simd_si *) __ptr, __o, __c); __b.val[0] = (int32x2_t) __builtin_aarch64_get_dregxidi (__o, 0); __b.val[1] = (int32x2_t) __builtin_aarch64_get_dregxidi (__o, 1); __b.val[2] = (int32x2_t) __builtin_aarch64_get_dregxidi (__o, 2); __b.val[3] = (int32x2_t) __builtin_aarch64_get_dregxidi (__o, 3); return __b; } 5209: 5209: __extension__ extern __inline int64x1x4_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld4_lane_s64 (const int64_t * __ptr, int64x1x4_t __b, const int __c) { __builtin_aarch64_simd_xi __o; int64x2x4_t __temp; __temp.val[0] = vcombine_s64 (__b.val[0], vcreate_s64 (0)); __temp.val[1] = vcombine_s64 (__b.val[1], vcreate_s64 (0)); __temp.val[2] = vcombine_s64 (__b.val[2], vcreate_s64 (0)); __temp.val[3] = vcombine_s64 (__b.val[3], vcreate_s64 (0)); __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) __temp.val[1], 1); __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) __temp.val[2], 2); __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) __temp.val[3], 3); __o = __builtin_aarch64_ld4_lanedi ( (__builtin_aarch64_simd_di *) __ptr, __o, __c); __b.val[0] = (int64x1_t) __builtin_aarch64_get_dregxidi (__o, 0); __b.val[1] = (int64x1_t) __builtin_aarch64_get_dregxidi (__o, 1); __b.val[2] = (int64x1_t) __builtin_aarch64_get_dregxidi (__o, 2); __b.val[3] = (int64x1_t) __builtin_aarch64_get_dregxidi (__o, 3); return __b; } 5209: 5209: __extension__ extern __inline uint8x8x4_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld4_lane_u8 (const uint8_t * __ptr, uint8x8x4_t __b, const int __c) { __builtin_aarch64_simd_xi __o; uint8x16x4_t __temp; __temp.val[0] = vcombine_u8 (__b.val[0], vcreate_u8 (0)); __temp.val[1] = vcombine_u8 (__b.val[1], vcreate_u8 (0)); __temp.val[2] = vcombine_u8 (__b.val[2], vcreate_u8 (0)); __temp.val[3] = vcombine_u8 (__b.val[3], vcreate_u8 (0)); __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __temp.val[1], 1); __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __temp.val[2], 2); __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __temp.val[3], 3); __o = __builtin_aarch64_ld4_lanev8qi ( (__builtin_aarch64_simd_qi *) __ptr, __o, __c); __b.val[0] = (uint8x8_t) __builtin_aarch64_get_dregxidi (__o, 0); __b.val[1] = (uint8x8_t) __builtin_aarch64_get_dregxidi (__o, 1); __b.val[2] = (uint8x8_t) __builtin_aarch64_get_dregxidi (__o, 2); __b.val[3] = (uint8x8_t) __builtin_aarch64_get_dregxidi (__o, 3); return __b; } 5209: 5209: __extension__ extern __inline uint16x4x4_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld4_lane_u16 (const uint16_t * __ptr, uint16x4x4_t __b, const int __c) { __builtin_aarch64_simd_xi __o; uint16x8x4_t __temp; __temp.val[0] = vcombine_u16 (__b.val[0], vcreate_u16 (0)); __temp.val[1] = vcombine_u16 (__b.val[1], vcreate_u16 (0)); __temp.val[2] = vcombine_u16 (__b.val[2], vcreate_u16 (0)); __temp.val[3] = vcombine_u16 (__b.val[3], vcreate_u16 (0)); __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __temp.val[1], 1); __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __temp.val[2], 2); __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __temp.val[3], 3); __o = __builtin_aarch64_ld4_lanev4hi ( (__builtin_aarch64_simd_hi *) __ptr, __o, __c); __b.val[0] = (uint16x4_t) __builtin_aarch64_get_dregxidi (__o, 0); __b.val[1] = (uint16x4_t) __builtin_aarch64_get_dregxidi (__o, 1); __b.val[2] = (uint16x4_t) __builtin_aarch64_get_dregxidi (__o, 2); __b.val[3] = (uint16x4_t) __builtin_aarch64_get_dregxidi (__o, 3); return __b; } 5209: 5209: __extension__ extern __inline uint32x2x4_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld4_lane_u32 (const uint32_t * __ptr, uint32x2x4_t __b, const int __c) { __builtin_aarch64_simd_xi __o; uint32x4x4_t __temp; __temp.val[0] = vcombine_u32 (__b.val[0], vcreate_u32 (0)); __temp.val[1] = vcombine_u32 (__b.val[1], vcreate_u32 (0)); __temp.val[2] = vcombine_u32 (__b.val[2], vcreate_u32 (0)); __temp.val[3] = vcombine_u32 (__b.val[3], vcreate_u32 (0)); __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __temp.val[1], 1); __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __temp.val[2], 2); __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __temp.val[3], 3); __o = __builtin_aarch64_ld4_lanev2si ( (__builtin_aarch64_simd_si *) __ptr, __o, __c); __b.val[0] = (uint32x2_t) __builtin_aarch64_get_dregxidi (__o, 0); __b.val[1] = (uint32x2_t) __builtin_aarch64_get_dregxidi (__o, 1); __b.val[2] = (uint32x2_t) __builtin_aarch64_get_dregxidi (__o, 2); __b.val[3] = (uint32x2_t) __builtin_aarch64_get_dregxidi (__o, 3); return __b; } 5209: 5209: __extension__ extern __inline uint64x1x4_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld4_lane_u64 (const uint64_t * __ptr, uint64x1x4_t __b, const int __c) { __builtin_aarch64_simd_xi __o; uint64x2x4_t __temp; __temp.val[0] = vcombine_u64 (__b.val[0], vcreate_u64 (0)); __temp.val[1] = vcombine_u64 (__b.val[1], vcreate_u64 (0)); __temp.val[2] = vcombine_u64 (__b.val[2], vcreate_u64 (0)); __temp.val[3] = vcombine_u64 (__b.val[3], vcreate_u64 (0)); __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) __temp.val[0], 0); __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) __temp.val[1], 1); __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) __temp.val[2], 2); __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) __temp.val[3], 3); __o = __builtin_aarch64_ld4_lanedi ( (__builtin_aarch64_simd_di *) __ptr, __o, __c); __b.val[0] = (uint64x1_t) __builtin_aarch64_get_dregxidi (__o, 0); __b.val[1] = (uint64x1_t) __builtin_aarch64_get_dregxidi (__o, 1); __b.val[2] = (uint64x1_t) __builtin_aarch64_get_dregxidi (__o, 2); __b.val[3] = (uint64x1_t) __builtin_aarch64_get_dregxidi (__o, 3); return __b; } 5209: # 21130 "/usr/lib/gcc/aarch64-linux-gnu/10/include/arm_neon.h" 3 4 5209: __extension__ extern __inline float16x8x4_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld4q_lane_f16 (const float16_t * __ptr, float16x8x4_t __b, const int __c) { __builtin_aarch64_simd_xi __o; float16x8x4_t ret; __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[0], 0); __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[1], 1); __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[2], 2); __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[3], 3); __o = __builtin_aarch64_ld4_lanev8hf ( (__builtin_aarch64_simd_hf *) __ptr, __o, __c); ret.val[0] = (float16x8_t) __builtin_aarch64_get_qregxiv4si (__o, 0); ret.val[1] = (float16x8_t) __builtin_aarch64_get_qregxiv4si (__o, 1); ret.val[2] = (float16x8_t) __builtin_aarch64_get_qregxiv4si (__o, 2); ret.val[3] = (float16x8_t) __builtin_aarch64_get_qregxiv4si (__o, 3); return ret; } 5209: __extension__ extern __inline float32x4x4_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld4q_lane_f32 (const float32_t * __ptr, float32x4x4_t __b, const int __c) { __builtin_aarch64_simd_xi __o; float32x4x4_t ret; __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[0], 0); __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[1], 1); __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[2], 2); __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[3], 3); __o = __builtin_aarch64_ld4_lanev4sf ( (__builtin_aarch64_simd_sf *) __ptr, __o, __c); ret.val[0] = (float32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 0); ret.val[1] = (float32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 1); ret.val[2] = (float32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 2); ret.val[3] = (float32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 3); return ret; } 5209: __extension__ extern __inline float64x2x4_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld4q_lane_f64 (const float64_t * __ptr, float64x2x4_t __b, const int __c) { __builtin_aarch64_simd_xi __o; float64x2x4_t ret; __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[0], 0); __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[1], 1); __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[2], 2); __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[3], 3); __o = __builtin_aarch64_ld4_lanev2df ( (__builtin_aarch64_simd_df *) __ptr, __o, __c); ret.val[0] = (float64x2_t) __builtin_aarch64_get_qregxiv4si (__o, 0); ret.val[1] = (float64x2_t) __builtin_aarch64_get_qregxiv4si (__o, 1); ret.val[2] = (float64x2_t) __builtin_aarch64_get_qregxiv4si (__o, 2); ret.val[3] = (float64x2_t) __builtin_aarch64_get_qregxiv4si (__o, 3); return ret; } 5209: __extension__ extern __inline poly8x16x4_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld4q_lane_p8 (const poly8_t * __ptr, poly8x16x4_t __b, const int __c) { __builtin_aarch64_simd_xi __o; poly8x16x4_t ret; __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[0], 0); __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[1], 1); __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[2], 2); __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[3], 3); __o = __builtin_aarch64_ld4_lanev16qi ( (__builtin_aarch64_simd_qi *) __ptr, __o, __c); ret.val[0] = (poly8x16_t) __builtin_aarch64_get_qregxiv4si (__o, 0); ret.val[1] = (poly8x16_t) __builtin_aarch64_get_qregxiv4si (__o, 1); ret.val[2] = (poly8x16_t) __builtin_aarch64_get_qregxiv4si (__o, 2); ret.val[3] = (poly8x16_t) __builtin_aarch64_get_qregxiv4si (__o, 3); return ret; } 5209: __extension__ extern __inline poly16x8x4_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld4q_lane_p16 (const poly16_t * __ptr, poly16x8x4_t __b, const int __c) { __builtin_aarch64_simd_xi __o; poly16x8x4_t ret; __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[0], 0); __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[1], 1); __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[2], 2); __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[3], 3); __o = __builtin_aarch64_ld4_lanev8hi ( (__builtin_aarch64_simd_hi *) __ptr, __o, __c); ret.val[0] = (poly16x8_t) __builtin_aarch64_get_qregxiv4si (__o, 0); ret.val[1] = (poly16x8_t) __builtin_aarch64_get_qregxiv4si (__o, 1); ret.val[2] = (poly16x8_t) __builtin_aarch64_get_qregxiv4si (__o, 2); ret.val[3] = (poly16x8_t) __builtin_aarch64_get_qregxiv4si (__o, 3); return ret; } 5209: __extension__ extern __inline poly64x2x4_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld4q_lane_p64 (const poly64_t * __ptr, poly64x2x4_t __b, const int __c) { __builtin_aarch64_simd_xi __o; poly64x2x4_t ret; __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[0], 0); __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[1], 1); __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[2], 2); __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[3], 3); __o = __builtin_aarch64_ld4_lanev2di ( (__builtin_aarch64_simd_di *) __ptr, __o, __c); ret.val[0] = (poly64x2_t) __builtin_aarch64_get_qregxiv4si (__o, 0); ret.val[1] = (poly64x2_t) __builtin_aarch64_get_qregxiv4si (__o, 1); ret.val[2] = (poly64x2_t) __builtin_aarch64_get_qregxiv4si (__o, 2); ret.val[3] = (poly64x2_t) __builtin_aarch64_get_qregxiv4si (__o, 3); return ret; } 5209: __extension__ extern __inline int8x16x4_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld4q_lane_s8 (const int8_t * __ptr, int8x16x4_t __b, const int __c) { __builtin_aarch64_simd_xi __o; int8x16x4_t ret; __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[0], 0); __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[1], 1); __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[2], 2); __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[3], 3); __o = __builtin_aarch64_ld4_lanev16qi ( (__builtin_aarch64_simd_qi *) __ptr, __o, __c); ret.val[0] = (int8x16_t) __builtin_aarch64_get_qregxiv4si (__o, 0); ret.val[1] = (int8x16_t) __builtin_aarch64_get_qregxiv4si (__o, 1); ret.val[2] = (int8x16_t) __builtin_aarch64_get_qregxiv4si (__o, 2); ret.val[3] = (int8x16_t) __builtin_aarch64_get_qregxiv4si (__o, 3); return ret; } 5209: __extension__ extern __inline int16x8x4_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld4q_lane_s16 (const int16_t * __ptr, int16x8x4_t __b, const int __c) { __builtin_aarch64_simd_xi __o; int16x8x4_t ret; __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[0], 0); __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[1], 1); __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[2], 2); __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[3], 3); __o = __builtin_aarch64_ld4_lanev8hi ( (__builtin_aarch64_simd_hi *) __ptr, __o, __c); ret.val[0] = (int16x8_t) __builtin_aarch64_get_qregxiv4si (__o, 0); ret.val[1] = (int16x8_t) __builtin_aarch64_get_qregxiv4si (__o, 1); ret.val[2] = (int16x8_t) __builtin_aarch64_get_qregxiv4si (__o, 2); ret.val[3] = (int16x8_t) __builtin_aarch64_get_qregxiv4si (__o, 3); return ret; } 5209: __extension__ extern __inline int32x4x4_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld4q_lane_s32 (const int32_t * __ptr, int32x4x4_t __b, const int __c) { __builtin_aarch64_simd_xi __o; int32x4x4_t ret; __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[0], 0); __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[1], 1); __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[2], 2); __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[3], 3); __o = __builtin_aarch64_ld4_lanev4si ( (__builtin_aarch64_simd_si *) __ptr, __o, __c); ret.val[0] = (int32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 0); ret.val[1] = (int32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 1); ret.val[2] = (int32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 2); ret.val[3] = (int32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 3); return ret; } 5209: __extension__ extern __inline int64x2x4_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld4q_lane_s64 (const int64_t * __ptr, int64x2x4_t __b, const int __c) { __builtin_aarch64_simd_xi __o; int64x2x4_t ret; __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[0], 0); __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[1], 1); __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[2], 2); __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[3], 3); __o = __builtin_aarch64_ld4_lanev2di ( (__builtin_aarch64_simd_di *) __ptr, __o, __c); ret.val[0] = (int64x2_t) __builtin_aarch64_get_qregxiv4si (__o, 0); ret.val[1] = (int64x2_t) __builtin_aarch64_get_qregxiv4si (__o, 1); ret.val[2] = (int64x2_t) __builtin_aarch64_get_qregxiv4si (__o, 2); ret.val[3] = (int64x2_t) __builtin_aarch64_get_qregxiv4si (__o, 3); return ret; } 5209: __extension__ extern __inline uint8x16x4_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld4q_lane_u8 (const uint8_t * __ptr, uint8x16x4_t __b, const int __c) { __builtin_aarch64_simd_xi __o; uint8x16x4_t ret; __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[0], 0); __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[1], 1); __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[2], 2); __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[3], 3); __o = __builtin_aarch64_ld4_lanev16qi ( (__builtin_aarch64_simd_qi *) __ptr, __o, __c); ret.val[0] = (uint8x16_t) __builtin_aarch64_get_qregxiv4si (__o, 0); ret.val[1] = (uint8x16_t) __builtin_aarch64_get_qregxiv4si (__o, 1); ret.val[2] = (uint8x16_t) __builtin_aarch64_get_qregxiv4si (__o, 2); ret.val[3] = (uint8x16_t) __builtin_aarch64_get_qregxiv4si (__o, 3); return ret; } 5209: __extension__ extern __inline uint16x8x4_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld4q_lane_u16 (const uint16_t * __ptr, uint16x8x4_t __b, const int __c) { __builtin_aarch64_simd_xi __o; uint16x8x4_t ret; __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[0], 0); __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[1], 1); __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[2], 2); __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[3], 3); __o = __builtin_aarch64_ld4_lanev8hi ( (__builtin_aarch64_simd_hi *) __ptr, __o, __c); ret.val[0] = (uint16x8_t) __builtin_aarch64_get_qregxiv4si (__o, 0); ret.val[1] = (uint16x8_t) __builtin_aarch64_get_qregxiv4si (__o, 1); ret.val[2] = (uint16x8_t) __builtin_aarch64_get_qregxiv4si (__o, 2); ret.val[3] = (uint16x8_t) __builtin_aarch64_get_qregxiv4si (__o, 3); return ret; } 5209: __extension__ extern __inline uint32x4x4_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld4q_lane_u32 (const uint32_t * __ptr, uint32x4x4_t __b, const int __c) { __builtin_aarch64_simd_xi __o; uint32x4x4_t ret; __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[0], 0); __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[1], 1); __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[2], 2); __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[3], 3); __o = __builtin_aarch64_ld4_lanev4si ( (__builtin_aarch64_simd_si *) __ptr, __o, __c); ret.val[0] = (uint32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 0); ret.val[1] = (uint32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 1); ret.val[2] = (uint32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 2); ret.val[3] = (uint32x4_t) __builtin_aarch64_get_qregxiv4si (__o, 3); return ret; } 5209: __extension__ extern __inline uint64x2x4_t __attribute__ ((__always_inline__, __gnu_inline__,__artificial__)) vld4q_lane_u64 (const uint64_t * __ptr, uint64x2x4_t __b, const int __c) { __builtin_aarch64_simd_xi __o; uint64x2x4_t ret; __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[0], 0); __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[1], 1); __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[2], 2); __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __b.val[3], 3); __o = __builtin_aarch64_ld4_lanev2di ( (__builtin_aarch64_simd_di *) __ptr, __o, __c); ret.val[0] = (uint64x2_t) __builtin_aarch64_get_qregxiv4si (__o, 0); ret.val[1] = (uint64x2_t) __builtin_aarch64_get_qregxiv4si (__o, 1); ret.val[2] = (uint64x2_t) __builtin_aarch64_get_qregxiv4si (__o, 2); ret.val[3] = (uint64x2_t) __builtin_aarch64_get_qregxiv4si (__o, 3); return ret; } 5209: 5209: 5209: 5209: 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmax_f32 (float32x2_t __a, float32x2_t __b) 5209: { 5209: return __builtin_aarch64_smax_nanv2sf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmax_f64 (float64x1_t __a, float64x1_t __b) 5209: { 5209: return (float64x1_t) 5209: { __builtin_aarch64_smax_nandf (vget_lane_f64 (__a, 0), 5209: vget_lane_f64 (__b, 0)) }; 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmax_s8 (int8x8_t __a, int8x8_t __b) 5209: { 5209: return __builtin_aarch64_smaxv8qi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmax_s16 (int16x4_t __a, int16x4_t __b) 5209: { 5209: return __builtin_aarch64_smaxv4hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmax_s32 (int32x2_t __a, int32x2_t __b) 5209: { 5209: return __builtin_aarch64_smaxv2si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmax_u8 (uint8x8_t __a, uint8x8_t __b) 5209: { 5209: return (uint8x8_t) __builtin_aarch64_umaxv8qi ((int8x8_t) __a, 5209: (int8x8_t) __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmax_u16 (uint16x4_t __a, uint16x4_t __b) 5209: { 5209: return (uint16x4_t) __builtin_aarch64_umaxv4hi ((int16x4_t) __a, 5209: (int16x4_t) __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmax_u32 (uint32x2_t __a, uint32x2_t __b) 5209: { 5209: return (uint32x2_t) __builtin_aarch64_umaxv2si ((int32x2_t) __a, 5209: (int32x2_t) __b); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmaxq_f32 (float32x4_t __a, float32x4_t __b) 5209: { 5209: return __builtin_aarch64_smax_nanv4sf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmaxq_f64 (float64x2_t __a, float64x2_t __b) 5209: { 5209: return __builtin_aarch64_smax_nanv2df (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmaxq_s8 (int8x16_t __a, int8x16_t __b) 5209: { 5209: return __builtin_aarch64_smaxv16qi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmaxq_s16 (int16x8_t __a, int16x8_t __b) 5209: { 5209: return __builtin_aarch64_smaxv8hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmaxq_s32 (int32x4_t __a, int32x4_t __b) 5209: { 5209: return __builtin_aarch64_smaxv4si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmaxq_u8 (uint8x16_t __a, uint8x16_t __b) 5209: { 5209: return (uint8x16_t) __builtin_aarch64_umaxv16qi ((int8x16_t) __a, 5209: (int8x16_t) __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmaxq_u16 (uint16x8_t __a, uint16x8_t __b) 5209: { 5209: return (uint16x8_t) __builtin_aarch64_umaxv8hi ((int16x8_t) __a, 5209: (int16x8_t) __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmaxq_u32 (uint32x4_t __a, uint32x4_t __b) 5209: { 5209: return (uint32x4_t) __builtin_aarch64_umaxv4si ((int32x4_t) __a, 5209: (int32x4_t) __b); 5209: } 5209: 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulx_f32 (float32x2_t __a, float32x2_t __b) 5209: { 5209: return __builtin_aarch64_fmulxv2sf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulxq_f32 (float32x4_t __a, float32x4_t __b) 5209: { 5209: return __builtin_aarch64_fmulxv4sf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulx_f64 (float64x1_t __a, float64x1_t __b) 5209: { 5209: return (float64x1_t) {__builtin_aarch64_fmulxdf (__a[0], __b[0])}; 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulxq_f64 (float64x2_t __a, float64x2_t __b) 5209: { 5209: return __builtin_aarch64_fmulxv2df (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulxs_f32 (float32_t __a, float32_t __b) 5209: { 5209: return __builtin_aarch64_fmulxsf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulxd_f64 (float64_t __a, float64_t __b) 5209: { 5209: return __builtin_aarch64_fmulxdf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulx_lane_f32 (float32x2_t __a, float32x2_t __v, const int __lane) 5209: { 5209: return vmulx_f32 (__a, vdup_n_f32 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__v), sizeof(__v[0]), __lane); __v[__lane]; }))); 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulx_lane_f64 (float64x1_t __a, float64x1_t __v, const int __lane) 5209: { 5209: return vmulx_f64 (__a, vdup_n_f64 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__v), sizeof(__v[0]), __lane); __v[__lane]; }))); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulxq_lane_f32 (float32x4_t __a, float32x2_t __v, const int __lane) 5209: { 5209: return vmulxq_f32 (__a, vdupq_n_f32 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__v), sizeof(__v[0]), __lane); __v[__lane]; }))); 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulxq_lane_f64 (float64x2_t __a, float64x1_t __v, const int __lane) 5209: { 5209: return vmulxq_f64 (__a, vdupq_n_f64 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__v), sizeof(__v[0]), __lane); __v[__lane]; }))); 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulx_laneq_f32 (float32x2_t __a, float32x4_t __v, const int __lane) 5209: { 5209: return vmulx_f32 (__a, vdup_n_f32 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__v), sizeof(__v[0]), __lane); __v[__lane]; }))); 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulx_laneq_f64 (float64x1_t __a, float64x2_t __v, const int __lane) 5209: { 5209: return vmulx_f64 (__a, vdup_n_f64 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__v), sizeof(__v[0]), __lane); __v[__lane]; }))); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulxq_laneq_f32 (float32x4_t __a, float32x4_t __v, const int __lane) 5209: { 5209: return vmulxq_f32 (__a, vdupq_n_f32 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__v), sizeof(__v[0]), __lane); __v[__lane]; }))); 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulxq_laneq_f64 (float64x2_t __a, float64x2_t __v, const int __lane) 5209: { 5209: return vmulxq_f64 (__a, vdupq_n_f64 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__v), sizeof(__v[0]), __lane); __v[__lane]; }))); 5209: } 5209: 5209: __extension__ extern __inline float32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulxs_lane_f32 (float32_t __a, float32x2_t __v, const int __lane) 5209: { 5209: return vmulxs_f32 (__a, __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__v), sizeof(__v[0]), __lane); __v[__lane]; })); 5209: } 5209: 5209: __extension__ extern __inline float32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulxs_laneq_f32 (float32_t __a, float32x4_t __v, const int __lane) 5209: { 5209: return vmulxs_f32 (__a, __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__v), sizeof(__v[0]), __lane); __v[__lane]; })); 5209: } 5209: 5209: __extension__ extern __inline float64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulxd_lane_f64 (float64_t __a, float64x1_t __v, const int __lane) 5209: { 5209: return vmulxd_f64 (__a, __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__v), sizeof(__v[0]), __lane); __v[__lane]; })); 5209: } 5209: 5209: __extension__ extern __inline float64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulxd_laneq_f64 (float64_t __a, float64x2_t __v, const int __lane) 5209: { 5209: return vmulxd_f64 (__a, __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__v), sizeof(__v[0]), __lane); __v[__lane]; })); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpmax_s8 (int8x8_t __a, int8x8_t __b) 5209: { 5209: return __builtin_aarch64_smaxpv8qi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpmax_s16 (int16x4_t __a, int16x4_t __b) 5209: { 5209: return __builtin_aarch64_smaxpv4hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpmax_s32 (int32x2_t __a, int32x2_t __b) 5209: { 5209: return __builtin_aarch64_smaxpv2si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpmax_u8 (uint8x8_t __a, uint8x8_t __b) 5209: { 5209: return (uint8x8_t) __builtin_aarch64_umaxpv8qi ((int8x8_t) __a, 5209: (int8x8_t) __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpmax_u16 (uint16x4_t __a, uint16x4_t __b) 5209: { 5209: return (uint16x4_t) __builtin_aarch64_umaxpv4hi ((int16x4_t) __a, 5209: (int16x4_t) __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpmax_u32 (uint32x2_t __a, uint32x2_t __b) 5209: { 5209: return (uint32x2_t) __builtin_aarch64_umaxpv2si ((int32x2_t) __a, 5209: (int32x2_t) __b); 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpmaxq_s8 (int8x16_t __a, int8x16_t __b) 5209: { 5209: return __builtin_aarch64_smaxpv16qi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpmaxq_s16 (int16x8_t __a, int16x8_t __b) 5209: { 5209: return __builtin_aarch64_smaxpv8hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpmaxq_s32 (int32x4_t __a, int32x4_t __b) 5209: { 5209: return __builtin_aarch64_smaxpv4si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpmaxq_u8 (uint8x16_t __a, uint8x16_t __b) 5209: { 5209: return (uint8x16_t) __builtin_aarch64_umaxpv16qi ((int8x16_t) __a, 5209: (int8x16_t) __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpmaxq_u16 (uint16x8_t __a, uint16x8_t __b) 5209: { 5209: return (uint16x8_t) __builtin_aarch64_umaxpv8hi ((int16x8_t) __a, 5209: (int16x8_t) __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpmaxq_u32 (uint32x4_t __a, uint32x4_t __b) 5209: { 5209: return (uint32x4_t) __builtin_aarch64_umaxpv4si ((int32x4_t) __a, 5209: (int32x4_t) __b); 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpmax_f32 (float32x2_t __a, float32x2_t __b) 5209: { 5209: return __builtin_aarch64_smax_nanpv2sf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpmaxq_f32 (float32x4_t __a, float32x4_t __b) 5209: { 5209: return __builtin_aarch64_smax_nanpv4sf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpmaxq_f64 (float64x2_t __a, float64x2_t __b) 5209: { 5209: return __builtin_aarch64_smax_nanpv2df (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpmaxqd_f64 (float64x2_t __a) 5209: { 5209: return __builtin_aarch64_reduc_smax_nan_scal_v2df (__a); 5209: } 5209: 5209: __extension__ extern __inline float32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpmaxs_f32 (float32x2_t __a) 5209: { 5209: return __builtin_aarch64_reduc_smax_nan_scal_v2sf (__a); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpmaxnm_f32 (float32x2_t __a, float32x2_t __b) 5209: { 5209: return __builtin_aarch64_smaxpv2sf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpmaxnmq_f32 (float32x4_t __a, float32x4_t __b) 5209: { 5209: return __builtin_aarch64_smaxpv4sf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpmaxnmq_f64 (float64x2_t __a, float64x2_t __b) 5209: { 5209: return __builtin_aarch64_smaxpv2df (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpmaxnmqd_f64 (float64x2_t __a) 5209: { 5209: return __builtin_aarch64_reduc_smax_scal_v2df (__a); 5209: } 5209: 5209: __extension__ extern __inline float32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpmaxnms_f32 (float32x2_t __a) 5209: { 5209: return __builtin_aarch64_reduc_smax_scal_v2sf (__a); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpmin_s8 (int8x8_t __a, int8x8_t __b) 5209: { 5209: return __builtin_aarch64_sminpv8qi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpmin_s16 (int16x4_t __a, int16x4_t __b) 5209: { 5209: return __builtin_aarch64_sminpv4hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpmin_s32 (int32x2_t __a, int32x2_t __b) 5209: { 5209: return __builtin_aarch64_sminpv2si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpmin_u8 (uint8x8_t __a, uint8x8_t __b) 5209: { 5209: return (uint8x8_t) __builtin_aarch64_uminpv8qi ((int8x8_t) __a, 5209: (int8x8_t) __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpmin_u16 (uint16x4_t __a, uint16x4_t __b) 5209: { 5209: return (uint16x4_t) __builtin_aarch64_uminpv4hi ((int16x4_t) __a, 5209: (int16x4_t) __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpmin_u32 (uint32x2_t __a, uint32x2_t __b) 5209: { 5209: return (uint32x2_t) __builtin_aarch64_uminpv2si ((int32x2_t) __a, 5209: (int32x2_t) __b); 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpminq_s8 (int8x16_t __a, int8x16_t __b) 5209: { 5209: return __builtin_aarch64_sminpv16qi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpminq_s16 (int16x8_t __a, int16x8_t __b) 5209: { 5209: return __builtin_aarch64_sminpv8hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpminq_s32 (int32x4_t __a, int32x4_t __b) 5209: { 5209: return __builtin_aarch64_sminpv4si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpminq_u8 (uint8x16_t __a, uint8x16_t __b) 5209: { 5209: return (uint8x16_t) __builtin_aarch64_uminpv16qi ((int8x16_t) __a, 5209: (int8x16_t) __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpminq_u16 (uint16x8_t __a, uint16x8_t __b) 5209: { 5209: return (uint16x8_t) __builtin_aarch64_uminpv8hi ((int16x8_t) __a, 5209: (int16x8_t) __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpminq_u32 (uint32x4_t __a, uint32x4_t __b) 5209: { 5209: return (uint32x4_t) __builtin_aarch64_uminpv4si ((int32x4_t) __a, 5209: (int32x4_t) __b); 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpmin_f32 (float32x2_t __a, float32x2_t __b) 5209: { 5209: return __builtin_aarch64_smin_nanpv2sf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpminq_f32 (float32x4_t __a, float32x4_t __b) 5209: { 5209: return __builtin_aarch64_smin_nanpv4sf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpminq_f64 (float64x2_t __a, float64x2_t __b) 5209: { 5209: return __builtin_aarch64_smin_nanpv2df (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpminqd_f64 (float64x2_t __a) 5209: { 5209: return __builtin_aarch64_reduc_smin_nan_scal_v2df (__a); 5209: } 5209: 5209: __extension__ extern __inline float32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpmins_f32 (float32x2_t __a) 5209: { 5209: return __builtin_aarch64_reduc_smin_nan_scal_v2sf (__a); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpminnm_f32 (float32x2_t __a, float32x2_t __b) 5209: { 5209: return __builtin_aarch64_sminpv2sf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpminnmq_f32 (float32x4_t __a, float32x4_t __b) 5209: { 5209: return __builtin_aarch64_sminpv4sf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpminnmq_f64 (float64x2_t __a, float64x2_t __b) 5209: { 5209: return __builtin_aarch64_sminpv2df (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpminnmqd_f64 (float64x2_t __a) 5209: { 5209: return __builtin_aarch64_reduc_smin_scal_v2df (__a); 5209: } 5209: 5209: __extension__ extern __inline float32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpminnms_f32 (float32x2_t __a) 5209: { 5209: return __builtin_aarch64_reduc_smin_scal_v2sf (__a); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmaxnm_f32 (float32x2_t __a, float32x2_t __b) 5209: { 5209: return __builtin_aarch64_fmaxv2sf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmaxnm_f64 (float64x1_t __a, float64x1_t __b) 5209: { 5209: return (float64x1_t) 5209: { __builtin_aarch64_fmaxdf (vget_lane_f64 (__a, 0), 5209: vget_lane_f64 (__b, 0)) }; 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmaxnmq_f32 (float32x4_t __a, float32x4_t __b) 5209: { 5209: return __builtin_aarch64_fmaxv4sf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmaxnmq_f64 (float64x2_t __a, float64x2_t __b) 5209: { 5209: return __builtin_aarch64_fmaxv2df (__a, __b); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmaxv_f32 (float32x2_t __a) 5209: { 5209: return __builtin_aarch64_reduc_smax_nan_scal_v2sf (__a); 5209: } 5209: 5209: __extension__ extern __inline int8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmaxv_s8 (int8x8_t __a) 5209: { 5209: return __builtin_aarch64_reduc_smax_scal_v8qi (__a); 5209: } 5209: 5209: __extension__ extern __inline int16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmaxv_s16 (int16x4_t __a) 5209: { 5209: return __builtin_aarch64_reduc_smax_scal_v4hi (__a); 5209: } 5209: 5209: __extension__ extern __inline int32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmaxv_s32 (int32x2_t __a) 5209: { 5209: return __builtin_aarch64_reduc_smax_scal_v2si (__a); 5209: } 5209: 5209: __extension__ extern __inline uint8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmaxv_u8 (uint8x8_t __a) 5209: { 5209: return __builtin_aarch64_reduc_umax_scal_v8qi_uu (__a); 5209: } 5209: 5209: __extension__ extern __inline uint16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmaxv_u16 (uint16x4_t __a) 5209: { 5209: return __builtin_aarch64_reduc_umax_scal_v4hi_uu (__a); 5209: } 5209: 5209: __extension__ extern __inline uint32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmaxv_u32 (uint32x2_t __a) 5209: { 5209: return __builtin_aarch64_reduc_umax_scal_v2si_uu (__a); 5209: } 5209: 5209: __extension__ extern __inline float32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmaxvq_f32 (float32x4_t __a) 5209: { 5209: return __builtin_aarch64_reduc_smax_nan_scal_v4sf (__a); 5209: } 5209: 5209: __extension__ extern __inline float64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmaxvq_f64 (float64x2_t __a) 5209: { 5209: return __builtin_aarch64_reduc_smax_nan_scal_v2df (__a); 5209: } 5209: 5209: __extension__ extern __inline int8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmaxvq_s8 (int8x16_t __a) 5209: { 5209: return __builtin_aarch64_reduc_smax_scal_v16qi (__a); 5209: } 5209: 5209: __extension__ extern __inline int16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmaxvq_s16 (int16x8_t __a) 5209: { 5209: return __builtin_aarch64_reduc_smax_scal_v8hi (__a); 5209: } 5209: 5209: __extension__ extern __inline int32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmaxvq_s32 (int32x4_t __a) 5209: { 5209: return __builtin_aarch64_reduc_smax_scal_v4si (__a); 5209: } 5209: 5209: __extension__ extern __inline uint8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmaxvq_u8 (uint8x16_t __a) 5209: { 5209: return __builtin_aarch64_reduc_umax_scal_v16qi_uu (__a); 5209: } 5209: 5209: __extension__ extern __inline uint16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmaxvq_u16 (uint16x8_t __a) 5209: { 5209: return __builtin_aarch64_reduc_umax_scal_v8hi_uu (__a); 5209: } 5209: 5209: __extension__ extern __inline uint32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmaxvq_u32 (uint32x4_t __a) 5209: { 5209: return __builtin_aarch64_reduc_umax_scal_v4si_uu (__a); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmaxnmv_f32 (float32x2_t __a) 5209: { 5209: return __builtin_aarch64_reduc_smax_scal_v2sf (__a); 5209: } 5209: 5209: __extension__ extern __inline float32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmaxnmvq_f32 (float32x4_t __a) 5209: { 5209: return __builtin_aarch64_reduc_smax_scal_v4sf (__a); 5209: } 5209: 5209: __extension__ extern __inline float64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmaxnmvq_f64 (float64x2_t __a) 5209: { 5209: return __builtin_aarch64_reduc_smax_scal_v2df (__a); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmin_f32 (float32x2_t __a, float32x2_t __b) 5209: { 5209: return __builtin_aarch64_smin_nanv2sf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmin_f64 (float64x1_t __a, float64x1_t __b) 5209: { 5209: return (float64x1_t) 5209: { __builtin_aarch64_smin_nandf (vget_lane_f64 (__a, 0), 5209: vget_lane_f64 (__b, 0)) }; 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmin_s8 (int8x8_t __a, int8x8_t __b) 5209: { 5209: return __builtin_aarch64_sminv8qi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmin_s16 (int16x4_t __a, int16x4_t __b) 5209: { 5209: return __builtin_aarch64_sminv4hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmin_s32 (int32x2_t __a, int32x2_t __b) 5209: { 5209: return __builtin_aarch64_sminv2si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmin_u8 (uint8x8_t __a, uint8x8_t __b) 5209: { 5209: return (uint8x8_t) __builtin_aarch64_uminv8qi ((int8x8_t) __a, 5209: (int8x8_t) __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmin_u16 (uint16x4_t __a, uint16x4_t __b) 5209: { 5209: return (uint16x4_t) __builtin_aarch64_uminv4hi ((int16x4_t) __a, 5209: (int16x4_t) __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmin_u32 (uint32x2_t __a, uint32x2_t __b) 5209: { 5209: return (uint32x2_t) __builtin_aarch64_uminv2si ((int32x2_t) __a, 5209: (int32x2_t) __b); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vminq_f32 (float32x4_t __a, float32x4_t __b) 5209: { 5209: return __builtin_aarch64_smin_nanv4sf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vminq_f64 (float64x2_t __a, float64x2_t __b) 5209: { 5209: return __builtin_aarch64_smin_nanv2df (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vminq_s8 (int8x16_t __a, int8x16_t __b) 5209: { 5209: return __builtin_aarch64_sminv16qi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vminq_s16 (int16x8_t __a, int16x8_t __b) 5209: { 5209: return __builtin_aarch64_sminv8hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vminq_s32 (int32x4_t __a, int32x4_t __b) 5209: { 5209: return __builtin_aarch64_sminv4si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vminq_u8 (uint8x16_t __a, uint8x16_t __b) 5209: { 5209: return (uint8x16_t) __builtin_aarch64_uminv16qi ((int8x16_t) __a, 5209: (int8x16_t) __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vminq_u16 (uint16x8_t __a, uint16x8_t __b) 5209: { 5209: return (uint16x8_t) __builtin_aarch64_uminv8hi ((int16x8_t) __a, 5209: (int16x8_t) __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vminq_u32 (uint32x4_t __a, uint32x4_t __b) 5209: { 5209: return (uint32x4_t) __builtin_aarch64_uminv4si ((int32x4_t) __a, 5209: (int32x4_t) __b); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vminnm_f32 (float32x2_t __a, float32x2_t __b) 5209: { 5209: return __builtin_aarch64_fminv2sf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vminnm_f64 (float64x1_t __a, float64x1_t __b) 5209: { 5209: return (float64x1_t) 5209: { __builtin_aarch64_fmindf (vget_lane_f64 (__a, 0), 5209: vget_lane_f64 (__b, 0)) }; 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vminnmq_f32 (float32x4_t __a, float32x4_t __b) 5209: { 5209: return __builtin_aarch64_fminv4sf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vminnmq_f64 (float64x2_t __a, float64x2_t __b) 5209: { 5209: return __builtin_aarch64_fminv2df (__a, __b); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vminv_f32 (float32x2_t __a) 5209: { 5209: return __builtin_aarch64_reduc_smin_nan_scal_v2sf (__a); 5209: } 5209: 5209: __extension__ extern __inline int8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vminv_s8 (int8x8_t __a) 5209: { 5209: return __builtin_aarch64_reduc_smin_scal_v8qi (__a); 5209: } 5209: 5209: __extension__ extern __inline int16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vminv_s16 (int16x4_t __a) 5209: { 5209: return __builtin_aarch64_reduc_smin_scal_v4hi (__a); 5209: } 5209: 5209: __extension__ extern __inline int32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vminv_s32 (int32x2_t __a) 5209: { 5209: return __builtin_aarch64_reduc_smin_scal_v2si (__a); 5209: } 5209: 5209: __extension__ extern __inline uint8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vminv_u8 (uint8x8_t __a) 5209: { 5209: return __builtin_aarch64_reduc_umin_scal_v8qi_uu (__a); 5209: } 5209: 5209: __extension__ extern __inline uint16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vminv_u16 (uint16x4_t __a) 5209: { 5209: return __builtin_aarch64_reduc_umin_scal_v4hi_uu (__a); 5209: } 5209: 5209: __extension__ extern __inline uint32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vminv_u32 (uint32x2_t __a) 5209: { 5209: return __builtin_aarch64_reduc_umin_scal_v2si_uu (__a); 5209: } 5209: 5209: __extension__ extern __inline float32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vminvq_f32 (float32x4_t __a) 5209: { 5209: return __builtin_aarch64_reduc_smin_nan_scal_v4sf (__a); 5209: } 5209: 5209: __extension__ extern __inline float64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vminvq_f64 (float64x2_t __a) 5209: { 5209: return __builtin_aarch64_reduc_smin_nan_scal_v2df (__a); 5209: } 5209: 5209: __extension__ extern __inline int8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vminvq_s8 (int8x16_t __a) 5209: { 5209: return __builtin_aarch64_reduc_smin_scal_v16qi (__a); 5209: } 5209: 5209: __extension__ extern __inline int16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vminvq_s16 (int16x8_t __a) 5209: { 5209: return __builtin_aarch64_reduc_smin_scal_v8hi (__a); 5209: } 5209: 5209: __extension__ extern __inline int32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vminvq_s32 (int32x4_t __a) 5209: { 5209: return __builtin_aarch64_reduc_smin_scal_v4si (__a); 5209: } 5209: 5209: __extension__ extern __inline uint8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vminvq_u8 (uint8x16_t __a) 5209: { 5209: return __builtin_aarch64_reduc_umin_scal_v16qi_uu (__a); 5209: } 5209: 5209: __extension__ extern __inline uint16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vminvq_u16 (uint16x8_t __a) 5209: { 5209: return __builtin_aarch64_reduc_umin_scal_v8hi_uu (__a); 5209: } 5209: 5209: __extension__ extern __inline uint32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vminvq_u32 (uint32x4_t __a) 5209: { 5209: return __builtin_aarch64_reduc_umin_scal_v4si_uu (__a); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vminnmv_f32 (float32x2_t __a) 5209: { 5209: return __builtin_aarch64_reduc_smin_scal_v2sf (__a); 5209: } 5209: 5209: __extension__ extern __inline float32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vminnmvq_f32 (float32x4_t __a) 5209: { 5209: return __builtin_aarch64_reduc_smin_scal_v4sf (__a); 5209: } 5209: 5209: __extension__ extern __inline float64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vminnmvq_f64 (float64x2_t __a) 5209: { 5209: return __builtin_aarch64_reduc_smin_scal_v2df (__a); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmla_f32 (float32x2_t __a, float32x2_t __b, float32x2_t __c) 5209: { 5209: return __a + __b * __c; 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmla_f64 (float64x1_t __a, float64x1_t __b, float64x1_t __c) 5209: { 5209: return __a + __b * __c; 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlaq_f32 (float32x4_t __a, float32x4_t __b, float32x4_t __c) 5209: { 5209: return __a + __b * __c; 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlaq_f64 (float64x2_t __a, float64x2_t __b, float64x2_t __c) 5209: { 5209: return __a + __b * __c; 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmla_lane_f32 (float32x2_t __a, float32x2_t __b, 5209: float32x2_t __c, const int __lane) 5209: { 5209: return (__a + (__b * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; }))); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmla_lane_s16 (int16x4_t __a, int16x4_t __b, 5209: int16x4_t __c, const int __lane) 5209: { 5209: return (__a + (__b * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; }))); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmla_lane_s32 (int32x2_t __a, int32x2_t __b, 5209: int32x2_t __c, const int __lane) 5209: { 5209: return (__a + (__b * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; }))); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmla_lane_u16 (uint16x4_t __a, uint16x4_t __b, 5209: uint16x4_t __c, const int __lane) 5209: { 5209: return (__a + (__b * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; }))); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmla_lane_u32 (uint32x2_t __a, uint32x2_t __b, 5209: uint32x2_t __c, const int __lane) 5209: { 5209: return (__a + (__b * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; }))); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmla_laneq_f32 (float32x2_t __a, float32x2_t __b, 5209: float32x4_t __c, const int __lane) 5209: { 5209: return (__a + (__b * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; }))); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmla_laneq_s16 (int16x4_t __a, int16x4_t __b, 5209: int16x8_t __c, const int __lane) 5209: { 5209: return (__a + (__b * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; }))); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmla_laneq_s32 (int32x2_t __a, int32x2_t __b, 5209: int32x4_t __c, const int __lane) 5209: { 5209: return (__a + (__b * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; }))); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmla_laneq_u16 (uint16x4_t __a, uint16x4_t __b, 5209: uint16x8_t __c, const int __lane) 5209: { 5209: return (__a + (__b * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; }))); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmla_laneq_u32 (uint32x2_t __a, uint32x2_t __b, 5209: uint32x4_t __c, const int __lane) 5209: { 5209: return (__a + (__b * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; }))); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlaq_lane_f32 (float32x4_t __a, float32x4_t __b, 5209: float32x2_t __c, const int __lane) 5209: { 5209: return (__a + (__b * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; }))); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlaq_lane_s16 (int16x8_t __a, int16x8_t __b, 5209: int16x4_t __c, const int __lane) 5209: { 5209: return (__a + (__b * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; }))); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlaq_lane_s32 (int32x4_t __a, int32x4_t __b, 5209: int32x2_t __c, const int __lane) 5209: { 5209: return (__a + (__b * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; }))); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlaq_lane_u16 (uint16x8_t __a, uint16x8_t __b, 5209: uint16x4_t __c, const int __lane) 5209: { 5209: return (__a + (__b * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; }))); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlaq_lane_u32 (uint32x4_t __a, uint32x4_t __b, 5209: uint32x2_t __c, const int __lane) 5209: { 5209: return (__a + (__b * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; }))); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlaq_laneq_f32 (float32x4_t __a, float32x4_t __b, 5209: float32x4_t __c, const int __lane) 5209: { 5209: return (__a + (__b * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; }))); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlaq_laneq_s16 (int16x8_t __a, int16x8_t __b, 5209: int16x8_t __c, const int __lane) 5209: { 5209: return (__a + (__b * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; }))); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlaq_laneq_s32 (int32x4_t __a, int32x4_t __b, 5209: int32x4_t __c, const int __lane) 5209: { 5209: return (__a + (__b * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; }))); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlaq_laneq_u16 (uint16x8_t __a, uint16x8_t __b, 5209: uint16x8_t __c, const int __lane) 5209: { 5209: return (__a + (__b * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; }))); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlaq_laneq_u32 (uint32x4_t __a, uint32x4_t __b, 5209: uint32x4_t __c, const int __lane) 5209: { 5209: return (__a + (__b * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; }))); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmls_f32 (float32x2_t __a, float32x2_t __b, float32x2_t __c) 5209: { 5209: return __a - __b * __c; 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmls_f64 (float64x1_t __a, float64x1_t __b, float64x1_t __c) 5209: { 5209: return __a - __b * __c; 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlsq_f32 (float32x4_t __a, float32x4_t __b, float32x4_t __c) 5209: { 5209: return __a - __b * __c; 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlsq_f64 (float64x2_t __a, float64x2_t __b, float64x2_t __c) 5209: { 5209: return __a - __b * __c; 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmls_lane_f32 (float32x2_t __a, float32x2_t __b, 5209: float32x2_t __c, const int __lane) 5209: { 5209: return (__a - (__b * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; }))); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmls_lane_s16 (int16x4_t __a, int16x4_t __b, 5209: int16x4_t __c, const int __lane) 5209: { 5209: return (__a - (__b * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; }))); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmls_lane_s32 (int32x2_t __a, int32x2_t __b, 5209: int32x2_t __c, const int __lane) 5209: { 5209: return (__a - (__b * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; }))); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmls_lane_u16 (uint16x4_t __a, uint16x4_t __b, 5209: uint16x4_t __c, const int __lane) 5209: { 5209: return (__a - (__b * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; }))); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmls_lane_u32 (uint32x2_t __a, uint32x2_t __b, 5209: uint32x2_t __c, const int __lane) 5209: { 5209: return (__a - (__b * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; }))); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmls_laneq_f32 (float32x2_t __a, float32x2_t __b, 5209: float32x4_t __c, const int __lane) 5209: { 5209: return (__a - (__b * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; }))); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmls_laneq_s16 (int16x4_t __a, int16x4_t __b, 5209: int16x8_t __c, const int __lane) 5209: { 5209: return (__a - (__b * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; }))); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmls_laneq_s32 (int32x2_t __a, int32x2_t __b, 5209: int32x4_t __c, const int __lane) 5209: { 5209: return (__a - (__b * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; }))); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmls_laneq_u16 (uint16x4_t __a, uint16x4_t __b, 5209: uint16x8_t __c, const int __lane) 5209: { 5209: return (__a - (__b * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; }))); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmls_laneq_u32 (uint32x2_t __a, uint32x2_t __b, 5209: uint32x4_t __c, const int __lane) 5209: { 5209: return (__a - (__b * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; }))); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlsq_lane_f32 (float32x4_t __a, float32x4_t __b, 5209: float32x2_t __c, const int __lane) 5209: { 5209: return (__a - (__b * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; }))); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlsq_lane_s16 (int16x8_t __a, int16x8_t __b, 5209: int16x4_t __c, const int __lane) 5209: { 5209: return (__a - (__b * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; }))); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlsq_lane_s32 (int32x4_t __a, int32x4_t __b, 5209: int32x2_t __c, const int __lane) 5209: { 5209: return (__a - (__b * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; }))); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlsq_lane_u16 (uint16x8_t __a, uint16x8_t __b, 5209: uint16x4_t __c, const int __lane) 5209: { 5209: return (__a - (__b * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; }))); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlsq_lane_u32 (uint32x4_t __a, uint32x4_t __b, 5209: uint32x2_t __c, const int __lane) 5209: { 5209: return (__a - (__b * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; }))); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlsq_laneq_f32 (float32x4_t __a, float32x4_t __b, 5209: float32x4_t __c, const int __lane) 5209: { 5209: return (__a - (__b * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; }))); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlsq_laneq_s16 (int16x8_t __a, int16x8_t __b, 5209: int16x8_t __c, const int __lane) 5209: { 5209: return (__a - (__b * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; }))); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlsq_laneq_s32 (int32x4_t __a, int32x4_t __b, 5209: int32x4_t __c, const int __lane) 5209: { 5209: return (__a - (__b * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; }))); 5209: } 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlsq_laneq_u16 (uint16x8_t __a, uint16x8_t __b, 5209: uint16x8_t __c, const int __lane) 5209: { 5209: return (__a - (__b * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; }))); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmlsq_laneq_u32 (uint32x4_t __a, uint32x4_t __b, 5209: uint32x4_t __c, const int __lane) 5209: { 5209: return (__a - (__b * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; }))); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmov_n_f16 (float16_t __a) 5209: { 5209: return vdup_n_f16 (__a); 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmov_n_f32 (float32_t __a) 5209: { 5209: return vdup_n_f32 (__a); 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmov_n_f64 (float64_t __a) 5209: { 5209: return (float64x1_t) {__a}; 5209: } 5209: 5209: __extension__ extern __inline poly8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmov_n_p8 (poly8_t __a) 5209: { 5209: return vdup_n_p8 (__a); 5209: } 5209: 5209: __extension__ extern __inline poly16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmov_n_p16 (poly16_t __a) 5209: { 5209: return vdup_n_p16 (__a); 5209: } 5209: 5209: __extension__ extern __inline poly64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmov_n_p64 (poly64_t __a) 5209: { 5209: return vdup_n_p64 (__a); 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmov_n_s8 (int8_t __a) 5209: { 5209: return vdup_n_s8 (__a); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmov_n_s16 (int16_t __a) 5209: { 5209: return vdup_n_s16 (__a); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmov_n_s32 (int32_t __a) 5209: { 5209: return vdup_n_s32 (__a); 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmov_n_s64 (int64_t __a) 5209: { 5209: return (int64x1_t) {__a}; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmov_n_u8 (uint8_t __a) 5209: { 5209: return vdup_n_u8 (__a); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmov_n_u16 (uint16_t __a) 5209: { 5209: return vdup_n_u16 (__a); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmov_n_u32 (uint32_t __a) 5209: { 5209: return vdup_n_u32 (__a); 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmov_n_u64 (uint64_t __a) 5209: { 5209: return (uint64x1_t) {__a}; 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmovq_n_f16 (float16_t __a) 5209: { 5209: return vdupq_n_f16 (__a); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmovq_n_f32 (float32_t __a) 5209: { 5209: return vdupq_n_f32 (__a); 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmovq_n_f64 (float64_t __a) 5209: { 5209: return vdupq_n_f64 (__a); 5209: } 5209: 5209: __extension__ extern __inline poly8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmovq_n_p8 (poly8_t __a) 5209: { 5209: return vdupq_n_p8 (__a); 5209: } 5209: 5209: __extension__ extern __inline poly16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmovq_n_p16 (poly16_t __a) 5209: { 5209: return vdupq_n_p16 (__a); 5209: } 5209: 5209: __extension__ extern __inline poly64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmovq_n_p64 (poly64_t __a) 5209: { 5209: return vdupq_n_p64 (__a); 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmovq_n_s8 (int8_t __a) 5209: { 5209: return vdupq_n_s8 (__a); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmovq_n_s16 (int16_t __a) 5209: { 5209: return vdupq_n_s16 (__a); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmovq_n_s32 (int32_t __a) 5209: { 5209: return vdupq_n_s32 (__a); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmovq_n_s64 (int64_t __a) 5209: { 5209: return vdupq_n_s64 (__a); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmovq_n_u8 (uint8_t __a) 5209: { 5209: return vdupq_n_u8 (__a); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmovq_n_u16 (uint16_t __a) 5209: { 5209: return vdupq_n_u16 (__a); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmovq_n_u32 (uint32_t __a) 5209: { 5209: return vdupq_n_u32 (__a); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmovq_n_u64 (uint64_t __a) 5209: { 5209: return vdupq_n_u64 (__a); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmul_lane_f32 (float32x2_t __a, float32x2_t __b, const int __lane) 5209: { 5209: return __a * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }); 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmul_lane_f64 (float64x1_t __a, float64x1_t __b, const int __lane) 5209: { 5209: return __a * __b; 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmul_lane_s16 (int16x4_t __a, int16x4_t __b, const int __lane) 5209: { 5209: return __a * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmul_lane_s32 (int32x2_t __a, int32x2_t __b, const int __lane) 5209: { 5209: return __a * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmul_lane_u16 (uint16x4_t __a, uint16x4_t __b, const int __lane) 5209: { 5209: return __a * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmul_lane_u32 (uint32x2_t __a, uint32x2_t __b, const int __lane) 5209: { 5209: return __a * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmuld_lane_f64 (float64_t __a, float64x1_t __b, const int __lane) 5209: { 5209: return __a * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }); 5209: } 5209: 5209: __extension__ extern __inline float64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmuld_laneq_f64 (float64_t __a, float64x2_t __b, const int __lane) 5209: { 5209: return __a * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmuls_lane_f32 (float32_t __a, float32x2_t __b, const int __lane) 5209: { 5209: return __a * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }); 5209: } 5209: 5209: __extension__ extern __inline float32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmuls_laneq_f32 (float32_t __a, float32x4_t __b, const int __lane) 5209: { 5209: return __a * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmul_laneq_f32 (float32x2_t __a, float32x4_t __b, const int __lane) 5209: { 5209: return __a * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }); 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmul_laneq_f64 (float64x1_t __a, float64x2_t __b, const int __lane) 5209: { 5209: return __a * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmul_laneq_s16 (int16x4_t __a, int16x8_t __b, const int __lane) 5209: { 5209: return __a * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmul_laneq_s32 (int32x2_t __a, int32x4_t __b, const int __lane) 5209: { 5209: return __a * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmul_laneq_u16 (uint16x4_t __a, uint16x8_t __b, const int __lane) 5209: { 5209: return __a * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmul_laneq_u32 (uint32x2_t __a, uint32x4_t __b, const int __lane) 5209: { 5209: return __a * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmul_n_f64 (float64x1_t __a, float64_t __b) 5209: { 5209: return (float64x1_t) { vget_lane_f64 (__a, 0) * __b }; 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulq_lane_f32 (float32x4_t __a, float32x2_t __b, const int __lane) 5209: { 5209: return __a * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }); 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulq_lane_f64 (float64x2_t __a, float64x1_t __b, const int __lane) 5209: { 5209: __builtin_aarch64_im_lane_boundsi (sizeof(__a), sizeof(__a[0]), __lane); 5209: return __a * __b[0]; 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulq_lane_s16 (int16x8_t __a, int16x4_t __b, const int __lane) 5209: { 5209: return __a * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulq_lane_s32 (int32x4_t __a, int32x2_t __b, const int __lane) 5209: { 5209: return __a * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulq_lane_u16 (uint16x8_t __a, uint16x4_t __b, const int __lane) 5209: { 5209: return __a * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulq_lane_u32 (uint32x4_t __a, uint32x2_t __b, const int __lane) 5209: { 5209: return __a * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulq_laneq_f32 (float32x4_t __a, float32x4_t __b, const int __lane) 5209: { 5209: return __a * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }); 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulq_laneq_f64 (float64x2_t __a, float64x2_t __b, const int __lane) 5209: { 5209: return __a * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulq_laneq_s16 (int16x8_t __a, int16x8_t __b, const int __lane) 5209: { 5209: return __a * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulq_laneq_s32 (int32x4_t __a, int32x4_t __b, const int __lane) 5209: { 5209: return __a * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulq_laneq_u16 (uint16x8_t __a, uint16x8_t __b, const int __lane) 5209: { 5209: return __a * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulq_laneq_u32 (uint32x4_t __a, uint32x4_t __b, const int __lane) 5209: { 5209: return __a * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmul_n_f32 (float32x2_t __a, float32_t __b) 5209: { 5209: return __a * __b; 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulq_n_f32 (float32x4_t __a, float32_t __b) 5209: { 5209: return __a * __b; 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulq_n_f64 (float64x2_t __a, float64_t __b) 5209: { 5209: return __a * __b; 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmul_n_s16 (int16x4_t __a, int16_t __b) 5209: { 5209: return __a * __b; 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulq_n_s16 (int16x8_t __a, int16_t __b) 5209: { 5209: return __a * __b; 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmul_n_s32 (int32x2_t __a, int32_t __b) 5209: { 5209: return __a * __b; 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulq_n_s32 (int32x4_t __a, int32_t __b) 5209: { 5209: return __a * __b; 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmul_n_u16 (uint16x4_t __a, uint16_t __b) 5209: { 5209: return __a * __b; 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulq_n_u16 (uint16x8_t __a, uint16_t __b) 5209: { 5209: return __a * __b; 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmul_n_u32 (uint32x2_t __a, uint32_t __b) 5209: { 5209: return __a * __b; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulq_n_u32 (uint32x4_t __a, uint32_t __b) 5209: { 5209: return __a * __b; 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline poly8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmvn_p8 (poly8x8_t __a) 5209: { 5209: return (poly8x8_t) ~((int8x8_t) __a); 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmvn_s8 (int8x8_t __a) 5209: { 5209: return ~__a; 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmvn_s16 (int16x4_t __a) 5209: { 5209: return ~__a; 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmvn_s32 (int32x2_t __a) 5209: { 5209: return ~__a; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmvn_u8 (uint8x8_t __a) 5209: { 5209: return ~__a; 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmvn_u16 (uint16x4_t __a) 5209: { 5209: return ~__a; 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmvn_u32 (uint32x2_t __a) 5209: { 5209: return ~__a; 5209: } 5209: 5209: __extension__ extern __inline poly8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmvnq_p8 (poly8x16_t __a) 5209: { 5209: return (poly8x16_t) ~((int8x16_t) __a); 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmvnq_s8 (int8x16_t __a) 5209: { 5209: return ~__a; 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmvnq_s16 (int16x8_t __a) 5209: { 5209: return ~__a; 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmvnq_s32 (int32x4_t __a) 5209: { 5209: return ~__a; 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmvnq_u8 (uint8x16_t __a) 5209: { 5209: return ~__a; 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmvnq_u16 (uint16x8_t __a) 5209: { 5209: return ~__a; 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmvnq_u32 (uint32x4_t __a) 5209: { 5209: return ~__a; 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vneg_f32 (float32x2_t __a) 5209: { 5209: return -__a; 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vneg_f64 (float64x1_t __a) 5209: { 5209: return -__a; 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vneg_s8 (int8x8_t __a) 5209: { 5209: return -__a; 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vneg_s16 (int16x4_t __a) 5209: { 5209: return -__a; 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vneg_s32 (int32x2_t __a) 5209: { 5209: return -__a; 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vneg_s64 (int64x1_t __a) 5209: { 5209: return -__a; 5209: } 5209: # 23216 "/usr/lib/gcc/aarch64-linux-gnu/10/include/arm_neon.h" 3 4 5209: __extension__ extern __inline int64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vnegd_s64 (int64_t __a) 5209: { 5209: return - (uint64_t) __a; 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vnegq_f32 (float32x4_t __a) 5209: { 5209: return -__a; 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vnegq_f64 (float64x2_t __a) 5209: { 5209: return -__a; 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vnegq_s8 (int8x16_t __a) 5209: { 5209: return -__a; 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vnegq_s16 (int16x8_t __a) 5209: { 5209: return -__a; 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vnegq_s32 (int32x4_t __a) 5209: { 5209: return -__a; 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vnegq_s64 (int64x2_t __a) 5209: { 5209: return -__a; 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpadd_f32 (float32x2_t __a, float32x2_t __b) 5209: { 5209: return __builtin_aarch64_faddpv2sf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpaddq_f32 (float32x4_t __a, float32x4_t __b) 5209: { 5209: return __builtin_aarch64_faddpv4sf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpaddq_f64 (float64x2_t __a, float64x2_t __b) 5209: { 5209: return __builtin_aarch64_faddpv2df (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpadd_s8 (int8x8_t __a, int8x8_t __b) 5209: { 5209: return __builtin_aarch64_addpv8qi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpadd_s16 (int16x4_t __a, int16x4_t __b) 5209: { 5209: return __builtin_aarch64_addpv4hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpadd_s32 (int32x2_t __a, int32x2_t __b) 5209: { 5209: return __builtin_aarch64_addpv2si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpadd_u8 (uint8x8_t __a, uint8x8_t __b) 5209: { 5209: return (uint8x8_t) __builtin_aarch64_addpv8qi ((int8x8_t) __a, 5209: (int8x8_t) __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpadd_u16 (uint16x4_t __a, uint16x4_t __b) 5209: { 5209: return (uint16x4_t) __builtin_aarch64_addpv4hi ((int16x4_t) __a, 5209: (int16x4_t) __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpadd_u32 (uint32x2_t __a, uint32x2_t __b) 5209: { 5209: return (uint32x2_t) __builtin_aarch64_addpv2si ((int32x2_t) __a, 5209: (int32x2_t) __b); 5209: } 5209: 5209: __extension__ extern __inline float32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpadds_f32 (float32x2_t __a) 5209: { 5209: return __builtin_aarch64_reduc_plus_scal_v2sf (__a); 5209: } 5209: 5209: __extension__ extern __inline float64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpaddd_f64 (float64x2_t __a) 5209: { 5209: return __builtin_aarch64_reduc_plus_scal_v2df (__a); 5209: } 5209: 5209: __extension__ extern __inline int64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpaddd_s64 (int64x2_t __a) 5209: { 5209: return __builtin_aarch64_addpdi (__a); 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpaddd_u64 (uint64x2_t __a) 5209: { 5209: return __builtin_aarch64_addpdi ((int64x2_t) __a); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqabsq_s64 (int64x2_t __a) 5209: { 5209: return (int64x2_t) __builtin_aarch64_sqabsv2di (__a); 5209: } 5209: 5209: __extension__ extern __inline int8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqabsb_s8 (int8_t __a) 5209: { 5209: return (int8_t) __builtin_aarch64_sqabsqi (__a); 5209: } 5209: 5209: __extension__ extern __inline int16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqabsh_s16 (int16_t __a) 5209: { 5209: return (int16_t) __builtin_aarch64_sqabshi (__a); 5209: } 5209: 5209: __extension__ extern __inline int32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqabss_s32 (int32_t __a) 5209: { 5209: return (int32_t) __builtin_aarch64_sqabssi (__a); 5209: } 5209: 5209: __extension__ extern __inline int64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqabsd_s64 (int64_t __a) 5209: { 5209: return __builtin_aarch64_sqabsdi (__a); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline int8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqaddb_s8 (int8_t __a, int8_t __b) 5209: { 5209: return (int8_t) __builtin_aarch64_sqaddqi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqaddh_s16 (int16_t __a, int16_t __b) 5209: { 5209: return (int16_t) __builtin_aarch64_sqaddhi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqadds_s32 (int32_t __a, int32_t __b) 5209: { 5209: return (int32_t) __builtin_aarch64_sqaddsi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqaddd_s64 (int64_t __a, int64_t __b) 5209: { 5209: return __builtin_aarch64_sqadddi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqaddb_u8 (uint8_t __a, uint8_t __b) 5209: { 5209: return (uint8_t) __builtin_aarch64_uqaddqi_uuu (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqaddh_u16 (uint16_t __a, uint16_t __b) 5209: { 5209: return (uint16_t) __builtin_aarch64_uqaddhi_uuu (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqadds_u32 (uint32_t __a, uint32_t __b) 5209: { 5209: return (uint32_t) __builtin_aarch64_uqaddsi_uuu (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqaddd_u64 (uint64_t __a, uint64_t __b) 5209: { 5209: return __builtin_aarch64_uqadddi_uuu (__a, __b); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmlal_s16 (int32x4_t __a, int16x4_t __b, int16x4_t __c) 5209: { 5209: return __builtin_aarch64_sqdmlalv4hi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmlal_high_s16 (int32x4_t __a, int16x8_t __b, int16x8_t __c) 5209: { 5209: return __builtin_aarch64_sqdmlal2v8hi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmlal_high_lane_s16 (int32x4_t __a, int16x8_t __b, int16x4_t __c, 5209: int const __d) 5209: { 5209: return __builtin_aarch64_sqdmlal2_lanev8hi (__a, __b, __c, __d); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmlal_high_laneq_s16 (int32x4_t __a, int16x8_t __b, int16x8_t __c, 5209: int const __d) 5209: { 5209: return __builtin_aarch64_sqdmlal2_laneqv8hi (__a, __b, __c, __d); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmlal_high_n_s16 (int32x4_t __a, int16x8_t __b, int16_t __c) 5209: { 5209: return __builtin_aarch64_sqdmlal2_nv8hi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmlal_lane_s16 (int32x4_t __a, int16x4_t __b, int16x4_t __c, int const __d) 5209: { 5209: return __builtin_aarch64_sqdmlal_lanev4hi (__a, __b, __c, __d); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmlal_laneq_s16 (int32x4_t __a, int16x4_t __b, int16x8_t __c, int const __d) 5209: { 5209: return __builtin_aarch64_sqdmlal_laneqv4hi (__a, __b, __c, __d); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmlal_n_s16 (int32x4_t __a, int16x4_t __b, int16_t __c) 5209: { 5209: return __builtin_aarch64_sqdmlal_nv4hi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmlal_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c) 5209: { 5209: return __builtin_aarch64_sqdmlalv2si (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmlal_high_s32 (int64x2_t __a, int32x4_t __b, int32x4_t __c) 5209: { 5209: return __builtin_aarch64_sqdmlal2v4si (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmlal_high_lane_s32 (int64x2_t __a, int32x4_t __b, int32x2_t __c, 5209: int const __d) 5209: { 5209: return __builtin_aarch64_sqdmlal2_lanev4si (__a, __b, __c, __d); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmlal_high_laneq_s32 (int64x2_t __a, int32x4_t __b, int32x4_t __c, 5209: int const __d) 5209: { 5209: return __builtin_aarch64_sqdmlal2_laneqv4si (__a, __b, __c, __d); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmlal_high_n_s32 (int64x2_t __a, int32x4_t __b, int32_t __c) 5209: { 5209: return __builtin_aarch64_sqdmlal2_nv4si (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmlal_lane_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c, int const __d) 5209: { 5209: return __builtin_aarch64_sqdmlal_lanev2si (__a, __b, __c, __d); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmlal_laneq_s32 (int64x2_t __a, int32x2_t __b, int32x4_t __c, int const __d) 5209: { 5209: return __builtin_aarch64_sqdmlal_laneqv2si (__a, __b, __c, __d); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmlal_n_s32 (int64x2_t __a, int32x2_t __b, int32_t __c) 5209: { 5209: return __builtin_aarch64_sqdmlal_nv2si (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmlalh_s16 (int32_t __a, int16_t __b, int16_t __c) 5209: { 5209: return __builtin_aarch64_sqdmlalhi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmlalh_lane_s16 (int32_t __a, int16_t __b, int16x4_t __c, const int __d) 5209: { 5209: return __builtin_aarch64_sqdmlal_lanehi (__a, __b, __c, __d); 5209: } 5209: 5209: __extension__ extern __inline int32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmlalh_laneq_s16 (int32_t __a, int16_t __b, int16x8_t __c, const int __d) 5209: { 5209: return __builtin_aarch64_sqdmlal_laneqhi (__a, __b, __c, __d); 5209: } 5209: 5209: __extension__ extern __inline int64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmlals_s32 (int64_t __a, int32_t __b, int32_t __c) 5209: { 5209: return __builtin_aarch64_sqdmlalsi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmlals_lane_s32 (int64_t __a, int32_t __b, int32x2_t __c, const int __d) 5209: { 5209: return __builtin_aarch64_sqdmlal_lanesi (__a, __b, __c, __d); 5209: } 5209: 5209: __extension__ extern __inline int64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmlals_laneq_s32 (int64_t __a, int32_t __b, int32x4_t __c, const int __d) 5209: { 5209: return __builtin_aarch64_sqdmlal_laneqsi (__a, __b, __c, __d); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmlsl_s16 (int32x4_t __a, int16x4_t __b, int16x4_t __c) 5209: { 5209: return __builtin_aarch64_sqdmlslv4hi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmlsl_high_s16 (int32x4_t __a, int16x8_t __b, int16x8_t __c) 5209: { 5209: return __builtin_aarch64_sqdmlsl2v8hi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmlsl_high_lane_s16 (int32x4_t __a, int16x8_t __b, int16x4_t __c, 5209: int const __d) 5209: { 5209: return __builtin_aarch64_sqdmlsl2_lanev8hi (__a, __b, __c, __d); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmlsl_high_laneq_s16 (int32x4_t __a, int16x8_t __b, int16x8_t __c, 5209: int const __d) 5209: { 5209: return __builtin_aarch64_sqdmlsl2_laneqv8hi (__a, __b, __c, __d); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmlsl_high_n_s16 (int32x4_t __a, int16x8_t __b, int16_t __c) 5209: { 5209: return __builtin_aarch64_sqdmlsl2_nv8hi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmlsl_lane_s16 (int32x4_t __a, int16x4_t __b, int16x4_t __c, int const __d) 5209: { 5209: return __builtin_aarch64_sqdmlsl_lanev4hi (__a, __b, __c, __d); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmlsl_laneq_s16 (int32x4_t __a, int16x4_t __b, int16x8_t __c, int const __d) 5209: { 5209: return __builtin_aarch64_sqdmlsl_laneqv4hi (__a, __b, __c, __d); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmlsl_n_s16 (int32x4_t __a, int16x4_t __b, int16_t __c) 5209: { 5209: return __builtin_aarch64_sqdmlsl_nv4hi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmlsl_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c) 5209: { 5209: return __builtin_aarch64_sqdmlslv2si (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmlsl_high_s32 (int64x2_t __a, int32x4_t __b, int32x4_t __c) 5209: { 5209: return __builtin_aarch64_sqdmlsl2v4si (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmlsl_high_lane_s32 (int64x2_t __a, int32x4_t __b, int32x2_t __c, 5209: int const __d) 5209: { 5209: return __builtin_aarch64_sqdmlsl2_lanev4si (__a, __b, __c, __d); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmlsl_high_laneq_s32 (int64x2_t __a, int32x4_t __b, int32x4_t __c, 5209: int const __d) 5209: { 5209: return __builtin_aarch64_sqdmlsl2_laneqv4si (__a, __b, __c, __d); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmlsl_high_n_s32 (int64x2_t __a, int32x4_t __b, int32_t __c) 5209: { 5209: return __builtin_aarch64_sqdmlsl2_nv4si (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmlsl_lane_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c, int const __d) 5209: { 5209: return __builtin_aarch64_sqdmlsl_lanev2si (__a, __b, __c, __d); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmlsl_laneq_s32 (int64x2_t __a, int32x2_t __b, int32x4_t __c, int const __d) 5209: { 5209: return __builtin_aarch64_sqdmlsl_laneqv2si (__a, __b, __c, __d); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmlsl_n_s32 (int64x2_t __a, int32x2_t __b, int32_t __c) 5209: { 5209: return __builtin_aarch64_sqdmlsl_nv2si (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmlslh_s16 (int32_t __a, int16_t __b, int16_t __c) 5209: { 5209: return __builtin_aarch64_sqdmlslhi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmlslh_lane_s16 (int32_t __a, int16_t __b, int16x4_t __c, const int __d) 5209: { 5209: return __builtin_aarch64_sqdmlsl_lanehi (__a, __b, __c, __d); 5209: } 5209: 5209: __extension__ extern __inline int32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmlslh_laneq_s16 (int32_t __a, int16_t __b, int16x8_t __c, const int __d) 5209: { 5209: return __builtin_aarch64_sqdmlsl_laneqhi (__a, __b, __c, __d); 5209: } 5209: 5209: __extension__ extern __inline int64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmlsls_s32 (int64_t __a, int32_t __b, int32_t __c) 5209: { 5209: return __builtin_aarch64_sqdmlslsi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmlsls_lane_s32 (int64_t __a, int32_t __b, int32x2_t __c, const int __d) 5209: { 5209: return __builtin_aarch64_sqdmlsl_lanesi (__a, __b, __c, __d); 5209: } 5209: 5209: __extension__ extern __inline int64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmlsls_laneq_s32 (int64_t __a, int32_t __b, int32x4_t __c, const int __d) 5209: { 5209: return __builtin_aarch64_sqdmlsl_laneqsi (__a, __b, __c, __d); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmulh_lane_s16 (int16x4_t __a, int16x4_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_sqdmulh_lanev4hi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmulh_lane_s32 (int32x2_t __a, int32x2_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_sqdmulh_lanev2si (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmulhq_lane_s16 (int16x8_t __a, int16x4_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_sqdmulh_lanev8hi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmulhq_lane_s32 (int32x4_t __a, int32x2_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_sqdmulh_lanev4si (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmulhh_s16 (int16_t __a, int16_t __b) 5209: { 5209: return (int16_t) __builtin_aarch64_sqdmulhhi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmulhh_lane_s16 (int16_t __a, int16x4_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_sqdmulh_lanehi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmulhh_laneq_s16 (int16_t __a, int16x8_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_sqdmulh_laneqhi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmulhs_s32 (int32_t __a, int32_t __b) 5209: { 5209: return (int32_t) __builtin_aarch64_sqdmulhsi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmulhs_lane_s32 (int32_t __a, int32x2_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_sqdmulh_lanesi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmulhs_laneq_s32 (int32_t __a, int32x4_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_sqdmulh_laneqsi (__a, __b, __c); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmull_s16 (int16x4_t __a, int16x4_t __b) 5209: { 5209: return __builtin_aarch64_sqdmullv4hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmull_high_s16 (int16x8_t __a, int16x8_t __b) 5209: { 5209: return __builtin_aarch64_sqdmull2v8hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmull_high_lane_s16 (int16x8_t __a, int16x4_t __b, int const __c) 5209: { 5209: return __builtin_aarch64_sqdmull2_lanev8hi (__a, __b,__c); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmull_high_laneq_s16 (int16x8_t __a, int16x8_t __b, int const __c) 5209: { 5209: return __builtin_aarch64_sqdmull2_laneqv8hi (__a, __b,__c); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmull_high_n_s16 (int16x8_t __a, int16_t __b) 5209: { 5209: return __builtin_aarch64_sqdmull2_nv8hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmull_lane_s16 (int16x4_t __a, int16x4_t __b, int const __c) 5209: { 5209: return __builtin_aarch64_sqdmull_lanev4hi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmull_laneq_s16 (int16x4_t __a, int16x8_t __b, int const __c) 5209: { 5209: return __builtin_aarch64_sqdmull_laneqv4hi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmull_n_s16 (int16x4_t __a, int16_t __b) 5209: { 5209: return __builtin_aarch64_sqdmull_nv4hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmull_s32 (int32x2_t __a, int32x2_t __b) 5209: { 5209: return __builtin_aarch64_sqdmullv2si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmull_high_s32 (int32x4_t __a, int32x4_t __b) 5209: { 5209: return __builtin_aarch64_sqdmull2v4si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmull_high_lane_s32 (int32x4_t __a, int32x2_t __b, int const __c) 5209: { 5209: return __builtin_aarch64_sqdmull2_lanev4si (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmull_high_laneq_s32 (int32x4_t __a, int32x4_t __b, int const __c) 5209: { 5209: return __builtin_aarch64_sqdmull2_laneqv4si (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmull_high_n_s32 (int32x4_t __a, int32_t __b) 5209: { 5209: return __builtin_aarch64_sqdmull2_nv4si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmull_lane_s32 (int32x2_t __a, int32x2_t __b, int const __c) 5209: { 5209: return __builtin_aarch64_sqdmull_lanev2si (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmull_laneq_s32 (int32x2_t __a, int32x4_t __b, int const __c) 5209: { 5209: return __builtin_aarch64_sqdmull_laneqv2si (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmull_n_s32 (int32x2_t __a, int32_t __b) 5209: { 5209: return __builtin_aarch64_sqdmull_nv2si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmullh_s16 (int16_t __a, int16_t __b) 5209: { 5209: return (int32_t) __builtin_aarch64_sqdmullhi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmullh_lane_s16 (int16_t __a, int16x4_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_sqdmull_lanehi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmullh_laneq_s16 (int16_t __a, int16x8_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_sqdmull_laneqhi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmulls_s32 (int32_t __a, int32_t __b) 5209: { 5209: return __builtin_aarch64_sqdmullsi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmulls_lane_s32 (int32_t __a, int32x2_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_sqdmull_lanesi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqdmulls_laneq_s32 (int32_t __a, int32x4_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_sqdmull_laneqsi (__a, __b, __c); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqmovn_s16 (int16x8_t __a) 5209: { 5209: return (int8x8_t) __builtin_aarch64_sqmovnv8hi (__a); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqmovn_s32 (int32x4_t __a) 5209: { 5209: return (int16x4_t) __builtin_aarch64_sqmovnv4si (__a); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqmovn_s64 (int64x2_t __a) 5209: { 5209: return (int32x2_t) __builtin_aarch64_sqmovnv2di (__a); 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqmovn_u16 (uint16x8_t __a) 5209: { 5209: return (uint8x8_t) __builtin_aarch64_uqmovnv8hi ((int16x8_t) __a); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqmovn_u32 (uint32x4_t __a) 5209: { 5209: return (uint16x4_t) __builtin_aarch64_uqmovnv4si ((int32x4_t) __a); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqmovn_u64 (uint64x2_t __a) 5209: { 5209: return (uint32x2_t) __builtin_aarch64_uqmovnv2di ((int64x2_t) __a); 5209: } 5209: 5209: __extension__ extern __inline int8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqmovnh_s16 (int16_t __a) 5209: { 5209: return (int8_t) __builtin_aarch64_sqmovnhi (__a); 5209: } 5209: 5209: __extension__ extern __inline int16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqmovns_s32 (int32_t __a) 5209: { 5209: return (int16_t) __builtin_aarch64_sqmovnsi (__a); 5209: } 5209: 5209: __extension__ extern __inline int32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqmovnd_s64 (int64_t __a) 5209: { 5209: return (int32_t) __builtin_aarch64_sqmovndi (__a); 5209: } 5209: 5209: __extension__ extern __inline uint8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqmovnh_u16 (uint16_t __a) 5209: { 5209: return (uint8_t) __builtin_aarch64_uqmovnhi (__a); 5209: } 5209: 5209: __extension__ extern __inline uint16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqmovns_u32 (uint32_t __a) 5209: { 5209: return (uint16_t) __builtin_aarch64_uqmovnsi (__a); 5209: } 5209: 5209: __extension__ extern __inline uint32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqmovnd_u64 (uint64_t __a) 5209: { 5209: return (uint32_t) __builtin_aarch64_uqmovndi (__a); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqmovun_s16 (int16x8_t __a) 5209: { 5209: return (uint8x8_t) __builtin_aarch64_sqmovunv8hi (__a); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqmovun_s32 (int32x4_t __a) 5209: { 5209: return (uint16x4_t) __builtin_aarch64_sqmovunv4si (__a); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqmovun_s64 (int64x2_t __a) 5209: { 5209: return (uint32x2_t) __builtin_aarch64_sqmovunv2di (__a); 5209: } 5209: 5209: __extension__ extern __inline int8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqmovunh_s16 (int16_t __a) 5209: { 5209: return (int8_t) __builtin_aarch64_sqmovunhi (__a); 5209: } 5209: 5209: __extension__ extern __inline int16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqmovuns_s32 (int32_t __a) 5209: { 5209: return (int16_t) __builtin_aarch64_sqmovunsi (__a); 5209: } 5209: 5209: __extension__ extern __inline int32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqmovund_s64 (int64_t __a) 5209: { 5209: return (int32_t) __builtin_aarch64_sqmovundi (__a); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqnegq_s64 (int64x2_t __a) 5209: { 5209: return (int64x2_t) __builtin_aarch64_sqnegv2di (__a); 5209: } 5209: 5209: __extension__ extern __inline int8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqnegb_s8 (int8_t __a) 5209: { 5209: return (int8_t) __builtin_aarch64_sqnegqi (__a); 5209: } 5209: 5209: __extension__ extern __inline int16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqnegh_s16 (int16_t __a) 5209: { 5209: return (int16_t) __builtin_aarch64_sqneghi (__a); 5209: } 5209: 5209: __extension__ extern __inline int32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqnegs_s32 (int32_t __a) 5209: { 5209: return (int32_t) __builtin_aarch64_sqnegsi (__a); 5209: } 5209: 5209: __extension__ extern __inline int64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqnegd_s64 (int64_t __a) 5209: { 5209: return __builtin_aarch64_sqnegdi (__a); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrdmulh_lane_s16 (int16x4_t __a, int16x4_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_sqrdmulh_lanev4hi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrdmulh_lane_s32 (int32x2_t __a, int32x2_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_sqrdmulh_lanev2si (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrdmulhq_lane_s16 (int16x8_t __a, int16x4_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_sqrdmulh_lanev8hi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrdmulhq_lane_s32 (int32x4_t __a, int32x2_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_sqrdmulh_lanev4si (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrdmulhh_s16 (int16_t __a, int16_t __b) 5209: { 5209: return (int16_t) __builtin_aarch64_sqrdmulhhi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrdmulhh_lane_s16 (int16_t __a, int16x4_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_sqrdmulh_lanehi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrdmulhh_laneq_s16 (int16_t __a, int16x8_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_sqrdmulh_laneqhi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrdmulhs_s32 (int32_t __a, int32_t __b) 5209: { 5209: return (int32_t) __builtin_aarch64_sqrdmulhsi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrdmulhs_lane_s32 (int32_t __a, int32x2_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_sqrdmulh_lanesi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrdmulhs_laneq_s32 (int32_t __a, int32x4_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_sqrdmulh_laneqsi (__a, __b, __c); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrshl_s8 (int8x8_t __a, int8x8_t __b) 5209: { 5209: return __builtin_aarch64_sqrshlv8qi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrshl_s16 (int16x4_t __a, int16x4_t __b) 5209: { 5209: return __builtin_aarch64_sqrshlv4hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrshl_s32 (int32x2_t __a, int32x2_t __b) 5209: { 5209: return __builtin_aarch64_sqrshlv2si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrshl_s64 (int64x1_t __a, int64x1_t __b) 5209: { 5209: return (int64x1_t) {__builtin_aarch64_sqrshldi (__a[0], __b[0])}; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrshl_u8 (uint8x8_t __a, int8x8_t __b) 5209: { 5209: return __builtin_aarch64_uqrshlv8qi_uus ( __a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrshl_u16 (uint16x4_t __a, int16x4_t __b) 5209: { 5209: return __builtin_aarch64_uqrshlv4hi_uus ( __a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrshl_u32 (uint32x2_t __a, int32x2_t __b) 5209: { 5209: return __builtin_aarch64_uqrshlv2si_uus ( __a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrshl_u64 (uint64x1_t __a, int64x1_t __b) 5209: { 5209: return (uint64x1_t) {__builtin_aarch64_uqrshldi_uus (__a[0], __b[0])}; 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrshlq_s8 (int8x16_t __a, int8x16_t __b) 5209: { 5209: return __builtin_aarch64_sqrshlv16qi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrshlq_s16 (int16x8_t __a, int16x8_t __b) 5209: { 5209: return __builtin_aarch64_sqrshlv8hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrshlq_s32 (int32x4_t __a, int32x4_t __b) 5209: { 5209: return __builtin_aarch64_sqrshlv4si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrshlq_s64 (int64x2_t __a, int64x2_t __b) 5209: { 5209: return __builtin_aarch64_sqrshlv2di (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrshlq_u8 (uint8x16_t __a, int8x16_t __b) 5209: { 5209: return __builtin_aarch64_uqrshlv16qi_uus ( __a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrshlq_u16 (uint16x8_t __a, int16x8_t __b) 5209: { 5209: return __builtin_aarch64_uqrshlv8hi_uus ( __a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrshlq_u32 (uint32x4_t __a, int32x4_t __b) 5209: { 5209: return __builtin_aarch64_uqrshlv4si_uus ( __a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrshlq_u64 (uint64x2_t __a, int64x2_t __b) 5209: { 5209: return __builtin_aarch64_uqrshlv2di_uus ( __a, __b); 5209: } 5209: 5209: __extension__ extern __inline int8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrshlb_s8 (int8_t __a, int8_t __b) 5209: { 5209: return __builtin_aarch64_sqrshlqi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrshlh_s16 (int16_t __a, int16_t __b) 5209: { 5209: return __builtin_aarch64_sqrshlhi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrshls_s32 (int32_t __a, int32_t __b) 5209: { 5209: return __builtin_aarch64_sqrshlsi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrshld_s64 (int64_t __a, int64_t __b) 5209: { 5209: return __builtin_aarch64_sqrshldi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrshlb_u8 (uint8_t __a, uint8_t __b) 5209: { 5209: return __builtin_aarch64_uqrshlqi_uus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrshlh_u16 (uint16_t __a, uint16_t __b) 5209: { 5209: return __builtin_aarch64_uqrshlhi_uus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrshls_u32 (uint32_t __a, uint32_t __b) 5209: { 5209: return __builtin_aarch64_uqrshlsi_uus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrshld_u64 (uint64_t __a, uint64_t __b) 5209: { 5209: return __builtin_aarch64_uqrshldi_uus (__a, __b); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrshrn_n_s16 (int16x8_t __a, const int __b) 5209: { 5209: return (int8x8_t) __builtin_aarch64_sqrshrn_nv8hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrshrn_n_s32 (int32x4_t __a, const int __b) 5209: { 5209: return (int16x4_t) __builtin_aarch64_sqrshrn_nv4si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrshrn_n_s64 (int64x2_t __a, const int __b) 5209: { 5209: return (int32x2_t) __builtin_aarch64_sqrshrn_nv2di (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrshrn_n_u16 (uint16x8_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_uqrshrn_nv8hi_uus ( __a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrshrn_n_u32 (uint32x4_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_uqrshrn_nv4si_uus ( __a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrshrn_n_u64 (uint64x2_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_uqrshrn_nv2di_uus ( __a, __b); 5209: } 5209: 5209: __extension__ extern __inline int8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrshrnh_n_s16 (int16_t __a, const int __b) 5209: { 5209: return (int8_t) __builtin_aarch64_sqrshrn_nhi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrshrns_n_s32 (int32_t __a, const int __b) 5209: { 5209: return (int16_t) __builtin_aarch64_sqrshrn_nsi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrshrnd_n_s64 (int64_t __a, const int __b) 5209: { 5209: return (int32_t) __builtin_aarch64_sqrshrn_ndi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrshrnh_n_u16 (uint16_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_uqrshrn_nhi_uus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrshrns_n_u32 (uint32_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_uqrshrn_nsi_uus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrshrnd_n_u64 (uint64_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_uqrshrn_ndi_uus (__a, __b); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrshrun_n_s16 (int16x8_t __a, const int __b) 5209: { 5209: return (uint8x8_t) __builtin_aarch64_sqrshrun_nv8hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrshrun_n_s32 (int32x4_t __a, const int __b) 5209: { 5209: return (uint16x4_t) __builtin_aarch64_sqrshrun_nv4si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrshrun_n_s64 (int64x2_t __a, const int __b) 5209: { 5209: return (uint32x2_t) __builtin_aarch64_sqrshrun_nv2di (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrshrunh_n_s16 (int16_t __a, const int __b) 5209: { 5209: return (int8_t) __builtin_aarch64_sqrshrun_nhi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrshruns_n_s32 (int32_t __a, const int __b) 5209: { 5209: return (int16_t) __builtin_aarch64_sqrshrun_nsi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqrshrund_n_s64 (int64_t __a, const int __b) 5209: { 5209: return (int32_t) __builtin_aarch64_sqrshrun_ndi (__a, __b); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshl_s8 (int8x8_t __a, int8x8_t __b) 5209: { 5209: return __builtin_aarch64_sqshlv8qi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshl_s16 (int16x4_t __a, int16x4_t __b) 5209: { 5209: return __builtin_aarch64_sqshlv4hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshl_s32 (int32x2_t __a, int32x2_t __b) 5209: { 5209: return __builtin_aarch64_sqshlv2si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshl_s64 (int64x1_t __a, int64x1_t __b) 5209: { 5209: return (int64x1_t) {__builtin_aarch64_sqshldi (__a[0], __b[0])}; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshl_u8 (uint8x8_t __a, int8x8_t __b) 5209: { 5209: return __builtin_aarch64_uqshlv8qi_uus ( __a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshl_u16 (uint16x4_t __a, int16x4_t __b) 5209: { 5209: return __builtin_aarch64_uqshlv4hi_uus ( __a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshl_u32 (uint32x2_t __a, int32x2_t __b) 5209: { 5209: return __builtin_aarch64_uqshlv2si_uus ( __a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshl_u64 (uint64x1_t __a, int64x1_t __b) 5209: { 5209: return (uint64x1_t) {__builtin_aarch64_uqshldi_uus (__a[0], __b[0])}; 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshlq_s8 (int8x16_t __a, int8x16_t __b) 5209: { 5209: return __builtin_aarch64_sqshlv16qi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshlq_s16 (int16x8_t __a, int16x8_t __b) 5209: { 5209: return __builtin_aarch64_sqshlv8hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshlq_s32 (int32x4_t __a, int32x4_t __b) 5209: { 5209: return __builtin_aarch64_sqshlv4si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshlq_s64 (int64x2_t __a, int64x2_t __b) 5209: { 5209: return __builtin_aarch64_sqshlv2di (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshlq_u8 (uint8x16_t __a, int8x16_t __b) 5209: { 5209: return __builtin_aarch64_uqshlv16qi_uus ( __a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshlq_u16 (uint16x8_t __a, int16x8_t __b) 5209: { 5209: return __builtin_aarch64_uqshlv8hi_uus ( __a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshlq_u32 (uint32x4_t __a, int32x4_t __b) 5209: { 5209: return __builtin_aarch64_uqshlv4si_uus ( __a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshlq_u64 (uint64x2_t __a, int64x2_t __b) 5209: { 5209: return __builtin_aarch64_uqshlv2di_uus ( __a, __b); 5209: } 5209: 5209: __extension__ extern __inline int8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshlb_s8 (int8_t __a, int8_t __b) 5209: { 5209: return __builtin_aarch64_sqshlqi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshlh_s16 (int16_t __a, int16_t __b) 5209: { 5209: return __builtin_aarch64_sqshlhi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshls_s32 (int32_t __a, int32_t __b) 5209: { 5209: return __builtin_aarch64_sqshlsi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshld_s64 (int64_t __a, int64_t __b) 5209: { 5209: return __builtin_aarch64_sqshldi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshlb_u8 (uint8_t __a, uint8_t __b) 5209: { 5209: return __builtin_aarch64_uqshlqi_uus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshlh_u16 (uint16_t __a, uint16_t __b) 5209: { 5209: return __builtin_aarch64_uqshlhi_uus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshls_u32 (uint32_t __a, uint32_t __b) 5209: { 5209: return __builtin_aarch64_uqshlsi_uus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshld_u64 (uint64_t __a, uint64_t __b) 5209: { 5209: return __builtin_aarch64_uqshldi_uus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshl_n_s8 (int8x8_t __a, const int __b) 5209: { 5209: return (int8x8_t) __builtin_aarch64_sqshl_nv8qi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshl_n_s16 (int16x4_t __a, const int __b) 5209: { 5209: return (int16x4_t) __builtin_aarch64_sqshl_nv4hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshl_n_s32 (int32x2_t __a, const int __b) 5209: { 5209: return (int32x2_t) __builtin_aarch64_sqshl_nv2si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshl_n_s64 (int64x1_t __a, const int __b) 5209: { 5209: return (int64x1_t) {__builtin_aarch64_sqshl_ndi (__a[0], __b)}; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshl_n_u8 (uint8x8_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_uqshl_nv8qi_uus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshl_n_u16 (uint16x4_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_uqshl_nv4hi_uus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshl_n_u32 (uint32x2_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_uqshl_nv2si_uus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshl_n_u64 (uint64x1_t __a, const int __b) 5209: { 5209: return (uint64x1_t) {__builtin_aarch64_uqshl_ndi_uus (__a[0], __b)}; 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshlq_n_s8 (int8x16_t __a, const int __b) 5209: { 5209: return (int8x16_t) __builtin_aarch64_sqshl_nv16qi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshlq_n_s16 (int16x8_t __a, const int __b) 5209: { 5209: return (int16x8_t) __builtin_aarch64_sqshl_nv8hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshlq_n_s32 (int32x4_t __a, const int __b) 5209: { 5209: return (int32x4_t) __builtin_aarch64_sqshl_nv4si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshlq_n_s64 (int64x2_t __a, const int __b) 5209: { 5209: return (int64x2_t) __builtin_aarch64_sqshl_nv2di (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshlq_n_u8 (uint8x16_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_uqshl_nv16qi_uus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshlq_n_u16 (uint16x8_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_uqshl_nv8hi_uus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshlq_n_u32 (uint32x4_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_uqshl_nv4si_uus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshlq_n_u64 (uint64x2_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_uqshl_nv2di_uus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshlb_n_s8 (int8_t __a, const int __b) 5209: { 5209: return (int8_t) __builtin_aarch64_sqshl_nqi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshlh_n_s16 (int16_t __a, const int __b) 5209: { 5209: return (int16_t) __builtin_aarch64_sqshl_nhi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshls_n_s32 (int32_t __a, const int __b) 5209: { 5209: return (int32_t) __builtin_aarch64_sqshl_nsi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshld_n_s64 (int64_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_sqshl_ndi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshlb_n_u8 (uint8_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_uqshl_nqi_uus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshlh_n_u16 (uint16_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_uqshl_nhi_uus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshls_n_u32 (uint32_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_uqshl_nsi_uus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshld_n_u64 (uint64_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_uqshl_ndi_uus (__a, __b); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshlu_n_s8 (int8x8_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_sqshlu_nv8qi_uss (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshlu_n_s16 (int16x4_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_sqshlu_nv4hi_uss (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshlu_n_s32 (int32x2_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_sqshlu_nv2si_uss (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshlu_n_s64 (int64x1_t __a, const int __b) 5209: { 5209: return (uint64x1_t) {__builtin_aarch64_sqshlu_ndi_uss (__a[0], __b)}; 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshluq_n_s8 (int8x16_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_sqshlu_nv16qi_uss (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshluq_n_s16 (int16x8_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_sqshlu_nv8hi_uss (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshluq_n_s32 (int32x4_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_sqshlu_nv4si_uss (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshluq_n_s64 (int64x2_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_sqshlu_nv2di_uss (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshlub_n_s8 (int8_t __a, const int __b) 5209: { 5209: return (int8_t) __builtin_aarch64_sqshlu_nqi_uss (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshluh_n_s16 (int16_t __a, const int __b) 5209: { 5209: return (int16_t) __builtin_aarch64_sqshlu_nhi_uss (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshlus_n_s32 (int32_t __a, const int __b) 5209: { 5209: return (int32_t) __builtin_aarch64_sqshlu_nsi_uss (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshlud_n_s64 (int64_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_sqshlu_ndi_uss (__a, __b); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshrn_n_s16 (int16x8_t __a, const int __b) 5209: { 5209: return (int8x8_t) __builtin_aarch64_sqshrn_nv8hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshrn_n_s32 (int32x4_t __a, const int __b) 5209: { 5209: return (int16x4_t) __builtin_aarch64_sqshrn_nv4si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshrn_n_s64 (int64x2_t __a, const int __b) 5209: { 5209: return (int32x2_t) __builtin_aarch64_sqshrn_nv2di (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshrn_n_u16 (uint16x8_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_uqshrn_nv8hi_uus ( __a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshrn_n_u32 (uint32x4_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_uqshrn_nv4si_uus ( __a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshrn_n_u64 (uint64x2_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_uqshrn_nv2di_uus ( __a, __b); 5209: } 5209: 5209: __extension__ extern __inline int8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshrnh_n_s16 (int16_t __a, const int __b) 5209: { 5209: return (int8_t) __builtin_aarch64_sqshrn_nhi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshrns_n_s32 (int32_t __a, const int __b) 5209: { 5209: return (int16_t) __builtin_aarch64_sqshrn_nsi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshrnd_n_s64 (int64_t __a, const int __b) 5209: { 5209: return (int32_t) __builtin_aarch64_sqshrn_ndi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshrnh_n_u16 (uint16_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_uqshrn_nhi_uus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshrns_n_u32 (uint32_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_uqshrn_nsi_uus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshrnd_n_u64 (uint64_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_uqshrn_ndi_uus (__a, __b); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshrun_n_s16 (int16x8_t __a, const int __b) 5209: { 5209: return (uint8x8_t) __builtin_aarch64_sqshrun_nv8hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshrun_n_s32 (int32x4_t __a, const int __b) 5209: { 5209: return (uint16x4_t) __builtin_aarch64_sqshrun_nv4si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshrun_n_s64 (int64x2_t __a, const int __b) 5209: { 5209: return (uint32x2_t) __builtin_aarch64_sqshrun_nv2di (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshrunh_n_s16 (int16_t __a, const int __b) 5209: { 5209: return (int8_t) __builtin_aarch64_sqshrun_nhi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshruns_n_s32 (int32_t __a, const int __b) 5209: { 5209: return (int16_t) __builtin_aarch64_sqshrun_nsi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqshrund_n_s64 (int64_t __a, const int __b) 5209: { 5209: return (int32_t) __builtin_aarch64_sqshrun_ndi (__a, __b); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline int8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqsubb_s8 (int8_t __a, int8_t __b) 5209: { 5209: return (int8_t) __builtin_aarch64_sqsubqi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqsubh_s16 (int16_t __a, int16_t __b) 5209: { 5209: return (int16_t) __builtin_aarch64_sqsubhi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqsubs_s32 (int32_t __a, int32_t __b) 5209: { 5209: return (int32_t) __builtin_aarch64_sqsubsi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqsubd_s64 (int64_t __a, int64_t __b) 5209: { 5209: return __builtin_aarch64_sqsubdi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqsubb_u8 (uint8_t __a, uint8_t __b) 5209: { 5209: return (uint8_t) __builtin_aarch64_uqsubqi_uuu (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqsubh_u16 (uint16_t __a, uint16_t __b) 5209: { 5209: return (uint16_t) __builtin_aarch64_uqsubhi_uuu (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqsubs_u32 (uint32_t __a, uint32_t __b) 5209: { 5209: return (uint32_t) __builtin_aarch64_uqsubsi_uuu (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqsubd_u64 (uint64_t __a, uint64_t __b) 5209: { 5209: return __builtin_aarch64_uqsubdi_uuu (__a, __b); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqtbl2_s8 (int8x16x2_t __tab, uint8x8_t __idx) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, __tab.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, __tab.val[1], 1); 5209: return __builtin_aarch64_tbl3v8qi (__o, (int8x8_t)__idx); 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqtbl2_u8 (uint8x16x2_t __tab, uint8x8_t __idx) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t)__tab.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t)__tab.val[1], 1); 5209: return (uint8x8_t)__builtin_aarch64_tbl3v8qi (__o, (int8x8_t)__idx); 5209: } 5209: 5209: __extension__ extern __inline poly8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqtbl2_p8 (poly8x16x2_t __tab, uint8x8_t __idx) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t)__tab.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t)__tab.val[1], 1); 5209: return (poly8x8_t)__builtin_aarch64_tbl3v8qi (__o, (int8x8_t)__idx); 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqtbl2q_s8 (int8x16x2_t __tab, uint8x16_t __idx) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t)__tab.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t)__tab.val[1], 1); 5209: return __builtin_aarch64_tbl3v16qi (__o, (int8x16_t)__idx); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqtbl2q_u8 (uint8x16x2_t __tab, uint8x16_t __idx) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t)__tab.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t)__tab.val[1], 1); 5209: return (uint8x16_t)__builtin_aarch64_tbl3v16qi (__o, (int8x16_t)__idx); 5209: } 5209: 5209: __extension__ extern __inline poly8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqtbl2q_p8 (poly8x16x2_t __tab, uint8x16_t __idx) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t)__tab.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t)__tab.val[1], 1); 5209: return (poly8x16_t)__builtin_aarch64_tbl3v16qi (__o, (int8x16_t)__idx); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqtbl3_s8 (int8x16x3_t __tab, uint8x8_t __idx) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[2], 2); 5209: return __builtin_aarch64_qtbl3v8qi (__o, (int8x8_t)__idx); 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqtbl3_u8 (uint8x16x3_t __tab, uint8x8_t __idx) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[2], 2); 5209: return (uint8x8_t)__builtin_aarch64_qtbl3v8qi (__o, (int8x8_t)__idx); 5209: } 5209: 5209: __extension__ extern __inline poly8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqtbl3_p8 (poly8x16x3_t __tab, uint8x8_t __idx) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[2], 2); 5209: return (poly8x8_t)__builtin_aarch64_qtbl3v8qi (__o, (int8x8_t)__idx); 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqtbl3q_s8 (int8x16x3_t __tab, uint8x16_t __idx) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[2], 2); 5209: return __builtin_aarch64_qtbl3v16qi (__o, (int8x16_t)__idx); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqtbl3q_u8 (uint8x16x3_t __tab, uint8x16_t __idx) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[2], 2); 5209: return (uint8x16_t)__builtin_aarch64_qtbl3v16qi (__o, (int8x16_t)__idx); 5209: } 5209: 5209: __extension__ extern __inline poly8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqtbl3q_p8 (poly8x16x3_t __tab, uint8x16_t __idx) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[2], 2); 5209: return (poly8x16_t)__builtin_aarch64_qtbl3v16qi (__o, (int8x16_t)__idx); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqtbl4_s8 (int8x16x4_t __tab, uint8x8_t __idx) 5209: { 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[0], 0); 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[1], 1); 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[2], 2); 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[3], 3); 5209: return __builtin_aarch64_qtbl4v8qi (__o, (int8x8_t)__idx); 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqtbl4_u8 (uint8x16x4_t __tab, uint8x8_t __idx) 5209: { 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[0], 0); 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[1], 1); 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[2], 2); 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[3], 3); 5209: return (uint8x8_t)__builtin_aarch64_qtbl4v8qi (__o, (int8x8_t)__idx); 5209: } 5209: 5209: __extension__ extern __inline poly8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqtbl4_p8 (poly8x16x4_t __tab, uint8x8_t __idx) 5209: { 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[0], 0); 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[1], 1); 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[2], 2); 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[3], 3); 5209: return (poly8x8_t)__builtin_aarch64_qtbl4v8qi (__o, (int8x8_t)__idx); 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqtbl4q_s8 (int8x16x4_t __tab, uint8x16_t __idx) 5209: { 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[0], 0); 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[1], 1); 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[2], 2); 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[3], 3); 5209: return __builtin_aarch64_qtbl4v16qi (__o, (int8x16_t)__idx); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqtbl4q_u8 (uint8x16x4_t __tab, uint8x16_t __idx) 5209: { 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[0], 0); 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[1], 1); 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[2], 2); 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[3], 3); 5209: return (uint8x16_t)__builtin_aarch64_qtbl4v16qi (__o, (int8x16_t)__idx); 5209: } 5209: 5209: __extension__ extern __inline poly8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqtbl4q_p8 (poly8x16x4_t __tab, uint8x16_t __idx) 5209: { 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[0], 0); 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[1], 1); 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[2], 2); 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[3], 3); 5209: return (poly8x16_t)__builtin_aarch64_qtbl4v16qi (__o, (int8x16_t)__idx); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqtbx2_s8 (int8x8_t __r, int8x16x2_t __tab, uint8x8_t __idx) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, __tab.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, __tab.val[1], 1); 5209: return __builtin_aarch64_tbx4v8qi (__r, __o, (int8x8_t)__idx); 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqtbx2_u8 (uint8x8_t __r, uint8x16x2_t __tab, uint8x8_t __idx) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t)__tab.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t)__tab.val[1], 1); 5209: return (uint8x8_t)__builtin_aarch64_tbx4v8qi ((int8x8_t)__r, __o, 5209: (int8x8_t)__idx); 5209: } 5209: 5209: __extension__ extern __inline poly8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqtbx2_p8 (poly8x8_t __r, poly8x16x2_t __tab, uint8x8_t __idx) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t)__tab.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t)__tab.val[1], 1); 5209: return (poly8x8_t)__builtin_aarch64_tbx4v8qi ((int8x8_t)__r, __o, 5209: (int8x8_t)__idx); 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqtbx2q_s8 (int8x16_t __r, int8x16x2_t __tab, uint8x16_t __idx) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, __tab.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, __tab.val[1], 1); 5209: return __builtin_aarch64_tbx4v16qi (__r, __o, (int8x16_t)__idx); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqtbx2q_u8 (uint8x16_t __r, uint8x16x2_t __tab, uint8x16_t __idx) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t)__tab.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t)__tab.val[1], 1); 5209: return (uint8x16_t)__builtin_aarch64_tbx4v16qi ((int8x16_t)__r, __o, 5209: (int8x16_t)__idx); 5209: } 5209: 5209: __extension__ extern __inline poly8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqtbx2q_p8 (poly8x16_t __r, poly8x16x2_t __tab, uint8x16_t __idx) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t)__tab.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t)__tab.val[1], 1); 5209: return (poly8x16_t)__builtin_aarch64_tbx4v16qi ((int8x16_t)__r, __o, 5209: (int8x16_t)__idx); 5209: } 5209: 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqtbx3_s8 (int8x8_t __r, int8x16x3_t __tab, uint8x8_t __idx) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, __tab.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, __tab.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, __tab.val[2], 2); 5209: return __builtin_aarch64_qtbx3v8qi (__r, __o, (int8x8_t)__idx); 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqtbx3_u8 (uint8x8_t __r, uint8x16x3_t __tab, uint8x8_t __idx) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[2], 2); 5209: return (uint8x8_t)__builtin_aarch64_qtbx3v8qi ((int8x8_t)__r, __o, 5209: (int8x8_t)__idx); 5209: } 5209: 5209: __extension__ extern __inline poly8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqtbx3_p8 (poly8x8_t __r, poly8x16x3_t __tab, uint8x8_t __idx) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[2], 2); 5209: return (poly8x8_t)__builtin_aarch64_qtbx3v8qi ((int8x8_t)__r, __o, 5209: (int8x8_t)__idx); 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqtbx3q_s8 (int8x16_t __r, int8x16x3_t __tab, uint8x16_t __idx) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, __tab.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, __tab.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, __tab.val[2], 2); 5209: return __builtin_aarch64_qtbx3v16qi (__r, __o, (int8x16_t)__idx); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqtbx3q_u8 (uint8x16_t __r, uint8x16x3_t __tab, uint8x16_t __idx) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[2], 2); 5209: return (uint8x16_t)__builtin_aarch64_qtbx3v16qi ((int8x16_t)__r, __o, 5209: (int8x16_t)__idx); 5209: } 5209: 5209: __extension__ extern __inline poly8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqtbx3q_p8 (poly8x16_t __r, poly8x16x3_t __tab, uint8x16_t __idx) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t)__tab.val[2], 2); 5209: return (poly8x16_t)__builtin_aarch64_qtbx3v16qi ((int8x16_t)__r, __o, 5209: (int8x16_t)__idx); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqtbx4_s8 (int8x8_t __r, int8x16x4_t __tab, uint8x8_t __idx) 5209: { 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, __tab.val[0], 0); 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, __tab.val[1], 1); 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, __tab.val[2], 2); 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, __tab.val[3], 3); 5209: return __builtin_aarch64_qtbx4v8qi (__r, __o, (int8x8_t)__idx); 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqtbx4_u8 (uint8x8_t __r, uint8x16x4_t __tab, uint8x8_t __idx) 5209: { 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[0], 0); 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[1], 1); 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[2], 2); 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[3], 3); 5209: return (uint8x8_t)__builtin_aarch64_qtbx4v8qi ((int8x8_t)__r, __o, 5209: (int8x8_t)__idx); 5209: } 5209: 5209: __extension__ extern __inline poly8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqtbx4_p8 (poly8x8_t __r, poly8x16x4_t __tab, uint8x8_t __idx) 5209: { 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[0], 0); 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[1], 1); 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[2], 2); 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[3], 3); 5209: return (poly8x8_t)__builtin_aarch64_qtbx4v8qi ((int8x8_t)__r, __o, 5209: (int8x8_t)__idx); 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqtbx4q_s8 (int8x16_t __r, int8x16x4_t __tab, uint8x16_t __idx) 5209: { 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, __tab.val[0], 0); 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, __tab.val[1], 1); 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, __tab.val[2], 2); 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, __tab.val[3], 3); 5209: return __builtin_aarch64_qtbx4v16qi (__r, __o, (int8x16_t)__idx); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqtbx4q_u8 (uint8x16_t __r, uint8x16x4_t __tab, uint8x16_t __idx) 5209: { 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[0], 0); 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[1], 1); 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[2], 2); 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[3], 3); 5209: return (uint8x16_t)__builtin_aarch64_qtbx4v16qi ((int8x16_t)__r, __o, 5209: (int8x16_t)__idx); 5209: } 5209: 5209: __extension__ extern __inline poly8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vqtbx4q_p8 (poly8x16_t __r, poly8x16x4_t __tab, uint8x16_t __idx) 5209: { 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[0], 0); 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[1], 1); 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[2], 2); 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t)__tab.val[3], 3); 5209: return (poly8x16_t)__builtin_aarch64_qtbx4v16qi ((int8x16_t)__r, __o, 5209: (int8x16_t)__idx); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline poly8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrbit_p8 (poly8x8_t __a) 5209: { 5209: return (poly8x8_t) __builtin_aarch64_rbitv8qi ((int8x8_t) __a); 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrbit_s8 (int8x8_t __a) 5209: { 5209: return __builtin_aarch64_rbitv8qi (__a); 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrbit_u8 (uint8x8_t __a) 5209: { 5209: return (uint8x8_t) __builtin_aarch64_rbitv8qi ((int8x8_t) __a); 5209: } 5209: 5209: __extension__ extern __inline poly8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrbitq_p8 (poly8x16_t __a) 5209: { 5209: return (poly8x16_t) __builtin_aarch64_rbitv16qi ((int8x16_t)__a); 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrbitq_s8 (int8x16_t __a) 5209: { 5209: return __builtin_aarch64_rbitv16qi (__a); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrbitq_u8 (uint8x16_t __a) 5209: { 5209: return (uint8x16_t) __builtin_aarch64_rbitv16qi ((int8x16_t) __a); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrecpe_u32 (uint32x2_t __a) 5209: { 5209: return (uint32x2_t) __builtin_aarch64_urecpev2si ((int32x2_t) __a); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrecpeq_u32 (uint32x4_t __a) 5209: { 5209: return (uint32x4_t) __builtin_aarch64_urecpev4si ((int32x4_t) __a); 5209: } 5209: 5209: __extension__ extern __inline float32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrecpes_f32 (float32_t __a) 5209: { 5209: return __builtin_aarch64_frecpesf (__a); 5209: } 5209: 5209: __extension__ extern __inline float64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrecped_f64 (float64_t __a) 5209: { 5209: return __builtin_aarch64_frecpedf (__a); 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrecpe_f32 (float32x2_t __a) 5209: { 5209: return __builtin_aarch64_frecpev2sf (__a); 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrecpe_f64 (float64x1_t __a) 5209: { 5209: return (float64x1_t) { vrecped_f64 (vget_lane_f64 (__a, 0)) }; 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrecpeq_f32 (float32x4_t __a) 5209: { 5209: return __builtin_aarch64_frecpev4sf (__a); 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrecpeq_f64 (float64x2_t __a) 5209: { 5209: return __builtin_aarch64_frecpev2df (__a); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrecpss_f32 (float32_t __a, float32_t __b) 5209: { 5209: return __builtin_aarch64_frecpssf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrecpsd_f64 (float64_t __a, float64_t __b) 5209: { 5209: return __builtin_aarch64_frecpsdf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrecps_f32 (float32x2_t __a, float32x2_t __b) 5209: { 5209: return __builtin_aarch64_frecpsv2sf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrecps_f64 (float64x1_t __a, float64x1_t __b) 5209: { 5209: return (float64x1_t) { vrecpsd_f64 (vget_lane_f64 (__a, 0), 5209: vget_lane_f64 (__b, 0)) }; 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrecpsq_f32 (float32x4_t __a, float32x4_t __b) 5209: { 5209: return __builtin_aarch64_frecpsv4sf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrecpsq_f64 (float64x2_t __a, float64x2_t __b) 5209: { 5209: return __builtin_aarch64_frecpsv2df (__a, __b); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrecpxs_f32 (float32_t __a) 5209: { 5209: return __builtin_aarch64_frecpxsf (__a); 5209: } 5209: 5209: __extension__ extern __inline float64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrecpxd_f64 (float64_t __a) 5209: { 5209: return __builtin_aarch64_frecpxdf (__a); 5209: } 5209: 5209: 5209: 5209: 5209: __extension__ extern __inline poly8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrev16_p8 (poly8x8_t __a) 5209: { 5209: return __builtin_shuffle (__a, (uint8x8_t) { 1, 0, 3, 2, 5, 4, 7, 6 }); 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrev16_s8 (int8x8_t __a) 5209: { 5209: return __builtin_shuffle (__a, (uint8x8_t) { 1, 0, 3, 2, 5, 4, 7, 6 }); 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrev16_u8 (uint8x8_t __a) 5209: { 5209: return __builtin_shuffle (__a, (uint8x8_t) { 1, 0, 3, 2, 5, 4, 7, 6 }); 5209: } 5209: 5209: __extension__ extern __inline poly8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrev16q_p8 (poly8x16_t __a) 5209: { 5209: return __builtin_shuffle (__a, 5209: (uint8x16_t) { 1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14 }); 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrev16q_s8 (int8x16_t __a) 5209: { 5209: return __builtin_shuffle (__a, 5209: (uint8x16_t) { 1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14 }); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrev16q_u8 (uint8x16_t __a) 5209: { 5209: return __builtin_shuffle (__a, 5209: (uint8x16_t) { 1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14 }); 5209: } 5209: 5209: __extension__ extern __inline poly8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrev32_p8 (poly8x8_t __a) 5209: { 5209: return __builtin_shuffle (__a, (uint8x8_t) { 3, 2, 1, 0, 7, 6, 5, 4 }); 5209: } 5209: 5209: __extension__ extern __inline poly16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrev32_p16 (poly16x4_t __a) 5209: { 5209: return __builtin_shuffle (__a, (uint16x4_t) { 1, 0, 3, 2 }); 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrev32_s8 (int8x8_t __a) 5209: { 5209: return __builtin_shuffle (__a, (uint8x8_t) { 3, 2, 1, 0, 7, 6, 5, 4 }); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrev32_s16 (int16x4_t __a) 5209: { 5209: return __builtin_shuffle (__a, (uint16x4_t) { 1, 0, 3, 2 }); 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrev32_u8 (uint8x8_t __a) 5209: { 5209: return __builtin_shuffle (__a, (uint8x8_t) { 3, 2, 1, 0, 7, 6, 5, 4 }); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrev32_u16 (uint16x4_t __a) 5209: { 5209: return __builtin_shuffle (__a, (uint16x4_t) { 1, 0, 3, 2 }); 5209: } 5209: 5209: __extension__ extern __inline poly8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrev32q_p8 (poly8x16_t __a) 5209: { 5209: return __builtin_shuffle (__a, 5209: (uint8x16_t) { 3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12 }); 5209: } 5209: 5209: __extension__ extern __inline poly16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrev32q_p16 (poly16x8_t __a) 5209: { 5209: return __builtin_shuffle (__a, (uint16x8_t) { 1, 0, 3, 2, 5, 4, 7, 6 }); 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrev32q_s8 (int8x16_t __a) 5209: { 5209: return __builtin_shuffle (__a, 5209: (uint8x16_t) { 3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12 }); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrev32q_s16 (int16x8_t __a) 5209: { 5209: return __builtin_shuffle (__a, (uint16x8_t) { 1, 0, 3, 2, 5, 4, 7, 6 }); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrev32q_u8 (uint8x16_t __a) 5209: { 5209: return __builtin_shuffle (__a, 5209: (uint8x16_t) { 3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12 }); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrev32q_u16 (uint16x8_t __a) 5209: { 5209: return __builtin_shuffle (__a, (uint16x8_t) { 1, 0, 3, 2, 5, 4, 7, 6 }); 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrev64_f16 (float16x4_t __a) 5209: { 5209: return __builtin_shuffle (__a, (uint16x4_t) { 3, 2, 1, 0 }); 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrev64_f32 (float32x2_t __a) 5209: { 5209: return __builtin_shuffle (__a, (uint32x2_t) { 1, 0 }); 5209: } 5209: 5209: __extension__ extern __inline poly8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrev64_p8 (poly8x8_t __a) 5209: { 5209: return __builtin_shuffle (__a, (uint8x8_t) { 7, 6, 5, 4, 3, 2, 1, 0 }); 5209: } 5209: 5209: __extension__ extern __inline poly16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrev64_p16 (poly16x4_t __a) 5209: { 5209: return __builtin_shuffle (__a, (uint16x4_t) { 3, 2, 1, 0 }); 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrev64_s8 (int8x8_t __a) 5209: { 5209: return __builtin_shuffle (__a, (uint8x8_t) { 7, 6, 5, 4, 3, 2, 1, 0 }); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrev64_s16 (int16x4_t __a) 5209: { 5209: return __builtin_shuffle (__a, (uint16x4_t) { 3, 2, 1, 0 }); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrev64_s32 (int32x2_t __a) 5209: { 5209: return __builtin_shuffle (__a, (uint32x2_t) { 1, 0 }); 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrev64_u8 (uint8x8_t __a) 5209: { 5209: return __builtin_shuffle (__a, (uint8x8_t) { 7, 6, 5, 4, 3, 2, 1, 0 }); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrev64_u16 (uint16x4_t __a) 5209: { 5209: return __builtin_shuffle (__a, (uint16x4_t) { 3, 2, 1, 0 }); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrev64_u32 (uint32x2_t __a) 5209: { 5209: return __builtin_shuffle (__a, (uint32x2_t) { 1, 0 }); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrev64q_f16 (float16x8_t __a) 5209: { 5209: return __builtin_shuffle (__a, (uint16x8_t) { 3, 2, 1, 0, 7, 6, 5, 4 }); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrev64q_f32 (float32x4_t __a) 5209: { 5209: return __builtin_shuffle (__a, (uint32x4_t) { 1, 0, 3, 2 }); 5209: } 5209: 5209: __extension__ extern __inline poly8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrev64q_p8 (poly8x16_t __a) 5209: { 5209: return __builtin_shuffle (__a, 5209: (uint8x16_t) { 7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8 }); 5209: } 5209: 5209: __extension__ extern __inline poly16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrev64q_p16 (poly16x8_t __a) 5209: { 5209: return __builtin_shuffle (__a, (uint16x8_t) { 3, 2, 1, 0, 7, 6, 5, 4 }); 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrev64q_s8 (int8x16_t __a) 5209: { 5209: return __builtin_shuffle (__a, 5209: (uint8x16_t) { 7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8 }); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrev64q_s16 (int16x8_t __a) 5209: { 5209: return __builtin_shuffle (__a, (uint16x8_t) { 3, 2, 1, 0, 7, 6, 5, 4 }); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrev64q_s32 (int32x4_t __a) 5209: { 5209: return __builtin_shuffle (__a, (uint32x4_t) { 1, 0, 3, 2 }); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrev64q_u8 (uint8x16_t __a) 5209: { 5209: return __builtin_shuffle (__a, 5209: (uint8x16_t) { 7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8 }); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrev64q_u16 (uint16x8_t __a) 5209: { 5209: return __builtin_shuffle (__a, (uint16x8_t) { 3, 2, 1, 0, 7, 6, 5, 4 }); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrev64q_u32 (uint32x4_t __a) 5209: { 5209: return __builtin_shuffle (__a, (uint32x4_t) { 1, 0, 3, 2 }); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrnd_f32 (float32x2_t __a) 5209: { 5209: return __builtin_aarch64_btruncv2sf (__a); 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrnd_f64 (float64x1_t __a) 5209: { 5209: return vset_lane_f64 (__builtin_trunc (vget_lane_f64 (__a, 0)), __a, 0); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrndq_f32 (float32x4_t __a) 5209: { 5209: return __builtin_aarch64_btruncv4sf (__a); 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrndq_f64 (float64x2_t __a) 5209: { 5209: return __builtin_aarch64_btruncv2df (__a); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrnda_f32 (float32x2_t __a) 5209: { 5209: return __builtin_aarch64_roundv2sf (__a); 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrnda_f64 (float64x1_t __a) 5209: { 5209: return vset_lane_f64 (__builtin_round (vget_lane_f64 (__a, 0)), __a, 0); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrndaq_f32 (float32x4_t __a) 5209: { 5209: return __builtin_aarch64_roundv4sf (__a); 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrndaq_f64 (float64x2_t __a) 5209: { 5209: return __builtin_aarch64_roundv2df (__a); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrndi_f32 (float32x2_t __a) 5209: { 5209: return __builtin_aarch64_nearbyintv2sf (__a); 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrndi_f64 (float64x1_t __a) 5209: { 5209: return vset_lane_f64 (__builtin_nearbyint (vget_lane_f64 (__a, 0)), __a, 0); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrndiq_f32 (float32x4_t __a) 5209: { 5209: return __builtin_aarch64_nearbyintv4sf (__a); 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrndiq_f64 (float64x2_t __a) 5209: { 5209: return __builtin_aarch64_nearbyintv2df (__a); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrndm_f32 (float32x2_t __a) 5209: { 5209: return __builtin_aarch64_floorv2sf (__a); 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrndm_f64 (float64x1_t __a) 5209: { 5209: return vset_lane_f64 (__builtin_floor (vget_lane_f64 (__a, 0)), __a, 0); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrndmq_f32 (float32x4_t __a) 5209: { 5209: return __builtin_aarch64_floorv4sf (__a); 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrndmq_f64 (float64x2_t __a) 5209: { 5209: return __builtin_aarch64_floorv2df (__a); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrndn_f32 (float32x2_t __a) 5209: { 5209: return __builtin_aarch64_frintnv2sf (__a); 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrndn_f64 (float64x1_t __a) 5209: { 5209: return (float64x1_t) {__builtin_aarch64_frintndf (__a[0])}; 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrndnq_f32 (float32x4_t __a) 5209: { 5209: return __builtin_aarch64_frintnv4sf (__a); 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrndnq_f64 (float64x2_t __a) 5209: { 5209: return __builtin_aarch64_frintnv2df (__a); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrndp_f32 (float32x2_t __a) 5209: { 5209: return __builtin_aarch64_ceilv2sf (__a); 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrndp_f64 (float64x1_t __a) 5209: { 5209: return vset_lane_f64 (__builtin_ceil (vget_lane_f64 (__a, 0)), __a, 0); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrndpq_f32 (float32x4_t __a) 5209: { 5209: return __builtin_aarch64_ceilv4sf (__a); 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrndpq_f64 (float64x2_t __a) 5209: { 5209: return __builtin_aarch64_ceilv2df (__a); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrndx_f32 (float32x2_t __a) 5209: { 5209: return __builtin_aarch64_rintv2sf (__a); 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrndx_f64 (float64x1_t __a) 5209: { 5209: return vset_lane_f64 (__builtin_rint (vget_lane_f64 (__a, 0)), __a, 0); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrndxq_f32 (float32x4_t __a) 5209: { 5209: return __builtin_aarch64_rintv4sf (__a); 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrndxq_f64 (float64x2_t __a) 5209: { 5209: return __builtin_aarch64_rintv2df (__a); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrshl_s8 (int8x8_t __a, int8x8_t __b) 5209: { 5209: return (int8x8_t) __builtin_aarch64_srshlv8qi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrshl_s16 (int16x4_t __a, int16x4_t __b) 5209: { 5209: return (int16x4_t) __builtin_aarch64_srshlv4hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrshl_s32 (int32x2_t __a, int32x2_t __b) 5209: { 5209: return (int32x2_t) __builtin_aarch64_srshlv2si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrshl_s64 (int64x1_t __a, int64x1_t __b) 5209: { 5209: return (int64x1_t) {__builtin_aarch64_srshldi (__a[0], __b[0])}; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrshl_u8 (uint8x8_t __a, int8x8_t __b) 5209: { 5209: return __builtin_aarch64_urshlv8qi_uus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrshl_u16 (uint16x4_t __a, int16x4_t __b) 5209: { 5209: return __builtin_aarch64_urshlv4hi_uus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrshl_u32 (uint32x2_t __a, int32x2_t __b) 5209: { 5209: return __builtin_aarch64_urshlv2si_uus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrshl_u64 (uint64x1_t __a, int64x1_t __b) 5209: { 5209: return (uint64x1_t) {__builtin_aarch64_urshldi_uus (__a[0], __b[0])}; 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrshlq_s8 (int8x16_t __a, int8x16_t __b) 5209: { 5209: return (int8x16_t) __builtin_aarch64_srshlv16qi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrshlq_s16 (int16x8_t __a, int16x8_t __b) 5209: { 5209: return (int16x8_t) __builtin_aarch64_srshlv8hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrshlq_s32 (int32x4_t __a, int32x4_t __b) 5209: { 5209: return (int32x4_t) __builtin_aarch64_srshlv4si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrshlq_s64 (int64x2_t __a, int64x2_t __b) 5209: { 5209: return (int64x2_t) __builtin_aarch64_srshlv2di (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrshlq_u8 (uint8x16_t __a, int8x16_t __b) 5209: { 5209: return __builtin_aarch64_urshlv16qi_uus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrshlq_u16 (uint16x8_t __a, int16x8_t __b) 5209: { 5209: return __builtin_aarch64_urshlv8hi_uus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrshlq_u32 (uint32x4_t __a, int32x4_t __b) 5209: { 5209: return __builtin_aarch64_urshlv4si_uus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrshlq_u64 (uint64x2_t __a, int64x2_t __b) 5209: { 5209: return __builtin_aarch64_urshlv2di_uus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrshld_s64 (int64_t __a, int64_t __b) 5209: { 5209: return __builtin_aarch64_srshldi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrshld_u64 (uint64_t __a, int64_t __b) 5209: { 5209: return __builtin_aarch64_urshldi_uus (__a, __b); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrshr_n_s8 (int8x8_t __a, const int __b) 5209: { 5209: return (int8x8_t) __builtin_aarch64_srshr_nv8qi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrshr_n_s16 (int16x4_t __a, const int __b) 5209: { 5209: return (int16x4_t) __builtin_aarch64_srshr_nv4hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrshr_n_s32 (int32x2_t __a, const int __b) 5209: { 5209: return (int32x2_t) __builtin_aarch64_srshr_nv2si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrshr_n_s64 (int64x1_t __a, const int __b) 5209: { 5209: return (int64x1_t) {__builtin_aarch64_srshr_ndi (__a[0], __b)}; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrshr_n_u8 (uint8x8_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_urshr_nv8qi_uus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrshr_n_u16 (uint16x4_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_urshr_nv4hi_uus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrshr_n_u32 (uint32x2_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_urshr_nv2si_uus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrshr_n_u64 (uint64x1_t __a, const int __b) 5209: { 5209: return (uint64x1_t) {__builtin_aarch64_urshr_ndi_uus (__a[0], __b)}; 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrshrq_n_s8 (int8x16_t __a, const int __b) 5209: { 5209: return (int8x16_t) __builtin_aarch64_srshr_nv16qi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrshrq_n_s16 (int16x8_t __a, const int __b) 5209: { 5209: return (int16x8_t) __builtin_aarch64_srshr_nv8hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrshrq_n_s32 (int32x4_t __a, const int __b) 5209: { 5209: return (int32x4_t) __builtin_aarch64_srshr_nv4si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrshrq_n_s64 (int64x2_t __a, const int __b) 5209: { 5209: return (int64x2_t) __builtin_aarch64_srshr_nv2di (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrshrq_n_u8 (uint8x16_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_urshr_nv16qi_uus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrshrq_n_u16 (uint16x8_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_urshr_nv8hi_uus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrshrq_n_u32 (uint32x4_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_urshr_nv4si_uus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrshrq_n_u64 (uint64x2_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_urshr_nv2di_uus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrshrd_n_s64 (int64_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_srshr_ndi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrshrd_n_u64 (uint64_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_urshr_ndi_uus (__a, __b); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrsqrtes_f32 (float32_t __a) 5209: { 5209: return __builtin_aarch64_rsqrtesf (__a); 5209: } 5209: 5209: __extension__ extern __inline float64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrsqrted_f64 (float64_t __a) 5209: { 5209: return __builtin_aarch64_rsqrtedf (__a); 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrsqrte_f32 (float32x2_t __a) 5209: { 5209: return __builtin_aarch64_rsqrtev2sf (__a); 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrsqrte_f64 (float64x1_t __a) 5209: { 5209: return (float64x1_t) {vrsqrted_f64 (vget_lane_f64 (__a, 0))}; 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrsqrteq_f32 (float32x4_t __a) 5209: { 5209: return __builtin_aarch64_rsqrtev4sf (__a); 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrsqrteq_f64 (float64x2_t __a) 5209: { 5209: return __builtin_aarch64_rsqrtev2df (__a); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrsqrtss_f32 (float32_t __a, float32_t __b) 5209: { 5209: return __builtin_aarch64_rsqrtssf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrsqrtsd_f64 (float64_t __a, float64_t __b) 5209: { 5209: return __builtin_aarch64_rsqrtsdf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrsqrts_f32 (float32x2_t __a, float32x2_t __b) 5209: { 5209: return __builtin_aarch64_rsqrtsv2sf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrsqrts_f64 (float64x1_t __a, float64x1_t __b) 5209: { 5209: return (float64x1_t) {vrsqrtsd_f64 (vget_lane_f64 (__a, 0), 5209: vget_lane_f64 (__b, 0))}; 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrsqrtsq_f32 (float32x4_t __a, float32x4_t __b) 5209: { 5209: return __builtin_aarch64_rsqrtsv4sf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrsqrtsq_f64 (float64x2_t __a, float64x2_t __b) 5209: { 5209: return __builtin_aarch64_rsqrtsv2df (__a, __b); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrsra_n_s8 (int8x8_t __a, int8x8_t __b, const int __c) 5209: { 5209: return (int8x8_t) __builtin_aarch64_srsra_nv8qi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrsra_n_s16 (int16x4_t __a, int16x4_t __b, const int __c) 5209: { 5209: return (int16x4_t) __builtin_aarch64_srsra_nv4hi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrsra_n_s32 (int32x2_t __a, int32x2_t __b, const int __c) 5209: { 5209: return (int32x2_t) __builtin_aarch64_srsra_nv2si (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrsra_n_s64 (int64x1_t __a, int64x1_t __b, const int __c) 5209: { 5209: return (int64x1_t) {__builtin_aarch64_srsra_ndi (__a[0], __b[0], __c)}; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrsra_n_u8 (uint8x8_t __a, uint8x8_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_ursra_nv8qi_uuus (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrsra_n_u16 (uint16x4_t __a, uint16x4_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_ursra_nv4hi_uuus (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrsra_n_u32 (uint32x2_t __a, uint32x2_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_ursra_nv2si_uuus (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrsra_n_u64 (uint64x1_t __a, uint64x1_t __b, const int __c) 5209: { 5209: return (uint64x1_t) {__builtin_aarch64_ursra_ndi_uuus (__a[0], __b[0], __c)}; 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrsraq_n_s8 (int8x16_t __a, int8x16_t __b, const int __c) 5209: { 5209: return (int8x16_t) __builtin_aarch64_srsra_nv16qi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrsraq_n_s16 (int16x8_t __a, int16x8_t __b, const int __c) 5209: { 5209: return (int16x8_t) __builtin_aarch64_srsra_nv8hi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrsraq_n_s32 (int32x4_t __a, int32x4_t __b, const int __c) 5209: { 5209: return (int32x4_t) __builtin_aarch64_srsra_nv4si (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrsraq_n_s64 (int64x2_t __a, int64x2_t __b, const int __c) 5209: { 5209: return (int64x2_t) __builtin_aarch64_srsra_nv2di (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrsraq_n_u8 (uint8x16_t __a, uint8x16_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_ursra_nv16qi_uuus (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrsraq_n_u16 (uint16x8_t __a, uint16x8_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_ursra_nv8hi_uuus (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrsraq_n_u32 (uint32x4_t __a, uint32x4_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_ursra_nv4si_uuus (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrsraq_n_u64 (uint64x2_t __a, uint64x2_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_ursra_nv2di_uuus (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrsrad_n_s64 (int64_t __a, int64_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_srsra_ndi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrsrad_n_u64 (uint64_t __a, uint64_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_ursra_ndi_uuus (__a, __b, __c); 5209: } 5209: 5209: #pragma GCC push_options 5209: #pragma GCC target ("+nothing+crypto") 5209: 5209: 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsha1cq_u32 (uint32x4_t __hash_abcd, uint32_t __hash_e, uint32x4_t __wk) 5209: { 5209: return __builtin_aarch64_crypto_sha1cv4si_uuuu (__hash_abcd, __hash_e, __wk); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsha1mq_u32 (uint32x4_t __hash_abcd, uint32_t __hash_e, uint32x4_t __wk) 5209: { 5209: return __builtin_aarch64_crypto_sha1mv4si_uuuu (__hash_abcd, __hash_e, __wk); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsha1pq_u32 (uint32x4_t __hash_abcd, uint32_t __hash_e, uint32x4_t __wk) 5209: { 5209: return __builtin_aarch64_crypto_sha1pv4si_uuuu (__hash_abcd, __hash_e, __wk); 5209: } 5209: 5209: __extension__ extern __inline uint32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsha1h_u32 (uint32_t __hash_e) 5209: { 5209: return __builtin_aarch64_crypto_sha1hsi_uu (__hash_e); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsha1su0q_u32 (uint32x4_t __w0_3, uint32x4_t __w4_7, uint32x4_t __w8_11) 5209: { 5209: return __builtin_aarch64_crypto_sha1su0v4si_uuuu (__w0_3, __w4_7, __w8_11); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsha1su1q_u32 (uint32x4_t __tw0_3, uint32x4_t __w12_15) 5209: { 5209: return __builtin_aarch64_crypto_sha1su1v4si_uuu (__tw0_3, __w12_15); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsha256hq_u32 (uint32x4_t __hash_abcd, uint32x4_t __hash_efgh, uint32x4_t __wk) 5209: { 5209: return __builtin_aarch64_crypto_sha256hv4si_uuuu (__hash_abcd, __hash_efgh, 5209: __wk); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsha256h2q_u32 (uint32x4_t __hash_efgh, uint32x4_t __hash_abcd, uint32x4_t __wk) 5209: { 5209: return __builtin_aarch64_crypto_sha256h2v4si_uuuu (__hash_efgh, __hash_abcd, 5209: __wk); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsha256su0q_u32 (uint32x4_t __w0_3, uint32x4_t __w4_7) 5209: { 5209: return __builtin_aarch64_crypto_sha256su0v4si_uuu (__w0_3, __w4_7); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsha256su1q_u32 (uint32x4_t __tw0_3, uint32x4_t __w8_11, uint32x4_t __w12_15) 5209: { 5209: return __builtin_aarch64_crypto_sha256su1v4si_uuuu (__tw0_3, __w8_11, 5209: __w12_15); 5209: } 5209: 5209: __extension__ extern __inline poly128_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmull_p64 (poly64_t __a, poly64_t __b) 5209: { 5209: return 5209: __builtin_aarch64_crypto_pmulldi_ppp (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline poly128_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmull_high_p64 (poly64x2_t __a, poly64x2_t __b) 5209: { 5209: return __builtin_aarch64_crypto_pmullv2di_ppp (__a, __b); 5209: } 5209: 5209: #pragma GCC pop_options 5209: 5209: 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshl_n_s8 (int8x8_t __a, const int __b) 5209: { 5209: return (int8x8_t) __builtin_aarch64_ashlv8qi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshl_n_s16 (int16x4_t __a, const int __b) 5209: { 5209: return (int16x4_t) __builtin_aarch64_ashlv4hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshl_n_s32 (int32x2_t __a, const int __b) 5209: { 5209: return (int32x2_t) __builtin_aarch64_ashlv2si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshl_n_s64 (int64x1_t __a, const int __b) 5209: { 5209: return (int64x1_t) {__builtin_aarch64_ashldi (__a[0], __b)}; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshl_n_u8 (uint8x8_t __a, const int __b) 5209: { 5209: return (uint8x8_t) __builtin_aarch64_ashlv8qi ((int8x8_t) __a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshl_n_u16 (uint16x4_t __a, const int __b) 5209: { 5209: return (uint16x4_t) __builtin_aarch64_ashlv4hi ((int16x4_t) __a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshl_n_u32 (uint32x2_t __a, const int __b) 5209: { 5209: return (uint32x2_t) __builtin_aarch64_ashlv2si ((int32x2_t) __a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshl_n_u64 (uint64x1_t __a, const int __b) 5209: { 5209: return (uint64x1_t) {__builtin_aarch64_ashldi ((int64_t) __a[0], __b)}; 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshlq_n_s8 (int8x16_t __a, const int __b) 5209: { 5209: return (int8x16_t) __builtin_aarch64_ashlv16qi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshlq_n_s16 (int16x8_t __a, const int __b) 5209: { 5209: return (int16x8_t) __builtin_aarch64_ashlv8hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshlq_n_s32 (int32x4_t __a, const int __b) 5209: { 5209: return (int32x4_t) __builtin_aarch64_ashlv4si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshlq_n_s64 (int64x2_t __a, const int __b) 5209: { 5209: return (int64x2_t) __builtin_aarch64_ashlv2di (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshlq_n_u8 (uint8x16_t __a, const int __b) 5209: { 5209: return (uint8x16_t) __builtin_aarch64_ashlv16qi ((int8x16_t) __a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshlq_n_u16 (uint16x8_t __a, const int __b) 5209: { 5209: return (uint16x8_t) __builtin_aarch64_ashlv8hi ((int16x8_t) __a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshlq_n_u32 (uint32x4_t __a, const int __b) 5209: { 5209: return (uint32x4_t) __builtin_aarch64_ashlv4si ((int32x4_t) __a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshlq_n_u64 (uint64x2_t __a, const int __b) 5209: { 5209: return (uint64x2_t) __builtin_aarch64_ashlv2di ((int64x2_t) __a, __b); 5209: } 5209: 5209: __extension__ extern __inline int64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshld_n_s64 (int64_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_ashldi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshld_n_u64 (uint64_t __a, const int __b) 5209: { 5209: return (uint64_t) __builtin_aarch64_ashldi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshl_s8 (int8x8_t __a, int8x8_t __b) 5209: { 5209: return __builtin_aarch64_sshlv8qi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshl_s16 (int16x4_t __a, int16x4_t __b) 5209: { 5209: return __builtin_aarch64_sshlv4hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshl_s32 (int32x2_t __a, int32x2_t __b) 5209: { 5209: return __builtin_aarch64_sshlv2si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshl_s64 (int64x1_t __a, int64x1_t __b) 5209: { 5209: return (int64x1_t) {__builtin_aarch64_sshldi (__a[0], __b[0])}; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshl_u8 (uint8x8_t __a, int8x8_t __b) 5209: { 5209: return __builtin_aarch64_ushlv8qi_uus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshl_u16 (uint16x4_t __a, int16x4_t __b) 5209: { 5209: return __builtin_aarch64_ushlv4hi_uus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshl_u32 (uint32x2_t __a, int32x2_t __b) 5209: { 5209: return __builtin_aarch64_ushlv2si_uus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshl_u64 (uint64x1_t __a, int64x1_t __b) 5209: { 5209: return (uint64x1_t) {__builtin_aarch64_ushldi_uus (__a[0], __b[0])}; 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshlq_s8 (int8x16_t __a, int8x16_t __b) 5209: { 5209: return __builtin_aarch64_sshlv16qi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshlq_s16 (int16x8_t __a, int16x8_t __b) 5209: { 5209: return __builtin_aarch64_sshlv8hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshlq_s32 (int32x4_t __a, int32x4_t __b) 5209: { 5209: return __builtin_aarch64_sshlv4si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshlq_s64 (int64x2_t __a, int64x2_t __b) 5209: { 5209: return __builtin_aarch64_sshlv2di (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshlq_u8 (uint8x16_t __a, int8x16_t __b) 5209: { 5209: return __builtin_aarch64_ushlv16qi_uus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshlq_u16 (uint16x8_t __a, int16x8_t __b) 5209: { 5209: return __builtin_aarch64_ushlv8hi_uus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshlq_u32 (uint32x4_t __a, int32x4_t __b) 5209: { 5209: return __builtin_aarch64_ushlv4si_uus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshlq_u64 (uint64x2_t __a, int64x2_t __b) 5209: { 5209: return __builtin_aarch64_ushlv2di_uus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshld_s64 (int64_t __a, int64_t __b) 5209: { 5209: return __builtin_aarch64_sshldi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshld_u64 (uint64_t __a, uint64_t __b) 5209: { 5209: return __builtin_aarch64_ushldi_uus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshll_high_n_s8 (int8x16_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_sshll2_nv16qi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshll_high_n_s16 (int16x8_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_sshll2_nv8hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshll_high_n_s32 (int32x4_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_sshll2_nv4si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshll_high_n_u8 (uint8x16_t __a, const int __b) 5209: { 5209: return (uint16x8_t) __builtin_aarch64_ushll2_nv16qi ((int8x16_t) __a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshll_high_n_u16 (uint16x8_t __a, const int __b) 5209: { 5209: return (uint32x4_t) __builtin_aarch64_ushll2_nv8hi ((int16x8_t) __a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshll_high_n_u32 (uint32x4_t __a, const int __b) 5209: { 5209: return (uint64x2_t) __builtin_aarch64_ushll2_nv4si ((int32x4_t) __a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshll_n_s8 (int8x8_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_sshll_nv8qi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshll_n_s16 (int16x4_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_sshll_nv4hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshll_n_s32 (int32x2_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_sshll_nv2si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshll_n_u8 (uint8x8_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_ushll_nv8qi_uus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshll_n_u16 (uint16x4_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_ushll_nv4hi_uus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshll_n_u32 (uint32x2_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_ushll_nv2si_uus (__a, __b); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshr_n_s8 (int8x8_t __a, const int __b) 5209: { 5209: return (int8x8_t) __builtin_aarch64_ashrv8qi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshr_n_s16 (int16x4_t __a, const int __b) 5209: { 5209: return (int16x4_t) __builtin_aarch64_ashrv4hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshr_n_s32 (int32x2_t __a, const int __b) 5209: { 5209: return (int32x2_t) __builtin_aarch64_ashrv2si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshr_n_s64 (int64x1_t __a, const int __b) 5209: { 5209: return (int64x1_t) {__builtin_aarch64_ashr_simddi (__a[0], __b)}; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshr_n_u8 (uint8x8_t __a, const int __b) 5209: { 5209: return (uint8x8_t) __builtin_aarch64_lshrv8qi ((int8x8_t) __a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshr_n_u16 (uint16x4_t __a, const int __b) 5209: { 5209: return (uint16x4_t) __builtin_aarch64_lshrv4hi ((int16x4_t) __a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshr_n_u32 (uint32x2_t __a, const int __b) 5209: { 5209: return (uint32x2_t) __builtin_aarch64_lshrv2si ((int32x2_t) __a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshr_n_u64 (uint64x1_t __a, const int __b) 5209: { 5209: return (uint64x1_t) {__builtin_aarch64_lshr_simddi_uus ( __a[0], __b)}; 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshrq_n_s8 (int8x16_t __a, const int __b) 5209: { 5209: return (int8x16_t) __builtin_aarch64_ashrv16qi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshrq_n_s16 (int16x8_t __a, const int __b) 5209: { 5209: return (int16x8_t) __builtin_aarch64_ashrv8hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshrq_n_s32 (int32x4_t __a, const int __b) 5209: { 5209: return (int32x4_t) __builtin_aarch64_ashrv4si (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshrq_n_s64 (int64x2_t __a, const int __b) 5209: { 5209: return (int64x2_t) __builtin_aarch64_ashrv2di (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshrq_n_u8 (uint8x16_t __a, const int __b) 5209: { 5209: return (uint8x16_t) __builtin_aarch64_lshrv16qi ((int8x16_t) __a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshrq_n_u16 (uint16x8_t __a, const int __b) 5209: { 5209: return (uint16x8_t) __builtin_aarch64_lshrv8hi ((int16x8_t) __a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshrq_n_u32 (uint32x4_t __a, const int __b) 5209: { 5209: return (uint32x4_t) __builtin_aarch64_lshrv4si ((int32x4_t) __a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshrq_n_u64 (uint64x2_t __a, const int __b) 5209: { 5209: return (uint64x2_t) __builtin_aarch64_lshrv2di ((int64x2_t) __a, __b); 5209: } 5209: 5209: __extension__ extern __inline int64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshrd_n_s64 (int64_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_ashr_simddi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vshrd_n_u64 (uint64_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_lshr_simddi_uus (__a, __b); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsli_n_s8 (int8x8_t __a, int8x8_t __b, const int __c) 5209: { 5209: return (int8x8_t) __builtin_aarch64_ssli_nv8qi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsli_n_s16 (int16x4_t __a, int16x4_t __b, const int __c) 5209: { 5209: return (int16x4_t) __builtin_aarch64_ssli_nv4hi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsli_n_s32 (int32x2_t __a, int32x2_t __b, const int __c) 5209: { 5209: return (int32x2_t) __builtin_aarch64_ssli_nv2si (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsli_n_s64 (int64x1_t __a, int64x1_t __b, const int __c) 5209: { 5209: return (int64x1_t) {__builtin_aarch64_ssli_ndi (__a[0], __b[0], __c)}; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsli_n_u8 (uint8x8_t __a, uint8x8_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_usli_nv8qi_uuus (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsli_n_u16 (uint16x4_t __a, uint16x4_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_usli_nv4hi_uuus (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsli_n_u32 (uint32x2_t __a, uint32x2_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_usli_nv2si_uuus (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsli_n_u64 (uint64x1_t __a, uint64x1_t __b, const int __c) 5209: { 5209: return (uint64x1_t) {__builtin_aarch64_usli_ndi_uuus (__a[0], __b[0], __c)}; 5209: } 5209: 5209: __extension__ extern __inline poly64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsli_n_p64 (poly64x1_t __a, poly64x1_t __b, const int __c) 5209: { 5209: return (poly64x1_t) {__builtin_aarch64_ssli_ndi_ppps (__a[0], __b[0], __c)}; 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsliq_n_s8 (int8x16_t __a, int8x16_t __b, const int __c) 5209: { 5209: return (int8x16_t) __builtin_aarch64_ssli_nv16qi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsliq_n_s16 (int16x8_t __a, int16x8_t __b, const int __c) 5209: { 5209: return (int16x8_t) __builtin_aarch64_ssli_nv8hi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsliq_n_s32 (int32x4_t __a, int32x4_t __b, const int __c) 5209: { 5209: return (int32x4_t) __builtin_aarch64_ssli_nv4si (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsliq_n_s64 (int64x2_t __a, int64x2_t __b, const int __c) 5209: { 5209: return (int64x2_t) __builtin_aarch64_ssli_nv2di (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsliq_n_u8 (uint8x16_t __a, uint8x16_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_usli_nv16qi_uuus (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsliq_n_u16 (uint16x8_t __a, uint16x8_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_usli_nv8hi_uuus (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsliq_n_u32 (uint32x4_t __a, uint32x4_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_usli_nv4si_uuus (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsliq_n_u64 (uint64x2_t __a, uint64x2_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_usli_nv2di_uuus (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline poly64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsliq_n_p64 (poly64x2_t __a, poly64x2_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_ssli_nv2di_ppps (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vslid_n_s64 (int64_t __a, int64_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_ssli_ndi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vslid_n_u64 (uint64_t __a, uint64_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_usli_ndi_uuus (__a, __b, __c); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsqadd_u8 (uint8x8_t __a, int8x8_t __b) 5209: { 5209: return __builtin_aarch64_usqaddv8qi_uus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsqadd_u16 (uint16x4_t __a, int16x4_t __b) 5209: { 5209: return __builtin_aarch64_usqaddv4hi_uus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsqadd_u32 (uint32x2_t __a, int32x2_t __b) 5209: { 5209: return __builtin_aarch64_usqaddv2si_uus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsqadd_u64 (uint64x1_t __a, int64x1_t __b) 5209: { 5209: return (uint64x1_t) {__builtin_aarch64_usqadddi_uus (__a[0], __b[0])}; 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsqaddq_u8 (uint8x16_t __a, int8x16_t __b) 5209: { 5209: return __builtin_aarch64_usqaddv16qi_uus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsqaddq_u16 (uint16x8_t __a, int16x8_t __b) 5209: { 5209: return __builtin_aarch64_usqaddv8hi_uus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsqaddq_u32 (uint32x4_t __a, int32x4_t __b) 5209: { 5209: return __builtin_aarch64_usqaddv4si_uus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsqaddq_u64 (uint64x2_t __a, int64x2_t __b) 5209: { 5209: return __builtin_aarch64_usqaddv2di_uus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsqaddb_u8 (uint8_t __a, int8_t __b) 5209: { 5209: return __builtin_aarch64_usqaddqi_uus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsqaddh_u16 (uint16_t __a, int16_t __b) 5209: { 5209: return __builtin_aarch64_usqaddhi_uus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsqadds_u32 (uint32_t __a, int32_t __b) 5209: { 5209: return __builtin_aarch64_usqaddsi_uus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsqaddd_u64 (uint64_t __a, int64_t __b) 5209: { 5209: return __builtin_aarch64_usqadddi_uus (__a, __b); 5209: } 5209: 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsqrt_f32 (float32x2_t __a) 5209: { 5209: return __builtin_aarch64_sqrtv2sf (__a); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsqrtq_f32 (float32x4_t __a) 5209: { 5209: return __builtin_aarch64_sqrtv4sf (__a); 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsqrt_f64 (float64x1_t __a) 5209: { 5209: return (float64x1_t) { __builtin_aarch64_sqrtdf (__a[0]) }; 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsqrtq_f64 (float64x2_t __a) 5209: { 5209: return __builtin_aarch64_sqrtv2df (__a); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsra_n_s8 (int8x8_t __a, int8x8_t __b, const int __c) 5209: { 5209: return (int8x8_t) __builtin_aarch64_ssra_nv8qi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsra_n_s16 (int16x4_t __a, int16x4_t __b, const int __c) 5209: { 5209: return (int16x4_t) __builtin_aarch64_ssra_nv4hi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsra_n_s32 (int32x2_t __a, int32x2_t __b, const int __c) 5209: { 5209: return (int32x2_t) __builtin_aarch64_ssra_nv2si (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsra_n_s64 (int64x1_t __a, int64x1_t __b, const int __c) 5209: { 5209: return (int64x1_t) {__builtin_aarch64_ssra_ndi (__a[0], __b[0], __c)}; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsra_n_u8 (uint8x8_t __a, uint8x8_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_usra_nv8qi_uuus (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsra_n_u16 (uint16x4_t __a, uint16x4_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_usra_nv4hi_uuus (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsra_n_u32 (uint32x2_t __a, uint32x2_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_usra_nv2si_uuus (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsra_n_u64 (uint64x1_t __a, uint64x1_t __b, const int __c) 5209: { 5209: return (uint64x1_t) {__builtin_aarch64_usra_ndi_uuus (__a[0], __b[0], __c)}; 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsraq_n_s8 (int8x16_t __a, int8x16_t __b, const int __c) 5209: { 5209: return (int8x16_t) __builtin_aarch64_ssra_nv16qi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsraq_n_s16 (int16x8_t __a, int16x8_t __b, const int __c) 5209: { 5209: return (int16x8_t) __builtin_aarch64_ssra_nv8hi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsraq_n_s32 (int32x4_t __a, int32x4_t __b, const int __c) 5209: { 5209: return (int32x4_t) __builtin_aarch64_ssra_nv4si (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsraq_n_s64 (int64x2_t __a, int64x2_t __b, const int __c) 5209: { 5209: return (int64x2_t) __builtin_aarch64_ssra_nv2di (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsraq_n_u8 (uint8x16_t __a, uint8x16_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_usra_nv16qi_uuus (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsraq_n_u16 (uint16x8_t __a, uint16x8_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_usra_nv8hi_uuus (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsraq_n_u32 (uint32x4_t __a, uint32x4_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_usra_nv4si_uuus (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsraq_n_u64 (uint64x2_t __a, uint64x2_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_usra_nv2di_uuus (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsrad_n_s64 (int64_t __a, int64_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_ssra_ndi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsrad_n_u64 (uint64_t __a, uint64_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_usra_ndi_uuus (__a, __b, __c); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsri_n_s8 (int8x8_t __a, int8x8_t __b, const int __c) 5209: { 5209: return (int8x8_t) __builtin_aarch64_ssri_nv8qi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsri_n_s16 (int16x4_t __a, int16x4_t __b, const int __c) 5209: { 5209: return (int16x4_t) __builtin_aarch64_ssri_nv4hi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsri_n_s32 (int32x2_t __a, int32x2_t __b, const int __c) 5209: { 5209: return (int32x2_t) __builtin_aarch64_ssri_nv2si (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsri_n_s64 (int64x1_t __a, int64x1_t __b, const int __c) 5209: { 5209: return (int64x1_t) {__builtin_aarch64_ssri_ndi (__a[0], __b[0], __c)}; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsri_n_u8 (uint8x8_t __a, uint8x8_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_usri_nv8qi_uuus (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsri_n_u16 (uint16x4_t __a, uint16x4_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_usri_nv4hi_uuus (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsri_n_u32 (uint32x2_t __a, uint32x2_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_usri_nv2si_uuus (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsri_n_u64 (uint64x1_t __a, uint64x1_t __b, const int __c) 5209: { 5209: return (uint64x1_t) {__builtin_aarch64_usri_ndi_uuus (__a[0], __b[0], __c)}; 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsriq_n_s8 (int8x16_t __a, int8x16_t __b, const int __c) 5209: { 5209: return (int8x16_t) __builtin_aarch64_ssri_nv16qi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsriq_n_s16 (int16x8_t __a, int16x8_t __b, const int __c) 5209: { 5209: return (int16x8_t) __builtin_aarch64_ssri_nv8hi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsriq_n_s32 (int32x4_t __a, int32x4_t __b, const int __c) 5209: { 5209: return (int32x4_t) __builtin_aarch64_ssri_nv4si (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsriq_n_s64 (int64x2_t __a, int64x2_t __b, const int __c) 5209: { 5209: return (int64x2_t) __builtin_aarch64_ssri_nv2di (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsriq_n_u8 (uint8x16_t __a, uint8x16_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_usri_nv16qi_uuus (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsriq_n_u16 (uint16x8_t __a, uint16x8_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_usri_nv8hi_uuus (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsriq_n_u32 (uint32x4_t __a, uint32x4_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_usri_nv4si_uuus (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsriq_n_u64 (uint64x2_t __a, uint64x2_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_usri_nv2di_uuus (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsrid_n_s64 (int64_t __a, int64_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_ssri_ndi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsrid_n_u64 (uint64_t __a, uint64_t __b, const int __c) 5209: { 5209: return __builtin_aarch64_usri_ndi_uuus (__a, __b, __c); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_f16 (float16_t *__a, float16x4_t __b) 5209: { 5209: __builtin_aarch64_st1v4hf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_f32 (float32_t *__a, float32x2_t __b) 5209: { 5209: __builtin_aarch64_st1v2sf ((__builtin_aarch64_simd_sf *) __a, __b); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_f64 (float64_t *__a, float64x1_t __b) 5209: { 5209: *__a = __b[0]; 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_p8 (poly8_t *__a, poly8x8_t __b) 5209: { 5209: __builtin_aarch64_st1v8qi ((__builtin_aarch64_simd_qi *) __a, 5209: (int8x8_t) __b); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_p16 (poly16_t *__a, poly16x4_t __b) 5209: { 5209: __builtin_aarch64_st1v4hi ((__builtin_aarch64_simd_hi *) __a, 5209: (int16x4_t) __b); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_p64 (poly64_t *__a, poly64x1_t __b) 5209: { 5209: *__a = __b[0]; 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_s8 (int8_t *__a, int8x8_t __b) 5209: { 5209: __builtin_aarch64_st1v8qi ((__builtin_aarch64_simd_qi *) __a, __b); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_s16 (int16_t *__a, int16x4_t __b) 5209: { 5209: __builtin_aarch64_st1v4hi ((__builtin_aarch64_simd_hi *) __a, __b); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_s32 (int32_t *__a, int32x2_t __b) 5209: { 5209: __builtin_aarch64_st1v2si ((__builtin_aarch64_simd_si *) __a, __b); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_s64 (int64_t *__a, int64x1_t __b) 5209: { 5209: *__a = __b[0]; 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_u8 (uint8_t *__a, uint8x8_t __b) 5209: { 5209: __builtin_aarch64_st1v8qi ((__builtin_aarch64_simd_qi *) __a, 5209: (int8x8_t) __b); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_u16 (uint16_t *__a, uint16x4_t __b) 5209: { 5209: __builtin_aarch64_st1v4hi ((__builtin_aarch64_simd_hi *) __a, 5209: (int16x4_t) __b); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_u32 (uint32_t *__a, uint32x2_t __b) 5209: { 5209: __builtin_aarch64_st1v2si ((__builtin_aarch64_simd_si *) __a, 5209: (int32x2_t) __b); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_u64 (uint64_t *__a, uint64x1_t __b) 5209: { 5209: *__a = __b[0]; 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_f16 (float16_t *__a, float16x8_t __b) 5209: { 5209: __builtin_aarch64_st1v8hf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_f32 (float32_t *__a, float32x4_t __b) 5209: { 5209: __builtin_aarch64_st1v4sf ((__builtin_aarch64_simd_sf *) __a, __b); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_f64 (float64_t *__a, float64x2_t __b) 5209: { 5209: __builtin_aarch64_st1v2df ((__builtin_aarch64_simd_df *) __a, __b); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_p8 (poly8_t *__a, poly8x16_t __b) 5209: { 5209: __builtin_aarch64_st1v16qi ((__builtin_aarch64_simd_qi *) __a, 5209: (int8x16_t) __b); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_p16 (poly16_t *__a, poly16x8_t __b) 5209: { 5209: __builtin_aarch64_st1v8hi ((__builtin_aarch64_simd_hi *) __a, 5209: (int16x8_t) __b); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_p64 (poly64_t *__a, poly64x2_t __b) 5209: { 5209: __builtin_aarch64_st1v2di_sp ((__builtin_aarch64_simd_di *) __a, 5209: (poly64x2_t) __b); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_s8 (int8_t *__a, int8x16_t __b) 5209: { 5209: __builtin_aarch64_st1v16qi ((__builtin_aarch64_simd_qi *) __a, __b); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_s16 (int16_t *__a, int16x8_t __b) 5209: { 5209: __builtin_aarch64_st1v8hi ((__builtin_aarch64_simd_hi *) __a, __b); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_s32 (int32_t *__a, int32x4_t __b) 5209: { 5209: __builtin_aarch64_st1v4si ((__builtin_aarch64_simd_si *) __a, __b); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_s64 (int64_t *__a, int64x2_t __b) 5209: { 5209: __builtin_aarch64_st1v2di ((__builtin_aarch64_simd_di *) __a, __b); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_u8 (uint8_t *__a, uint8x16_t __b) 5209: { 5209: __builtin_aarch64_st1v16qi ((__builtin_aarch64_simd_qi *) __a, 5209: (int8x16_t) __b); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_u16 (uint16_t *__a, uint16x8_t __b) 5209: { 5209: __builtin_aarch64_st1v8hi ((__builtin_aarch64_simd_hi *) __a, 5209: (int16x8_t) __b); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_u32 (uint32_t *__a, uint32x4_t __b) 5209: { 5209: __builtin_aarch64_st1v4si ((__builtin_aarch64_simd_si *) __a, 5209: (int32x4_t) __b); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_u64 (uint64_t *__a, uint64x2_t __b) 5209: { 5209: __builtin_aarch64_st1v2di ((__builtin_aarch64_simd_di *) __a, 5209: (int64x2_t) __b); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_lane_f16 (float16_t *__a, float16x4_t __b, const int __lane) 5209: { 5209: *__a = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_lane_f32 (float32_t *__a, float32x2_t __b, const int __lane) 5209: { 5209: *__a = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_lane_f64 (float64_t *__a, float64x1_t __b, const int __lane) 5209: { 5209: *__a = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_lane_p8 (poly8_t *__a, poly8x8_t __b, const int __lane) 5209: { 5209: *__a = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_lane_p16 (poly16_t *__a, poly16x4_t __b, const int __lane) 5209: { 5209: *__a = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_lane_p64 (poly64_t *__a, poly64x1_t __b, const int __lane) 5209: { 5209: *__a = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_lane_s8 (int8_t *__a, int8x8_t __b, const int __lane) 5209: { 5209: *__a = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_lane_s16 (int16_t *__a, int16x4_t __b, const int __lane) 5209: { 5209: *__a = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_lane_s32 (int32_t *__a, int32x2_t __b, const int __lane) 5209: { 5209: *__a = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_lane_s64 (int64_t *__a, int64x1_t __b, const int __lane) 5209: { 5209: *__a = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_lane_u8 (uint8_t *__a, uint8x8_t __b, const int __lane) 5209: { 5209: *__a = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_lane_u16 (uint16_t *__a, uint16x4_t __b, const int __lane) 5209: { 5209: *__a = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_lane_u32 (uint32_t *__a, uint32x2_t __b, const int __lane) 5209: { 5209: *__a = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_lane_u64 (uint64_t *__a, uint64x1_t __b, const int __lane) 5209: { 5209: *__a = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_lane_f16 (float16_t *__a, float16x8_t __b, const int __lane) 5209: { 5209: *__a = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_lane_f32 (float32_t *__a, float32x4_t __b, const int __lane) 5209: { 5209: *__a = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_lane_f64 (float64_t *__a, float64x2_t __b, const int __lane) 5209: { 5209: *__a = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_lane_p8 (poly8_t *__a, poly8x16_t __b, const int __lane) 5209: { 5209: *__a = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_lane_p16 (poly16_t *__a, poly16x8_t __b, const int __lane) 5209: { 5209: *__a = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_lane_p64 (poly64_t *__a, poly64x2_t __b, const int __lane) 5209: { 5209: *__a = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_lane_s8 (int8_t *__a, int8x16_t __b, const int __lane) 5209: { 5209: *__a = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_lane_s16 (int16_t *__a, int16x8_t __b, const int __lane) 5209: { 5209: *__a = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_lane_s32 (int32_t *__a, int32x4_t __b, const int __lane) 5209: { 5209: *__a = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_lane_s64 (int64_t *__a, int64x2_t __b, const int __lane) 5209: { 5209: *__a = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_lane_u8 (uint8_t *__a, uint8x16_t __b, const int __lane) 5209: { 5209: *__a = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_lane_u16 (uint16_t *__a, uint16x8_t __b, const int __lane) 5209: { 5209: *__a = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_lane_u32 (uint32_t *__a, uint32x4_t __b, const int __lane) 5209: { 5209: *__a = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_lane_u64 (uint64_t *__a, uint64x2_t __b, const int __lane) 5209: { 5209: *__a = __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_s64_x2 (int64_t * __a, int64x1x2_t __val) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: int64x2x2_t __temp; 5209: __temp.val[0] 5209: = vcombine_s64 (__val.val[0], vcreate_s64 (((int64_t) 0))); 5209: __temp.val[1] 5209: = vcombine_s64 (__val.val[1], vcreate_s64 (((int64_t) 0))); 5209: __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) __temp.val[1], 1); 5209: __builtin_aarch64_st1x2di ((__builtin_aarch64_simd_di *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_u64_x2 (uint64_t * __a, uint64x1x2_t __val) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: uint64x2x2_t __temp; 5209: __temp.val[0] 5209: = vcombine_u64 (__val.val[0], vcreate_u64 (((uint64_t) 0))); 5209: __temp.val[1] 5209: = vcombine_u64 (__val.val[1], vcreate_u64 (((uint64_t) 0))); 5209: __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) __temp.val[1], 1); 5209: __builtin_aarch64_st1x2di ((__builtin_aarch64_simd_di *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_f64_x2 (float64_t * __a, float64x1x2_t __val) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: float64x2x2_t __temp; 5209: __temp.val[0] 5209: = vcombine_f64 (__val.val[0], vcreate_f64 (((uint64_t) 0))); 5209: __temp.val[1] 5209: = vcombine_f64 (__val.val[1], vcreate_f64 (((uint64_t) 0))); 5209: __o = __builtin_aarch64_set_qregoiv2df (__o, (float64x2_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv2df (__o, (float64x2_t) __temp.val[1], 1); 5209: __builtin_aarch64_st1x2df ((__builtin_aarch64_simd_df *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_s8_x2 (int8_t * __a, int8x8x2_t __val) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: int8x16x2_t __temp; 5209: __temp.val[0] 5209: = vcombine_s8 (__val.val[0], vcreate_s8 (((int64_t) 0))); 5209: __temp.val[1] 5209: = vcombine_s8 (__val.val[1], vcreate_s8 (((int64_t) 0))); 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __temp.val[1], 1); 5209: __builtin_aarch64_st1x2v8qi ((__builtin_aarch64_simd_qi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_p8_x2 (poly8_t * __a, poly8x8x2_t __val) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: poly8x16x2_t __temp; 5209: __temp.val[0] 5209: = vcombine_p8 (__val.val[0], vcreate_p8 (((uint64_t) 0))); 5209: __temp.val[1] 5209: = vcombine_p8 (__val.val[1], vcreate_p8 (((uint64_t) 0))); 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __temp.val[1], 1); 5209: __builtin_aarch64_st1x2v8qi ((__builtin_aarch64_simd_qi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_s16_x2 (int16_t * __a, int16x4x2_t __val) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: int16x8x2_t __temp; 5209: __temp.val[0] 5209: = vcombine_s16 (__val.val[0], vcreate_s16 (((int64_t) 0))); 5209: __temp.val[1] 5209: = vcombine_s16 (__val.val[1], vcreate_s16 (((int64_t) 0))); 5209: __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __temp.val[1], 1); 5209: __builtin_aarch64_st1x2v4hi ((__builtin_aarch64_simd_hi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_p16_x2 (poly16_t * __a, poly16x4x2_t __val) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: poly16x8x2_t __temp; 5209: __temp.val[0] 5209: = vcombine_p16 (__val.val[0], vcreate_p16 (((uint64_t) 0))); 5209: __temp.val[1] 5209: = vcombine_p16 (__val.val[1], vcreate_p16 (((uint64_t) 0))); 5209: __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __temp.val[1], 1); 5209: __builtin_aarch64_st1x2v4hi ((__builtin_aarch64_simd_hi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_s32_x2 (int32_t * __a, int32x2x2_t __val) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: int32x4x2_t __temp; 5209: __temp.val[0] 5209: = vcombine_s32 (__val.val[0], vcreate_s32 (((int64_t) 0))); 5209: __temp.val[1] 5209: = vcombine_s32 (__val.val[1], vcreate_s32 (((int64_t) 0))); 5209: __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __temp.val[1], 1); 5209: __builtin_aarch64_st1x2v2si ((__builtin_aarch64_simd_si *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_u8_x2 (uint8_t * __a, uint8x8x2_t __val) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: uint8x16x2_t __temp; 5209: __temp.val[0] = vcombine_u8 (__val.val[0], vcreate_u8 (((uint64_t) 0))); 5209: __temp.val[1] = vcombine_u8 (__val.val[1], vcreate_u8 (((uint64_t) 0))); 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __temp.val[1], 1); 5209: __builtin_aarch64_st1x2v8qi ((__builtin_aarch64_simd_qi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_u16_x2 (uint16_t * __a, uint16x4x2_t __val) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: uint16x8x2_t __temp; 5209: __temp.val[0] = vcombine_u16 (__val.val[0], vcreate_u16 (((uint64_t) 0))); 5209: __temp.val[1] = vcombine_u16 (__val.val[1], vcreate_u16 (((uint64_t) 0))); 5209: __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __temp.val[1], 1); 5209: __builtin_aarch64_st1x2v4hi ((__builtin_aarch64_simd_hi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_u32_x2 (uint32_t * __a, uint32x2x2_t __val) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: uint32x4x2_t __temp; 5209: __temp.val[0] = vcombine_u32 (__val.val[0], vcreate_u32 (((uint64_t) 0))); 5209: __temp.val[1] = vcombine_u32 (__val.val[1], vcreate_u32 (((uint64_t) 0))); 5209: __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __temp.val[1], 1); 5209: __builtin_aarch64_st1x2v2si ((__builtin_aarch64_simd_si *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_f16_x2 (float16_t * __a, float16x4x2_t __val) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: float16x8x2_t __temp; 5209: __temp.val[0] = vcombine_f16 (__val.val[0], vcreate_f16 (((uint64_t) 0))); 5209: __temp.val[1] = vcombine_f16 (__val.val[1], vcreate_f16 (((uint64_t) 0))); 5209: __o = __builtin_aarch64_set_qregoiv8hf (__o, __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv8hf (__o, __temp.val[1], 1); 5209: __builtin_aarch64_st1x2v4hf (__a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_f32_x2 (float32_t * __a, float32x2x2_t __val) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: float32x4x2_t __temp; 5209: __temp.val[0] = vcombine_f32 (__val.val[0], vcreate_f32 (((uint64_t) 0))); 5209: __temp.val[1] = vcombine_f32 (__val.val[1], vcreate_f32 (((uint64_t) 0))); 5209: __o = __builtin_aarch64_set_qregoiv4sf (__o, (float32x4_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv4sf (__o, (float32x4_t) __temp.val[1], 1); 5209: __builtin_aarch64_st1x2v2sf ((__builtin_aarch64_simd_sf *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_p64_x2 (poly64_t * __a, poly64x1x2_t __val) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: poly64x2x2_t __temp; 5209: __temp.val[0] = vcombine_p64 (__val.val[0], vcreate_p64 (((uint64_t) 0))); 5209: __temp.val[1] = vcombine_p64 (__val.val[1], vcreate_p64 (((uint64_t) 0))); 5209: __o = __builtin_aarch64_set_qregoiv2di_ssps (__o, 5209: (poly64x2_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv2di_ssps (__o, 5209: (poly64x2_t) __temp.val[1], 1); 5209: __builtin_aarch64_st1x2di ((__builtin_aarch64_simd_di *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_s8_x2 (int8_t * __a, int8x16x2_t __val) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __val.val[1], 1); 5209: __builtin_aarch64_st1x2v16qi ((__builtin_aarch64_simd_qi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_p8_x2 (poly8_t * __a, poly8x16x2_t __val) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __val.val[1], 1); 5209: __builtin_aarch64_st1x2v16qi ((__builtin_aarch64_simd_qi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_s16_x2 (int16_t * __a, int16x8x2_t __val) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __val.val[1], 1); 5209: __builtin_aarch64_st1x2v8hi ((__builtin_aarch64_simd_hi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_p16_x2 (poly16_t * __a, poly16x8x2_t __val) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __val.val[1], 1); 5209: __builtin_aarch64_st1x2v8hi ((__builtin_aarch64_simd_hi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_s32_x2 (int32_t * __a, int32x4x2_t __val) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __val.val[1], 1); 5209: __builtin_aarch64_st1x2v4si ((__builtin_aarch64_simd_si *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_s64_x2 (int64_t * __a, int64x2x2_t __val) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) __val.val[1], 1); 5209: __builtin_aarch64_st1x2v2di ((__builtin_aarch64_simd_di *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_u8_x2 (uint8_t * __a, uint8x16x2_t __val) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __val.val[1], 1); 5209: __builtin_aarch64_st1x2v16qi ((__builtin_aarch64_simd_qi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_u16_x2 (uint16_t * __a, uint16x8x2_t __val) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __val.val[1], 1); 5209: __builtin_aarch64_st1x2v8hi ((__builtin_aarch64_simd_hi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_u32_x2 (uint32_t * __a, uint32x4x2_t __val) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __val.val[1], 1); 5209: __builtin_aarch64_st1x2v4si ((__builtin_aarch64_simd_si *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_u64_x2 (uint64_t * __a, uint64x2x2_t __val) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) __val.val[1], 1); 5209: __builtin_aarch64_st1x2v2di ((__builtin_aarch64_simd_di *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_f16_x2 (float16_t * __a, float16x8x2_t __val) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_set_qregoiv8hf (__o, __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv8hf (__o, __val.val[1], 1); 5209: __builtin_aarch64_st1x2v8hf (__a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_f32_x2 (float32_t * __a, float32x4x2_t __val) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_set_qregoiv4sf (__o, (float32x4_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv4sf (__o, (float32x4_t) __val.val[1], 1); 5209: __builtin_aarch64_st1x2v4sf ((__builtin_aarch64_simd_sf *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_f64_x2 (float64_t * __a, float64x2x2_t __val) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_set_qregoiv2df (__o, (float64x2_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv2df (__o, (float64x2_t) __val.val[1], 1); 5209: __builtin_aarch64_st1x2v2df ((__builtin_aarch64_simd_df *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_p64_x2 (poly64_t * __a, poly64x2x2_t __val) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_set_qregoiv2di_ssps (__o, 5209: (poly64x2_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv2di_ssps (__o, 5209: (poly64x2_t) __val.val[1], 1); 5209: __builtin_aarch64_st1x2v2di ((__builtin_aarch64_simd_di *) __a, __o); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_s64_x3 (int64_t * __a, int64x1x3_t __val) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: int64x2x3_t __temp; 5209: __temp.val[0] = vcombine_s64 (__val.val[0], vcreate_s64 (((int64_t) 0))); 5209: __temp.val[1] = vcombine_s64 (__val.val[1], vcreate_s64 (((int64_t) 0))); 5209: __temp.val[2] = vcombine_s64 (__val.val[2], vcreate_s64 (((int64_t) 0))); 5209: __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __temp.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __temp.val[2], 2); 5209: __builtin_aarch64_st1x3di ((__builtin_aarch64_simd_di *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_u64_x3 (uint64_t * __a, uint64x1x3_t __val) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: uint64x2x3_t __temp; 5209: __temp.val[0] = vcombine_u64 (__val.val[0], vcreate_u64 (((uint64_t) 0))); 5209: __temp.val[1] = vcombine_u64 (__val.val[1], vcreate_u64 (((uint64_t) 0))); 5209: __temp.val[2] = vcombine_u64 (__val.val[2], vcreate_u64 (((uint64_t) 0))); 5209: __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __temp.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __temp.val[2], 2); 5209: __builtin_aarch64_st1x3di ((__builtin_aarch64_simd_di *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_f64_x3 (float64_t * __a, float64x1x3_t __val) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: float64x2x3_t __temp; 5209: __temp.val[0] = vcombine_f64 (__val.val[0], vcreate_f64 (((uint64_t) 0))); 5209: __temp.val[1] = vcombine_f64 (__val.val[1], vcreate_f64 (((uint64_t) 0))); 5209: __temp.val[2] = vcombine_f64 (__val.val[2], vcreate_f64 (((uint64_t) 0))); 5209: __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) __temp.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) __temp.val[2], 2); 5209: __builtin_aarch64_st1x3df ((__builtin_aarch64_simd_df *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_s8_x3 (int8_t * __a, int8x8x3_t __val) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: int8x16x3_t __temp; 5209: __temp.val[0] = vcombine_s8 (__val.val[0], vcreate_s8 (((int64_t) 0))); 5209: __temp.val[1] = vcombine_s8 (__val.val[1], vcreate_s8 (((int64_t) 0))); 5209: __temp.val[2] = vcombine_s8 (__val.val[2], vcreate_s8 (((int64_t) 0))); 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __temp.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __temp.val[2], 2); 5209: __builtin_aarch64_st1x3v8qi ((__builtin_aarch64_simd_qi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_p8_x3 (poly8_t * __a, poly8x8x3_t __val) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: poly8x16x3_t __temp; 5209: __temp.val[0] = vcombine_p8 (__val.val[0], vcreate_p8 (((uint64_t) 0))); 5209: __temp.val[1] = vcombine_p8 (__val.val[1], vcreate_p8 (((uint64_t) 0))); 5209: __temp.val[2] = vcombine_p8 (__val.val[2], vcreate_p8 (((uint64_t) 0))); 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __temp.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __temp.val[2], 2); 5209: __builtin_aarch64_st1x3v8qi ((__builtin_aarch64_simd_qi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_s16_x3 (int16_t * __a, int16x4x3_t __val) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: int16x8x3_t __temp; 5209: __temp.val[0] = vcombine_s16 (__val.val[0], vcreate_s16 (((int64_t) 0))); 5209: __temp.val[1] = vcombine_s16 (__val.val[1], vcreate_s16 (((int64_t) 0))); 5209: __temp.val[2] = vcombine_s16 (__val.val[2], vcreate_s16 (((int64_t) 0))); 5209: __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __temp.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __temp.val[2], 2); 5209: __builtin_aarch64_st1x3v4hi ((__builtin_aarch64_simd_hi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_p16_x3 (poly16_t * __a, poly16x4x3_t __val) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: poly16x8x3_t __temp; 5209: __temp.val[0] = vcombine_p16 (__val.val[0], vcreate_p16 (((uint64_t) 0))); 5209: __temp.val[1] = vcombine_p16 (__val.val[1], vcreate_p16 (((uint64_t) 0))); 5209: __temp.val[2] = vcombine_p16 (__val.val[2], vcreate_p16 (((uint64_t) 0))); 5209: __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __temp.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __temp.val[2], 2); 5209: __builtin_aarch64_st1x3v4hi ((__builtin_aarch64_simd_hi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_s32_x3 (int32_t * __a, int32x2x3_t __val) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: int32x4x3_t __temp; 5209: __temp.val[0] = vcombine_s32 (__val.val[0], vcreate_s32 (((int64_t) 0))); 5209: __temp.val[1] = vcombine_s32 (__val.val[1], vcreate_s32 (((int64_t) 0))); 5209: __temp.val[2] = vcombine_s32 (__val.val[2], vcreate_s32 (((int64_t) 0))); 5209: __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __temp.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __temp.val[2], 2); 5209: __builtin_aarch64_st1x3v2si ((__builtin_aarch64_simd_si *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_u8_x3 (uint8_t * __a, uint8x8x3_t __val) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: uint8x16x3_t __temp; 5209: __temp.val[0] = vcombine_u8 (__val.val[0], vcreate_u8 (((uint64_t) 0))); 5209: __temp.val[1] = vcombine_u8 (__val.val[1], vcreate_u8 (((uint64_t) 0))); 5209: __temp.val[2] = vcombine_u8 (__val.val[2], vcreate_u8 (((uint64_t) 0))); 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __temp.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __temp.val[2], 2); 5209: __builtin_aarch64_st1x3v8qi ((__builtin_aarch64_simd_qi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_u16_x3 (uint16_t * __a, uint16x4x3_t __val) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: uint16x8x3_t __temp; 5209: __temp.val[0] = vcombine_u16 (__val.val[0], vcreate_u16 (((uint64_t) 0))); 5209: __temp.val[1] = vcombine_u16 (__val.val[1], vcreate_u16 (((uint64_t) 0))); 5209: __temp.val[2] = vcombine_u16 (__val.val[2], vcreate_u16 (((uint64_t) 0))); 5209: __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __temp.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __temp.val[2], 2); 5209: __builtin_aarch64_st1x3v4hi ((__builtin_aarch64_simd_hi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_u32_x3 (uint32_t * __a, uint32x2x3_t __val) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: uint32x4x3_t __temp; 5209: __temp.val[0] = vcombine_u32 (__val.val[0], vcreate_u32 (((uint64_t) 0))); 5209: __temp.val[1] = vcombine_u32 (__val.val[1], vcreate_u32 (((uint64_t) 0))); 5209: __temp.val[2] = vcombine_u32 (__val.val[2], vcreate_u32 (((uint64_t) 0))); 5209: __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __temp.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __temp.val[2], 2); 5209: __builtin_aarch64_st1x3v2si ((__builtin_aarch64_simd_si *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_f16_x3 (float16_t * __a, float16x4x3_t __val) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: float16x8x3_t __temp; 5209: __temp.val[0] = vcombine_f16 (__val.val[0], vcreate_f16 (((uint64_t) 0))); 5209: __temp.val[1] = vcombine_f16 (__val.val[1], vcreate_f16 (((uint64_t) 0))); 5209: __temp.val[2] = vcombine_f16 (__val.val[2], vcreate_f16 (((uint64_t) 0))); 5209: __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) __temp.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) __temp.val[2], 2); 5209: __builtin_aarch64_st1x3v4hf ((__builtin_aarch64_simd_hf *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_f32_x3 (float32_t * __a, float32x2x3_t __val) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: float32x4x3_t __temp; 5209: __temp.val[0] = vcombine_f32 (__val.val[0], vcreate_f32 (((uint64_t) 0))); 5209: __temp.val[1] = vcombine_f32 (__val.val[1], vcreate_f32 (((uint64_t) 0))); 5209: __temp.val[2] = vcombine_f32 (__val.val[2], vcreate_f32 (((uint64_t) 0))); 5209: __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) __temp.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) __temp.val[2], 2); 5209: __builtin_aarch64_st1x3v2sf ((__builtin_aarch64_simd_sf *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_p64_x3 (poly64_t * __a, poly64x1x3_t __val) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: poly64x2x3_t __temp; 5209: __temp.val[0] = vcombine_p64 (__val.val[0], vcreate_p64 (((uint64_t) 0))); 5209: __temp.val[1] = vcombine_p64 (__val.val[1], vcreate_p64 (((uint64_t) 0))); 5209: __temp.val[2] = vcombine_p64 (__val.val[2], vcreate_p64 (((uint64_t) 0))); 5209: __o = __builtin_aarch64_set_qregciv2di_ssps (__o, 5209: (poly64x2_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv2di_ssps (__o, 5209: (poly64x2_t) __temp.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv2di_ssps (__o, 5209: (poly64x2_t) __temp.val[2], 2); 5209: __builtin_aarch64_st1x3di ((__builtin_aarch64_simd_di *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_s8_x3 (int8_t * __a, int8x16x3_t __val) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __val.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __val.val[2], 2); 5209: __builtin_aarch64_st1x3v16qi ((__builtin_aarch64_simd_qi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_p8_x3 (poly8_t * __a, poly8x16x3_t __val) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __val.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __val.val[2], 2); 5209: __builtin_aarch64_st1x3v16qi ((__builtin_aarch64_simd_qi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_s16_x3 (int16_t * __a, int16x8x3_t __val) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __val.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __val.val[2], 2); 5209: __builtin_aarch64_st1x3v8hi ((__builtin_aarch64_simd_hi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_p16_x3 (poly16_t * __a, poly16x8x3_t __val) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __val.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __val.val[2], 2); 5209: __builtin_aarch64_st1x3v8hi ((__builtin_aarch64_simd_hi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_s32_x3 (int32_t * __a, int32x4x3_t __val) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __val.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __val.val[2], 2); 5209: __builtin_aarch64_st1x3v4si ((__builtin_aarch64_simd_si *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_s64_x3 (int64_t * __a, int64x2x3_t __val) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __val.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __val.val[2], 2); 5209: __builtin_aarch64_st1x3v2di ((__builtin_aarch64_simd_di *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_u8_x3 (uint8_t * __a, uint8x16x3_t __val) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __val.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __val.val[2], 2); 5209: __builtin_aarch64_st1x3v16qi ((__builtin_aarch64_simd_qi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_u16_x3 (uint16_t * __a, uint16x8x3_t __val) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __val.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __val.val[2], 2); 5209: __builtin_aarch64_st1x3v8hi ((__builtin_aarch64_simd_hi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_u32_x3 (uint32_t * __a, uint32x4x3_t __val) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __val.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __val.val[2], 2); 5209: __builtin_aarch64_st1x3v4si ((__builtin_aarch64_simd_si *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_u64_x3 (uint64_t * __a, uint64x2x3_t __val) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __val.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __val.val[2], 2); 5209: __builtin_aarch64_st1x3v2di ((__builtin_aarch64_simd_di *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_f16_x3 (float16_t * __a, float16x8x3_t __val) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) __val.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) __val.val[2], 2); 5209: __builtin_aarch64_st1x3v8hf ((__builtin_aarch64_simd_hf *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_f32_x3 (float32_t * __a, float32x4x3_t __val) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) __val.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) __val.val[2], 2); 5209: __builtin_aarch64_st1x3v4sf ((__builtin_aarch64_simd_sf *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_f64_x3 (float64_t * __a, float64x2x3_t __val) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) __val.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) __val.val[2], 2); 5209: __builtin_aarch64_st1x3v2df ((__builtin_aarch64_simd_df *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_p64_x3 (poly64_t * __a, poly64x2x3_t __val) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_set_qregciv2di_ssps (__o, 5209: (poly64x2_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv2di_ssps (__o, 5209: (poly64x2_t) __val.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv2di_ssps (__o, 5209: (poly64x2_t) __val.val[2], 2); 5209: __builtin_aarch64_st1x3v2di ((__builtin_aarch64_simd_di *) __a, __o); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_s8_x4 (int8_t * __a, int8x8x4_t val) 5209: { 5209: union { int8x8x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val }; 5209: __builtin_aarch64_st1x4v8qi ((__builtin_aarch64_simd_qi *) __a, __u.__o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_s8_x4 (int8_t * __a, int8x16x4_t val) 5209: { 5209: union { int8x16x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val }; 5209: __builtin_aarch64_st1x4v16qi ((__builtin_aarch64_simd_qi *) __a, __u.__o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_s16_x4 (int16_t * __a, int16x4x4_t val) 5209: { 5209: union { int16x4x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val }; 5209: __builtin_aarch64_st1x4v4hi ((__builtin_aarch64_simd_hi *) __a, __u.__o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_s16_x4 (int16_t * __a, int16x8x4_t val) 5209: { 5209: union { int16x8x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val }; 5209: __builtin_aarch64_st1x4v8hi ((__builtin_aarch64_simd_hi *) __a, __u.__o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_s32_x4 (int32_t * __a, int32x2x4_t val) 5209: { 5209: union { int32x2x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val }; 5209: __builtin_aarch64_st1x4v2si ((__builtin_aarch64_simd_si *) __a, __u.__o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_s32_x4 (int32_t * __a, int32x4x4_t val) 5209: { 5209: union { int32x4x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val }; 5209: __builtin_aarch64_st1x4v4si ((__builtin_aarch64_simd_si *) __a, __u.__o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_u8_x4 (uint8_t * __a, uint8x8x4_t val) 5209: { 5209: union { uint8x8x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val }; 5209: __builtin_aarch64_st1x4v8qi ((__builtin_aarch64_simd_qi *) __a, __u.__o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_u8_x4 (uint8_t * __a, uint8x16x4_t val) 5209: { 5209: union { uint8x16x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val }; 5209: __builtin_aarch64_st1x4v16qi ((__builtin_aarch64_simd_qi *) __a, __u.__o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_u16_x4 (uint16_t * __a, uint16x4x4_t val) 5209: { 5209: union { uint16x4x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val }; 5209: __builtin_aarch64_st1x4v4hi ((__builtin_aarch64_simd_hi *) __a, __u.__o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_u16_x4 (uint16_t * __a, uint16x8x4_t val) 5209: { 5209: union { uint16x8x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val }; 5209: __builtin_aarch64_st1x4v8hi ((__builtin_aarch64_simd_hi *) __a, __u.__o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_u32_x4 (uint32_t * __a, uint32x2x4_t val) 5209: { 5209: union { uint32x2x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val }; 5209: __builtin_aarch64_st1x4v2si ((__builtin_aarch64_simd_si *) __a, __u.__o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_u32_x4 (uint32_t * __a, uint32x4x4_t val) 5209: { 5209: union { uint32x4x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val }; 5209: __builtin_aarch64_st1x4v4si ((__builtin_aarch64_simd_si *) __a, __u.__o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_f16_x4 (float16_t * __a, float16x4x4_t val) 5209: { 5209: union { float16x4x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val }; 5209: __builtin_aarch64_st1x4v4hf ((__builtin_aarch64_simd_hf *) __a, __u.__o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_f16_x4 (float16_t * __a, float16x8x4_t val) 5209: { 5209: union { float16x8x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val }; 5209: __builtin_aarch64_st1x4v8hf ((__builtin_aarch64_simd_hf *) __a, __u.__o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_f32_x4 (float32_t * __a, float32x2x4_t val) 5209: { 5209: union { float32x2x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val }; 5209: __builtin_aarch64_st1x4v2sf ((__builtin_aarch64_simd_sf *) __a, __u.__o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_f32_x4 (float32_t * __a, float32x4x4_t val) 5209: { 5209: union { float32x4x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val }; 5209: __builtin_aarch64_st1x4v4sf ((__builtin_aarch64_simd_sf *) __a, __u.__o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_p8_x4 (poly8_t * __a, poly8x8x4_t val) 5209: { 5209: union { poly8x8x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val }; 5209: __builtin_aarch64_st1x4v8qi ((__builtin_aarch64_simd_qi *) __a, __u.__o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_p8_x4 (poly8_t * __a, poly8x16x4_t val) 5209: { 5209: union { poly8x16x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val }; 5209: __builtin_aarch64_st1x4v16qi ((__builtin_aarch64_simd_qi *) __a, __u.__o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_p16_x4 (poly16_t * __a, poly16x4x4_t val) 5209: { 5209: union { poly16x4x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val }; 5209: __builtin_aarch64_st1x4v4hi ((__builtin_aarch64_simd_hi *) __a, __u.__o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_p16_x4 (poly16_t * __a, poly16x8x4_t val) 5209: { 5209: union { poly16x8x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val }; 5209: __builtin_aarch64_st1x4v8hi ((__builtin_aarch64_simd_hi *) __a, __u.__o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_s64_x4 (int64_t * __a, int64x1x4_t val) 5209: { 5209: union { int64x1x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val }; 5209: __builtin_aarch64_st1x4di ((__builtin_aarch64_simd_di *) __a, __u.__o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_u64_x4 (uint64_t * __a, uint64x1x4_t val) 5209: { 5209: union { uint64x1x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val }; 5209: __builtin_aarch64_st1x4di ((__builtin_aarch64_simd_di *) __a, __u.__o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_p64_x4 (poly64_t * __a, poly64x1x4_t val) 5209: { 5209: union { poly64x1x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val }; 5209: __builtin_aarch64_st1x4di ((__builtin_aarch64_simd_di *) __a, __u.__o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_s64_x4 (int64_t * __a, int64x2x4_t val) 5209: { 5209: union { int64x2x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val }; 5209: __builtin_aarch64_st1x4v2di ((__builtin_aarch64_simd_di *) __a, __u.__o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_u64_x4 (uint64_t * __a, uint64x2x4_t val) 5209: { 5209: union { uint64x2x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val }; 5209: __builtin_aarch64_st1x4v2di ((__builtin_aarch64_simd_di *) __a, __u.__o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_p64_x4 (poly64_t * __a, poly64x2x4_t val) 5209: { 5209: union { poly64x2x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val }; 5209: __builtin_aarch64_st1x4v2di ((__builtin_aarch64_simd_di *) __a, __u.__o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1_f64_x4 (float64_t * __a, float64x1x4_t val) 5209: { 5209: union { float64x1x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val }; 5209: __builtin_aarch64_st1x4df ((__builtin_aarch64_simd_df *) __a, __u.__o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst1q_f64_x4 (float64_t * __a, float64x2x4_t val) 5209: { 5209: union { float64x2x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val }; 5209: __builtin_aarch64_st1x4v2df ((__builtin_aarch64_simd_df *) __a, __u.__o); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst2_s64 (int64_t * __a, int64x1x2_t __val) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: int64x2x2_t __temp; 5209: __temp.val[0] = vcombine_s64 (__val.val[0], vcreate_s64 (((int64_t) 0))); 5209: __temp.val[1] = vcombine_s64 (__val.val[1], vcreate_s64 (((int64_t) 0))); 5209: __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) __temp.val[1], 1); 5209: __builtin_aarch64_st2di ((__builtin_aarch64_simd_di *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst2_u64 (uint64_t * __a, uint64x1x2_t __val) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: uint64x2x2_t __temp; 5209: __temp.val[0] = vcombine_u64 (__val.val[0], vcreate_u64 (((uint64_t) 0))); 5209: __temp.val[1] = vcombine_u64 (__val.val[1], vcreate_u64 (((uint64_t) 0))); 5209: __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) __temp.val[1], 1); 5209: __builtin_aarch64_st2di ((__builtin_aarch64_simd_di *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst2_f64 (float64_t * __a, float64x1x2_t __val) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: float64x2x2_t __temp; 5209: __temp.val[0] = vcombine_f64 (__val.val[0], vcreate_f64 (((uint64_t) 0))); 5209: __temp.val[1] = vcombine_f64 (__val.val[1], vcreate_f64 (((uint64_t) 0))); 5209: __o = __builtin_aarch64_set_qregoiv2df (__o, (float64x2_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv2df (__o, (float64x2_t) __temp.val[1], 1); 5209: __builtin_aarch64_st2df ((__builtin_aarch64_simd_df *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst2_s8 (int8_t * __a, int8x8x2_t __val) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: int8x16x2_t __temp; 5209: __temp.val[0] = vcombine_s8 (__val.val[0], vcreate_s8 (((int64_t) 0))); 5209: __temp.val[1] = vcombine_s8 (__val.val[1], vcreate_s8 (((int64_t) 0))); 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __temp.val[1], 1); 5209: __builtin_aarch64_st2v8qi ((__builtin_aarch64_simd_qi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst2_p8 (poly8_t * __a, poly8x8x2_t __val) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: poly8x16x2_t __temp; 5209: __temp.val[0] = vcombine_p8 (__val.val[0], vcreate_p8 (((uint64_t) 0))); 5209: __temp.val[1] = vcombine_p8 (__val.val[1], vcreate_p8 (((uint64_t) 0))); 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __temp.val[1], 1); 5209: __builtin_aarch64_st2v8qi ((__builtin_aarch64_simd_qi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst2_s16 (int16_t * __a, int16x4x2_t __val) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: int16x8x2_t __temp; 5209: __temp.val[0] = vcombine_s16 (__val.val[0], vcreate_s16 (((int64_t) 0))); 5209: __temp.val[1] = vcombine_s16 (__val.val[1], vcreate_s16 (((int64_t) 0))); 5209: __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __temp.val[1], 1); 5209: __builtin_aarch64_st2v4hi ((__builtin_aarch64_simd_hi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst2_p16 (poly16_t * __a, poly16x4x2_t __val) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: poly16x8x2_t __temp; 5209: __temp.val[0] = vcombine_p16 (__val.val[0], vcreate_p16 (((uint64_t) 0))); 5209: __temp.val[1] = vcombine_p16 (__val.val[1], vcreate_p16 (((uint64_t) 0))); 5209: __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __temp.val[1], 1); 5209: __builtin_aarch64_st2v4hi ((__builtin_aarch64_simd_hi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst2_s32 (int32_t * __a, int32x2x2_t __val) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: int32x4x2_t __temp; 5209: __temp.val[0] = vcombine_s32 (__val.val[0], vcreate_s32 (((int64_t) 0))); 5209: __temp.val[1] = vcombine_s32 (__val.val[1], vcreate_s32 (((int64_t) 0))); 5209: __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __temp.val[1], 1); 5209: __builtin_aarch64_st2v2si ((__builtin_aarch64_simd_si *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst2_u8 (uint8_t * __a, uint8x8x2_t __val) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: uint8x16x2_t __temp; 5209: __temp.val[0] = vcombine_u8 (__val.val[0], vcreate_u8 (((uint64_t) 0))); 5209: __temp.val[1] = vcombine_u8 (__val.val[1], vcreate_u8 (((uint64_t) 0))); 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __temp.val[1], 1); 5209: __builtin_aarch64_st2v8qi ((__builtin_aarch64_simd_qi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst2_u16 (uint16_t * __a, uint16x4x2_t __val) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: uint16x8x2_t __temp; 5209: __temp.val[0] = vcombine_u16 (__val.val[0], vcreate_u16 (((uint64_t) 0))); 5209: __temp.val[1] = vcombine_u16 (__val.val[1], vcreate_u16 (((uint64_t) 0))); 5209: __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __temp.val[1], 1); 5209: __builtin_aarch64_st2v4hi ((__builtin_aarch64_simd_hi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst2_u32 (uint32_t * __a, uint32x2x2_t __val) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: uint32x4x2_t __temp; 5209: __temp.val[0] = vcombine_u32 (__val.val[0], vcreate_u32 (((uint64_t) 0))); 5209: __temp.val[1] = vcombine_u32 (__val.val[1], vcreate_u32 (((uint64_t) 0))); 5209: __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __temp.val[1], 1); 5209: __builtin_aarch64_st2v2si ((__builtin_aarch64_simd_si *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst2_f16 (float16_t * __a, float16x4x2_t __val) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: float16x8x2_t __temp; 5209: __temp.val[0] = vcombine_f16 (__val.val[0], vcreate_f16 (((uint64_t) 0))); 5209: __temp.val[1] = vcombine_f16 (__val.val[1], vcreate_f16 (((uint64_t) 0))); 5209: __o = __builtin_aarch64_set_qregoiv8hf (__o, __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv8hf (__o, __temp.val[1], 1); 5209: __builtin_aarch64_st2v4hf (__a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst2_f32 (float32_t * __a, float32x2x2_t __val) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: float32x4x2_t __temp; 5209: __temp.val[0] = vcombine_f32 (__val.val[0], vcreate_f32 (((uint64_t) 0))); 5209: __temp.val[1] = vcombine_f32 (__val.val[1], vcreate_f32 (((uint64_t) 0))); 5209: __o = __builtin_aarch64_set_qregoiv4sf (__o, (float32x4_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv4sf (__o, (float32x4_t) __temp.val[1], 1); 5209: __builtin_aarch64_st2v2sf ((__builtin_aarch64_simd_sf *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst2_p64 (poly64_t * __a, poly64x1x2_t __val) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: poly64x2x2_t __temp; 5209: __temp.val[0] = vcombine_p64 (__val.val[0], vcreate_p64 (((uint64_t) 0))); 5209: __temp.val[1] = vcombine_p64 (__val.val[1], vcreate_p64 (((uint64_t) 0))); 5209: __o = __builtin_aarch64_set_qregoiv2di_ssps (__o, 5209: (poly64x2_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv2di_ssps (__o, 5209: (poly64x2_t) __temp.val[1], 1); 5209: __builtin_aarch64_st2di ((__builtin_aarch64_simd_di *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst2q_s8 (int8_t * __a, int8x16x2_t __val) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __val.val[1], 1); 5209: __builtin_aarch64_st2v16qi ((__builtin_aarch64_simd_qi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst2q_p8 (poly8_t * __a, poly8x16x2_t __val) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __val.val[1], 1); 5209: __builtin_aarch64_st2v16qi ((__builtin_aarch64_simd_qi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst2q_s16 (int16_t * __a, int16x8x2_t __val) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __val.val[1], 1); 5209: __builtin_aarch64_st2v8hi ((__builtin_aarch64_simd_hi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst2q_p16 (poly16_t * __a, poly16x8x2_t __val) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __val.val[1], 1); 5209: __builtin_aarch64_st2v8hi ((__builtin_aarch64_simd_hi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst2q_s32 (int32_t * __a, int32x4x2_t __val) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __val.val[1], 1); 5209: __builtin_aarch64_st2v4si ((__builtin_aarch64_simd_si *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst2q_s64 (int64_t * __a, int64x2x2_t __val) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) __val.val[1], 1); 5209: __builtin_aarch64_st2v2di ((__builtin_aarch64_simd_di *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst2q_u8 (uint8_t * __a, uint8x16x2_t __val) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) __val.val[1], 1); 5209: __builtin_aarch64_st2v16qi ((__builtin_aarch64_simd_qi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst2q_u16 (uint16_t * __a, uint16x8x2_t __val) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) __val.val[1], 1); 5209: __builtin_aarch64_st2v8hi ((__builtin_aarch64_simd_hi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst2q_u32 (uint32_t * __a, uint32x4x2_t __val) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) __val.val[1], 1); 5209: __builtin_aarch64_st2v4si ((__builtin_aarch64_simd_si *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst2q_u64 (uint64_t * __a, uint64x2x2_t __val) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) __val.val[1], 1); 5209: __builtin_aarch64_st2v2di ((__builtin_aarch64_simd_di *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst2q_f16 (float16_t * __a, float16x8x2_t __val) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_set_qregoiv8hf (__o, __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv8hf (__o, __val.val[1], 1); 5209: __builtin_aarch64_st2v8hf (__a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst2q_f32 (float32_t * __a, float32x4x2_t __val) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_set_qregoiv4sf (__o, (float32x4_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv4sf (__o, (float32x4_t) __val.val[1], 1); 5209: __builtin_aarch64_st2v4sf ((__builtin_aarch64_simd_sf *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst2q_f64 (float64_t * __a, float64x2x2_t __val) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_set_qregoiv2df (__o, (float64x2_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv2df (__o, (float64x2_t) __val.val[1], 1); 5209: __builtin_aarch64_st2v2df ((__builtin_aarch64_simd_df *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst2q_p64 (poly64_t * __a, poly64x2x2_t __val) 5209: { 5209: __builtin_aarch64_simd_oi __o; 5209: __o = __builtin_aarch64_set_qregoiv2di_ssps (__o, 5209: (poly64x2_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv2di_ssps (__o, 5209: (poly64x2_t) __val.val[1], 1); 5209: __builtin_aarch64_st2v2di ((__builtin_aarch64_simd_di *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst3_s64 (int64_t * __a, int64x1x3_t __val) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: int64x2x3_t __temp; 5209: __temp.val[0] = vcombine_s64 (__val.val[0], vcreate_s64 (((int64_t) 0))); 5209: __temp.val[1] = vcombine_s64 (__val.val[1], vcreate_s64 (((int64_t) 0))); 5209: __temp.val[2] = vcombine_s64 (__val.val[2], vcreate_s64 (((int64_t) 0))); 5209: __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __temp.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __temp.val[2], 2); 5209: __builtin_aarch64_st3di ((__builtin_aarch64_simd_di *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst3_u64 (uint64_t * __a, uint64x1x3_t __val) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: uint64x2x3_t __temp; 5209: __temp.val[0] = vcombine_u64 (__val.val[0], vcreate_u64 (((uint64_t) 0))); 5209: __temp.val[1] = vcombine_u64 (__val.val[1], vcreate_u64 (((uint64_t) 0))); 5209: __temp.val[2] = vcombine_u64 (__val.val[2], vcreate_u64 (((uint64_t) 0))); 5209: __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __temp.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __temp.val[2], 2); 5209: __builtin_aarch64_st3di ((__builtin_aarch64_simd_di *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst3_f64 (float64_t * __a, float64x1x3_t __val) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: float64x2x3_t __temp; 5209: __temp.val[0] = vcombine_f64 (__val.val[0], vcreate_f64 (((uint64_t) 0))); 5209: __temp.val[1] = vcombine_f64 (__val.val[1], vcreate_f64 (((uint64_t) 0))); 5209: __temp.val[2] = vcombine_f64 (__val.val[2], vcreate_f64 (((uint64_t) 0))); 5209: __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) __temp.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) __temp.val[2], 2); 5209: __builtin_aarch64_st3df ((__builtin_aarch64_simd_df *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst3_s8 (int8_t * __a, int8x8x3_t __val) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: int8x16x3_t __temp; 5209: __temp.val[0] = vcombine_s8 (__val.val[0], vcreate_s8 (((int64_t) 0))); 5209: __temp.val[1] = vcombine_s8 (__val.val[1], vcreate_s8 (((int64_t) 0))); 5209: __temp.val[2] = vcombine_s8 (__val.val[2], vcreate_s8 (((int64_t) 0))); 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __temp.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __temp.val[2], 2); 5209: __builtin_aarch64_st3v8qi ((__builtin_aarch64_simd_qi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst3_p8 (poly8_t * __a, poly8x8x3_t __val) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: poly8x16x3_t __temp; 5209: __temp.val[0] = vcombine_p8 (__val.val[0], vcreate_p8 (((uint64_t) 0))); 5209: __temp.val[1] = vcombine_p8 (__val.val[1], vcreate_p8 (((uint64_t) 0))); 5209: __temp.val[2] = vcombine_p8 (__val.val[2], vcreate_p8 (((uint64_t) 0))); 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __temp.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __temp.val[2], 2); 5209: __builtin_aarch64_st3v8qi ((__builtin_aarch64_simd_qi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst3_s16 (int16_t * __a, int16x4x3_t __val) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: int16x8x3_t __temp; 5209: __temp.val[0] = vcombine_s16 (__val.val[0], vcreate_s16 (((int64_t) 0))); 5209: __temp.val[1] = vcombine_s16 (__val.val[1], vcreate_s16 (((int64_t) 0))); 5209: __temp.val[2] = vcombine_s16 (__val.val[2], vcreate_s16 (((int64_t) 0))); 5209: __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __temp.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __temp.val[2], 2); 5209: __builtin_aarch64_st3v4hi ((__builtin_aarch64_simd_hi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst3_p16 (poly16_t * __a, poly16x4x3_t __val) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: poly16x8x3_t __temp; 5209: __temp.val[0] = vcombine_p16 (__val.val[0], vcreate_p16 (((uint64_t) 0))); 5209: __temp.val[1] = vcombine_p16 (__val.val[1], vcreate_p16 (((uint64_t) 0))); 5209: __temp.val[2] = vcombine_p16 (__val.val[2], vcreate_p16 (((uint64_t) 0))); 5209: __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __temp.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __temp.val[2], 2); 5209: __builtin_aarch64_st3v4hi ((__builtin_aarch64_simd_hi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst3_s32 (int32_t * __a, int32x2x3_t __val) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: int32x4x3_t __temp; 5209: __temp.val[0] = vcombine_s32 (__val.val[0], vcreate_s32 (((int64_t) 0))); 5209: __temp.val[1] = vcombine_s32 (__val.val[1], vcreate_s32 (((int64_t) 0))); 5209: __temp.val[2] = vcombine_s32 (__val.val[2], vcreate_s32 (((int64_t) 0))); 5209: __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __temp.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __temp.val[2], 2); 5209: __builtin_aarch64_st3v2si ((__builtin_aarch64_simd_si *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst3_u8 (uint8_t * __a, uint8x8x3_t __val) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: uint8x16x3_t __temp; 5209: __temp.val[0] = vcombine_u8 (__val.val[0], vcreate_u8 (((uint64_t) 0))); 5209: __temp.val[1] = vcombine_u8 (__val.val[1], vcreate_u8 (((uint64_t) 0))); 5209: __temp.val[2] = vcombine_u8 (__val.val[2], vcreate_u8 (((uint64_t) 0))); 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __temp.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __temp.val[2], 2); 5209: __builtin_aarch64_st3v8qi ((__builtin_aarch64_simd_qi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst3_u16 (uint16_t * __a, uint16x4x3_t __val) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: uint16x8x3_t __temp; 5209: __temp.val[0] = vcombine_u16 (__val.val[0], vcreate_u16 (((uint64_t) 0))); 5209: __temp.val[1] = vcombine_u16 (__val.val[1], vcreate_u16 (((uint64_t) 0))); 5209: __temp.val[2] = vcombine_u16 (__val.val[2], vcreate_u16 (((uint64_t) 0))); 5209: __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __temp.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __temp.val[2], 2); 5209: __builtin_aarch64_st3v4hi ((__builtin_aarch64_simd_hi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst3_u32 (uint32_t * __a, uint32x2x3_t __val) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: uint32x4x3_t __temp; 5209: __temp.val[0] = vcombine_u32 (__val.val[0], vcreate_u32 (((uint64_t) 0))); 5209: __temp.val[1] = vcombine_u32 (__val.val[1], vcreate_u32 (((uint64_t) 0))); 5209: __temp.val[2] = vcombine_u32 (__val.val[2], vcreate_u32 (((uint64_t) 0))); 5209: __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __temp.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __temp.val[2], 2); 5209: __builtin_aarch64_st3v2si ((__builtin_aarch64_simd_si *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst3_f16 (float16_t * __a, float16x4x3_t __val) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: float16x8x3_t __temp; 5209: __temp.val[0] = vcombine_f16 (__val.val[0], vcreate_f16 (((uint64_t) 0))); 5209: __temp.val[1] = vcombine_f16 (__val.val[1], vcreate_f16 (((uint64_t) 0))); 5209: __temp.val[2] = vcombine_f16 (__val.val[2], vcreate_f16 (((uint64_t) 0))); 5209: __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) __temp.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) __temp.val[2], 2); 5209: __builtin_aarch64_st3v4hf ((__builtin_aarch64_simd_hf *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst3_f32 (float32_t * __a, float32x2x3_t __val) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: float32x4x3_t __temp; 5209: __temp.val[0] = vcombine_f32 (__val.val[0], vcreate_f32 (((uint64_t) 0))); 5209: __temp.val[1] = vcombine_f32 (__val.val[1], vcreate_f32 (((uint64_t) 0))); 5209: __temp.val[2] = vcombine_f32 (__val.val[2], vcreate_f32 (((uint64_t) 0))); 5209: __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) __temp.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) __temp.val[2], 2); 5209: __builtin_aarch64_st3v2sf ((__builtin_aarch64_simd_sf *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst3_p64 (poly64_t * __a, poly64x1x3_t __val) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: poly64x2x3_t __temp; 5209: __temp.val[0] = vcombine_p64 (__val.val[0], vcreate_p64 (((uint64_t) 0))); 5209: __temp.val[1] = vcombine_p64 (__val.val[1], vcreate_p64 (((uint64_t) 0))); 5209: __temp.val[2] = vcombine_p64 (__val.val[2], vcreate_p64 (((uint64_t) 0))); 5209: __o = __builtin_aarch64_set_qregciv2di_ssps (__o, 5209: (poly64x2_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv2di_ssps (__o, 5209: (poly64x2_t) __temp.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv2di_ssps (__o, 5209: (poly64x2_t) __temp.val[2], 2); 5209: __builtin_aarch64_st3di ((__builtin_aarch64_simd_di *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst3q_s8 (int8_t * __a, int8x16x3_t __val) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __val.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __val.val[2], 2); 5209: __builtin_aarch64_st3v16qi ((__builtin_aarch64_simd_qi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst3q_p8 (poly8_t * __a, poly8x16x3_t __val) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __val.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __val.val[2], 2); 5209: __builtin_aarch64_st3v16qi ((__builtin_aarch64_simd_qi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst3q_s16 (int16_t * __a, int16x8x3_t __val) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __val.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __val.val[2], 2); 5209: __builtin_aarch64_st3v8hi ((__builtin_aarch64_simd_hi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst3q_p16 (poly16_t * __a, poly16x8x3_t __val) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __val.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __val.val[2], 2); 5209: __builtin_aarch64_st3v8hi ((__builtin_aarch64_simd_hi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst3q_s32 (int32_t * __a, int32x4x3_t __val) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __val.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __val.val[2], 2); 5209: __builtin_aarch64_st3v4si ((__builtin_aarch64_simd_si *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst3q_s64 (int64_t * __a, int64x2x3_t __val) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __val.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __val.val[2], 2); 5209: __builtin_aarch64_st3v2di ((__builtin_aarch64_simd_di *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst3q_u8 (uint8_t * __a, uint8x16x3_t __val) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __val.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) __val.val[2], 2); 5209: __builtin_aarch64_st3v16qi ((__builtin_aarch64_simd_qi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst3q_u16 (uint16_t * __a, uint16x8x3_t __val) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __val.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) __val.val[2], 2); 5209: __builtin_aarch64_st3v8hi ((__builtin_aarch64_simd_hi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst3q_u32 (uint32_t * __a, uint32x4x3_t __val) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __val.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) __val.val[2], 2); 5209: __builtin_aarch64_st3v4si ((__builtin_aarch64_simd_si *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst3q_u64 (uint64_t * __a, uint64x2x3_t __val) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __val.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) __val.val[2], 2); 5209: __builtin_aarch64_st3v2di ((__builtin_aarch64_simd_di *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst3q_f16 (float16_t * __a, float16x8x3_t __val) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) __val.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) __val.val[2], 2); 5209: __builtin_aarch64_st3v8hf ((__builtin_aarch64_simd_hf *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst3q_f32 (float32_t * __a, float32x4x3_t __val) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) __val.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) __val.val[2], 2); 5209: __builtin_aarch64_st3v4sf ((__builtin_aarch64_simd_sf *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst3q_f64 (float64_t * __a, float64x2x3_t __val) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) __val.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) __val.val[2], 2); 5209: __builtin_aarch64_st3v2df ((__builtin_aarch64_simd_df *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst3q_p64 (poly64_t * __a, poly64x2x3_t __val) 5209: { 5209: __builtin_aarch64_simd_ci __o; 5209: __o = __builtin_aarch64_set_qregciv2di_ssps (__o, 5209: (poly64x2_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregciv2di_ssps (__o, 5209: (poly64x2_t) __val.val[1], 1); 5209: __o = __builtin_aarch64_set_qregciv2di_ssps (__o, 5209: (poly64x2_t) __val.val[2], 2); 5209: __builtin_aarch64_st3v2di ((__builtin_aarch64_simd_di *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst4_s64 (int64_t * __a, int64x1x4_t __val) 5209: { 5209: __builtin_aarch64_simd_xi __o; 5209: int64x2x4_t __temp; 5209: __temp.val[0] = vcombine_s64 (__val.val[0], vcreate_s64 (((int64_t) 0))); 5209: __temp.val[1] = vcombine_s64 (__val.val[1], vcreate_s64 (((int64_t) 0))); 5209: __temp.val[2] = vcombine_s64 (__val.val[2], vcreate_s64 (((int64_t) 0))); 5209: __temp.val[3] = vcombine_s64 (__val.val[3], vcreate_s64 (((int64_t) 0))); 5209: __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) __temp.val[1], 1); 5209: __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) __temp.val[2], 2); 5209: __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) __temp.val[3], 3); 5209: __builtin_aarch64_st4di ((__builtin_aarch64_simd_di *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst4_u64 (uint64_t * __a, uint64x1x4_t __val) 5209: { 5209: __builtin_aarch64_simd_xi __o; 5209: uint64x2x4_t __temp; 5209: __temp.val[0] = vcombine_u64 (__val.val[0], vcreate_u64 (((uint64_t) 0))); 5209: __temp.val[1] = vcombine_u64 (__val.val[1], vcreate_u64 (((uint64_t) 0))); 5209: __temp.val[2] = vcombine_u64 (__val.val[2], vcreate_u64 (((uint64_t) 0))); 5209: __temp.val[3] = vcombine_u64 (__val.val[3], vcreate_u64 (((uint64_t) 0))); 5209: __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) __temp.val[1], 1); 5209: __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) __temp.val[2], 2); 5209: __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) __temp.val[3], 3); 5209: __builtin_aarch64_st4di ((__builtin_aarch64_simd_di *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst4_f64 (float64_t * __a, float64x1x4_t __val) 5209: { 5209: __builtin_aarch64_simd_xi __o; 5209: float64x2x4_t __temp; 5209: __temp.val[0] = vcombine_f64 (__val.val[0], vcreate_f64 (((uint64_t) 0))); 5209: __temp.val[1] = vcombine_f64 (__val.val[1], vcreate_f64 (((uint64_t) 0))); 5209: __temp.val[2] = vcombine_f64 (__val.val[2], vcreate_f64 (((uint64_t) 0))); 5209: __temp.val[3] = vcombine_f64 (__val.val[3], vcreate_f64 (((uint64_t) 0))); 5209: __o = __builtin_aarch64_set_qregxiv2df (__o, (float64x2_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregxiv2df (__o, (float64x2_t) __temp.val[1], 1); 5209: __o = __builtin_aarch64_set_qregxiv2df (__o, (float64x2_t) __temp.val[2], 2); 5209: __o = __builtin_aarch64_set_qregxiv2df (__o, (float64x2_t) __temp.val[3], 3); 5209: __builtin_aarch64_st4df ((__builtin_aarch64_simd_df *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst4_s8 (int8_t * __a, int8x8x4_t __val) 5209: { 5209: __builtin_aarch64_simd_xi __o; 5209: int8x16x4_t __temp; 5209: __temp.val[0] = vcombine_s8 (__val.val[0], vcreate_s8 (((int64_t) 0))); 5209: __temp.val[1] = vcombine_s8 (__val.val[1], vcreate_s8 (((int64_t) 0))); 5209: __temp.val[2] = vcombine_s8 (__val.val[2], vcreate_s8 (((int64_t) 0))); 5209: __temp.val[3] = vcombine_s8 (__val.val[3], vcreate_s8 (((int64_t) 0))); 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __temp.val[1], 1); 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __temp.val[2], 2); 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __temp.val[3], 3); 5209: __builtin_aarch64_st4v8qi ((__builtin_aarch64_simd_qi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst4_p8 (poly8_t * __a, poly8x8x4_t __val) 5209: { 5209: __builtin_aarch64_simd_xi __o; 5209: poly8x16x4_t __temp; 5209: __temp.val[0] = vcombine_p8 (__val.val[0], vcreate_p8 (((uint64_t) 0))); 5209: __temp.val[1] = vcombine_p8 (__val.val[1], vcreate_p8 (((uint64_t) 0))); 5209: __temp.val[2] = vcombine_p8 (__val.val[2], vcreate_p8 (((uint64_t) 0))); 5209: __temp.val[3] = vcombine_p8 (__val.val[3], vcreate_p8 (((uint64_t) 0))); 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __temp.val[1], 1); 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __temp.val[2], 2); 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __temp.val[3], 3); 5209: __builtin_aarch64_st4v8qi ((__builtin_aarch64_simd_qi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst4_s16 (int16_t * __a, int16x4x4_t __val) 5209: { 5209: __builtin_aarch64_simd_xi __o; 5209: int16x8x4_t __temp; 5209: __temp.val[0] = vcombine_s16 (__val.val[0], vcreate_s16 (((int64_t) 0))); 5209: __temp.val[1] = vcombine_s16 (__val.val[1], vcreate_s16 (((int64_t) 0))); 5209: __temp.val[2] = vcombine_s16 (__val.val[2], vcreate_s16 (((int64_t) 0))); 5209: __temp.val[3] = vcombine_s16 (__val.val[3], vcreate_s16 (((int64_t) 0))); 5209: __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __temp.val[1], 1); 5209: __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __temp.val[2], 2); 5209: __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __temp.val[3], 3); 5209: __builtin_aarch64_st4v4hi ((__builtin_aarch64_simd_hi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst4_p16 (poly16_t * __a, poly16x4x4_t __val) 5209: { 5209: __builtin_aarch64_simd_xi __o; 5209: poly16x8x4_t __temp; 5209: __temp.val[0] = vcombine_p16 (__val.val[0], vcreate_p16 (((uint64_t) 0))); 5209: __temp.val[1] = vcombine_p16 (__val.val[1], vcreate_p16 (((uint64_t) 0))); 5209: __temp.val[2] = vcombine_p16 (__val.val[2], vcreate_p16 (((uint64_t) 0))); 5209: __temp.val[3] = vcombine_p16 (__val.val[3], vcreate_p16 (((uint64_t) 0))); 5209: __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __temp.val[1], 1); 5209: __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __temp.val[2], 2); 5209: __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __temp.val[3], 3); 5209: __builtin_aarch64_st4v4hi ((__builtin_aarch64_simd_hi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst4_s32 (int32_t * __a, int32x2x4_t __val) 5209: { 5209: __builtin_aarch64_simd_xi __o; 5209: int32x4x4_t __temp; 5209: __temp.val[0] = vcombine_s32 (__val.val[0], vcreate_s32 (((int64_t) 0))); 5209: __temp.val[1] = vcombine_s32 (__val.val[1], vcreate_s32 (((int64_t) 0))); 5209: __temp.val[2] = vcombine_s32 (__val.val[2], vcreate_s32 (((int64_t) 0))); 5209: __temp.val[3] = vcombine_s32 (__val.val[3], vcreate_s32 (((int64_t) 0))); 5209: __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __temp.val[1], 1); 5209: __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __temp.val[2], 2); 5209: __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __temp.val[3], 3); 5209: __builtin_aarch64_st4v2si ((__builtin_aarch64_simd_si *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst4_u8 (uint8_t * __a, uint8x8x4_t __val) 5209: { 5209: __builtin_aarch64_simd_xi __o; 5209: uint8x16x4_t __temp; 5209: __temp.val[0] = vcombine_u8 (__val.val[0], vcreate_u8 (((uint64_t) 0))); 5209: __temp.val[1] = vcombine_u8 (__val.val[1], vcreate_u8 (((uint64_t) 0))); 5209: __temp.val[2] = vcombine_u8 (__val.val[2], vcreate_u8 (((uint64_t) 0))); 5209: __temp.val[3] = vcombine_u8 (__val.val[3], vcreate_u8 (((uint64_t) 0))); 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __temp.val[1], 1); 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __temp.val[2], 2); 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __temp.val[3], 3); 5209: __builtin_aarch64_st4v8qi ((__builtin_aarch64_simd_qi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst4_u16 (uint16_t * __a, uint16x4x4_t __val) 5209: { 5209: __builtin_aarch64_simd_xi __o; 5209: uint16x8x4_t __temp; 5209: __temp.val[0] = vcombine_u16 (__val.val[0], vcreate_u16 (((uint64_t) 0))); 5209: __temp.val[1] = vcombine_u16 (__val.val[1], vcreate_u16 (((uint64_t) 0))); 5209: __temp.val[2] = vcombine_u16 (__val.val[2], vcreate_u16 (((uint64_t) 0))); 5209: __temp.val[3] = vcombine_u16 (__val.val[3], vcreate_u16 (((uint64_t) 0))); 5209: __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __temp.val[1], 1); 5209: __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __temp.val[2], 2); 5209: __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __temp.val[3], 3); 5209: __builtin_aarch64_st4v4hi ((__builtin_aarch64_simd_hi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst4_u32 (uint32_t * __a, uint32x2x4_t __val) 5209: { 5209: __builtin_aarch64_simd_xi __o; 5209: uint32x4x4_t __temp; 5209: __temp.val[0] = vcombine_u32 (__val.val[0], vcreate_u32 (((uint64_t) 0))); 5209: __temp.val[1] = vcombine_u32 (__val.val[1], vcreate_u32 (((uint64_t) 0))); 5209: __temp.val[2] = vcombine_u32 (__val.val[2], vcreate_u32 (((uint64_t) 0))); 5209: __temp.val[3] = vcombine_u32 (__val.val[3], vcreate_u32 (((uint64_t) 0))); 5209: __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __temp.val[1], 1); 5209: __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __temp.val[2], 2); 5209: __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __temp.val[3], 3); 5209: __builtin_aarch64_st4v2si ((__builtin_aarch64_simd_si *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst4_f16 (float16_t * __a, float16x4x4_t __val) 5209: { 5209: __builtin_aarch64_simd_xi __o; 5209: float16x8x4_t __temp; 5209: __temp.val[0] = vcombine_f16 (__val.val[0], vcreate_f16 (((uint64_t) 0))); 5209: __temp.val[1] = vcombine_f16 (__val.val[1], vcreate_f16 (((uint64_t) 0))); 5209: __temp.val[2] = vcombine_f16 (__val.val[2], vcreate_f16 (((uint64_t) 0))); 5209: __temp.val[3] = vcombine_f16 (__val.val[3], vcreate_f16 (((uint64_t) 0))); 5209: __o = __builtin_aarch64_set_qregxiv8hf (__o, (float16x8_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregxiv8hf (__o, (float16x8_t) __temp.val[1], 1); 5209: __o = __builtin_aarch64_set_qregxiv8hf (__o, (float16x8_t) __temp.val[2], 2); 5209: __o = __builtin_aarch64_set_qregxiv8hf (__o, (float16x8_t) __temp.val[3], 3); 5209: __builtin_aarch64_st4v4hf ((__builtin_aarch64_simd_hf *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst4_f32 (float32_t * __a, float32x2x4_t __val) 5209: { 5209: __builtin_aarch64_simd_xi __o; 5209: float32x4x4_t __temp; 5209: __temp.val[0] = vcombine_f32 (__val.val[0], vcreate_f32 (((uint64_t) 0))); 5209: __temp.val[1] = vcombine_f32 (__val.val[1], vcreate_f32 (((uint64_t) 0))); 5209: __temp.val[2] = vcombine_f32 (__val.val[2], vcreate_f32 (((uint64_t) 0))); 5209: __temp.val[3] = vcombine_f32 (__val.val[3], vcreate_f32 (((uint64_t) 0))); 5209: __o = __builtin_aarch64_set_qregxiv4sf (__o, (float32x4_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregxiv4sf (__o, (float32x4_t) __temp.val[1], 1); 5209: __o = __builtin_aarch64_set_qregxiv4sf (__o, (float32x4_t) __temp.val[2], 2); 5209: __o = __builtin_aarch64_set_qregxiv4sf (__o, (float32x4_t) __temp.val[3], 3); 5209: __builtin_aarch64_st4v2sf ((__builtin_aarch64_simd_sf *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst4_p64 (poly64_t * __a, poly64x1x4_t __val) 5209: { 5209: __builtin_aarch64_simd_xi __o; 5209: poly64x2x4_t __temp; 5209: __temp.val[0] = vcombine_p64 (__val.val[0], vcreate_p64 (((uint64_t) 0))); 5209: __temp.val[1] = vcombine_p64 (__val.val[1], vcreate_p64 (((uint64_t) 0))); 5209: __temp.val[2] = vcombine_p64 (__val.val[2], vcreate_p64 (((uint64_t) 0))); 5209: __temp.val[3] = vcombine_p64 (__val.val[3], vcreate_p64 (((uint64_t) 0))); 5209: __o = __builtin_aarch64_set_qregxiv2di_ssps (__o, 5209: (poly64x2_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregxiv2di_ssps (__o, 5209: (poly64x2_t) __temp.val[1], 1); 5209: __o = __builtin_aarch64_set_qregxiv2di_ssps (__o, 5209: (poly64x2_t) __temp.val[2], 2); 5209: __o = __builtin_aarch64_set_qregxiv2di_ssps (__o, 5209: (poly64x2_t) __temp.val[3], 3); 5209: __builtin_aarch64_st4di ((__builtin_aarch64_simd_di *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst4q_s8 (int8_t * __a, int8x16x4_t __val) 5209: { 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __val.val[1], 1); 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __val.val[2], 2); 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __val.val[3], 3); 5209: __builtin_aarch64_st4v16qi ((__builtin_aarch64_simd_qi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst4q_p8 (poly8_t * __a, poly8x16x4_t __val) 5209: { 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __val.val[1], 1); 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __val.val[2], 2); 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __val.val[3], 3); 5209: __builtin_aarch64_st4v16qi ((__builtin_aarch64_simd_qi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst4q_s16 (int16_t * __a, int16x8x4_t __val) 5209: { 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __val.val[1], 1); 5209: __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __val.val[2], 2); 5209: __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __val.val[3], 3); 5209: __builtin_aarch64_st4v8hi ((__builtin_aarch64_simd_hi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst4q_p16 (poly16_t * __a, poly16x8x4_t __val) 5209: { 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __val.val[1], 1); 5209: __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __val.val[2], 2); 5209: __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __val.val[3], 3); 5209: __builtin_aarch64_st4v8hi ((__builtin_aarch64_simd_hi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst4q_s32 (int32_t * __a, int32x4x4_t __val) 5209: { 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __val.val[1], 1); 5209: __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __val.val[2], 2); 5209: __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __val.val[3], 3); 5209: __builtin_aarch64_st4v4si ((__builtin_aarch64_simd_si *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst4q_s64 (int64_t * __a, int64x2x4_t __val) 5209: { 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) __val.val[1], 1); 5209: __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) __val.val[2], 2); 5209: __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) __val.val[3], 3); 5209: __builtin_aarch64_st4v2di ((__builtin_aarch64_simd_di *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst4q_u8 (uint8_t * __a, uint8x16x4_t __val) 5209: { 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __val.val[1], 1); 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __val.val[2], 2); 5209: __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) __val.val[3], 3); 5209: __builtin_aarch64_st4v16qi ((__builtin_aarch64_simd_qi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst4q_u16 (uint16_t * __a, uint16x8x4_t __val) 5209: { 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __val.val[1], 1); 5209: __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __val.val[2], 2); 5209: __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) __val.val[3], 3); 5209: __builtin_aarch64_st4v8hi ((__builtin_aarch64_simd_hi *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst4q_u32 (uint32_t * __a, uint32x4x4_t __val) 5209: { 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __val.val[1], 1); 5209: __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __val.val[2], 2); 5209: __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) __val.val[3], 3); 5209: __builtin_aarch64_st4v4si ((__builtin_aarch64_simd_si *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst4q_u64 (uint64_t * __a, uint64x2x4_t __val) 5209: { 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) __val.val[1], 1); 5209: __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) __val.val[2], 2); 5209: __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) __val.val[3], 3); 5209: __builtin_aarch64_st4v2di ((__builtin_aarch64_simd_di *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst4q_f16 (float16_t * __a, float16x8x4_t __val) 5209: { 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_set_qregxiv8hf (__o, (float16x8_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregxiv8hf (__o, (float16x8_t) __val.val[1], 1); 5209: __o = __builtin_aarch64_set_qregxiv8hf (__o, (float16x8_t) __val.val[2], 2); 5209: __o = __builtin_aarch64_set_qregxiv8hf (__o, (float16x8_t) __val.val[3], 3); 5209: __builtin_aarch64_st4v8hf ((__builtin_aarch64_simd_hf *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst4q_f32 (float32_t * __a, float32x4x4_t __val) 5209: { 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_set_qregxiv4sf (__o, (float32x4_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregxiv4sf (__o, (float32x4_t) __val.val[1], 1); 5209: __o = __builtin_aarch64_set_qregxiv4sf (__o, (float32x4_t) __val.val[2], 2); 5209: __o = __builtin_aarch64_set_qregxiv4sf (__o, (float32x4_t) __val.val[3], 3); 5209: __builtin_aarch64_st4v4sf ((__builtin_aarch64_simd_sf *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst4q_f64 (float64_t * __a, float64x2x4_t __val) 5209: { 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_set_qregxiv2df (__o, (float64x2_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregxiv2df (__o, (float64x2_t) __val.val[1], 1); 5209: __o = __builtin_aarch64_set_qregxiv2df (__o, (float64x2_t) __val.val[2], 2); 5209: __o = __builtin_aarch64_set_qregxiv2df (__o, (float64x2_t) __val.val[3], 3); 5209: __builtin_aarch64_st4v2df ((__builtin_aarch64_simd_df *) __a, __o); 5209: } 5209: 5209: __extension__ extern __inline void 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vst4q_p64 (poly64_t * __a, poly64x2x4_t __val) 5209: { 5209: __builtin_aarch64_simd_xi __o; 5209: __o = __builtin_aarch64_set_qregxiv2di_ssps (__o, 5209: (poly64x2_t) __val.val[0], 0); 5209: __o = __builtin_aarch64_set_qregxiv2di_ssps (__o, 5209: (poly64x2_t) __val.val[1], 1); 5209: __o = __builtin_aarch64_set_qregxiv2di_ssps (__o, 5209: (poly64x2_t) __val.val[2], 2); 5209: __o = __builtin_aarch64_set_qregxiv2di_ssps (__o, 5209: (poly64x2_t) __val.val[3], 3); 5209: __builtin_aarch64_st4v2di ((__builtin_aarch64_simd_di *) __a, __o); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline int64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsubd_s64 (int64_t __a, int64_t __b) 5209: { 5209: return __a - __b; 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsubd_u64 (uint64_t __a, uint64_t __b) 5209: { 5209: return __a - __b; 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtbx1_s8 (int8x8_t __r, int8x8_t __tab, int8x8_t __idx) 5209: { 5209: uint8x8_t __mask = vclt_u8 (vreinterpret_u8_s8 (__idx), 5209: vmov_n_u8 (8)); 5209: int8x8_t __tbl = vtbl1_s8 (__tab, __idx); 5209: 5209: return vbsl_s8 (__mask, __tbl, __r); 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtbx1_u8 (uint8x8_t __r, uint8x8_t __tab, uint8x8_t __idx) 5209: { 5209: uint8x8_t __mask = vclt_u8 (__idx, vmov_n_u8 (8)); 5209: uint8x8_t __tbl = vtbl1_u8 (__tab, __idx); 5209: 5209: return vbsl_u8 (__mask, __tbl, __r); 5209: } 5209: 5209: __extension__ extern __inline poly8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtbx1_p8 (poly8x8_t __r, poly8x8_t __tab, uint8x8_t __idx) 5209: { 5209: uint8x8_t __mask = vclt_u8 (__idx, vmov_n_u8 (8)); 5209: poly8x8_t __tbl = vtbl1_p8 (__tab, __idx); 5209: 5209: return vbsl_p8 (__mask, __tbl, __r); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtbx3_s8 (int8x8_t __r, int8x8x3_t __tab, int8x8_t __idx) 5209: { 5209: uint8x8_t __mask = vclt_u8 (vreinterpret_u8_s8 (__idx), 5209: vmov_n_u8 (24)); 5209: int8x8_t __tbl = vtbl3_s8 (__tab, __idx); 5209: 5209: return vbsl_s8 (__mask, __tbl, __r); 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtbx3_u8 (uint8x8_t __r, uint8x8x3_t __tab, uint8x8_t __idx) 5209: { 5209: uint8x8_t __mask = vclt_u8 (__idx, vmov_n_u8 (24)); 5209: uint8x8_t __tbl = vtbl3_u8 (__tab, __idx); 5209: 5209: return vbsl_u8 (__mask, __tbl, __r); 5209: } 5209: 5209: __extension__ extern __inline poly8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtbx3_p8 (poly8x8_t __r, poly8x8x3_t __tab, uint8x8_t __idx) 5209: { 5209: uint8x8_t __mask = vclt_u8 (__idx, vmov_n_u8 (24)); 5209: poly8x8_t __tbl = vtbl3_p8 (__tab, __idx); 5209: 5209: return vbsl_p8 (__mask, __tbl, __r); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtbx4_s8 (int8x8_t __r, int8x8x4_t __tab, int8x8_t __idx) 5209: { 5209: int8x8_t __result; 5209: int8x16x2_t __temp; 5209: __builtin_aarch64_simd_oi __o; 5209: __temp.val[0] = vcombine_s8 (__tab.val[0], __tab.val[1]); 5209: __temp.val[1] = vcombine_s8 (__tab.val[2], __tab.val[3]); 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, 5209: (int8x16_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, 5209: (int8x16_t) __temp.val[1], 1); 5209: __result = __builtin_aarch64_tbx4v8qi (__r, __o, __idx); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtbx4_u8 (uint8x8_t __r, uint8x8x4_t __tab, uint8x8_t __idx) 5209: { 5209: uint8x8_t __result; 5209: uint8x16x2_t __temp; 5209: __builtin_aarch64_simd_oi __o; 5209: __temp.val[0] = vcombine_u8 (__tab.val[0], __tab.val[1]); 5209: __temp.val[1] = vcombine_u8 (__tab.val[2], __tab.val[3]); 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, 5209: (int8x16_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, 5209: (int8x16_t) __temp.val[1], 1); 5209: __result = (uint8x8_t)__builtin_aarch64_tbx4v8qi ((int8x8_t)__r, __o, 5209: (int8x8_t)__idx); 5209: return __result; 5209: } 5209: 5209: __extension__ extern __inline poly8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtbx4_p8 (poly8x8_t __r, poly8x8x4_t __tab, uint8x8_t __idx) 5209: { 5209: poly8x8_t __result; 5209: poly8x16x2_t __temp; 5209: __builtin_aarch64_simd_oi __o; 5209: __temp.val[0] = vcombine_p8 (__tab.val[0], __tab.val[1]); 5209: __temp.val[1] = vcombine_p8 (__tab.val[2], __tab.val[3]); 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, 5209: (int8x16_t) __temp.val[0], 0); 5209: __o = __builtin_aarch64_set_qregoiv16qi (__o, 5209: (int8x16_t) __temp.val[1], 1); 5209: __result = (poly8x8_t)__builtin_aarch64_tbx4v8qi ((int8x8_t)__r, __o, 5209: (int8x8_t)__idx); 5209: return __result; 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrn1_f16 (float16x4_t __a, float16x4_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 4, 2, 6}); 5209: 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrn1_f32 (float32x2_t __a, float32x2_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint32x2_t) {0, 2}); 5209: 5209: } 5209: 5209: __extension__ extern __inline poly8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrn1_p8 (poly8x8_t __a, poly8x8_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint8x8_t) {0, 8, 2, 10, 4, 12, 6, 14}); 5209: 5209: } 5209: 5209: __extension__ extern __inline poly16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrn1_p16 (poly16x4_t __a, poly16x4_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 4, 2, 6}); 5209: 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrn1_s8 (int8x8_t __a, int8x8_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint8x8_t) {0, 8, 2, 10, 4, 12, 6, 14}); 5209: 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrn1_s16 (int16x4_t __a, int16x4_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 4, 2, 6}); 5209: 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrn1_s32 (int32x2_t __a, int32x2_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint32x2_t) {0, 2}); 5209: 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrn1_u8 (uint8x8_t __a, uint8x8_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint8x8_t) {0, 8, 2, 10, 4, 12, 6, 14}); 5209: 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrn1_u16 (uint16x4_t __a, uint16x4_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 4, 2, 6}); 5209: 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrn1_u32 (uint32x2_t __a, uint32x2_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint32x2_t) {0, 2}); 5209: 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrn1q_f16 (float16x8_t __a, float16x8_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 8, 2, 10, 4, 12, 6, 14}); 5209: 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrn1q_f32 (float32x4_t __a, float32x4_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint32x4_t) {0, 4, 2, 6}); 5209: 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrn1q_f64 (float64x2_t __a, float64x2_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint64x2_t) {0, 2}); 5209: 5209: } 5209: 5209: __extension__ extern __inline poly8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrn1q_p8 (poly8x16_t __a, poly8x16_t __b) 5209: { 5209: 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, 5209: (uint8x16_t) {0, 16, 2, 18, 4, 20, 6, 22, 8, 24, 10, 26, 12, 28, 14, 30}); 5209: 5209: } 5209: 5209: __extension__ extern __inline poly16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrn1q_p16 (poly16x8_t __a, poly16x8_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 8, 2, 10, 4, 12, 6, 14}); 5209: 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrn1q_s8 (int8x16_t __a, int8x16_t __b) 5209: { 5209: 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, 5209: (uint8x16_t) {0, 16, 2, 18, 4, 20, 6, 22, 8, 24, 10, 26, 12, 28, 14, 30}); 5209: 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrn1q_s16 (int16x8_t __a, int16x8_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 8, 2, 10, 4, 12, 6, 14}); 5209: 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrn1q_s32 (int32x4_t __a, int32x4_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint32x4_t) {0, 4, 2, 6}); 5209: 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrn1q_s64 (int64x2_t __a, int64x2_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint64x2_t) {0, 2}); 5209: 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrn1q_u8 (uint8x16_t __a, uint8x16_t __b) 5209: { 5209: 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, 5209: (uint8x16_t) {0, 16, 2, 18, 4, 20, 6, 22, 8, 24, 10, 26, 12, 28, 14, 30}); 5209: 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrn1q_u16 (uint16x8_t __a, uint16x8_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 8, 2, 10, 4, 12, 6, 14}); 5209: 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrn1q_u32 (uint32x4_t __a, uint32x4_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint32x4_t) {0, 4, 2, 6}); 5209: 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrn1q_u64 (uint64x2_t __a, uint64x2_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint64x2_t) {0, 2}); 5209: 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrn2_f16 (float16x4_t __a, float16x4_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint16x4_t) {1, 5, 3, 7}); 5209: 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrn2_f32 (float32x2_t __a, float32x2_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint32x2_t) {1, 3}); 5209: 5209: } 5209: 5209: __extension__ extern __inline poly8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrn2_p8 (poly8x8_t __a, poly8x8_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint8x8_t) {1, 9, 3, 11, 5, 13, 7, 15}); 5209: 5209: } 5209: 5209: __extension__ extern __inline poly16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrn2_p16 (poly16x4_t __a, poly16x4_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint16x4_t) {1, 5, 3, 7}); 5209: 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrn2_s8 (int8x8_t __a, int8x8_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint8x8_t) {1, 9, 3, 11, 5, 13, 7, 15}); 5209: 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrn2_s16 (int16x4_t __a, int16x4_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint16x4_t) {1, 5, 3, 7}); 5209: 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrn2_s32 (int32x2_t __a, int32x2_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint32x2_t) {1, 3}); 5209: 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrn2_u8 (uint8x8_t __a, uint8x8_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint8x8_t) {1, 9, 3, 11, 5, 13, 7, 15}); 5209: 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrn2_u16 (uint16x4_t __a, uint16x4_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint16x4_t) {1, 5, 3, 7}); 5209: 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrn2_u32 (uint32x2_t __a, uint32x2_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint32x2_t) {1, 3}); 5209: 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrn2q_f16 (float16x8_t __a, float16x8_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint16x8_t) {1, 9, 3, 11, 5, 13, 7, 15}); 5209: 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrn2q_f32 (float32x4_t __a, float32x4_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint32x4_t) {1, 5, 3, 7}); 5209: 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrn2q_f64 (float64x2_t __a, float64x2_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint64x2_t) {1, 3}); 5209: 5209: } 5209: 5209: __extension__ extern __inline poly8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrn2q_p8 (poly8x16_t __a, poly8x16_t __b) 5209: { 5209: 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, 5209: (uint8x16_t) {1, 17, 3, 19, 5, 21, 7, 23, 9, 25, 11, 27, 13, 29, 15, 31}); 5209: 5209: } 5209: 5209: __extension__ extern __inline poly16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrn2q_p16 (poly16x8_t __a, poly16x8_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint16x8_t) {1, 9, 3, 11, 5, 13, 7, 15}); 5209: 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrn2q_s8 (int8x16_t __a, int8x16_t __b) 5209: { 5209: 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, 5209: (uint8x16_t) {1, 17, 3, 19, 5, 21, 7, 23, 9, 25, 11, 27, 13, 29, 15, 31}); 5209: 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrn2q_s16 (int16x8_t __a, int16x8_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint16x8_t) {1, 9, 3, 11, 5, 13, 7, 15}); 5209: 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrn2q_s32 (int32x4_t __a, int32x4_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint32x4_t) {1, 5, 3, 7}); 5209: 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrn2q_s64 (int64x2_t __a, int64x2_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint64x2_t) {1, 3}); 5209: 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrn2q_u8 (uint8x16_t __a, uint8x16_t __b) 5209: { 5209: 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, 5209: (uint8x16_t) {1, 17, 3, 19, 5, 21, 7, 23, 9, 25, 11, 27, 13, 29, 15, 31}); 5209: 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrn2q_u16 (uint16x8_t __a, uint16x8_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint16x8_t) {1, 9, 3, 11, 5, 13, 7, 15}); 5209: 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrn2q_u32 (uint32x4_t __a, uint32x4_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint32x4_t) {1, 5, 3, 7}); 5209: 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrn2q_u64 (uint64x2_t __a, uint64x2_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint64x2_t) {1, 3}); 5209: 5209: } 5209: 5209: __extension__ extern __inline float16x4x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrn_f16 (float16x4_t __a, float16x4_t __b) 5209: { 5209: return (float16x4x2_t) {vtrn1_f16 (__a, __b), vtrn2_f16 (__a, __b)}; 5209: } 5209: 5209: __extension__ extern __inline float32x2x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrn_f32 (float32x2_t __a, float32x2_t __b) 5209: { 5209: return (float32x2x2_t) {vtrn1_f32 (__a, __b), vtrn2_f32 (__a, __b)}; 5209: } 5209: 5209: __extension__ extern __inline poly8x8x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrn_p8 (poly8x8_t __a, poly8x8_t __b) 5209: { 5209: return (poly8x8x2_t) {vtrn1_p8 (__a, __b), vtrn2_p8 (__a, __b)}; 5209: } 5209: 5209: __extension__ extern __inline poly16x4x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrn_p16 (poly16x4_t __a, poly16x4_t __b) 5209: { 5209: return (poly16x4x2_t) {vtrn1_p16 (__a, __b), vtrn2_p16 (__a, __b)}; 5209: } 5209: 5209: __extension__ extern __inline int8x8x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrn_s8 (int8x8_t __a, int8x8_t __b) 5209: { 5209: return (int8x8x2_t) {vtrn1_s8 (__a, __b), vtrn2_s8 (__a, __b)}; 5209: } 5209: 5209: __extension__ extern __inline int16x4x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrn_s16 (int16x4_t __a, int16x4_t __b) 5209: { 5209: return (int16x4x2_t) {vtrn1_s16 (__a, __b), vtrn2_s16 (__a, __b)}; 5209: } 5209: 5209: __extension__ extern __inline int32x2x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrn_s32 (int32x2_t __a, int32x2_t __b) 5209: { 5209: return (int32x2x2_t) {vtrn1_s32 (__a, __b), vtrn2_s32 (__a, __b)}; 5209: } 5209: 5209: __extension__ extern __inline uint8x8x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrn_u8 (uint8x8_t __a, uint8x8_t __b) 5209: { 5209: return (uint8x8x2_t) {vtrn1_u8 (__a, __b), vtrn2_u8 (__a, __b)}; 5209: } 5209: 5209: __extension__ extern __inline uint16x4x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrn_u16 (uint16x4_t __a, uint16x4_t __b) 5209: { 5209: return (uint16x4x2_t) {vtrn1_u16 (__a, __b), vtrn2_u16 (__a, __b)}; 5209: } 5209: 5209: __extension__ extern __inline uint32x2x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrn_u32 (uint32x2_t __a, uint32x2_t __b) 5209: { 5209: return (uint32x2x2_t) {vtrn1_u32 (__a, __b), vtrn2_u32 (__a, __b)}; 5209: } 5209: 5209: __extension__ extern __inline float16x8x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrnq_f16 (float16x8_t __a, float16x8_t __b) 5209: { 5209: return (float16x8x2_t) {vtrn1q_f16 (__a, __b), vtrn2q_f16 (__a, __b)}; 5209: } 5209: 5209: __extension__ extern __inline float32x4x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrnq_f32 (float32x4_t __a, float32x4_t __b) 5209: { 5209: return (float32x4x2_t) {vtrn1q_f32 (__a, __b), vtrn2q_f32 (__a, __b)}; 5209: } 5209: 5209: __extension__ extern __inline poly8x16x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrnq_p8 (poly8x16_t __a, poly8x16_t __b) 5209: { 5209: return (poly8x16x2_t) {vtrn1q_p8 (__a, __b), vtrn2q_p8 (__a, __b)}; 5209: } 5209: 5209: __extension__ extern __inline poly16x8x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrnq_p16 (poly16x8_t __a, poly16x8_t __b) 5209: { 5209: return (poly16x8x2_t) {vtrn1q_p16 (__a, __b), vtrn2q_p16 (__a, __b)}; 5209: } 5209: 5209: __extension__ extern __inline int8x16x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrnq_s8 (int8x16_t __a, int8x16_t __b) 5209: { 5209: return (int8x16x2_t) {vtrn1q_s8 (__a, __b), vtrn2q_s8 (__a, __b)}; 5209: } 5209: 5209: __extension__ extern __inline int16x8x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrnq_s16 (int16x8_t __a, int16x8_t __b) 5209: { 5209: return (int16x8x2_t) {vtrn1q_s16 (__a, __b), vtrn2q_s16 (__a, __b)}; 5209: } 5209: 5209: __extension__ extern __inline int32x4x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrnq_s32 (int32x4_t __a, int32x4_t __b) 5209: { 5209: return (int32x4x2_t) {vtrn1q_s32 (__a, __b), vtrn2q_s32 (__a, __b)}; 5209: } 5209: 5209: __extension__ extern __inline uint8x16x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrnq_u8 (uint8x16_t __a, uint8x16_t __b) 5209: { 5209: return (uint8x16x2_t) {vtrn1q_u8 (__a, __b), vtrn2q_u8 (__a, __b)}; 5209: } 5209: 5209: __extension__ extern __inline uint16x8x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrnq_u16 (uint16x8_t __a, uint16x8_t __b) 5209: { 5209: return (uint16x8x2_t) {vtrn1q_u16 (__a, __b), vtrn2q_u16 (__a, __b)}; 5209: } 5209: 5209: __extension__ extern __inline uint32x4x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtrnq_u32 (uint32x4_t __a, uint32x4_t __b) 5209: { 5209: return (uint32x4x2_t) {vtrn1q_u32 (__a, __b), vtrn2q_u32 (__a, __b)}; 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtst_s8 (int8x8_t __a, int8x8_t __b) 5209: { 5209: return (uint8x8_t) ((__a & __b) != 0); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtst_s16 (int16x4_t __a, int16x4_t __b) 5209: { 5209: return (uint16x4_t) ((__a & __b) != 0); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtst_s32 (int32x2_t __a, int32x2_t __b) 5209: { 5209: return (uint32x2_t) ((__a & __b) != 0); 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtst_s64 (int64x1_t __a, int64x1_t __b) 5209: { 5209: return (uint64x1_t) ((__a & __b) != ((int64_t) 0)); 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtst_u8 (uint8x8_t __a, uint8x8_t __b) 5209: { 5209: return ((__a & __b) != 0); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtst_u16 (uint16x4_t __a, uint16x4_t __b) 5209: { 5209: return ((__a & __b) != 0); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtst_u32 (uint32x2_t __a, uint32x2_t __b) 5209: { 5209: return ((__a & __b) != 0); 5209: } 5209: 5209: __extension__ extern __inline uint64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtst_u64 (uint64x1_t __a, uint64x1_t __b) 5209: { 5209: return ((__a & __b) != ((uint64_t) 0)); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtstq_s8 (int8x16_t __a, int8x16_t __b) 5209: { 5209: return (uint8x16_t) ((__a & __b) != 0); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtstq_s16 (int16x8_t __a, int16x8_t __b) 5209: { 5209: return (uint16x8_t) ((__a & __b) != 0); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtstq_s32 (int32x4_t __a, int32x4_t __b) 5209: { 5209: return (uint32x4_t) ((__a & __b) != 0); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtstq_s64 (int64x2_t __a, int64x2_t __b) 5209: { 5209: return (uint64x2_t) ((__a & __b) != ((int64_t) 0)); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtstq_u8 (uint8x16_t __a, uint8x16_t __b) 5209: { 5209: return ((__a & __b) != 0); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtstq_u16 (uint16x8_t __a, uint16x8_t __b) 5209: { 5209: return ((__a & __b) != 0); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtstq_u32 (uint32x4_t __a, uint32x4_t __b) 5209: { 5209: return ((__a & __b) != 0); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtstq_u64 (uint64x2_t __a, uint64x2_t __b) 5209: { 5209: return ((__a & __b) != ((uint64_t) 0)); 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtstd_s64 (int64_t __a, int64_t __b) 5209: { 5209: return (__a & __b) ? -1ll : 0ll; 5209: } 5209: 5209: __extension__ extern __inline uint64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vtstd_u64 (uint64_t __a, uint64_t __b) 5209: { 5209: return (__a & __b) ? -1ll : 0ll; 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vuqadd_s8 (int8x8_t __a, uint8x8_t __b) 5209: { 5209: return __builtin_aarch64_suqaddv8qi_ssu (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vuqadd_s16 (int16x4_t __a, uint16x4_t __b) 5209: { 5209: return __builtin_aarch64_suqaddv4hi_ssu (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vuqadd_s32 (int32x2_t __a, uint32x2_t __b) 5209: { 5209: return __builtin_aarch64_suqaddv2si_ssu (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vuqadd_s64 (int64x1_t __a, uint64x1_t __b) 5209: { 5209: return (int64x1_t) {__builtin_aarch64_suqadddi_ssu (__a[0], __b[0])}; 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vuqaddq_s8 (int8x16_t __a, uint8x16_t __b) 5209: { 5209: return __builtin_aarch64_suqaddv16qi_ssu (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vuqaddq_s16 (int16x8_t __a, uint16x8_t __b) 5209: { 5209: return __builtin_aarch64_suqaddv8hi_ssu (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vuqaddq_s32 (int32x4_t __a, uint32x4_t __b) 5209: { 5209: return __builtin_aarch64_suqaddv4si_ssu (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vuqaddq_s64 (int64x2_t __a, uint64x2_t __b) 5209: { 5209: return __builtin_aarch64_suqaddv2di_ssu (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vuqaddb_s8 (int8_t __a, uint8_t __b) 5209: { 5209: return __builtin_aarch64_suqaddqi_ssu (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vuqaddh_s16 (int16_t __a, uint16_t __b) 5209: { 5209: return __builtin_aarch64_suqaddhi_ssu (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vuqadds_s32 (int32_t __a, uint32_t __b) 5209: { 5209: return __builtin_aarch64_suqaddsi_ssu (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int64_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vuqaddd_s64 (int64_t __a, uint64_t __b) 5209: { 5209: return __builtin_aarch64_suqadddi_ssu (__a, __b); 5209: } 5209: # 31282 "/usr/lib/gcc/aarch64-linux-gnu/10/include/arm_neon.h" 3 4 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vuzp1_f16 (float16x4_t __a, float16x4_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 2, 4, 6}); 5209: 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vuzp1_f32 (float32x2_t __a, float32x2_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint32x2_t) {0, 2}); 5209: 5209: } 5209: 5209: __extension__ extern __inline poly8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vuzp1_p8 (poly8x8_t __a, poly8x8_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint8x8_t) {0, 2, 4, 6, 8, 10, 12, 14}); 5209: 5209: } 5209: 5209: __extension__ extern __inline poly16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vuzp1_p16 (poly16x4_t __a, poly16x4_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 2, 4, 6}); 5209: 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vuzp1_s8 (int8x8_t __a, int8x8_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint8x8_t) {0, 2, 4, 6, 8, 10, 12, 14}); 5209: 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vuzp1_s16 (int16x4_t __a, int16x4_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 2, 4, 6}); 5209: 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vuzp1_s32 (int32x2_t __a, int32x2_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint32x2_t) {0, 2}); 5209: 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vuzp1_u8 (uint8x8_t __a, uint8x8_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint8x8_t) {0, 2, 4, 6, 8, 10, 12, 14}); 5209: 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vuzp1_u16 (uint16x4_t __a, uint16x4_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 2, 4, 6}); 5209: 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vuzp1_u32 (uint32x2_t __a, uint32x2_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint32x2_t) {0, 2}); 5209: 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vuzp1q_f16 (float16x8_t __a, float16x8_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 2, 4, 6, 8, 10, 12, 14}); 5209: 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vuzp1q_f32 (float32x4_t __a, float32x4_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint32x4_t) {0, 2, 4, 6}); 5209: 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vuzp1q_f64 (float64x2_t __a, float64x2_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint64x2_t) {0, 2}); 5209: 5209: } 5209: 5209: __extension__ extern __inline poly8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vuzp1q_p8 (poly8x16_t __a, poly8x16_t __b) 5209: { 5209: 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint8x16_t) 5209: {0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30}); 5209: 5209: } 5209: 5209: __extension__ extern __inline poly16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vuzp1q_p16 (poly16x8_t __a, poly16x8_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 2, 4, 6, 8, 10, 12, 14}); 5209: 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vuzp1q_s8 (int8x16_t __a, int8x16_t __b) 5209: { 5209: 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, 5209: (uint8x16_t) {0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30}); 5209: 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vuzp1q_s16 (int16x8_t __a, int16x8_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 2, 4, 6, 8, 10, 12, 14}); 5209: 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vuzp1q_s32 (int32x4_t __a, int32x4_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint32x4_t) {0, 2, 4, 6}); 5209: 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vuzp1q_s64 (int64x2_t __a, int64x2_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint64x2_t) {0, 2}); 5209: 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vuzp1q_u8 (uint8x16_t __a, uint8x16_t __b) 5209: { 5209: 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, 5209: (uint8x16_t) {0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30}); 5209: 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vuzp1q_u16 (uint16x8_t __a, uint16x8_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 2, 4, 6, 8, 10, 12, 14}); 5209: 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vuzp1q_u32 (uint32x4_t __a, uint32x4_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint32x4_t) {0, 2, 4, 6}); 5209: 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vuzp1q_u64 (uint64x2_t __a, uint64x2_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint64x2_t) {0, 2}); 5209: 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vuzp2_f16 (float16x4_t __a, float16x4_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint16x4_t) {1, 3, 5, 7}); 5209: 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vuzp2_f32 (float32x2_t __a, float32x2_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint32x2_t) {1, 3}); 5209: 5209: } 5209: 5209: __extension__ extern __inline poly8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vuzp2_p8 (poly8x8_t __a, poly8x8_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint8x8_t) {1, 3, 5, 7, 9, 11, 13, 15}); 5209: 5209: } 5209: 5209: __extension__ extern __inline poly16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vuzp2_p16 (poly16x4_t __a, poly16x4_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint16x4_t) {1, 3, 5, 7}); 5209: 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vuzp2_s8 (int8x8_t __a, int8x8_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint8x8_t) {1, 3, 5, 7, 9, 11, 13, 15}); 5209: 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vuzp2_s16 (int16x4_t __a, int16x4_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint16x4_t) {1, 3, 5, 7}); 5209: 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vuzp2_s32 (int32x2_t __a, int32x2_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint32x2_t) {1, 3}); 5209: 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vuzp2_u8 (uint8x8_t __a, uint8x8_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint8x8_t) {1, 3, 5, 7, 9, 11, 13, 15}); 5209: 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vuzp2_u16 (uint16x4_t __a, uint16x4_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint16x4_t) {1, 3, 5, 7}); 5209: 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vuzp2_u32 (uint32x2_t __a, uint32x2_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint32x2_t) {1, 3}); 5209: 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vuzp2q_f16 (float16x8_t __a, float16x8_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint16x8_t) {1, 3, 5, 7, 9, 11, 13, 15}); 5209: 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vuzp2q_f32 (float32x4_t __a, float32x4_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint32x4_t) {1, 3, 5, 7}); 5209: 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vuzp2q_f64 (float64x2_t __a, float64x2_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint64x2_t) {1, 3}); 5209: 5209: } 5209: 5209: __extension__ extern __inline poly8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vuzp2q_p8 (poly8x16_t __a, poly8x16_t __b) 5209: { 5209: 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, 5209: (uint8x16_t) {1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31}); 5209: 5209: } 5209: 5209: __extension__ extern __inline poly16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vuzp2q_p16 (poly16x8_t __a, poly16x8_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint16x8_t) {1, 3, 5, 7, 9, 11, 13, 15}); 5209: 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vuzp2q_s8 (int8x16_t __a, int8x16_t __b) 5209: { 5209: 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, 5209: (uint8x16_t) {1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31}); 5209: 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vuzp2q_s16 (int16x8_t __a, int16x8_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint16x8_t) {1, 3, 5, 7, 9, 11, 13, 15}); 5209: 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vuzp2q_s32 (int32x4_t __a, int32x4_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint32x4_t) {1, 3, 5, 7}); 5209: 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vuzp2q_s64 (int64x2_t __a, int64x2_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint64x2_t) {1, 3}); 5209: 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vuzp2q_u8 (uint8x16_t __a, uint8x16_t __b) 5209: { 5209: 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint8x16_t) 5209: {1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31}); 5209: 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vuzp2q_u16 (uint16x8_t __a, uint16x8_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint16x8_t) {1, 3, 5, 7, 9, 11, 13, 15}); 5209: 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vuzp2q_u32 (uint32x4_t __a, uint32x4_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint32x4_t) {1, 3, 5, 7}); 5209: 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vuzp2q_u64 (uint64x2_t __a, uint64x2_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint64x2_t) {1, 3}); 5209: 5209: } 5209: 5209: __extension__ extern __inline float16x4x2_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vuzp_f16 (float16x4_t a, float16x4_t b) { return (float16x4x2_t) {vuzp1_f16 (a, b), vuzp2_f16 (a, b)}; } __extension__ extern __inline float32x2x2_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vuzp_f32 (float32x2_t a, float32x2_t b) { return (float32x2x2_t) {vuzp1_f32 (a, b), vuzp2_f32 (a, b)}; } __extension__ extern __inline poly8x8x2_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vuzp_p8 (poly8x8_t a, poly8x8_t b) { return (poly8x8x2_t) {vuzp1_p8 (a, b), vuzp2_p8 (a, b)}; } __extension__ extern __inline poly16x4x2_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vuzp_p16 (poly16x4_t a, poly16x4_t b) { return (poly16x4x2_t) {vuzp1_p16 (a, b), vuzp2_p16 (a, b)}; } __extension__ extern __inline int8x8x2_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vuzp_s8 (int8x8_t a, int8x8_t b) { return (int8x8x2_t) {vuzp1_s8 (a, b), vuzp2_s8 (a, b)}; } __extension__ extern __inline int16x4x2_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vuzp_s16 (int16x4_t a, int16x4_t b) { return (int16x4x2_t) {vuzp1_s16 (a, b), vuzp2_s16 (a, b)}; } __extension__ extern __inline int32x2x2_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vuzp_s32 (int32x2_t a, int32x2_t b) { return (int32x2x2_t) {vuzp1_s32 (a, b), vuzp2_s32 (a, b)}; } __extension__ extern __inline uint8x8x2_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vuzp_u8 (uint8x8_t a, uint8x8_t b) { return (uint8x8x2_t) {vuzp1_u8 (a, b), vuzp2_u8 (a, b)}; } __extension__ extern __inline uint16x4x2_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vuzp_u16 (uint16x4_t a, uint16x4_t b) { return (uint16x4x2_t) {vuzp1_u16 (a, b), vuzp2_u16 (a, b)}; } __extension__ extern __inline uint32x2x2_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vuzp_u32 (uint32x2_t a, uint32x2_t b) { return (uint32x2x2_t) {vuzp1_u32 (a, b), vuzp2_u32 (a, b)}; } __extension__ extern __inline float16x8x2_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vuzpq_f16 (float16x8_t a, float16x8_t b) { return (float16x8x2_t) {vuzp1q_f16 (a, b), vuzp2q_f16 (a, b)}; } __extension__ extern __inline float32x4x2_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vuzpq_f32 (float32x4_t a, float32x4_t b) { return (float32x4x2_t) {vuzp1q_f32 (a, b), vuzp2q_f32 (a, b)}; } __extension__ extern __inline poly8x16x2_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vuzpq_p8 (poly8x16_t a, poly8x16_t b) { return (poly8x16x2_t) {vuzp1q_p8 (a, b), vuzp2q_p8 (a, b)}; } __extension__ extern __inline poly16x8x2_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vuzpq_p16 (poly16x8_t a, poly16x8_t b) { return (poly16x8x2_t) {vuzp1q_p16 (a, b), vuzp2q_p16 (a, b)}; } __extension__ extern __inline int8x16x2_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vuzpq_s8 (int8x16_t a, int8x16_t b) { return (int8x16x2_t) {vuzp1q_s8 (a, b), vuzp2q_s8 (a, b)}; } __extension__ extern __inline int16x8x2_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vuzpq_s16 (int16x8_t a, int16x8_t b) { return (int16x8x2_t) {vuzp1q_s16 (a, b), vuzp2q_s16 (a, b)}; } __extension__ extern __inline int32x4x2_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vuzpq_s32 (int32x4_t a, int32x4_t b) { return (int32x4x2_t) {vuzp1q_s32 (a, b), vuzp2q_s32 (a, b)}; } __extension__ extern __inline uint8x16x2_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vuzpq_u8 (uint8x16_t a, uint8x16_t b) { return (uint8x16x2_t) {vuzp1q_u8 (a, b), vuzp2q_u8 (a, b)}; } __extension__ extern __inline uint16x8x2_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vuzpq_u16 (uint16x8_t a, uint16x8_t b) { return (uint16x8x2_t) {vuzp1q_u16 (a, b), vuzp2q_u16 (a, b)}; } __extension__ extern __inline uint32x4x2_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vuzpq_u32 (uint32x4_t a, uint32x4_t b) { return (uint32x4x2_t) {vuzp1q_u32 (a, b), vuzp2q_u32 (a, b)}; } 5209: 5209: 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vzip1_f16 (float16x4_t __a, float16x4_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 4, 1, 5}); 5209: 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vzip1_f32 (float32x2_t __a, float32x2_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint32x2_t) {0, 2}); 5209: 5209: } 5209: 5209: __extension__ extern __inline poly8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vzip1_p8 (poly8x8_t __a, poly8x8_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint8x8_t) {0, 8, 1, 9, 2, 10, 3, 11}); 5209: 5209: } 5209: 5209: __extension__ extern __inline poly16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vzip1_p16 (poly16x4_t __a, poly16x4_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 4, 1, 5}); 5209: 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vzip1_s8 (int8x8_t __a, int8x8_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint8x8_t) {0, 8, 1, 9, 2, 10, 3, 11}); 5209: 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vzip1_s16 (int16x4_t __a, int16x4_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 4, 1, 5}); 5209: 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vzip1_s32 (int32x2_t __a, int32x2_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint32x2_t) {0, 2}); 5209: 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vzip1_u8 (uint8x8_t __a, uint8x8_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint8x8_t) {0, 8, 1, 9, 2, 10, 3, 11}); 5209: 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vzip1_u16 (uint16x4_t __a, uint16x4_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 4, 1, 5}); 5209: 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vzip1_u32 (uint32x2_t __a, uint32x2_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint32x2_t) {0, 2}); 5209: 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vzip1q_f16 (float16x8_t __a, float16x8_t __b) 5209: { 5209: 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, 5209: (uint16x8_t) {0, 8, 1, 9, 2, 10, 3, 11}); 5209: 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vzip1q_f32 (float32x4_t __a, float32x4_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint32x4_t) {0, 4, 1, 5}); 5209: 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vzip1q_f64 (float64x2_t __a, float64x2_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint64x2_t) {0, 2}); 5209: 5209: } 5209: 5209: __extension__ extern __inline poly8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vzip1q_p8 (poly8x16_t __a, poly8x16_t __b) 5209: { 5209: 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint8x16_t) 5209: {0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23}); 5209: 5209: } 5209: 5209: __extension__ extern __inline poly16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vzip1q_p16 (poly16x8_t __a, poly16x8_t __b) 5209: { 5209: 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 8, 1, 9, 2, 10, 3, 11}); 5209: 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vzip1q_s8 (int8x16_t __a, int8x16_t __b) 5209: { 5209: 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint8x16_t) 5209: {0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23}); 5209: 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vzip1q_s16 (int16x8_t __a, int16x8_t __b) 5209: { 5209: 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 8, 1, 9, 2, 10, 3, 11}); 5209: 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vzip1q_s32 (int32x4_t __a, int32x4_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint32x4_t) {0, 4, 1, 5}); 5209: 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vzip1q_s64 (int64x2_t __a, int64x2_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint64x2_t) {0, 2}); 5209: 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vzip1q_u8 (uint8x16_t __a, uint8x16_t __b) 5209: { 5209: 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint8x16_t) 5209: {0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23}); 5209: 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vzip1q_u16 (uint16x8_t __a, uint16x8_t __b) 5209: { 5209: 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 8, 1, 9, 2, 10, 3, 11}); 5209: 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vzip1q_u32 (uint32x4_t __a, uint32x4_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint32x4_t) {0, 4, 1, 5}); 5209: 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vzip1q_u64 (uint64x2_t __a, uint64x2_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint64x2_t) {0, 2}); 5209: 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vzip2_f16 (float16x4_t __a, float16x4_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint16x4_t) {2, 6, 3, 7}); 5209: 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vzip2_f32 (float32x2_t __a, float32x2_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint32x2_t) {1, 3}); 5209: 5209: } 5209: 5209: __extension__ extern __inline poly8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vzip2_p8 (poly8x8_t __a, poly8x8_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint8x8_t) {4, 12, 5, 13, 6, 14, 7, 15}); 5209: 5209: } 5209: 5209: __extension__ extern __inline poly16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vzip2_p16 (poly16x4_t __a, poly16x4_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint16x4_t) {2, 6, 3, 7}); 5209: 5209: } 5209: 5209: __extension__ extern __inline int8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vzip2_s8 (int8x8_t __a, int8x8_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint8x8_t) {4, 12, 5, 13, 6, 14, 7, 15}); 5209: 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vzip2_s16 (int16x4_t __a, int16x4_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint16x4_t) {2, 6, 3, 7}); 5209: 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vzip2_s32 (int32x2_t __a, int32x2_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint32x2_t) {1, 3}); 5209: 5209: } 5209: 5209: __extension__ extern __inline uint8x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vzip2_u8 (uint8x8_t __a, uint8x8_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint8x8_t) {4, 12, 5, 13, 6, 14, 7, 15}); 5209: 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vzip2_u16 (uint16x4_t __a, uint16x4_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint16x4_t) {2, 6, 3, 7}); 5209: 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vzip2_u32 (uint32x2_t __a, uint32x2_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint32x2_t) {1, 3}); 5209: 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vzip2q_f16 (float16x8_t __a, float16x8_t __b) 5209: { 5209: 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, 5209: (uint16x8_t) {4, 12, 5, 13, 6, 14, 7, 15}); 5209: 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vzip2q_f32 (float32x4_t __a, float32x4_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint32x4_t) {2, 6, 3, 7}); 5209: 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vzip2q_f64 (float64x2_t __a, float64x2_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint64x2_t) {1, 3}); 5209: 5209: } 5209: 5209: __extension__ extern __inline poly8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vzip2q_p8 (poly8x16_t __a, poly8x16_t __b) 5209: { 5209: 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint8x16_t) 5209: {8, 24, 9, 25, 10, 26, 11, 27, 12, 28, 13, 29, 14, 30, 15, 31}); 5209: 5209: } 5209: 5209: __extension__ extern __inline poly16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vzip2q_p16 (poly16x8_t __a, poly16x8_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint16x8_t) 5209: {4, 12, 5, 13, 6, 14, 7, 15}); 5209: 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vzip2q_s8 (int8x16_t __a, int8x16_t __b) 5209: { 5209: 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint8x16_t) 5209: {8, 24, 9, 25, 10, 26, 11, 27, 12, 28, 13, 29, 14, 30, 15, 31}); 5209: 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vzip2q_s16 (int16x8_t __a, int16x8_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint16x8_t) 5209: {4, 12, 5, 13, 6, 14, 7, 15}); 5209: 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vzip2q_s32 (int32x4_t __a, int32x4_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint32x4_t) {2, 6, 3, 7}); 5209: 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vzip2q_s64 (int64x2_t __a, int64x2_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint64x2_t) {1, 3}); 5209: 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vzip2q_u8 (uint8x16_t __a, uint8x16_t __b) 5209: { 5209: 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint8x16_t) 5209: {8, 24, 9, 25, 10, 26, 11, 27, 12, 28, 13, 29, 14, 30, 15, 31}); 5209: 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vzip2q_u16 (uint16x8_t __a, uint16x8_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint16x8_t) 5209: {4, 12, 5, 13, 6, 14, 7, 15}); 5209: 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vzip2q_u32 (uint32x4_t __a, uint32x4_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint32x4_t) {2, 6, 3, 7}); 5209: 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vzip2q_u64 (uint64x2_t __a, uint64x2_t __b) 5209: { 5209: 5209: 5209: 5209: return __builtin_shuffle (__a, __b, (uint64x2_t) {1, 3}); 5209: 5209: } 5209: 5209: __extension__ extern __inline float16x4x2_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vzip_f16 (float16x4_t a, float16x4_t b) { return (float16x4x2_t) {vzip1_f16 (a, b), vzip2_f16 (a, b)}; } __extension__ extern __inline float32x2x2_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vzip_f32 (float32x2_t a, float32x2_t b) { return (float32x2x2_t) {vzip1_f32 (a, b), vzip2_f32 (a, b)}; } __extension__ extern __inline poly8x8x2_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vzip_p8 (poly8x8_t a, poly8x8_t b) { return (poly8x8x2_t) {vzip1_p8 (a, b), vzip2_p8 (a, b)}; } __extension__ extern __inline poly16x4x2_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vzip_p16 (poly16x4_t a, poly16x4_t b) { return (poly16x4x2_t) {vzip1_p16 (a, b), vzip2_p16 (a, b)}; } __extension__ extern __inline int8x8x2_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vzip_s8 (int8x8_t a, int8x8_t b) { return (int8x8x2_t) {vzip1_s8 (a, b), vzip2_s8 (a, b)}; } __extension__ extern __inline int16x4x2_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vzip_s16 (int16x4_t a, int16x4_t b) { return (int16x4x2_t) {vzip1_s16 (a, b), vzip2_s16 (a, b)}; } __extension__ extern __inline int32x2x2_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vzip_s32 (int32x2_t a, int32x2_t b) { return (int32x2x2_t) {vzip1_s32 (a, b), vzip2_s32 (a, b)}; } __extension__ extern __inline uint8x8x2_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vzip_u8 (uint8x8_t a, uint8x8_t b) { return (uint8x8x2_t) {vzip1_u8 (a, b), vzip2_u8 (a, b)}; } __extension__ extern __inline uint16x4x2_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vzip_u16 (uint16x4_t a, uint16x4_t b) { return (uint16x4x2_t) {vzip1_u16 (a, b), vzip2_u16 (a, b)}; } __extension__ extern __inline uint32x2x2_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vzip_u32 (uint32x2_t a, uint32x2_t b) { return (uint32x2x2_t) {vzip1_u32 (a, b), vzip2_u32 (a, b)}; } __extension__ extern __inline float16x8x2_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vzipq_f16 (float16x8_t a, float16x8_t b) { return (float16x8x2_t) {vzip1q_f16 (a, b), vzip2q_f16 (a, b)}; } __extension__ extern __inline float32x4x2_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vzipq_f32 (float32x4_t a, float32x4_t b) { return (float32x4x2_t) {vzip1q_f32 (a, b), vzip2q_f32 (a, b)}; } __extension__ extern __inline poly8x16x2_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vzipq_p8 (poly8x16_t a, poly8x16_t b) { return (poly8x16x2_t) {vzip1q_p8 (a, b), vzip2q_p8 (a, b)}; } __extension__ extern __inline poly16x8x2_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vzipq_p16 (poly16x8_t a, poly16x8_t b) { return (poly16x8x2_t) {vzip1q_p16 (a, b), vzip2q_p16 (a, b)}; } __extension__ extern __inline int8x16x2_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vzipq_s8 (int8x16_t a, int8x16_t b) { return (int8x16x2_t) {vzip1q_s8 (a, b), vzip2q_s8 (a, b)}; } __extension__ extern __inline int16x8x2_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vzipq_s16 (int16x8_t a, int16x8_t b) { return (int16x8x2_t) {vzip1q_s16 (a, b), vzip2q_s16 (a, b)}; } __extension__ extern __inline int32x4x2_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vzipq_s32 (int32x4_t a, int32x4_t b) { return (int32x4x2_t) {vzip1q_s32 (a, b), vzip2q_s32 (a, b)}; } __extension__ extern __inline uint8x16x2_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vzipq_u8 (uint8x16_t a, uint8x16_t b) { return (uint8x16x2_t) {vzip1q_u8 (a, b), vzip2q_u8 (a, b)}; } __extension__ extern __inline uint16x8x2_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vzipq_u16 (uint16x8_t a, uint16x8_t b) { return (uint16x8x2_t) {vzip1q_u16 (a, b), vzip2q_u16 (a, b)}; } __extension__ extern __inline uint32x4x2_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vzipq_u32 (uint32x4_t a, uint32x4_t b) { return (uint32x4x2_t) {vzip1q_u32 (a, b), vzip2q_u32 (a, b)}; } 5209: 5209: 5209: 5209: 5209: 5209: 5209: #pragma GCC pop_options 5209: 5209: 5209: 5209: # 1 "/usr/lib/gcc/aarch64-linux-gnu/10/include/arm_fp16.h" 1 3 4 5209: # 32 "/usr/lib/gcc/aarch64-linux-gnu/10/include/arm_fp16.h" 3 4 5209: #pragma GCC push_options 5209: #pragma GCC target ("arch=armv8.2-a+fp16") 5209: 5209: typedef __fp16 float16_t; 5209: 5209: 5209: 5209: __extension__ static __inline float16_t __attribute__ ((__always_inline__)) 5209: vabsh_f16 (float16_t __a) 5209: { 5209: return __builtin_aarch64_abshf (__a); 5209: } 5209: 5209: __extension__ static __inline uint16_t __attribute__ ((__always_inline__)) 5209: vceqzh_f16 (float16_t __a) 5209: { 5209: return __builtin_aarch64_cmeqhf_uss (__a, 0.0f); 5209: } 5209: 5209: __extension__ static __inline uint16_t __attribute__ ((__always_inline__)) 5209: vcgezh_f16 (float16_t __a) 5209: { 5209: return __builtin_aarch64_cmgehf_uss (__a, 0.0f); 5209: } 5209: 5209: __extension__ static __inline uint16_t __attribute__ ((__always_inline__)) 5209: vcgtzh_f16 (float16_t __a) 5209: { 5209: return __builtin_aarch64_cmgthf_uss (__a, 0.0f); 5209: } 5209: 5209: __extension__ static __inline uint16_t __attribute__ ((__always_inline__)) 5209: vclezh_f16 (float16_t __a) 5209: { 5209: return __builtin_aarch64_cmlehf_uss (__a, 0.0f); 5209: } 5209: 5209: __extension__ static __inline uint16_t __attribute__ ((__always_inline__)) 5209: vcltzh_f16 (float16_t __a) 5209: { 5209: return __builtin_aarch64_cmlthf_uss (__a, 0.0f); 5209: } 5209: 5209: __extension__ static __inline float16_t __attribute__ ((__always_inline__)) 5209: vcvth_f16_s16 (int16_t __a) 5209: { 5209: return __builtin_aarch64_floathihf (__a); 5209: } 5209: 5209: __extension__ static __inline float16_t __attribute__ ((__always_inline__)) 5209: vcvth_f16_s32 (int32_t __a) 5209: { 5209: return __builtin_aarch64_floatsihf (__a); 5209: } 5209: 5209: __extension__ static __inline float16_t __attribute__ ((__always_inline__)) 5209: vcvth_f16_s64 (int64_t __a) 5209: { 5209: return __builtin_aarch64_floatdihf (__a); 5209: } 5209: 5209: __extension__ static __inline float16_t __attribute__ ((__always_inline__)) 5209: vcvth_f16_u16 (uint16_t __a) 5209: { 5209: return __builtin_aarch64_floatunshihf_us (__a); 5209: } 5209: 5209: __extension__ static __inline float16_t __attribute__ ((__always_inline__)) 5209: vcvth_f16_u32 (uint32_t __a) 5209: { 5209: return __builtin_aarch64_floatunssihf_us (__a); 5209: } 5209: 5209: __extension__ static __inline float16_t __attribute__ ((__always_inline__)) 5209: vcvth_f16_u64 (uint64_t __a) 5209: { 5209: return __builtin_aarch64_floatunsdihf_us (__a); 5209: } 5209: 5209: __extension__ static __inline int16_t __attribute__ ((__always_inline__)) 5209: vcvth_s16_f16 (float16_t __a) 5209: { 5209: return __builtin_aarch64_fix_trunchfhi (__a); 5209: } 5209: 5209: __extension__ static __inline int32_t __attribute__ ((__always_inline__)) 5209: vcvth_s32_f16 (float16_t __a) 5209: { 5209: return __builtin_aarch64_fix_trunchfsi (__a); 5209: } 5209: 5209: __extension__ static __inline int64_t __attribute__ ((__always_inline__)) 5209: vcvth_s64_f16 (float16_t __a) 5209: { 5209: return __builtin_aarch64_fix_trunchfdi (__a); 5209: } 5209: 5209: __extension__ static __inline uint16_t __attribute__ ((__always_inline__)) 5209: vcvth_u16_f16 (float16_t __a) 5209: { 5209: return __builtin_aarch64_fixuns_trunchfhi_us (__a); 5209: } 5209: 5209: __extension__ static __inline uint32_t __attribute__ ((__always_inline__)) 5209: vcvth_u32_f16 (float16_t __a) 5209: { 5209: return __builtin_aarch64_fixuns_trunchfsi_us (__a); 5209: } 5209: 5209: __extension__ static __inline uint64_t __attribute__ ((__always_inline__)) 5209: vcvth_u64_f16 (float16_t __a) 5209: { 5209: return __builtin_aarch64_fixuns_trunchfdi_us (__a); 5209: } 5209: 5209: __extension__ static __inline int16_t __attribute__ ((__always_inline__)) 5209: vcvtah_s16_f16 (float16_t __a) 5209: { 5209: return __builtin_aarch64_lroundhfhi (__a); 5209: } 5209: 5209: __extension__ static __inline int32_t __attribute__ ((__always_inline__)) 5209: vcvtah_s32_f16 (float16_t __a) 5209: { 5209: return __builtin_aarch64_lroundhfsi (__a); 5209: } 5209: 5209: __extension__ static __inline int64_t __attribute__ ((__always_inline__)) 5209: vcvtah_s64_f16 (float16_t __a) 5209: { 5209: return __builtin_aarch64_lroundhfdi (__a); 5209: } 5209: 5209: __extension__ static __inline uint16_t __attribute__ ((__always_inline__)) 5209: vcvtah_u16_f16 (float16_t __a) 5209: { 5209: return __builtin_aarch64_lrounduhfhi_us (__a); 5209: } 5209: 5209: __extension__ static __inline uint32_t __attribute__ ((__always_inline__)) 5209: vcvtah_u32_f16 (float16_t __a) 5209: { 5209: return __builtin_aarch64_lrounduhfsi_us (__a); 5209: } 5209: 5209: __extension__ static __inline uint64_t __attribute__ ((__always_inline__)) 5209: vcvtah_u64_f16 (float16_t __a) 5209: { 5209: return __builtin_aarch64_lrounduhfdi_us (__a); 5209: } 5209: 5209: __extension__ static __inline int16_t __attribute__ ((__always_inline__)) 5209: vcvtmh_s16_f16 (float16_t __a) 5209: { 5209: return __builtin_aarch64_lfloorhfhi (__a); 5209: } 5209: 5209: __extension__ static __inline int32_t __attribute__ ((__always_inline__)) 5209: vcvtmh_s32_f16 (float16_t __a) 5209: { 5209: return __builtin_aarch64_lfloorhfsi (__a); 5209: } 5209: 5209: __extension__ static __inline int64_t __attribute__ ((__always_inline__)) 5209: vcvtmh_s64_f16 (float16_t __a) 5209: { 5209: return __builtin_aarch64_lfloorhfdi (__a); 5209: } 5209: 5209: __extension__ static __inline uint16_t __attribute__ ((__always_inline__)) 5209: vcvtmh_u16_f16 (float16_t __a) 5209: { 5209: return __builtin_aarch64_lflooruhfhi_us (__a); 5209: } 5209: 5209: __extension__ static __inline uint32_t __attribute__ ((__always_inline__)) 5209: vcvtmh_u32_f16 (float16_t __a) 5209: { 5209: return __builtin_aarch64_lflooruhfsi_us (__a); 5209: } 5209: 5209: __extension__ static __inline uint64_t __attribute__ ((__always_inline__)) 5209: vcvtmh_u64_f16 (float16_t __a) 5209: { 5209: return __builtin_aarch64_lflooruhfdi_us (__a); 5209: } 5209: 5209: __extension__ static __inline int16_t __attribute__ ((__always_inline__)) 5209: vcvtnh_s16_f16 (float16_t __a) 5209: { 5209: return __builtin_aarch64_lfrintnhfhi (__a); 5209: } 5209: 5209: __extension__ static __inline int32_t __attribute__ ((__always_inline__)) 5209: vcvtnh_s32_f16 (float16_t __a) 5209: { 5209: return __builtin_aarch64_lfrintnhfsi (__a); 5209: } 5209: 5209: __extension__ static __inline int64_t __attribute__ ((__always_inline__)) 5209: vcvtnh_s64_f16 (float16_t __a) 5209: { 5209: return __builtin_aarch64_lfrintnhfdi (__a); 5209: } 5209: 5209: __extension__ static __inline uint16_t __attribute__ ((__always_inline__)) 5209: vcvtnh_u16_f16 (float16_t __a) 5209: { 5209: return __builtin_aarch64_lfrintnuhfhi_us (__a); 5209: } 5209: 5209: __extension__ static __inline uint32_t __attribute__ ((__always_inline__)) 5209: vcvtnh_u32_f16 (float16_t __a) 5209: { 5209: return __builtin_aarch64_lfrintnuhfsi_us (__a); 5209: } 5209: 5209: __extension__ static __inline uint64_t __attribute__ ((__always_inline__)) 5209: vcvtnh_u64_f16 (float16_t __a) 5209: { 5209: return __builtin_aarch64_lfrintnuhfdi_us (__a); 5209: } 5209: 5209: __extension__ static __inline int16_t __attribute__ ((__always_inline__)) 5209: vcvtph_s16_f16 (float16_t __a) 5209: { 5209: return __builtin_aarch64_lceilhfhi (__a); 5209: } 5209: 5209: __extension__ static __inline int32_t __attribute__ ((__always_inline__)) 5209: vcvtph_s32_f16 (float16_t __a) 5209: { 5209: return __builtin_aarch64_lceilhfsi (__a); 5209: } 5209: 5209: __extension__ static __inline int64_t __attribute__ ((__always_inline__)) 5209: vcvtph_s64_f16 (float16_t __a) 5209: { 5209: return __builtin_aarch64_lceilhfdi (__a); 5209: } 5209: 5209: __extension__ static __inline uint16_t __attribute__ ((__always_inline__)) 5209: vcvtph_u16_f16 (float16_t __a) 5209: { 5209: return __builtin_aarch64_lceiluhfhi_us (__a); 5209: } 5209: 5209: __extension__ static __inline uint32_t __attribute__ ((__always_inline__)) 5209: vcvtph_u32_f16 (float16_t __a) 5209: { 5209: return __builtin_aarch64_lceiluhfsi_us (__a); 5209: } 5209: 5209: __extension__ static __inline uint64_t __attribute__ ((__always_inline__)) 5209: vcvtph_u64_f16 (float16_t __a) 5209: { 5209: return __builtin_aarch64_lceiluhfdi_us (__a); 5209: } 5209: 5209: __extension__ static __inline float16_t __attribute__ ((__always_inline__)) 5209: vnegh_f16 (float16_t __a) 5209: { 5209: return __builtin_aarch64_neghf (__a); 5209: } 5209: 5209: __extension__ static __inline float16_t __attribute__ ((__always_inline__)) 5209: vrecpeh_f16 (float16_t __a) 5209: { 5209: return __builtin_aarch64_frecpehf (__a); 5209: } 5209: 5209: __extension__ static __inline float16_t __attribute__ ((__always_inline__)) 5209: vrecpxh_f16 (float16_t __a) 5209: { 5209: return __builtin_aarch64_frecpxhf (__a); 5209: } 5209: 5209: __extension__ static __inline float16_t __attribute__ ((__always_inline__)) 5209: vrndh_f16 (float16_t __a) 5209: { 5209: return __builtin_aarch64_btrunchf (__a); 5209: } 5209: 5209: __extension__ static __inline float16_t __attribute__ ((__always_inline__)) 5209: vrndah_f16 (float16_t __a) 5209: { 5209: return __builtin_aarch64_roundhf (__a); 5209: } 5209: 5209: __extension__ static __inline float16_t __attribute__ ((__always_inline__)) 5209: vrndih_f16 (float16_t __a) 5209: { 5209: return __builtin_aarch64_nearbyinthf (__a); 5209: } 5209: 5209: __extension__ static __inline float16_t __attribute__ ((__always_inline__)) 5209: vrndmh_f16 (float16_t __a) 5209: { 5209: return __builtin_aarch64_floorhf (__a); 5209: } 5209: 5209: __extension__ static __inline float16_t __attribute__ ((__always_inline__)) 5209: vrndnh_f16 (float16_t __a) 5209: { 5209: return __builtin_aarch64_frintnhf (__a); 5209: } 5209: 5209: __extension__ static __inline float16_t __attribute__ ((__always_inline__)) 5209: vrndph_f16 (float16_t __a) 5209: { 5209: return __builtin_aarch64_ceilhf (__a); 5209: } 5209: 5209: __extension__ static __inline float16_t __attribute__ ((__always_inline__)) 5209: vrndxh_f16 (float16_t __a) 5209: { 5209: return __builtin_aarch64_rinthf (__a); 5209: } 5209: 5209: __extension__ static __inline float16_t __attribute__ ((__always_inline__)) 5209: vrsqrteh_f16 (float16_t __a) 5209: { 5209: return __builtin_aarch64_rsqrtehf (__a); 5209: } 5209: 5209: __extension__ static __inline float16_t __attribute__ ((__always_inline__)) 5209: vsqrth_f16 (float16_t __a) 5209: { 5209: return __builtin_aarch64_sqrthf (__a); 5209: } 5209: 5209: 5209: 5209: __extension__ static __inline float16_t __attribute__ ((__always_inline__)) 5209: vaddh_f16 (float16_t __a, float16_t __b) 5209: { 5209: return __a + __b; 5209: } 5209: 5209: __extension__ static __inline float16_t __attribute__ ((__always_inline__)) 5209: vabdh_f16 (float16_t __a, float16_t __b) 5209: { 5209: return __builtin_aarch64_fabdhf (__a, __b); 5209: } 5209: 5209: __extension__ static __inline uint16_t __attribute__ ((__always_inline__)) 5209: vcageh_f16 (float16_t __a, float16_t __b) 5209: { 5209: return __builtin_aarch64_facgehf_uss (__a, __b); 5209: } 5209: 5209: __extension__ static __inline uint16_t __attribute__ ((__always_inline__)) 5209: vcagth_f16 (float16_t __a, float16_t __b) 5209: { 5209: return __builtin_aarch64_facgthf_uss (__a, __b); 5209: } 5209: 5209: __extension__ static __inline uint16_t __attribute__ ((__always_inline__)) 5209: vcaleh_f16 (float16_t __a, float16_t __b) 5209: { 5209: return __builtin_aarch64_faclehf_uss (__a, __b); 5209: } 5209: 5209: __extension__ static __inline uint16_t __attribute__ ((__always_inline__)) 5209: vcalth_f16 (float16_t __a, float16_t __b) 5209: { 5209: return __builtin_aarch64_faclthf_uss (__a, __b); 5209: } 5209: 5209: __extension__ static __inline uint16_t __attribute__ ((__always_inline__)) 5209: vceqh_f16 (float16_t __a, float16_t __b) 5209: { 5209: return __builtin_aarch64_cmeqhf_uss (__a, __b); 5209: } 5209: 5209: __extension__ static __inline uint16_t __attribute__ ((__always_inline__)) 5209: vcgeh_f16 (float16_t __a, float16_t __b) 5209: { 5209: return __builtin_aarch64_cmgehf_uss (__a, __b); 5209: } 5209: 5209: __extension__ static __inline uint16_t __attribute__ ((__always_inline__)) 5209: vcgth_f16 (float16_t __a, float16_t __b) 5209: { 5209: return __builtin_aarch64_cmgthf_uss (__a, __b); 5209: } 5209: 5209: __extension__ static __inline uint16_t __attribute__ ((__always_inline__)) 5209: vcleh_f16 (float16_t __a, float16_t __b) 5209: { 5209: return __builtin_aarch64_cmlehf_uss (__a, __b); 5209: } 5209: 5209: __extension__ static __inline uint16_t __attribute__ ((__always_inline__)) 5209: vclth_f16 (float16_t __a, float16_t __b) 5209: { 5209: return __builtin_aarch64_cmlthf_uss (__a, __b); 5209: } 5209: 5209: __extension__ static __inline float16_t __attribute__ ((__always_inline__)) 5209: vcvth_n_f16_s16 (int16_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_scvtfhi (__a, __b); 5209: } 5209: 5209: __extension__ static __inline float16_t __attribute__ ((__always_inline__)) 5209: vcvth_n_f16_s32 (int32_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_scvtfsihf (__a, __b); 5209: } 5209: 5209: __extension__ static __inline float16_t __attribute__ ((__always_inline__)) 5209: vcvth_n_f16_s64 (int64_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_scvtfdihf (__a, __b); 5209: } 5209: 5209: __extension__ static __inline float16_t __attribute__ ((__always_inline__)) 5209: vcvth_n_f16_u16 (uint16_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_ucvtfhi_sus (__a, __b); 5209: } 5209: 5209: __extension__ static __inline float16_t __attribute__ ((__always_inline__)) 5209: vcvth_n_f16_u32 (uint32_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_ucvtfsihf_sus (__a, __b); 5209: } 5209: 5209: __extension__ static __inline float16_t __attribute__ ((__always_inline__)) 5209: vcvth_n_f16_u64 (uint64_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_ucvtfdihf_sus (__a, __b); 5209: } 5209: 5209: __extension__ static __inline int16_t __attribute__ ((__always_inline__)) 5209: vcvth_n_s16_f16 (float16_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_fcvtzshf (__a, __b); 5209: } 5209: 5209: __extension__ static __inline int32_t __attribute__ ((__always_inline__)) 5209: vcvth_n_s32_f16 (float16_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_fcvtzshfsi (__a, __b); 5209: } 5209: 5209: __extension__ static __inline int64_t __attribute__ ((__always_inline__)) 5209: vcvth_n_s64_f16 (float16_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_fcvtzshfdi (__a, __b); 5209: } 5209: 5209: __extension__ static __inline uint16_t __attribute__ ((__always_inline__)) 5209: vcvth_n_u16_f16 (float16_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_fcvtzuhf_uss (__a, __b); 5209: } 5209: 5209: __extension__ static __inline uint32_t __attribute__ ((__always_inline__)) 5209: vcvth_n_u32_f16 (float16_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_fcvtzuhfsi_uss (__a, __b); 5209: } 5209: 5209: __extension__ static __inline uint64_t __attribute__ ((__always_inline__)) 5209: vcvth_n_u64_f16 (float16_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_fcvtzuhfdi_uss (__a, __b); 5209: } 5209: 5209: __extension__ static __inline float16_t __attribute__ ((__always_inline__)) 5209: vdivh_f16 (float16_t __a, float16_t __b) 5209: { 5209: return __a / __b; 5209: } 5209: 5209: __extension__ static __inline float16_t __attribute__ ((__always_inline__)) 5209: vmaxh_f16 (float16_t __a, float16_t __b) 5209: { 5209: return __builtin_aarch64_fmaxhf (__a, __b); 5209: } 5209: 5209: __extension__ static __inline float16_t __attribute__ ((__always_inline__)) 5209: vmaxnmh_f16 (float16_t __a, float16_t __b) 5209: { 5209: return __builtin_aarch64_fmaxhf (__a, __b); 5209: } 5209: 5209: __extension__ static __inline float16_t __attribute__ ((__always_inline__)) 5209: vminh_f16 (float16_t __a, float16_t __b) 5209: { 5209: return __builtin_aarch64_fminhf (__a, __b); 5209: } 5209: 5209: __extension__ static __inline float16_t __attribute__ ((__always_inline__)) 5209: vminnmh_f16 (float16_t __a, float16_t __b) 5209: { 5209: return __builtin_aarch64_fminhf (__a, __b); 5209: } 5209: 5209: __extension__ static __inline float16_t __attribute__ ((__always_inline__)) 5209: vmulh_f16 (float16_t __a, float16_t __b) 5209: { 5209: return __a * __b; 5209: } 5209: 5209: __extension__ static __inline float16_t __attribute__ ((__always_inline__)) 5209: vmulxh_f16 (float16_t __a, float16_t __b) 5209: { 5209: return __builtin_aarch64_fmulxhf (__a, __b); 5209: } 5209: 5209: __extension__ static __inline float16_t __attribute__ ((__always_inline__)) 5209: vrecpsh_f16 (float16_t __a, float16_t __b) 5209: { 5209: return __builtin_aarch64_frecpshf (__a, __b); 5209: } 5209: 5209: __extension__ static __inline float16_t __attribute__ ((__always_inline__)) 5209: vrsqrtsh_f16 (float16_t __a, float16_t __b) 5209: { 5209: return __builtin_aarch64_rsqrtshf (__a, __b); 5209: } 5209: 5209: __extension__ static __inline float16_t __attribute__ ((__always_inline__)) 5209: vsubh_f16 (float16_t __a, float16_t __b) 5209: { 5209: return __a - __b; 5209: } 5209: 5209: 5209: 5209: __extension__ static __inline float16_t __attribute__ ((__always_inline__)) 5209: vfmah_f16 (float16_t __a, float16_t __b, float16_t __c) 5209: { 5209: return __builtin_aarch64_fmahf (__b, __c, __a); 5209: } 5209: 5209: __extension__ static __inline float16_t __attribute__ ((__always_inline__)) 5209: vfmsh_f16 (float16_t __a, float16_t __b, float16_t __c) 5209: { 5209: return __builtin_aarch64_fnmahf (__b, __c, __a); 5209: } 5209: 5209: #pragma GCC pop_options 5209: # 32344 "/usr/lib/gcc/aarch64-linux-gnu/10/include/arm_neon.h" 2 3 4 5209: 5209: #pragma GCC push_options 5209: #pragma GCC target ("arch=armv8.2-a+fp16") 5209: 5209: 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabs_f16 (float16x4_t __a) 5209: { 5209: return __builtin_aarch64_absv4hf (__a); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabsq_f16 (float16x8_t __a) 5209: { 5209: return __builtin_aarch64_absv8hf (__a); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vceqz_f16 (float16x4_t __a) 5209: { 5209: return __builtin_aarch64_cmeqv4hf_uss (__a, vdup_n_f16 (0.0f)); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vceqzq_f16 (float16x8_t __a) 5209: { 5209: return __builtin_aarch64_cmeqv8hf_uss (__a, vdupq_n_f16 (0.0f)); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgez_f16 (float16x4_t __a) 5209: { 5209: return __builtin_aarch64_cmgev4hf_uss (__a, vdup_n_f16 (0.0f)); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgezq_f16 (float16x8_t __a) 5209: { 5209: return __builtin_aarch64_cmgev8hf_uss (__a, vdupq_n_f16 (0.0f)); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgtz_f16 (float16x4_t __a) 5209: { 5209: return __builtin_aarch64_cmgtv4hf_uss (__a, vdup_n_f16 (0.0f)); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgtzq_f16 (float16x8_t __a) 5209: { 5209: return __builtin_aarch64_cmgtv8hf_uss (__a, vdupq_n_f16 (0.0f)); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vclez_f16 (float16x4_t __a) 5209: { 5209: return __builtin_aarch64_cmlev4hf_uss (__a, vdup_n_f16 (0.0f)); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vclezq_f16 (float16x8_t __a) 5209: { 5209: return __builtin_aarch64_cmlev8hf_uss (__a, vdupq_n_f16 (0.0f)); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcltz_f16 (float16x4_t __a) 5209: { 5209: return __builtin_aarch64_cmltv4hf_uss (__a, vdup_n_f16 (0.0f)); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcltzq_f16 (float16x8_t __a) 5209: { 5209: return __builtin_aarch64_cmltv8hf_uss (__a, vdupq_n_f16 (0.0f)); 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvt_f16_s16 (int16x4_t __a) 5209: { 5209: return __builtin_aarch64_floatv4hiv4hf (__a); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtq_f16_s16 (int16x8_t __a) 5209: { 5209: return __builtin_aarch64_floatv8hiv8hf (__a); 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvt_f16_u16 (uint16x4_t __a) 5209: { 5209: return __builtin_aarch64_floatunsv4hiv4hf ((int16x4_t) __a); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtq_f16_u16 (uint16x8_t __a) 5209: { 5209: return __builtin_aarch64_floatunsv8hiv8hf ((int16x8_t) __a); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvt_s16_f16 (float16x4_t __a) 5209: { 5209: return __builtin_aarch64_lbtruncv4hfv4hi (__a); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtq_s16_f16 (float16x8_t __a) 5209: { 5209: return __builtin_aarch64_lbtruncv8hfv8hi (__a); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvt_u16_f16 (float16x4_t __a) 5209: { 5209: return __builtin_aarch64_lbtruncuv4hfv4hi_us (__a); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtq_u16_f16 (float16x8_t __a) 5209: { 5209: return __builtin_aarch64_lbtruncuv8hfv8hi_us (__a); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvta_s16_f16 (float16x4_t __a) 5209: { 5209: return __builtin_aarch64_lroundv4hfv4hi (__a); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtaq_s16_f16 (float16x8_t __a) 5209: { 5209: return __builtin_aarch64_lroundv8hfv8hi (__a); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvta_u16_f16 (float16x4_t __a) 5209: { 5209: return __builtin_aarch64_lrounduv4hfv4hi_us (__a); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtaq_u16_f16 (float16x8_t __a) 5209: { 5209: return __builtin_aarch64_lrounduv8hfv8hi_us (__a); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtm_s16_f16 (float16x4_t __a) 5209: { 5209: return __builtin_aarch64_lfloorv4hfv4hi (__a); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtmq_s16_f16 (float16x8_t __a) 5209: { 5209: return __builtin_aarch64_lfloorv8hfv8hi (__a); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtm_u16_f16 (float16x4_t __a) 5209: { 5209: return __builtin_aarch64_lflooruv4hfv4hi_us (__a); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtmq_u16_f16 (float16x8_t __a) 5209: { 5209: return __builtin_aarch64_lflooruv8hfv8hi_us (__a); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtn_s16_f16 (float16x4_t __a) 5209: { 5209: return __builtin_aarch64_lfrintnv4hfv4hi (__a); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtnq_s16_f16 (float16x8_t __a) 5209: { 5209: return __builtin_aarch64_lfrintnv8hfv8hi (__a); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtn_u16_f16 (float16x4_t __a) 5209: { 5209: return __builtin_aarch64_lfrintnuv4hfv4hi_us (__a); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtnq_u16_f16 (float16x8_t __a) 5209: { 5209: return __builtin_aarch64_lfrintnuv8hfv8hi_us (__a); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtp_s16_f16 (float16x4_t __a) 5209: { 5209: return __builtin_aarch64_lceilv4hfv4hi (__a); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtpq_s16_f16 (float16x8_t __a) 5209: { 5209: return __builtin_aarch64_lceilv8hfv8hi (__a); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtp_u16_f16 (float16x4_t __a) 5209: { 5209: return __builtin_aarch64_lceiluv4hfv4hi_us (__a); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtpq_u16_f16 (float16x8_t __a) 5209: { 5209: return __builtin_aarch64_lceiluv8hfv8hi_us (__a); 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vneg_f16 (float16x4_t __a) 5209: { 5209: return -__a; 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vnegq_f16 (float16x8_t __a) 5209: { 5209: return -__a; 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrecpe_f16 (float16x4_t __a) 5209: { 5209: return __builtin_aarch64_frecpev4hf (__a); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrecpeq_f16 (float16x8_t __a) 5209: { 5209: return __builtin_aarch64_frecpev8hf (__a); 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrnd_f16 (float16x4_t __a) 5209: { 5209: return __builtin_aarch64_btruncv4hf (__a); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrndq_f16 (float16x8_t __a) 5209: { 5209: return __builtin_aarch64_btruncv8hf (__a); 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrnda_f16 (float16x4_t __a) 5209: { 5209: return __builtin_aarch64_roundv4hf (__a); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrndaq_f16 (float16x8_t __a) 5209: { 5209: return __builtin_aarch64_roundv8hf (__a); 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrndi_f16 (float16x4_t __a) 5209: { 5209: return __builtin_aarch64_nearbyintv4hf (__a); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrndiq_f16 (float16x8_t __a) 5209: { 5209: return __builtin_aarch64_nearbyintv8hf (__a); 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrndm_f16 (float16x4_t __a) 5209: { 5209: return __builtin_aarch64_floorv4hf (__a); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrndmq_f16 (float16x8_t __a) 5209: { 5209: return __builtin_aarch64_floorv8hf (__a); 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrndn_f16 (float16x4_t __a) 5209: { 5209: return __builtin_aarch64_frintnv4hf (__a); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrndnq_f16 (float16x8_t __a) 5209: { 5209: return __builtin_aarch64_frintnv8hf (__a); 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrndp_f16 (float16x4_t __a) 5209: { 5209: return __builtin_aarch64_ceilv4hf (__a); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrndpq_f16 (float16x8_t __a) 5209: { 5209: return __builtin_aarch64_ceilv8hf (__a); 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrndx_f16 (float16x4_t __a) 5209: { 5209: return __builtin_aarch64_rintv4hf (__a); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrndxq_f16 (float16x8_t __a) 5209: { 5209: return __builtin_aarch64_rintv8hf (__a); 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrsqrte_f16 (float16x4_t __a) 5209: { 5209: return __builtin_aarch64_rsqrtev4hf (__a); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrsqrteq_f16 (float16x8_t __a) 5209: { 5209: return __builtin_aarch64_rsqrtev8hf (__a); 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsqrt_f16 (float16x4_t __a) 5209: { 5209: return __builtin_aarch64_sqrtv4hf (__a); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsqrtq_f16 (float16x8_t __a) 5209: { 5209: return __builtin_aarch64_sqrtv8hf (__a); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vadd_f16 (float16x4_t __a, float16x4_t __b) 5209: { 5209: return __a + __b; 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vaddq_f16 (float16x8_t __a, float16x8_t __b) 5209: { 5209: return __a + __b; 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabd_f16 (float16x4_t __a, float16x4_t __b) 5209: { 5209: return __builtin_aarch64_fabdv4hf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vabdq_f16 (float16x8_t __a, float16x8_t __b) 5209: { 5209: return __builtin_aarch64_fabdv8hf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcage_f16 (float16x4_t __a, float16x4_t __b) 5209: { 5209: return __builtin_aarch64_facgev4hf_uss (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcageq_f16 (float16x8_t __a, float16x8_t __b) 5209: { 5209: return __builtin_aarch64_facgev8hf_uss (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcagt_f16 (float16x4_t __a, float16x4_t __b) 5209: { 5209: return __builtin_aarch64_facgtv4hf_uss (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcagtq_f16 (float16x8_t __a, float16x8_t __b) 5209: { 5209: return __builtin_aarch64_facgtv8hf_uss (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcale_f16 (float16x4_t __a, float16x4_t __b) 5209: { 5209: return __builtin_aarch64_faclev4hf_uss (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcaleq_f16 (float16x8_t __a, float16x8_t __b) 5209: { 5209: return __builtin_aarch64_faclev8hf_uss (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcalt_f16 (float16x4_t __a, float16x4_t __b) 5209: { 5209: return __builtin_aarch64_facltv4hf_uss (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcaltq_f16 (float16x8_t __a, float16x8_t __b) 5209: { 5209: return __builtin_aarch64_facltv8hf_uss (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vceq_f16 (float16x4_t __a, float16x4_t __b) 5209: { 5209: return __builtin_aarch64_cmeqv4hf_uss (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vceqq_f16 (float16x8_t __a, float16x8_t __b) 5209: { 5209: return __builtin_aarch64_cmeqv8hf_uss (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcge_f16 (float16x4_t __a, float16x4_t __b) 5209: { 5209: return __builtin_aarch64_cmgev4hf_uss (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgeq_f16 (float16x8_t __a, float16x8_t __b) 5209: { 5209: return __builtin_aarch64_cmgev8hf_uss (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgt_f16 (float16x4_t __a, float16x4_t __b) 5209: { 5209: return __builtin_aarch64_cmgtv4hf_uss (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcgtq_f16 (float16x8_t __a, float16x8_t __b) 5209: { 5209: return __builtin_aarch64_cmgtv8hf_uss (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcle_f16 (float16x4_t __a, float16x4_t __b) 5209: { 5209: return __builtin_aarch64_cmlev4hf_uss (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcleq_f16 (float16x8_t __a, float16x8_t __b) 5209: { 5209: return __builtin_aarch64_cmlev8hf_uss (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vclt_f16 (float16x4_t __a, float16x4_t __b) 5209: { 5209: return __builtin_aarch64_cmltv4hf_uss (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcltq_f16 (float16x8_t __a, float16x8_t __b) 5209: { 5209: return __builtin_aarch64_cmltv8hf_uss (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvt_n_f16_s16 (int16x4_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_scvtfv4hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtq_n_f16_s16 (int16x8_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_scvtfv8hi (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvt_n_f16_u16 (uint16x4_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_ucvtfv4hi_sus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtq_n_f16_u16 (uint16x8_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_ucvtfv8hi_sus (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvt_n_s16_f16 (float16x4_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_fcvtzsv4hf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtq_n_s16_f16 (float16x8_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_fcvtzsv8hf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvt_n_u16_f16 (float16x4_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_fcvtzuv4hf_uss (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcvtq_n_u16_f16 (float16x8_t __a, const int __b) 5209: { 5209: return __builtin_aarch64_fcvtzuv8hf_uss (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdiv_f16 (float16x4_t __a, float16x4_t __b) 5209: { 5209: return __a / __b; 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdivq_f16 (float16x8_t __a, float16x8_t __b) 5209: { 5209: return __a / __b; 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmax_f16 (float16x4_t __a, float16x4_t __b) 5209: { 5209: return __builtin_aarch64_smax_nanv4hf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmaxq_f16 (float16x8_t __a, float16x8_t __b) 5209: { 5209: return __builtin_aarch64_smax_nanv8hf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmaxnm_f16 (float16x4_t __a, float16x4_t __b) 5209: { 5209: return __builtin_aarch64_fmaxv4hf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmaxnmq_f16 (float16x8_t __a, float16x8_t __b) 5209: { 5209: return __builtin_aarch64_fmaxv8hf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmin_f16 (float16x4_t __a, float16x4_t __b) 5209: { 5209: return __builtin_aarch64_smin_nanv4hf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vminq_f16 (float16x8_t __a, float16x8_t __b) 5209: { 5209: return __builtin_aarch64_smin_nanv8hf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vminnm_f16 (float16x4_t __a, float16x4_t __b) 5209: { 5209: return __builtin_aarch64_fminv4hf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vminnmq_f16 (float16x8_t __a, float16x8_t __b) 5209: { 5209: return __builtin_aarch64_fminv8hf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmul_f16 (float16x4_t __a, float16x4_t __b) 5209: { 5209: return __a * __b; 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulq_f16 (float16x8_t __a, float16x8_t __b) 5209: { 5209: return __a * __b; 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulx_f16 (float16x4_t __a, float16x4_t __b) 5209: { 5209: return __builtin_aarch64_fmulxv4hf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulxq_f16 (float16x8_t __a, float16x8_t __b) 5209: { 5209: return __builtin_aarch64_fmulxv8hf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpadd_f16 (float16x4_t __a, float16x4_t __b) 5209: { 5209: return __builtin_aarch64_faddpv4hf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpaddq_f16 (float16x8_t __a, float16x8_t __b) 5209: { 5209: return __builtin_aarch64_faddpv8hf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpmax_f16 (float16x4_t __a, float16x4_t __b) 5209: { 5209: return __builtin_aarch64_smax_nanpv4hf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpmaxq_f16 (float16x8_t __a, float16x8_t __b) 5209: { 5209: return __builtin_aarch64_smax_nanpv8hf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpmaxnm_f16 (float16x4_t __a, float16x4_t __b) 5209: { 5209: return __builtin_aarch64_smaxpv4hf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpmaxnmq_f16 (float16x8_t __a, float16x8_t __b) 5209: { 5209: return __builtin_aarch64_smaxpv8hf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpmin_f16 (float16x4_t __a, float16x4_t __b) 5209: { 5209: return __builtin_aarch64_smin_nanpv4hf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpminq_f16 (float16x8_t __a, float16x8_t __b) 5209: { 5209: return __builtin_aarch64_smin_nanpv8hf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpminnm_f16 (float16x4_t __a, float16x4_t __b) 5209: { 5209: return __builtin_aarch64_sminpv4hf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vpminnmq_f16 (float16x8_t __a, float16x8_t __b) 5209: { 5209: return __builtin_aarch64_sminpv8hf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrecps_f16 (float16x4_t __a, float16x4_t __b) 5209: { 5209: return __builtin_aarch64_frecpsv4hf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrecpsq_f16 (float16x8_t __a, float16x8_t __b) 5209: { 5209: return __builtin_aarch64_frecpsv8hf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrsqrts_f16 (float16x4_t __a, float16x4_t __b) 5209: { 5209: return __builtin_aarch64_rsqrtsv4hf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrsqrtsq_f16 (float16x8_t __a, float16x8_t __b) 5209: { 5209: return __builtin_aarch64_rsqrtsv8hf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsub_f16 (float16x4_t __a, float16x4_t __b) 5209: { 5209: return __a - __b; 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsubq_f16 (float16x8_t __a, float16x8_t __b) 5209: { 5209: return __a - __b; 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfma_f16 (float16x4_t __a, float16x4_t __b, float16x4_t __c) 5209: { 5209: return __builtin_aarch64_fmav4hf (__b, __c, __a); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmaq_f16 (float16x8_t __a, float16x8_t __b, float16x8_t __c) 5209: { 5209: return __builtin_aarch64_fmav8hf (__b, __c, __a); 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfms_f16 (float16x4_t __a, float16x4_t __b, float16x4_t __c) 5209: { 5209: return __builtin_aarch64_fnmav4hf (__b, __c, __a); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmsq_f16 (float16x8_t __a, float16x8_t __b, float16x8_t __c) 5209: { 5209: return __builtin_aarch64_fnmav8hf (__b, __c, __a); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmah_lane_f16 (float16_t __a, float16_t __b, 5209: float16x4_t __c, const int __lane) 5209: { 5209: return vfmah_f16 (__a, __b, __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; })); 5209: } 5209: 5209: __extension__ extern __inline float16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmah_laneq_f16 (float16_t __a, float16_t __b, 5209: float16x8_t __c, const int __lane) 5209: { 5209: return vfmah_f16 (__a, __b, __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; })); 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfma_lane_f16 (float16x4_t __a, float16x4_t __b, 5209: float16x4_t __c, const int __lane) 5209: { 5209: return vfma_f16 (__a, __b, vdup_n_f16 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; }))); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmaq_lane_f16 (float16x8_t __a, float16x8_t __b, 5209: float16x4_t __c, const int __lane) 5209: { 5209: return vfmaq_f16 (__a, __b, vdupq_n_f16 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; }))); 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfma_laneq_f16 (float16x4_t __a, float16x4_t __b, 5209: float16x8_t __c, const int __lane) 5209: { 5209: return vfma_f16 (__a, __b, vdup_n_f16 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; }))); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmaq_laneq_f16 (float16x8_t __a, float16x8_t __b, 5209: float16x8_t __c, const int __lane) 5209: { 5209: return vfmaq_f16 (__a, __b, vdupq_n_f16 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; }))); 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfma_n_f16 (float16x4_t __a, float16x4_t __b, float16_t __c) 5209: { 5209: return vfma_f16 (__a, __b, vdup_n_f16 (__c)); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmaq_n_f16 (float16x8_t __a, float16x8_t __b, float16_t __c) 5209: { 5209: return vfmaq_f16 (__a, __b, vdupq_n_f16 (__c)); 5209: } 5209: 5209: __extension__ extern __inline float16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmsh_lane_f16 (float16_t __a, float16_t __b, 5209: float16x4_t __c, const int __lane) 5209: { 5209: return vfmsh_f16 (__a, __b, __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; })); 5209: } 5209: 5209: __extension__ extern __inline float16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmsh_laneq_f16 (float16_t __a, float16_t __b, 5209: float16x8_t __c, const int __lane) 5209: { 5209: return vfmsh_f16 (__a, __b, __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; })); 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfms_lane_f16 (float16x4_t __a, float16x4_t __b, 5209: float16x4_t __c, const int __lane) 5209: { 5209: return vfms_f16 (__a, __b, vdup_n_f16 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; }))); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmsq_lane_f16 (float16x8_t __a, float16x8_t __b, 5209: float16x4_t __c, const int __lane) 5209: { 5209: return vfmsq_f16 (__a, __b, vdupq_n_f16 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; }))); 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfms_laneq_f16 (float16x4_t __a, float16x4_t __b, 5209: float16x8_t __c, const int __lane) 5209: { 5209: return vfms_f16 (__a, __b, vdup_n_f16 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; }))); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmsq_laneq_f16 (float16x8_t __a, float16x8_t __b, 5209: float16x8_t __c, const int __lane) 5209: { 5209: return vfmsq_f16 (__a, __b, vdupq_n_f16 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__c), sizeof(__c[0]), __lane); __c[__lane]; }))); 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfms_n_f16 (float16x4_t __a, float16x4_t __b, float16_t __c) 5209: { 5209: return vfms_f16 (__a, __b, vdup_n_f16 (__c)); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmsq_n_f16 (float16x8_t __a, float16x8_t __b, float16_t __c) 5209: { 5209: return vfmsq_f16 (__a, __b, vdupq_n_f16 (__c)); 5209: } 5209: 5209: __extension__ extern __inline float16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulh_lane_f16 (float16_t __a, float16x4_t __b, const int __lane) 5209: { 5209: return __a * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }); 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmul_lane_f16 (float16x4_t __a, float16x4_t __b, const int __lane) 5209: { 5209: return vmul_f16 (__a, vdup_n_f16 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }))); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulq_lane_f16 (float16x8_t __a, float16x4_t __b, const int __lane) 5209: { 5209: return vmulq_f16 (__a, vdupq_n_f16 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }))); 5209: } 5209: 5209: __extension__ extern __inline float16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulh_laneq_f16 (float16_t __a, float16x8_t __b, const int __lane) 5209: { 5209: return __a * __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }); 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmul_laneq_f16 (float16x4_t __a, float16x8_t __b, const int __lane) 5209: { 5209: return vmul_f16 (__a, vdup_n_f16 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }))); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulq_laneq_f16 (float16x8_t __a, float16x8_t __b, const int __lane) 5209: { 5209: return vmulq_f16 (__a, vdupq_n_f16 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }))); 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmul_n_f16 (float16x4_t __a, float16_t __b) 5209: { 5209: return vmul_lane_f16 (__a, vdup_n_f16 (__b), 0); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulq_n_f16 (float16x8_t __a, float16_t __b) 5209: { 5209: return vmulq_laneq_f16 (__a, vdupq_n_f16 (__b), 0); 5209: } 5209: 5209: __extension__ extern __inline float16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulxh_lane_f16 (float16_t __a, float16x4_t __b, const int __lane) 5209: { 5209: return vmulxh_f16 (__a, __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; })); 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulx_lane_f16 (float16x4_t __a, float16x4_t __b, const int __lane) 5209: { 5209: return vmulx_f16 (__a, vdup_n_f16 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }))); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulxq_lane_f16 (float16x8_t __a, float16x4_t __b, const int __lane) 5209: { 5209: return vmulxq_f16 (__a, vdupq_n_f16 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }))); 5209: } 5209: 5209: __extension__ extern __inline float16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulxh_laneq_f16 (float16_t __a, float16x8_t __b, const int __lane) 5209: { 5209: return vmulxh_f16 (__a, __extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; })); 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulx_laneq_f16 (float16x4_t __a, float16x8_t __b, const int __lane) 5209: { 5209: return vmulx_f16 (__a, vdup_n_f16 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }))); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulxq_laneq_f16 (float16x8_t __a, float16x8_t __b, const int __lane) 5209: { 5209: return vmulxq_f16 (__a, vdupq_n_f16 (__extension__ ({ __builtin_aarch64_im_lane_boundsi (sizeof(__b), sizeof(__b[0]), __lane); __b[__lane]; }))); 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulx_n_f16 (float16x4_t __a, float16_t __b) 5209: { 5209: return vmulx_f16 (__a, vdup_n_f16 (__b)); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmulxq_n_f16 (float16x8_t __a, float16_t __b) 5209: { 5209: return vmulxq_f16 (__a, vdupq_n_f16 (__b)); 5209: } 5209: 5209: 5209: 5209: __extension__ extern __inline float16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmaxv_f16 (float16x4_t __a) 5209: { 5209: return __builtin_aarch64_reduc_smax_nan_scal_v4hf (__a); 5209: } 5209: 5209: __extension__ extern __inline float16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmaxvq_f16 (float16x8_t __a) 5209: { 5209: return __builtin_aarch64_reduc_smax_nan_scal_v8hf (__a); 5209: } 5209: 5209: __extension__ extern __inline float16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vminv_f16 (float16x4_t __a) 5209: { 5209: return __builtin_aarch64_reduc_smin_nan_scal_v4hf (__a); 5209: } 5209: 5209: __extension__ extern __inline float16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vminvq_f16 (float16x8_t __a) 5209: { 5209: return __builtin_aarch64_reduc_smin_nan_scal_v8hf (__a); 5209: } 5209: 5209: __extension__ extern __inline float16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmaxnmv_f16 (float16x4_t __a) 5209: { 5209: return __builtin_aarch64_reduc_smax_scal_v4hf (__a); 5209: } 5209: 5209: __extension__ extern __inline float16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vmaxnmvq_f16 (float16x8_t __a) 5209: { 5209: return __builtin_aarch64_reduc_smax_scal_v8hf (__a); 5209: } 5209: 5209: __extension__ extern __inline float16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vminnmv_f16 (float16x4_t __a) 5209: { 5209: return __builtin_aarch64_reduc_smin_scal_v4hf (__a); 5209: } 5209: 5209: __extension__ extern __inline float16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vminnmvq_f16 (float16x8_t __a) 5209: { 5209: return __builtin_aarch64_reduc_smin_scal_v8hf (__a); 5209: } 5209: 5209: #pragma GCC pop_options 5209: 5209: 5209: 5209: #pragma GCC push_options 5209: #pragma GCC target ("arch=armv8.2-a+dotprod") 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdot_u32 (uint32x2_t __r, uint8x8_t __a, uint8x8_t __b) 5209: { 5209: return __builtin_aarch64_udotv8qi_uuuu (__r, __a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdotq_u32 (uint32x4_t __r, uint8x16_t __a, uint8x16_t __b) 5209: { 5209: return __builtin_aarch64_udotv16qi_uuuu (__r, __a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdot_s32 (int32x2_t __r, int8x8_t __a, int8x8_t __b) 5209: { 5209: return __builtin_aarch64_sdotv8qi (__r, __a, __b); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdotq_s32 (int32x4_t __r, int8x16_t __a, int8x16_t __b) 5209: { 5209: return __builtin_aarch64_sdotv16qi (__r, __a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdot_lane_u32 (uint32x2_t __r, uint8x8_t __a, uint8x8_t __b, const int __index) 5209: { 5209: return __builtin_aarch64_udot_lanev8qi_uuuus (__r, __a, __b, __index); 5209: } 5209: 5209: __extension__ extern __inline uint32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdot_laneq_u32 (uint32x2_t __r, uint8x8_t __a, uint8x16_t __b, 5209: const int __index) 5209: { 5209: return __builtin_aarch64_udot_laneqv8qi_uuuus (__r, __a, __b, __index); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdotq_lane_u32 (uint32x4_t __r, uint8x16_t __a, uint8x8_t __b, 5209: const int __index) 5209: { 5209: return __builtin_aarch64_udot_lanev16qi_uuuus (__r, __a, __b, __index); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdotq_laneq_u32 (uint32x4_t __r, uint8x16_t __a, uint8x16_t __b, 5209: const int __index) 5209: { 5209: return __builtin_aarch64_udot_laneqv16qi_uuuus (__r, __a, __b, __index); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdot_lane_s32 (int32x2_t __r, int8x8_t __a, int8x8_t __b, const int __index) 5209: { 5209: return __builtin_aarch64_sdot_lanev8qi (__r, __a, __b, __index); 5209: } 5209: 5209: __extension__ extern __inline int32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdot_laneq_s32 (int32x2_t __r, int8x8_t __a, int8x16_t __b, const int __index) 5209: { 5209: return __builtin_aarch64_sdot_laneqv8qi (__r, __a, __b, __index); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdotq_lane_s32 (int32x4_t __r, int8x16_t __a, int8x8_t __b, const int __index) 5209: { 5209: return __builtin_aarch64_sdot_lanev16qi (__r, __a, __b, __index); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vdotq_laneq_s32 (int32x4_t __r, int8x16_t __a, int8x16_t __b, const int __index) 5209: { 5209: return __builtin_aarch64_sdot_laneqv16qi (__r, __a, __b, __index); 5209: } 5209: #pragma GCC pop_options 5209: 5209: #pragma GCC push_options 5209: #pragma GCC target ("arch=armv8.2-a+sm4") 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsm3ss1q_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c) 5209: { 5209: return __builtin_aarch64_sm3ss1qv4si_uuuu (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsm3tt1aq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c, const int __imm2) 5209: { 5209: return __builtin_aarch64_sm3tt1aqv4si_uuuus (__a, __b, __c, __imm2); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsm3tt1bq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c, const int __imm2) 5209: { 5209: return __builtin_aarch64_sm3tt1bqv4si_uuuus (__a, __b, __c, __imm2); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsm3tt2aq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c, const int __imm2) 5209: { 5209: return __builtin_aarch64_sm3tt2aqv4si_uuuus (__a, __b, __c, __imm2); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsm3tt2bq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c, const int __imm2) 5209: { 5209: return __builtin_aarch64_sm3tt2bqv4si_uuuus (__a, __b, __c, __imm2); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsm3partw1q_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c) 5209: { 5209: return __builtin_aarch64_sm3partw1qv4si_uuuu (__a, __b, __c); 5209: } 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsm3partw2q_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c) 5209: { 5209: return __builtin_aarch64_sm3partw2qv4si_uuuu (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsm4eq_u32 (uint32x4_t __a, uint32x4_t __b) 5209: { 5209: return __builtin_aarch64_sm4eqv4si_uuu (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsm4ekeyq_u32 (uint32x4_t __a, uint32x4_t __b) 5209: { 5209: return __builtin_aarch64_sm4ekeyqv4si_uuu (__a, __b); 5209: } 5209: 5209: #pragma GCC pop_options 5209: 5209: #pragma GCC push_options 5209: #pragma GCC target ("arch=armv8.2-a+sha3") 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsha512hq_u64 (uint64x2_t __a, uint64x2_t __b, uint64x2_t __c) 5209: { 5209: return __builtin_aarch64_crypto_sha512hqv2di_uuuu (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsha512h2q_u64 (uint64x2_t __a, uint64x2_t __b, uint64x2_t __c) 5209: { 5209: return __builtin_aarch64_crypto_sha512h2qv2di_uuuu (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsha512su0q_u64 (uint64x2_t __a, uint64x2_t __b) 5209: { 5209: return __builtin_aarch64_crypto_sha512su0qv2di_uuu (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vsha512su1q_u64 (uint64x2_t __a, uint64x2_t __b, uint64x2_t __c) 5209: { 5209: return __builtin_aarch64_crypto_sha512su1qv2di_uuuu (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: veor3q_u8 (uint8x16_t __a, uint8x16_t __b, uint8x16_t __c) 5209: { 5209: return __builtin_aarch64_eor3qv16qi_uuuu (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: veor3q_u16 (uint16x8_t __a, uint16x8_t __b, uint16x8_t __c) 5209: { 5209: return __builtin_aarch64_eor3qv8hi_uuuu (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: veor3q_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c) 5209: { 5209: return __builtin_aarch64_eor3qv4si_uuuu (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: veor3q_u64 (uint64x2_t __a, uint64x2_t __b, uint64x2_t __c) 5209: { 5209: return __builtin_aarch64_eor3qv2di_uuuu (__a, __b, __c); 5209: } 5209: 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: veor3q_s8 (int8x16_t __a, int8x16_t __b, int8x16_t __c) 5209: { 5209: return __builtin_aarch64_eor3qv16qi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: veor3q_s16 (int16x8_t __a, int16x8_t __b, int16x8_t __c) 5209: { 5209: return __builtin_aarch64_eor3qv8hi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: veor3q_s32 (int32x4_t __a, int32x4_t __b, int32x4_t __c) 5209: { 5209: return __builtin_aarch64_eor3qv4si (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: veor3q_s64 (int64x2_t __a, int64x2_t __b, int64x2_t __c) 5209: { 5209: return __builtin_aarch64_eor3qv2di (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrax1q_u64 (uint64x2_t __a, uint64x2_t __b) 5209: { 5209: return __builtin_aarch64_rax1qv2di_uuu (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vxarq_u64 (uint64x2_t __a, uint64x2_t __b, const int imm6) 5209: { 5209: return __builtin_aarch64_xarqv2di_uuus (__a, __b,imm6); 5209: } 5209: 5209: __extension__ extern __inline uint8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vbcaxq_u8 (uint8x16_t __a, uint8x16_t __b, uint8x16_t __c) 5209: { 5209: return __builtin_aarch64_bcaxqv16qi_uuuu (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline uint16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vbcaxq_u16 (uint16x8_t __a, uint16x8_t __b, uint16x8_t __c) 5209: { 5209: return __builtin_aarch64_bcaxqv8hi_uuuu (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline uint32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vbcaxq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c) 5209: { 5209: return __builtin_aarch64_bcaxqv4si_uuuu (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline uint64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vbcaxq_u64 (uint64x2_t __a, uint64x2_t __b, uint64x2_t __c) 5209: { 5209: return __builtin_aarch64_bcaxqv2di_uuuu (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int8x16_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vbcaxq_s8 (int8x16_t __a, int8x16_t __b, int8x16_t __c) 5209: { 5209: return __builtin_aarch64_bcaxqv16qi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vbcaxq_s16 (int16x8_t __a, int16x8_t __b, int16x8_t __c) 5209: { 5209: return __builtin_aarch64_bcaxqv8hi (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vbcaxq_s32 (int32x4_t __a, int32x4_t __b, int32x4_t __c) 5209: { 5209: return __builtin_aarch64_bcaxqv4si (__a, __b, __c); 5209: } 5209: 5209: __extension__ extern __inline int64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vbcaxq_s64 (int64x2_t __a, int64x2_t __b, int64x2_t __c) 5209: { 5209: return __builtin_aarch64_bcaxqv2di (__a, __b, __c); 5209: } 5209: 5209: #pragma GCC pop_options 5209: 5209: 5209: 5209: #pragma GCC push_options 5209: #pragma GCC target ("arch=armv8.3-a") 5209: 5209: #pragma GCC push_options 5209: #pragma GCC target ("+fp16") 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcadd_rot90_f16 (float16x4_t __a, float16x4_t __b) 5209: { 5209: return __builtin_aarch64_fcadd90v4hf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcaddq_rot90_f16 (float16x8_t __a, float16x8_t __b) 5209: { 5209: return __builtin_aarch64_fcadd90v8hf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcadd_rot270_f16 (float16x4_t __a, float16x4_t __b) 5209: { 5209: return __builtin_aarch64_fcadd270v4hf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcaddq_rot270_f16 (float16x8_t __a, float16x8_t __b) 5209: { 5209: return __builtin_aarch64_fcadd270v8hf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcmla_f16 (float16x4_t __r, float16x4_t __a, float16x4_t __b) 5209: { 5209: return __builtin_aarch64_fcmla0v4hf (__r, __a, __b); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcmlaq_f16 (float16x8_t __r, float16x8_t __a, float16x8_t __b) 5209: { 5209: return __builtin_aarch64_fcmla0v8hf (__r, __a, __b); 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcmla_lane_f16 (float16x4_t __r, float16x4_t __a, float16x4_t __b, 5209: const int __index) 5209: { 5209: return __builtin_aarch64_fcmla_lane0v4hf (__r, __a, __b, __index); 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcmla_laneq_f16 (float16x4_t __r, float16x4_t __a, float16x8_t __b, 5209: const int __index) 5209: { 5209: return __builtin_aarch64_fcmla_laneq0v4hf (__r, __a, __b, __index); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcmlaq_lane_f16 (float16x8_t __r, float16x8_t __a, float16x4_t __b, 5209: const int __index) 5209: { 5209: return __builtin_aarch64_fcmlaq_lane0v8hf (__r, __a, __b, __index); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcmlaq_rot90_lane_f16 (float16x8_t __r, float16x8_t __a, float16x4_t __b, 5209: const int __index) 5209: { 5209: return __builtin_aarch64_fcmlaq_lane90v8hf (__r, __a, __b, __index); 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcmla_rot90_laneq_f16 (float16x4_t __r, float16x4_t __a, float16x8_t __b, 5209: const int __index) 5209: { 5209: return __builtin_aarch64_fcmla_laneq90v4hf (__r, __a, __b, __index); 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcmla_rot90_lane_f16 (float16x4_t __r, float16x4_t __a, float16x4_t __b, 5209: const int __index) 5209: { 5209: return __builtin_aarch64_fcmla_lane90v4hf (__r, __a, __b, __index); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcmlaq_rot90_f16 (float16x8_t __r, float16x8_t __a, float16x8_t __b) 5209: { 5209: return __builtin_aarch64_fcmla90v8hf (__r, __a, __b); 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcmla_rot90_f16 (float16x4_t __r, float16x4_t __a, float16x4_t __b) 5209: { 5209: return __builtin_aarch64_fcmla90v4hf (__r, __a, __b); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcmlaq_laneq_f16 (float16x8_t __r, float16x8_t __a, float16x8_t __b, 5209: const int __index) 5209: { 5209: return __builtin_aarch64_fcmla_lane0v8hf (__r, __a, __b, __index); 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcmla_rot180_laneq_f16 (float16x4_t __r, float16x4_t __a, float16x8_t __b, 5209: const int __index) 5209: { 5209: return __builtin_aarch64_fcmla_laneq180v4hf (__r, __a, __b, __index); 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcmla_rot180_lane_f16 (float16x4_t __r, float16x4_t __a, float16x4_t __b, 5209: const int __index) 5209: { 5209: return __builtin_aarch64_fcmla_lane180v4hf (__r, __a, __b, __index); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcmlaq_rot180_f16 (float16x8_t __r, float16x8_t __a, float16x8_t __b) 5209: { 5209: return __builtin_aarch64_fcmla180v8hf (__r, __a, __b); 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcmla_rot180_f16 (float16x4_t __r, float16x4_t __a, float16x4_t __b) 5209: { 5209: return __builtin_aarch64_fcmla180v4hf (__r, __a, __b); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcmlaq_rot90_laneq_f16 (float16x8_t __r, float16x8_t __a, float16x8_t __b, 5209: const int __index) 5209: { 5209: return __builtin_aarch64_fcmla_lane90v8hf (__r, __a, __b, __index); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcmlaq_rot270_laneq_f16 (float16x8_t __r, float16x8_t __a, float16x8_t __b, 5209: const int __index) 5209: { 5209: return __builtin_aarch64_fcmla_lane270v8hf (__r, __a, __b, __index); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcmlaq_rot270_lane_f16 (float16x8_t __r, float16x8_t __a, float16x4_t __b, 5209: const int __index) 5209: { 5209: return __builtin_aarch64_fcmlaq_lane270v8hf (__r, __a, __b, __index); 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcmla_rot270_laneq_f16 (float16x4_t __r, float16x4_t __a, float16x8_t __b, 5209: const int __index) 5209: { 5209: return __builtin_aarch64_fcmla_laneq270v4hf (__r, __a, __b, __index); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcmlaq_rot270_f16 (float16x8_t __r, float16x8_t __a, float16x8_t __b) 5209: { 5209: return __builtin_aarch64_fcmla270v8hf (__r, __a, __b); 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcmla_rot270_f16 (float16x4_t __r, float16x4_t __a, float16x4_t __b) 5209: { 5209: return __builtin_aarch64_fcmla270v4hf (__r, __a, __b); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcmlaq_rot180_laneq_f16 (float16x8_t __r, float16x8_t __a, float16x8_t __b, 5209: const int __index) 5209: { 5209: return __builtin_aarch64_fcmla_lane180v8hf (__r, __a, __b, __index); 5209: } 5209: 5209: __extension__ extern __inline float16x8_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcmlaq_rot180_lane_f16 (float16x8_t __r, float16x8_t __a, float16x4_t __b, 5209: const int __index) 5209: { 5209: return __builtin_aarch64_fcmlaq_lane180v8hf (__r, __a, __b, __index); 5209: } 5209: 5209: __extension__ extern __inline float16x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcmla_rot270_lane_f16 (float16x4_t __r, float16x4_t __a, float16x4_t __b, 5209: const int __index) 5209: { 5209: return __builtin_aarch64_fcmla_lane270v4hf (__r, __a, __b, __index); 5209: } 5209: #pragma GCC pop_options 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcadd_rot90_f32 (float32x2_t __a, float32x2_t __b) 5209: { 5209: return __builtin_aarch64_fcadd90v2sf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcaddq_rot90_f32 (float32x4_t __a, float32x4_t __b) 5209: { 5209: return __builtin_aarch64_fcadd90v4sf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcaddq_rot90_f64 (float64x2_t __a, float64x2_t __b) 5209: { 5209: return __builtin_aarch64_fcadd90v2df (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcadd_rot270_f32 (float32x2_t __a, float32x2_t __b) 5209: { 5209: return __builtin_aarch64_fcadd270v2sf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcaddq_rot270_f32 (float32x4_t __a, float32x4_t __b) 5209: { 5209: return __builtin_aarch64_fcadd270v4sf (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcaddq_rot270_f64 (float64x2_t __a, float64x2_t __b) 5209: { 5209: return __builtin_aarch64_fcadd270v2df (__a, __b); 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcmla_f32 (float32x2_t __r, float32x2_t __a, float32x2_t __b) 5209: { 5209: return __builtin_aarch64_fcmla0v2sf (__r, __a, __b); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcmlaq_f32 (float32x4_t __r, float32x4_t __a, float32x4_t __b) 5209: { 5209: return __builtin_aarch64_fcmla0v4sf (__r, __a, __b); 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcmlaq_f64 (float64x2_t __r, float64x2_t __a, float64x2_t __b) 5209: { 5209: return __builtin_aarch64_fcmla0v2df (__r, __a, __b); 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcmla_lane_f32 (float32x2_t __r, float32x2_t __a, float32x2_t __b, 5209: const int __index) 5209: { 5209: return __builtin_aarch64_fcmla_lane0v2sf (__r, __a, __b, __index); 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcmla_laneq_f32 (float32x2_t __r, float32x2_t __a, float32x4_t __b, 5209: const int __index) 5209: { 5209: return __builtin_aarch64_fcmla_laneq0v2sf (__r, __a, __b, __index); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcmlaq_lane_f32 (float32x4_t __r, float32x4_t __a, float32x2_t __b, 5209: const int __index) 5209: { 5209: return __builtin_aarch64_fcmlaq_lane0v4sf (__r, __a, __b, __index); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcmlaq_laneq_f32 (float32x4_t __r, float32x4_t __a, float32x4_t __b, 5209: const int __index) 5209: { 5209: return __builtin_aarch64_fcmla_lane0v4sf (__r, __a, __b, __index); 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcmla_rot90_f32 (float32x2_t __r, float32x2_t __a, float32x2_t __b) 5209: { 5209: return __builtin_aarch64_fcmla90v2sf (__r, __a, __b); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcmlaq_rot90_f32 (float32x4_t __r, float32x4_t __a, float32x4_t __b) 5209: { 5209: return __builtin_aarch64_fcmla90v4sf (__r, __a, __b); 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcmlaq_rot90_f64 (float64x2_t __r, float64x2_t __a, float64x2_t __b) 5209: { 5209: return __builtin_aarch64_fcmla90v2df (__r, __a, __b); 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcmla_rot90_lane_f32 (float32x2_t __r, float32x2_t __a, float32x2_t __b, 5209: const int __index) 5209: { 5209: return __builtin_aarch64_fcmla_lane90v2sf (__r, __a, __b, __index); 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcmla_rot90_laneq_f32 (float32x2_t __r, float32x2_t __a, float32x4_t __b, 5209: const int __index) 5209: { 5209: return __builtin_aarch64_fcmla_laneq90v2sf (__r, __a, __b, __index); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcmlaq_rot90_lane_f32 (float32x4_t __r, float32x4_t __a, float32x2_t __b, 5209: const int __index) 5209: { 5209: return __builtin_aarch64_fcmlaq_lane90v4sf (__r, __a, __b, __index); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcmlaq_rot90_laneq_f32 (float32x4_t __r, float32x4_t __a, float32x4_t __b, 5209: const int __index) 5209: { 5209: return __builtin_aarch64_fcmla_lane90v4sf (__r, __a, __b, __index); 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcmla_rot180_f32 (float32x2_t __r, float32x2_t __a, float32x2_t __b) 5209: { 5209: return __builtin_aarch64_fcmla180v2sf (__r, __a, __b); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcmlaq_rot180_f32 (float32x4_t __r, float32x4_t __a, float32x4_t __b) 5209: { 5209: return __builtin_aarch64_fcmla180v4sf (__r, __a, __b); 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcmlaq_rot180_f64 (float64x2_t __r, float64x2_t __a, float64x2_t __b) 5209: { 5209: return __builtin_aarch64_fcmla180v2df (__r, __a, __b); 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcmla_rot180_lane_f32 (float32x2_t __r, float32x2_t __a, float32x2_t __b, 5209: const int __index) 5209: { 5209: return __builtin_aarch64_fcmla_lane180v2sf (__r, __a, __b, __index); 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcmla_rot180_laneq_f32 (float32x2_t __r, float32x2_t __a, float32x4_t __b, 5209: const int __index) 5209: { 5209: return __builtin_aarch64_fcmla_laneq180v2sf (__r, __a, __b, __index); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcmlaq_rot180_lane_f32 (float32x4_t __r, float32x4_t __a, float32x2_t __b, 5209: const int __index) 5209: { 5209: return __builtin_aarch64_fcmlaq_lane180v4sf (__r, __a, __b, __index); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcmlaq_rot180_laneq_f32 (float32x4_t __r, float32x4_t __a, float32x4_t __b, 5209: const int __index) 5209: { 5209: return __builtin_aarch64_fcmla_lane180v4sf (__r, __a, __b, __index); 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcmla_rot270_f32 (float32x2_t __r, float32x2_t __a, float32x2_t __b) 5209: { 5209: return __builtin_aarch64_fcmla270v2sf (__r, __a, __b); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcmlaq_rot270_f32 (float32x4_t __r, float32x4_t __a, float32x4_t __b) 5209: { 5209: return __builtin_aarch64_fcmla270v4sf (__r, __a, __b); 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcmlaq_rot270_f64 (float64x2_t __r, float64x2_t __a, float64x2_t __b) 5209: { 5209: return __builtin_aarch64_fcmla270v2df (__r, __a, __b); 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcmla_rot270_lane_f32 (float32x2_t __r, float32x2_t __a, float32x2_t __b, 5209: const int __index) 5209: { 5209: return __builtin_aarch64_fcmla_lane270v2sf (__r, __a, __b, __index); 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcmla_rot270_laneq_f32 (float32x2_t __r, float32x2_t __a, float32x4_t __b, 5209: const int __index) 5209: { 5209: return __builtin_aarch64_fcmla_laneq270v2sf (__r, __a, __b, __index); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcmlaq_rot270_lane_f32 (float32x4_t __r, float32x4_t __a, float32x2_t __b, 5209: const int __index) 5209: { 5209: return __builtin_aarch64_fcmlaq_lane270v4sf (__r, __a, __b, __index); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vcmlaq_rot270_laneq_f32 (float32x4_t __r, float32x4_t __a, float32x4_t __b, 5209: const int __index) 5209: { 5209: return __builtin_aarch64_fcmla_lane270v4sf (__r, __a, __b, __index); 5209: } 5209: 5209: #pragma GCC pop_options 5209: 5209: #pragma GCC push_options 5209: #pragma GCC target ("arch=armv8.2-a+fp16fml") 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmlal_low_f16 (float32x2_t __r, float16x4_t __a, float16x4_t __b) 5209: { 5209: return __builtin_aarch64_fmlal_lowv2sf (__r, __a, __b); 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmlsl_low_f16 (float32x2_t __r, float16x4_t __a, float16x4_t __b) 5209: { 5209: return __builtin_aarch64_fmlsl_lowv2sf (__r, __a, __b); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmlalq_low_f16 (float32x4_t __r, float16x8_t __a, float16x8_t __b) 5209: { 5209: return __builtin_aarch64_fmlalq_lowv4sf (__r, __a, __b); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmlslq_low_f16 (float32x4_t __r, float16x8_t __a, float16x8_t __b) 5209: { 5209: return __builtin_aarch64_fmlslq_lowv4sf (__r, __a, __b); 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmlal_high_f16 (float32x2_t __r, float16x4_t __a, float16x4_t __b) 5209: { 5209: return __builtin_aarch64_fmlal_highv2sf (__r, __a, __b); 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmlsl_high_f16 (float32x2_t __r, float16x4_t __a, float16x4_t __b) 5209: { 5209: return __builtin_aarch64_fmlsl_highv2sf (__r, __a, __b); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmlalq_high_f16 (float32x4_t __r, float16x8_t __a, float16x8_t __b) 5209: { 5209: return __builtin_aarch64_fmlalq_highv4sf (__r, __a, __b); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmlslq_high_f16 (float32x4_t __r, float16x8_t __a, float16x8_t __b) 5209: { 5209: return __builtin_aarch64_fmlslq_highv4sf (__r, __a, __b); 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmlal_lane_low_f16 (float32x2_t __r, float16x4_t __a, float16x4_t __b, 5209: const int __lane) 5209: { 5209: return __builtin_aarch64_fmlal_lane_lowv2sf (__r, __a, __b, __lane); 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmlsl_lane_low_f16 (float32x2_t __r, float16x4_t __a, float16x4_t __b, 5209: const int __lane) 5209: { 5209: return __builtin_aarch64_fmlsl_lane_lowv2sf (__r, __a, __b, __lane); 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmlal_laneq_low_f16 (float32x2_t __r, float16x4_t __a, float16x8_t __b, 5209: const int __lane) 5209: { 5209: return __builtin_aarch64_fmlal_laneq_lowv2sf (__r, __a, __b, __lane); 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmlsl_laneq_low_f16 (float32x2_t __r, float16x4_t __a, float16x8_t __b, 5209: const int __lane) 5209: { 5209: return __builtin_aarch64_fmlsl_laneq_lowv2sf (__r, __a, __b, __lane); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmlalq_lane_low_f16 (float32x4_t __r, float16x8_t __a, float16x4_t __b, 5209: const int __lane) 5209: { 5209: return __builtin_aarch64_fmlalq_lane_lowv4sf (__r, __a, __b, __lane); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmlslq_lane_low_f16 (float32x4_t __r, float16x8_t __a, float16x4_t __b, 5209: const int __lane) 5209: { 5209: return __builtin_aarch64_fmlslq_lane_lowv4sf (__r, __a, __b, __lane); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmlalq_laneq_low_f16 (float32x4_t __r, float16x8_t __a, float16x8_t __b, 5209: const int __lane) 5209: { 5209: return __builtin_aarch64_fmlalq_laneq_lowv4sf (__r, __a, __b, __lane); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmlslq_laneq_low_f16 (float32x4_t __r, float16x8_t __a, float16x8_t __b, 5209: const int __lane) 5209: { 5209: return __builtin_aarch64_fmlslq_laneq_lowv4sf (__r, __a, __b, __lane); 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmlal_lane_high_f16 (float32x2_t __r, float16x4_t __a, float16x4_t __b, 5209: const int __lane) 5209: { 5209: return __builtin_aarch64_fmlal_lane_highv2sf (__r, __a, __b, __lane); 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmlsl_lane_high_f16 (float32x2_t __r, float16x4_t __a, float16x4_t __b, 5209: const int __lane) 5209: { 5209: return __builtin_aarch64_fmlsl_lane_highv2sf (__r, __a, __b, __lane); 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmlal_laneq_high_f16 (float32x2_t __r, float16x4_t __a, float16x8_t __b, 5209: const int __lane) 5209: { 5209: return __builtin_aarch64_fmlal_laneq_highv2sf (__r, __a, __b, __lane); 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmlsl_laneq_high_f16 (float32x2_t __r, float16x4_t __a, float16x8_t __b, 5209: const int __lane) 5209: { 5209: return __builtin_aarch64_fmlsl_laneq_highv2sf (__r, __a, __b, __lane); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmlalq_lane_high_f16 (float32x4_t __r, float16x8_t __a, float16x4_t __b, 5209: const int __lane) 5209: { 5209: return __builtin_aarch64_fmlalq_lane_highv4sf (__r, __a, __b, __lane); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmlslq_lane_high_f16 (float32x4_t __r, float16x8_t __a, float16x4_t __b, 5209: const int __lane) 5209: { 5209: return __builtin_aarch64_fmlslq_lane_highv4sf (__r, __a, __b, __lane); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmlalq_laneq_high_f16 (float32x4_t __r, float16x8_t __a, float16x8_t __b, 5209: const int __lane) 5209: { 5209: return __builtin_aarch64_fmlalq_laneq_highv4sf (__r, __a, __b, __lane); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vfmlslq_laneq_high_f16 (float32x4_t __r, float16x8_t __a, float16x8_t __b, 5209: const int __lane) 5209: { 5209: return __builtin_aarch64_fmlslq_laneq_highv4sf (__r, __a, __b, __lane); 5209: } 5209: 5209: #pragma GCC pop_options 5209: 5209: #pragma GCC push_options 5209: #pragma GCC target ("arch=armv8.5-a") 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrnd32z_f32 (float32x2_t __a) 5209: { 5209: return __builtin_aarch64_frint32zv2sf (__a); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrnd32zq_f32 (float32x4_t __a) 5209: { 5209: return __builtin_aarch64_frint32zv4sf (__a); 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrnd32z_f64 (float64x1_t __a) 5209: { 5209: return (float64x1_t) 5209: {__builtin_aarch64_frint32zdf (vget_lane_f64 (__a, 0))}; 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrnd32zq_f64 (float64x2_t __a) 5209: { 5209: return __builtin_aarch64_frint32zv2df (__a); 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrnd32x_f32 (float32x2_t __a) 5209: { 5209: return __builtin_aarch64_frint32xv2sf (__a); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrnd32xq_f32 (float32x4_t __a) 5209: { 5209: return __builtin_aarch64_frint32xv4sf (__a); 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrnd32x_f64 (float64x1_t __a) 5209: { 5209: return (float64x1_t) {__builtin_aarch64_frint32xdf (vget_lane_f64 (__a, 0))}; 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrnd32xq_f64 (float64x2_t __a) 5209: { 5209: return __builtin_aarch64_frint32xv2df (__a); 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrnd64z_f32 (float32x2_t __a) 5209: { 5209: return __builtin_aarch64_frint64zv2sf (__a); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrnd64zq_f32 (float32x4_t __a) 5209: { 5209: return __builtin_aarch64_frint64zv4sf (__a); 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrnd64z_f64 (float64x1_t __a) 5209: { 5209: return (float64x1_t) {__builtin_aarch64_frint64zdf (vget_lane_f64 (__a, 0))}; 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrnd64zq_f64 (float64x2_t __a) 5209: { 5209: return __builtin_aarch64_frint64zv2df (__a); 5209: } 5209: 5209: __extension__ extern __inline float32x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrnd64x_f32 (float32x2_t __a) 5209: { 5209: return __builtin_aarch64_frint64xv2sf (__a); 5209: } 5209: 5209: __extension__ extern __inline float32x4_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrnd64xq_f32 (float32x4_t __a) 5209: { 5209: return __builtin_aarch64_frint64xv4sf (__a); 5209: } 5209: 5209: __extension__ extern __inline float64x1_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrnd64x_f64 (float64x1_t __a) 5209: { 5209: return (float64x1_t) {__builtin_aarch64_frint64xdf (vget_lane_f64 (__a, 0))}; 5209: } 5209: 5209: __extension__ extern __inline float64x2_t 5209: __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) 5209: vrnd64xq_f64 (float64x2_t __a) 5209: { 5209: return __builtin_aarch64_frint64xv2df (__a); 5209: } 5209: 5209: #pragma GCC pop_options 5209: # 26 "/<>/test/../public/../internal/../internal/kernel_neon.h" 2 5209: # 1 "/usr/include/c++/10/cassert" 1 3 5209: # 41 "/usr/include/c++/10/cassert" 3 5209: 5209: # 42 "/usr/include/c++/10/cassert" 3 5209: 5209: 5209: # 1 "/usr/include/assert.h" 1 3 4 5209: # 45 "/usr/include/c++/10/cassert" 2 3 5209: # 27 "/<>/test/../public/../internal/../internal/kernel_neon.h" 2 5209: 5209: 5209: # 28 "/<>/test/../public/../internal/../internal/kernel_neon.h" 5209: namespace gemmlowp { 5209: # 943 "/<>/test/../public/../internal/../internal/kernel_neon.h" 5209: struct NEON_64bit_GEMM_Int8Operands_LhsNonzero : KernelBase { 5209: typedef KernelFormat< 5209: KernelSideFormatInt8, 1>, 5209: KernelSideFormatInt8, 1> > 5209: Format; 5209: const char* Name() const override { 5209: return "NEON, 4x4, depth 16, accumulating two within signed int16"; 5209: } 5209: 5209: 5209: void Run(std::int32_t* dst_ptr, std::size_t dst_row_stride, 5209: std::size_t dst_col_stride, const std::uint8_t* lhs_ptr, 5209: const std::uint8_t* rhs_ptr, std::size_t start_depth, 5209: std::size_t run_depth) const override { 5209: (void)dst_row_stride; 5209: 5209: 5209: 5209: 5209: asm volatile( 5209: 5209: 5209: 5209: 5209: "ld1 {v0.16b}, [%[rhs_ptr]], #16\n" 5209: "dup v16.4s, wzr\n" 5209: "ld1 {v4.16b}, [%[lhs_ptr]], #16\n" 5209: "dup v17.4s, wzr\n" 5209: "ld1 {v1.16b}, [%[rhs_ptr]], #16\n" 5209: "dup v18.4s, wzr\n" 5209: "ld1 {v5.16b}, [%[lhs_ptr]], #16\n" 5209: "dup v19.4s, wzr\n" 5209: "ld1 {v2.16b}, [%[rhs_ptr]], #16\n" 5209: "dup v20.4s, wzr\n" 5209: "ld1 {v3.16b}, [%[rhs_ptr]], #16\n" 5209: "dup v21.4s, wzr\n" 5209: "ld1 {v6.16b}, [%[lhs_ptr]], #16\n" 5209: "dup v22.4s, wzr\n" 5209: "ld1 {v7.16b}, [%[lhs_ptr]], #16\n" 5209: "dup v23.4s, wzr\n" 5209: "dup v24.4s, wzr\n" 5209: "dup v25.4s, wzr\n" 5209: "dup v26.4s, wzr\n" 5209: "dup v27.4s, wzr\n" 5209: "dup v28.4s, wzr\n" 5209: "dup v29.4s, wzr\n" 5209: "dup v30.4s, wzr\n" 5209: "dup v31.4s, wzr\n" 5209: 5209: 5209: 5209: "lsl %[dst_col_stride], %[dst_col_stride], #2\n" 5209: 5209: 5209: 5209: 5209: "smull v8.8h, v0.8b, v4.8b\n" 5209: "smull v9.8h, v1.8b, v4.8b\n" 5209: "smull v10.8h, v2.8b, v4.8b\n" 5209: "smull v11.8h, v3.8b, v4.8b\n" 5209: "smull v12.8h, v0.8b, v5.8b\n" 5209: "smull v13.8h, v1.8b, v5.8b\n" 5209: "smull v14.8h, v2.8b, v5.8b\n" 5209: "smull v15.8h, v3.8b, v5.8b\n" 5209: 5209: 5209: 5209: 5209: 5209: "smlal2 v8.8h, v0.16b, v4.16b\n" 5209: "smlal2 v9.8h, v1.16b, v4.16b\n" 5209: "smlal2 v10.8h, v2.16b, v4.16b\n" 5209: "smlal2 v11.8h, v3.16b, v4.16b\n" 5209: "smlal2 v12.8h, v0.16b, v5.16b\n" 5209: "smlal2 v13.8h, v1.16b, v5.16b\n" 5209: "smlal2 v14.8h, v2.16b, v5.16b\n" 5209: "smlal2 v15.8h, v3.16b, v5.16b\n" 5209: 5209: "subs %[run_depth], %[run_depth], #16\n" 5209: 5209: 5209: 5209: "beq " "1" "f\n" 5209: 5209: 5209: "2" 5209: ":\n" 5209: # 1083 "/<>/test/../public/../internal/../internal/kernel_neon.h" 5209: "sadalp v16.4s, v8.8h\n" 5209: "ld1 {v4.16b}, [%[lhs_ptr]], #16\n" 5209: "smull v8.8h, v0.8b, v6.8b\n" 5209: "sadalp v17.4s, v9.8h\n" 5209: "ld1 {v5.16b}, [%[lhs_ptr]], #16\n" 5209: "smull v9.8h, v1.8b, v6.8b\n" 5209: "sadalp v18.4s, v10.8h\n" 5209: "smull v10.8h, v2.8b, v6.8b\n" 5209: "sadalp v19.4s, v11.8h\n" 5209: "smull v11.8h, v3.8b, v6.8b\n" 5209: "sadalp v20.4s, v12.8h\n" 5209: "smull v12.8h, v0.8b, v7.8b\n" 5209: "sadalp v21.4s, v13.8h\n" 5209: "smull v13.8h, v1.8b, v7.8b\n" 5209: "sadalp v22.4s, v14.8h\n" 5209: "smull v14.8h, v2.8b, v7.8b\n" 5209: "sadalp v23.4s, v15.8h\n" 5209: "smull v15.8h, v3.8b, v7.8b\n" 5209: 5209: 5209: 5209: 5209: 5209: "smlal2 v8.8h, v0.16b, v6.16b\n" 5209: "smlal2 v9.8h, v1.16b, v6.16b\n" 5209: "smlal2 v10.8h, v2.16b, v6.16b\n" 5209: "smlal2 v11.8h, v3.16b, v6.16b\n" 5209: 5209: "ld1 {v6.16b}, [%[lhs_ptr]], #16\n" 5209: 5209: "smlal2 v12.8h, v0.16b, v7.16b\n" 5209: "ld1 {v0.16b}, [%[rhs_ptr]], #16\n" 5209: "smlal2 v13.8h, v1.16b, v7.16b\n" 5209: "ld1 {v1.16b}, [%[rhs_ptr]], #16\n" 5209: "smlal2 v14.8h, v2.16b, v7.16b\n" 5209: "ld1 {v2.16b}, [%[rhs_ptr]], #16\n" 5209: "smlal2 v15.8h, v3.16b, v7.16b\n" 5209: "ld1 {v3.16b}, [%[rhs_ptr]], #16\n" 5209: 5209: "sadalp v24.4s, v8.8h\n" 5209: "smull v8.8h, v0.8b, v4.8b\n" 5209: "sadalp v25.4s, v9.8h\n" 5209: "ld1 {v7.16b}, [%[lhs_ptr]], #16\n" 5209: "smull v9.8h, v1.8b, v4.8b\n" 5209: "sadalp v26.4s, v10.8h\n" 5209: "smull v10.8h, v2.8b, v4.8b\n" 5209: "sadalp v27.4s, v11.8h\n" 5209: "smull v11.8h, v3.8b, v4.8b\n" 5209: "sadalp v28.4s, v12.8h\n" 5209: "smull v12.8h, v0.8b, v5.8b\n" 5209: "sadalp v29.4s, v13.8h\n" 5209: "smull v13.8h, v1.8b, v5.8b\n" 5209: "sadalp v30.4s, v14.8h\n" 5209: "smull v14.8h, v2.8b, v5.8b\n" 5209: "sadalp v31.4s, v15.8h\n" 5209: "smull v15.8h, v3.8b, v5.8b\n" 5209: 5209: 5209: 5209: 5209: 5209: "smlal2 v8.8h, v0.16b, v4.16b\n" 5209: "smlal2 v9.8h, v1.16b, v4.16b\n" 5209: "smlal2 v10.8h, v2.16b, v4.16b\n" 5209: "smlal2 v11.8h, v3.16b, v4.16b\n" 5209: 5209: 5209: 5209: 5209: "subs %[run_depth], %[run_depth], #16\n" 5209: 5209: "smlal2 v12.8h, v0.16b, v5.16b\n" 5209: "smlal2 v13.8h, v1.16b, v5.16b\n" 5209: "smlal2 v14.8h, v2.16b, v5.16b\n" 5209: "smlal2 v15.8h, v3.16b, v5.16b\n" 5209: 5209: "bne " "2" "b\n" 5209: 5209: 5209: 5209: "1" 5209: ":\n" 5209: 5209: 5209: 5209: "sadalp v16.4s, v8.8h\n" 5209: "smull v8.8h, v0.8b, v6.8b\n" 5209: "sadalp v17.4s, v9.8h\n" 5209: "smull v9.8h, v1.8b, v6.8b\n" 5209: "sadalp v18.4s, v10.8h\n" 5209: "smull v10.8h, v2.8b, v6.8b\n" 5209: "sadalp v19.4s, v11.8h\n" 5209: "smull v11.8h, v3.8b, v6.8b\n" 5209: "sadalp v20.4s, v12.8h\n" 5209: "smull v12.8h, v0.8b, v7.8b\n" 5209: "sadalp v21.4s, v13.8h\n" 5209: "smull v13.8h, v1.8b, v7.8b\n" 5209: "sadalp v22.4s, v14.8h\n" 5209: "smull v14.8h, v2.8b, v7.8b\n" 5209: "sadalp v23.4s, v15.8h\n" 5209: "smull v15.8h, v3.8b, v7.8b\n" 5209: 5209: 5209: 5209: 5209: 5209: "smlal2 v8.8h, v0.16b, v6.16b\n" 5209: "smlal2 v9.8h, v1.16b, v6.16b\n" 5209: "smlal2 v10.8h, v2.16b, v6.16b\n" 5209: "smlal2 v11.8h, v3.16b, v6.16b\n" 5209: "smlal2 v12.8h, v0.16b, v7.16b\n" 5209: "smlal2 v13.8h, v1.16b, v7.16b\n" 5209: "smlal2 v14.8h, v2.16b, v7.16b\n" 5209: "smlal2 v15.8h, v3.16b, v7.16b\n" 5209: 5209: "sadalp v24.4s, v8.8h\n" 5209: "sadalp v25.4s, v9.8h\n" 5209: "sadalp v26.4s, v10.8h\n" 5209: "sadalp v27.4s, v11.8h\n" 5209: "sadalp v28.4s, v12.8h\n" 5209: "sadalp v29.4s, v13.8h\n" 5209: "sadalp v30.4s, v14.8h\n" 5209: "sadalp v31.4s, v15.8h\n" 5209: 5209: 5209: "addp v0.4s, v16.4s, v20.4s\n" 5209: "addp v2.4s, v17.4s, v21.4s\n" 5209: "addp v4.4s, v18.4s, v22.4s\n" 5209: "addp v6.4s, v19.4s, v23.4s\n" 5209: "addp v1.4s, v24.4s, v28.4s\n" 5209: "addp v3.4s, v25.4s, v29.4s\n" 5209: "addp v5.4s, v26.4s, v30.4s\n" 5209: "addp v7.4s, v27.4s, v31.4s\n" 5209: 5209: "cmp %[start_depth], #0\n" 5209: "bne " "3" 5209: "f\n" 5209: 5209: 5209: 5209: "addp v12.4s, v0.4s, v1.4s\n" 5209: "addp v13.4s, v2.4s, v3.4s\n" 5209: "addp v14.4s, v4.4s, v5.4s\n" 5209: "addp v15.4s, v6.4s, v7.4s\n" 5209: 5209: "b " "4" "f\n" 5209: 5209: "3" 5209: ":\n" 5209: 5209: 5209: 5209: 5209: "mov x0, %[dst_ptr]\n" 5209: "ld1 {v12.16b}, [x0], %[dst_col_stride]\n" 5209: "addp v8.4s, v0.4s, v1.4s\n" 5209: "ld1 {v13.16b}, [x0], %[dst_col_stride]\n" 5209: "addp v9.4s, v2.4s, v3.4s\n" 5209: "ld1 {v14.16b}, [x0], %[dst_col_stride]\n" 5209: "addp v10.4s, v4.4s, v5.4s\n" 5209: "ld1 {v15.16b}, [x0]\n" 5209: "addp v11.4s, v6.4s, v7.4s\n" 5209: 5209: 5209: 5209: "add v12.4s, v12.4s, v8.4s\n" 5209: "add v13.4s, v13.4s, v9.4s\n" 5209: "add v14.4s, v14.4s, v10.4s\n" 5209: "add v15.4s, v15.4s, v11.4s\n" 5209: 5209: "4" 5209: ":\n" 5209: 5209: "mov x0, %[dst_ptr]\n" 5209: "st1 {v12.16b}, [x0], %[dst_col_stride]\n" 5209: "st1 {v13.16b}, [x0], %[dst_col_stride]\n" 5209: "st1 {v14.16b}, [x0], %[dst_col_stride]\n" 5209: "st1 {v15.16b}, [x0]\n" 5209: : 5209: [lhs_ptr] "+r"(lhs_ptr), [rhs_ptr] "+r"(rhs_ptr), 5209: [dst_ptr] "+r"(dst_ptr), [run_depth] "+r"(run_depth), 5209: [dst_col_stride] "+r"(dst_col_stride) 5209: : 5209: [start_depth] "r"(start_depth) 5209: : 5209: "cc", "memory", "x0", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", 5209: "v8", "v9", "v10", "v11", "v12", "v13", "v14", "v15", "v16", "v17", 5209: "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26", "v27", 5209: "v28", "v29", "v30", "v31"); 5209: 5209: 5209: 5209: 5209: } 5209: }; 5209: 5209: 5209: 5209: 5209: struct NEON_64bit_GEMM_Int8Operands_LhsNonzero_Int8Inputs 5209: : NEON_64bit_GEMM_Int8Operands_LhsNonzero { 5209: typedef KernelFormat< 5209: KernelSideFormatInt8Inputs, 1>, 5209: KernelSideFormatInt8Inputs, 1> > 5209: Format; 5209: }; 5209: 5209: 5209: struct NEON_64_Kernel12x8Depth2 : KernelBase { 5209: typedef KernelFormat, 3>, 5209: KernelSideFormat, 2> > 5209: Format; 5209: 5209: const char* Name() const override { return "NEON, 12x8, depth 2"; } 5209: 5209: 5209: void Run(std::int32_t* dst_ptr, std::size_t dst_row_stride, 5209: std::size_t dst_col_stride, const std::uint8_t* lhs_ptr, 5209: const std::uint8_t* rhs_ptr, std::size_t start_depth, 5209: std::size_t run_depth) const override { 5209: (void)dst_row_stride; 5209: ScopedProfilingLabel label("optimized kernel (NEON 12x8)"); 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: # 1311 "/<>/test/../public/../internal/../internal/kernel_neon.h" 3 4 5209: (static_cast ( 5209: # 1311 "/<>/test/../public/../internal/../internal/kernel_neon.h" 5209: dst_row_stride == 1 5209: # 1311 "/<>/test/../public/../internal/../internal/kernel_neon.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 1311 "/<>/test/../public/../internal/../internal/kernel_neon.h" 5209: "dst_row_stride == 1" 5209: # 1311 "/<>/test/../public/../internal/../internal/kernel_neon.h" 3 4 5209: , "/<>/test/../public/../internal/../internal/kernel_neon.h", 1311, __extension__ __PRETTY_FUNCTION__)) 5209: # 1311 "/<>/test/../public/../internal/../internal/kernel_neon.h" 5209: ; 5209: asm volatile( 5209: 5209: "ld1 {v5.8b}, [%[rhs_ptr]], #8\n" 5209: "ld1 {v6.8b}, [%[rhs_ptr]], #8\n" 5209: 5209: 5209: "ld1 {v2.8b}, [%[lhs_ptr]], #8\n" 5209: "ld1 {v3.8b}, [%[lhs_ptr]], #8\n" 5209: "ld1 {v4.8b}, [%[lhs_ptr]], #8\n" 5209: 5209: 5209: 5209: "lsl %[dst_col_stride], %[dst_col_stride], #2\n" 5209: 5209: "cmp %[start_depth], #0\n" 5209: "beq " "1" 5209: "f\n" 5209: 5209: 5209: "mov x1, %[dst_ptr]\n" 5209: "mov x0, x1\n" 5209: "ld1 {v8.16b}, [x0], #16\n" 5209: "subs %[run_depth], %[run_depth], #2\n" 5209: "ld1 {v16.16b}, [x0], #16\n" 5209: "add x1, x1, %[dst_col_stride]\n" 5209: "ld1 {v24.16b}, [x0]\n" 5209: "mov x0, x1\n" 5209: "ld1 {v9.16b}, [x0], #16\n" 5209: "add x1, x1, %[dst_col_stride]\n" 5209: "ld1 {v17.16b}, [x0], #16\n" 5209: "ld1 {v25.16b}, [x0]\n" 5209: "mov x0, x1\n" 5209: "ld1 {v10.16b}, [x0], #16\n" 5209: "add x1, x1, %[dst_col_stride]\n" 5209: "ld1 {v18.16b}, [x0], #16\n" 5209: "ld1 {v26.16b}, [x0]\n" 5209: "mov x0, x1\n" 5209: "ld1 {v11.16b}, [x0], #16\n" 5209: "add x1, x1, %[dst_col_stride]\n" 5209: "ld1 {v19.16b}, [x0], #16\n" 5209: "ld1 {v27.16b}, [x0]\n" 5209: "mov x0, x1\n" 5209: "ld1 {v12.16b}, [x0], #16\n" 5209: "add x1, x1, %[dst_col_stride]\n" 5209: "ld1 {v20.16b}, [x0], #16\n" 5209: "ld1 {v28.16b}, [x0]\n" 5209: "mov x0, x1\n" 5209: "ld1 {v13.16b}, [x0], #16\n" 5209: "add x1, x1, %[dst_col_stride]\n" 5209: "ld1 {v21.16b}, [x0], #16\n" 5209: "ld1 {v29.16b}, [x0]\n" 5209: "mov x0, x1\n" 5209: "ld1 {v14.16b}, [x0], #16\n" 5209: "add x1, x1, %[dst_col_stride]\n" 5209: "ld1 {v22.16b}, [x0], #16\n" 5209: "ld1 {v30.16b}, [x0]\n" 5209: "mov x0, x1\n" 5209: "ld1 {v15.16b}, [x0], #16\n" 5209: "ld1 {v23.16b}, [x0], #16\n" 5209: "ld1 {v31.16b}, [x0]\n" 5209: 5209: "b " "2" "f\n" 5209: 5209: "1" 5209: ":\n" 5209: 5209: 5209: "dup v8.4s, wzr\n" 5209: "subs %[run_depth], %[run_depth], #2\n" 5209: "dup v9.4s, wzr\n" 5209: "dup v10.4s, wzr\n" 5209: "dup v11.4s, wzr\n" 5209: "dup v12.4s, wzr\n" 5209: "dup v13.4s, wzr\n" 5209: "dup v14.4s, wzr\n" 5209: "dup v15.4s, wzr\n" 5209: "dup v16.4s, wzr\n" 5209: "dup v17.4s, wzr\n" 5209: "dup v18.4s, wzr\n" 5209: "dup v19.4s, wzr\n" 5209: "dup v20.4s, wzr\n" 5209: "dup v21.4s, wzr\n" 5209: "dup v22.4s, wzr\n" 5209: "dup v23.4s, wzr\n" 5209: "dup v24.4s, wzr\n" 5209: "dup v25.4s, wzr\n" 5209: "dup v26.4s, wzr\n" 5209: "dup v27.4s, wzr\n" 5209: "dup v28.4s, wzr\n" 5209: "dup v29.4s, wzr\n" 5209: "dup v30.4s, wzr\n" 5209: "dup v31.4s, wzr\n" 5209: 5209: "2" 5209: ":\n" 5209: 5209: "beq " "4" "f\n" 5209: 5209: "3" 5209: ":\n" 5209: # 1449 "/<>/test/../public/../internal/../internal/kernel_neon.h" 5209: "uxtl v0.8h, v5.8b\n" 5209: "ld1 {v5.8b}, [%[rhs_ptr]], #8\n" 5209: "uxtl v1.8h, v6.8b\n" 5209: "ld1 {v6.8b}, [%[rhs_ptr]], #8\n" 5209: "uxtl v2.8h, v2.8b\n" 5209: "uxtl v3.8h, v3.8b\n" 5209: "uxtl v4.8h, v4.8b\n" 5209: 5209: 5209: "umlal v8.4s, v2.4h, v0.h[0]\n" 5209: "umlal v9.4s, v2.4h, v0.h[1]\n" 5209: "umlal v10.4s, v2.4h, v0.h[2]\n" 5209: "umlal v11.4s, v2.4h, v0.h[3]\n" 5209: "umlal v12.4s, v2.4h, v1.h[0]\n" 5209: "umlal v13.4s, v2.4h, v1.h[1]\n" 5209: "umlal v14.4s, v2.4h, v1.h[2]\n" 5209: "umlal v15.4s, v2.4h, v1.h[3]\n" 5209: "umlal2 v8.4s, v2.8h, v0.h[4]\n" 5209: "umlal2 v9.4s, v2.8h, v0.h[5]\n" 5209: "umlal2 v10.4s, v2.8h, v0.h[6]\n" 5209: "umlal2 v11.4s, v2.8h, v0.h[7]\n" 5209: "umlal2 v12.4s, v2.8h, v1.h[4]\n" 5209: "umlal2 v13.4s, v2.8h, v1.h[5]\n" 5209: "umlal2 v14.4s, v2.8h, v1.h[6]\n" 5209: "umlal2 v15.4s, v2.8h, v1.h[7]\n" 5209: "ld1 {v2.8b}, [%[lhs_ptr]], #8\n" 5209: 5209: 5209: "umlal v16.4s, v3.4h, v0.h[0]\n" 5209: "umlal v17.4s, v3.4h, v0.h[1]\n" 5209: "umlal v18.4s, v3.4h, v0.h[2]\n" 5209: "umlal v19.4s, v3.4h, v0.h[3]\n" 5209: "umlal v20.4s, v3.4h, v1.h[0]\n" 5209: "umlal v21.4s, v3.4h, v1.h[1]\n" 5209: "umlal v22.4s, v3.4h, v1.h[2]\n" 5209: "umlal v23.4s, v3.4h, v1.h[3]\n" 5209: "umlal2 v16.4s, v3.8h, v0.h[4]\n" 5209: "umlal2 v17.4s, v3.8h, v0.h[5]\n" 5209: "umlal2 v18.4s, v3.8h, v0.h[6]\n" 5209: "umlal2 v19.4s, v3.8h, v0.h[7]\n" 5209: "umlal2 v20.4s, v3.8h, v1.h[4]\n" 5209: "umlal2 v21.4s, v3.8h, v1.h[5]\n" 5209: "umlal2 v22.4s, v3.8h, v1.h[6]\n" 5209: "umlal2 v23.4s, v3.8h, v1.h[7]\n" 5209: "ld1 {v3.8b}, [%[lhs_ptr]], #8\n" 5209: 5209: "subs %[run_depth], %[run_depth], #2\n" 5209: 5209: 5209: "umlal v24.4s, v4.4h, v0.h[0]\n" 5209: "umlal v25.4s, v4.4h, v0.h[1]\n" 5209: "umlal v26.4s, v4.4h, v0.h[2]\n" 5209: "umlal v27.4s, v4.4h, v0.h[3]\n" 5209: "umlal v28.4s, v4.4h, v1.h[0]\n" 5209: "umlal v29.4s, v4.4h, v1.h[1]\n" 5209: "umlal v30.4s, v4.4h, v1.h[2]\n" 5209: "umlal v31.4s, v4.4h, v1.h[3]\n" 5209: "umlal2 v24.4s, v4.8h, v0.h[4]\n" 5209: "umlal2 v25.4s, v4.8h, v0.h[5]\n" 5209: "umlal2 v26.4s, v4.8h, v0.h[6]\n" 5209: "umlal2 v27.4s, v4.8h, v0.h[7]\n" 5209: "umlal2 v28.4s, v4.8h, v1.h[4]\n" 5209: "umlal2 v29.4s, v4.8h, v1.h[5]\n" 5209: "umlal2 v30.4s, v4.8h, v1.h[6]\n" 5209: "umlal2 v31.4s, v4.8h, v1.h[7]\n" 5209: "ld1 {v4.8b}, [%[lhs_ptr]], #8\n" 5209: 5209: "bne " "3" "b\n" 5209: 5209: "4" 5209: ":\n" 5209: 5209: 5209: "uxtl v0.8h, v5.8b\n" 5209: "uxtl v1.8h, v6.8b\n" 5209: "uxtl v2.8h, v2.8b\n" 5209: "uxtl v3.8h, v3.8b\n" 5209: "uxtl v4.8h, v4.8b\n" 5209: 5209: 5209: "umlal v8.4s, v2.4h, v0.h[0]\n" 5209: "umlal v9.4s, v2.4h, v0.h[1]\n" 5209: "umlal v10.4s, v2.4h, v0.h[2]\n" 5209: "umlal v11.4s, v2.4h, v0.h[3]\n" 5209: "umlal v12.4s, v2.4h, v1.h[0]\n" 5209: "umlal v13.4s, v2.4h, v1.h[1]\n" 5209: "umlal v14.4s, v2.4h, v1.h[2]\n" 5209: "umlal v15.4s, v2.4h, v1.h[3]\n" 5209: "umlal v16.4s, v3.4h, v0.h[0]\n" 5209: "umlal v17.4s, v3.4h, v0.h[1]\n" 5209: "umlal v18.4s, v3.4h, v0.h[2]\n" 5209: "umlal v19.4s, v3.4h, v0.h[3]\n" 5209: "umlal v20.4s, v3.4h, v1.h[0]\n" 5209: "umlal v21.4s, v3.4h, v1.h[1]\n" 5209: "umlal v22.4s, v3.4h, v1.h[2]\n" 5209: "umlal v23.4s, v3.4h, v1.h[3]\n" 5209: "umlal v24.4s, v4.4h, v0.h[0]\n" 5209: "umlal v25.4s, v4.4h, v0.h[1]\n" 5209: "umlal v26.4s, v4.4h, v0.h[2]\n" 5209: "umlal v27.4s, v4.4h, v0.h[3]\n" 5209: "umlal v28.4s, v4.4h, v1.h[0]\n" 5209: "umlal v29.4s, v4.4h, v1.h[1]\n" 5209: "umlal v30.4s, v4.4h, v1.h[2]\n" 5209: "umlal v31.4s, v4.4h, v1.h[3]\n" 5209: 5209: 5209: "umlal2 v8.4s, v2.8h, v0.h[4]\n" 5209: "umlal2 v9.4s, v2.8h, v0.h[5]\n" 5209: "umlal2 v10.4s, v2.8h, v0.h[6]\n" 5209: "umlal2 v11.4s, v2.8h, v0.h[7]\n" 5209: "umlal2 v12.4s, v2.8h, v1.h[4]\n" 5209: "umlal2 v13.4s, v2.8h, v1.h[5]\n" 5209: "umlal2 v14.4s, v2.8h, v1.h[6]\n" 5209: "umlal2 v15.4s, v2.8h, v1.h[7]\n" 5209: "umlal2 v16.4s, v3.8h, v0.h[4]\n" 5209: "umlal2 v17.4s, v3.8h, v0.h[5]\n" 5209: "umlal2 v18.4s, v3.8h, v0.h[6]\n" 5209: "umlal2 v19.4s, v3.8h, v0.h[7]\n" 5209: "umlal2 v20.4s, v3.8h, v1.h[4]\n" 5209: "umlal2 v21.4s, v3.8h, v1.h[5]\n" 5209: "umlal2 v22.4s, v3.8h, v1.h[6]\n" 5209: "umlal2 v23.4s, v3.8h, v1.h[7]\n" 5209: "umlal2 v24.4s, v4.8h, v0.h[4]\n" 5209: "umlal2 v25.4s, v4.8h, v0.h[5]\n" 5209: "umlal2 v26.4s, v4.8h, v0.h[6]\n" 5209: "umlal2 v27.4s, v4.8h, v0.h[7]\n" 5209: "umlal2 v28.4s, v4.8h, v1.h[4]\n" 5209: "umlal2 v29.4s, v4.8h, v1.h[5]\n" 5209: "umlal2 v30.4s, v4.8h, v1.h[6]\n" 5209: "umlal2 v31.4s, v4.8h, v1.h[7]\n" 5209: 5209: 5209: "mov x1, %[dst_ptr]\n" 5209: "mov x0, x1\n" 5209: "st1 {v8.16b}, [x0], #16\n" 5209: "subs %[run_depth], %[run_depth], #2\n" 5209: "st1 {v16.16b}, [x0], #16\n" 5209: "add x1, x1, %[dst_col_stride]\n" 5209: "st1 {v24.16b}, [x0]\n" 5209: "mov x0, x1\n" 5209: "st1 {v9.16b}, [x0], #16\n" 5209: "add x1, x1, %[dst_col_stride]\n" 5209: "st1 {v17.16b}, [x0], #16\n" 5209: "st1 {v25.16b}, [x0]\n" 5209: "mov x0, x1\n" 5209: "st1 {v10.16b}, [x0], #16\n" 5209: "add x1, x1, %[dst_col_stride]\n" 5209: "st1 {v18.16b}, [x0], #16\n" 5209: "st1 {v26.16b}, [x0]\n" 5209: "mov x0, x1\n" 5209: "st1 {v11.16b}, [x0], #16\n" 5209: "add x1, x1, %[dst_col_stride]\n" 5209: "st1 {v19.16b}, [x0], #16\n" 5209: "st1 {v27.16b}, [x0]\n" 5209: "mov x0, x1\n" 5209: "st1 {v12.16b}, [x0], #16\n" 5209: "add x1, x1, %[dst_col_stride]\n" 5209: "st1 {v20.16b}, [x0], #16\n" 5209: "st1 {v28.16b}, [x0]\n" 5209: "mov x0, x1\n" 5209: "st1 {v13.16b}, [x0], #16\n" 5209: "add x1, x1, %[dst_col_stride]\n" 5209: "st1 {v21.16b}, [x0], #16\n" 5209: "st1 {v29.16b}, [x0]\n" 5209: "mov x0, x1\n" 5209: "st1 {v14.16b}, [x0], #16\n" 5209: "add x1, x1, %[dst_col_stride]\n" 5209: "st1 {v22.16b}, [x0], #16\n" 5209: "st1 {v30.16b}, [x0]\n" 5209: "mov x0, x1\n" 5209: "st1 {v15.16b}, [x0], #16\n" 5209: "st1 {v23.16b}, [x0], #16\n" 5209: "st1 {v31.16b}, [x0]\n" 5209: 5209: 5209: 5209: 5209: : 5209: [lhs_ptr] "+r"(lhs_ptr), [rhs_ptr] "+r"(rhs_ptr), 5209: [dst_ptr] "+r"(dst_ptr), 5209: [run_depth] "+r"(run_depth) 5209: : 5209: [start_depth] "r"(start_depth), 5209: [dst_col_stride] "r"(dst_col_stride) 5209: : 5209: "cc", "memory", "x0", "x1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", 5209: "v7", "v8", "v9", "v10", "v11", "v12", "v13", "v14", "v15", "v16", 5209: "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26", 5209: "v27", "v28", "v29", "v30", "v31"); 5209: } 5209: }; 5209: # 1911 "/<>/test/../public/../internal/../internal/kernel_neon.h" 5209: } 5209: # 78 "/<>/test/../public/../internal/../internal/kernel_default.h" 2 5209: 5209: 5209: 5209: 5209: namespace gemmlowp { template <> struct DefaultKernelImpl : NEON_64_Kernel12x8Depth2 {}; } 5209: namespace gemmlowp { template <> struct DefaultKernelImpl : NEON_64bit_GEMM_Int8Operands_LhsNonzero {}; } 5209: 5209: 5209: namespace gemmlowp { template <> struct DefaultKernelImpl : NEON_64bit_GEMM_Int8Operands_LhsNonzero_Int8Inputs {}; } 5209: # 21 "/<>/test/../public/../internal/dispatch_gemm_shape.h" 2 5209: # 1 "/<>/test/../public/../internal/../public/map.h" 1 5209: # 21 "/<>/test/../public/../internal/../public/map.h" 5209: # 1 "/<>/test/../public/../internal/../public/../internal/common.h" 1 5209: # 22 "/<>/test/../public/../internal/../public/map.h" 2 5209: 5209: namespace gemmlowp { 5209: 5209: 5209: 5209: enum class MapOrder { ColMajor, RowMajor }; 5209: 5209: 5209: 5209: template 5209: class MatrixMap { 5209: public: 5209: typedef tScalar Scalar; 5209: static const MapOrder kOrder = tOrder; 5209: 5209: protected: 5209: Scalar* data_; 5209: int rows_, cols_, stride_; 5209: 5209: public: 5209: MatrixMap() : data_(nullptr), rows_(0), cols_(0), stride_(0) {} 5209: MatrixMap(Scalar* data, int rows, int cols) 5209: : data_(data), 5209: rows_(rows), 5209: cols_(cols), 5209: stride_(kOrder == MapOrder::ColMajor ? rows : cols) {} 5209: MatrixMap(Scalar* data, int rows, int cols, int stride) 5209: : data_(data), rows_(rows), cols_(cols), stride_(stride) {} 5209: MatrixMap(const MatrixMap& other) 5209: : data_(other.data_), 5209: rows_(other.rows_), 5209: cols_(other.cols_), 5209: stride_(other.stride_) {} 5209: 5209: int rows() const { return rows_; } 5209: int cols() const { return cols_; } 5209: int stride() const { return stride_; } 5209: int rows_stride() const { return kOrder == MapOrder::ColMajor ? 1 : stride_; } 5209: int cols_stride() const { return kOrder == MapOrder::RowMajor ? 1 : stride_; } 5209: Scalar* data() const { return data_; } 5209: Scalar* data(int row, int col) const { 5209: return data_ + row * rows_stride() + col * cols_stride(); 5209: } 5209: Scalar& operator()(int row, int col) const { return *data(row, col); } 5209: 5209: MatrixMap block(int start_row, int start_col, int block_rows, 5209: int block_cols) const { 5209: 5209: # 69 "/<>/test/../public/../internal/../public/map.h" 3 4 5209: (static_cast ( 5209: # 69 "/<>/test/../public/../internal/../public/map.h" 5209: start_row >= 0 5209: # 69 "/<>/test/../public/../internal/../public/map.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 69 "/<>/test/../public/../internal/../public/map.h" 5209: "start_row >= 0" 5209: # 69 "/<>/test/../public/../internal/../public/map.h" 3 4 5209: , "/<>/test/../public/../internal/../public/map.h", 69, __extension__ __PRETTY_FUNCTION__)) 5209: # 69 "/<>/test/../public/../internal/../public/map.h" 5209: ; 5209: 5209: # 70 "/<>/test/../public/../internal/../public/map.h" 3 4 5209: (static_cast ( 5209: # 70 "/<>/test/../public/../internal/../public/map.h" 5209: start_row + block_rows <= rows_ 5209: # 70 "/<>/test/../public/../internal/../public/map.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 70 "/<>/test/../public/../internal/../public/map.h" 5209: "start_row + block_rows <= rows_" 5209: # 70 "/<>/test/../public/../internal/../public/map.h" 3 4 5209: , "/<>/test/../public/../internal/../public/map.h", 70, __extension__ __PRETTY_FUNCTION__)) 5209: # 70 "/<>/test/../public/../internal/../public/map.h" 5209: ; 5209: 5209: # 71 "/<>/test/../public/../internal/../public/map.h" 3 4 5209: (static_cast ( 5209: # 71 "/<>/test/../public/../internal/../public/map.h" 5209: start_col >= 0 5209: # 71 "/<>/test/../public/../internal/../public/map.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 71 "/<>/test/../public/../internal/../public/map.h" 5209: "start_col >= 0" 5209: # 71 "/<>/test/../public/../internal/../public/map.h" 3 4 5209: , "/<>/test/../public/../internal/../public/map.h", 71, __extension__ __PRETTY_FUNCTION__)) 5209: # 71 "/<>/test/../public/../internal/../public/map.h" 5209: ; 5209: 5209: # 72 "/<>/test/../public/../internal/../public/map.h" 3 4 5209: (static_cast ( 5209: # 72 "/<>/test/../public/../internal/../public/map.h" 5209: start_col + block_cols <= cols_ 5209: # 72 "/<>/test/../public/../internal/../public/map.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 72 "/<>/test/../public/../internal/../public/map.h" 5209: "start_col + block_cols <= cols_" 5209: # 72 "/<>/test/../public/../internal/../public/map.h" 3 4 5209: , "/<>/test/../public/../internal/../public/map.h", 72, __extension__ __PRETTY_FUNCTION__)) 5209: # 72 "/<>/test/../public/../internal/../public/map.h" 5209: ; 5209: 5209: return MatrixMap(data(start_row, start_col), block_rows, block_cols, 5209: stride_); 5209: } 5209: }; 5209: 5209: enum class VectorShape { Col, Row }; 5209: 5209: 5209: 5209: template 5209: class VectorMap { 5209: public: 5209: typedef tScalar Scalar; 5209: static const VectorShape kShape = tShape; 5209: 5209: protected: 5209: Scalar* data_; 5209: int size_; 5209: 5209: public: 5209: VectorMap() : data_(nullptr), size_(0) {} 5209: VectorMap(Scalar* data, int size) : data_(data), size_(size) {} 5209: VectorMap(const VectorMap& other) : data_(other.data_), size_(other.size_) {} 5209: 5209: int size() const { return size_; } 5209: Scalar* data() const { return data_; } 5209: Scalar* data(int index) const { return data_ + index; } 5209: Scalar& operator()(int index) const { return *data(index); } 5209: 5209: VectorMap block(int start, int len) const { 5209: 5209: # 104 "/<>/test/../public/../internal/../public/map.h" 3 4 5209: (static_cast ( 5209: # 104 "/<>/test/../public/../internal/../public/map.h" 5209: start >= 0 5209: # 104 "/<>/test/../public/../internal/../public/map.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 104 "/<>/test/../public/../internal/../public/map.h" 5209: "start >= 0" 5209: # 104 "/<>/test/../public/../internal/../public/map.h" 3 4 5209: , "/<>/test/../public/../internal/../public/map.h", 104, __extension__ __PRETTY_FUNCTION__)) 5209: # 104 "/<>/test/../public/../internal/../public/map.h" 5209: ; 5209: 5209: # 105 "/<>/test/../public/../internal/../public/map.h" 3 4 5209: (static_cast ( 5209: # 105 "/<>/test/../public/../internal/../public/map.h" 5209: start + len <= size_ 5209: # 105 "/<>/test/../public/../internal/../public/map.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 105 "/<>/test/../public/../internal/../public/map.h" 5209: "start + len <= size_" 5209: # 105 "/<>/test/../public/../internal/../public/map.h" 3 4 5209: , "/<>/test/../public/../internal/../public/map.h", 105, __extension__ __PRETTY_FUNCTION__)) 5209: # 105 "/<>/test/../public/../internal/../public/map.h" 5209: ; 5209: 5209: return VectorMap(data(start), len); 5209: } 5209: }; 5209: 5209: 5209: template 5209: class VectorDup { 5209: public: 5209: typedef tScalar Scalar; 5209: static const VectorShape kShape = tShape; 5209: 5209: protected: 5209: Scalar data_; 5209: int size_; 5209: 5209: public: 5209: VectorDup() : data_(0), size_(0) {} 5209: VectorDup(Scalar data, int size) : data_(data), size_(size) {} 5209: VectorDup(const VectorDup& other) : data_(other.data_), size_(other.size_) {} 5209: 5209: int size() const { return size_; } 5209: Scalar& operator()(int) const { return data_; } 5209: 5209: VectorDup block(int start, int len) const { 5209: 5209: # 131 "/<>/test/../public/../internal/../public/map.h" 3 4 5209: (static_cast ( 5209: # 131 "/<>/test/../public/../internal/../public/map.h" 5209: start >= 0 5209: # 131 "/<>/test/../public/../internal/../public/map.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 131 "/<>/test/../public/../internal/../public/map.h" 5209: "start >= 0" 5209: # 131 "/<>/test/../public/../internal/../public/map.h" 3 4 5209: , "/<>/test/../public/../internal/../public/map.h", 131, __extension__ __PRETTY_FUNCTION__)) 5209: # 131 "/<>/test/../public/../internal/../public/map.h" 5209: ; 5209: 5209: # 132 "/<>/test/../public/../internal/../public/map.h" 3 4 5209: (static_cast ( 5209: # 132 "/<>/test/../public/../internal/../public/map.h" 5209: start + len <= size_ 5209: # 132 "/<>/test/../public/../internal/../public/map.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 132 "/<>/test/../public/../internal/../public/map.h" 5209: "start + len <= size_" 5209: # 132 "/<>/test/../public/../internal/../public/map.h" 3 4 5209: , "/<>/test/../public/../internal/../public/map.h", 132, __extension__ __PRETTY_FUNCTION__)) 5209: # 132 "/<>/test/../public/../internal/../public/map.h" 5209: ; 5209: 5209: (void)start; 5209: return VectorDup(data_, len); 5209: } 5209: }; 5209: 5209: } 5209: # 22 "/<>/test/../public/../internal/dispatch_gemm_shape.h" 2 5209: # 1 "/<>/test/../public/../internal/../public/output_stages.h" 1 5209: # 23 "/<>/test/../public/../internal/../public/output_stages.h" 5209: # 1 "/usr/include/c++/10/tuple" 1 3 5209: # 32 "/usr/include/c++/10/tuple" 3 5209: 5209: # 33 "/usr/include/c++/10/tuple" 3 5209: 5209: 5209: 5209: 5209: 5209: 5209: # 1 "/usr/include/c++/10/array" 1 3 5209: # 32 "/usr/include/c++/10/array" 3 5209: 5209: # 33 "/usr/include/c++/10/array" 3 5209: # 43 "/usr/include/c++/10/array" 3 5209: 5209: # 43 "/usr/include/c++/10/array" 3 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: template 5209: struct __array_traits 5209: { 5209: typedef _Tp _Type[_Nm]; 5209: typedef __is_swappable<_Tp> _Is_swappable; 5209: typedef __is_nothrow_swappable<_Tp> _Is_nothrow_swappable; 5209: 5209: static constexpr _Tp& 5209: _S_ref(const _Type& __t, std::size_t __n) noexcept 5209: { return const_cast<_Tp&>(__t[__n]); } 5209: 5209: static constexpr _Tp* 5209: _S_ptr(const _Type& __t) noexcept 5209: { return const_cast<_Tp*>(__t); } 5209: }; 5209: 5209: template 5209: struct __array_traits<_Tp, 0> 5209: { 5209: struct _Type { }; 5209: typedef true_type _Is_swappable; 5209: typedef true_type _Is_nothrow_swappable; 5209: 5209: static constexpr _Tp& 5209: _S_ref(const _Type&, std::size_t) noexcept 5209: { return *static_cast<_Tp*>(nullptr); } 5209: 5209: static constexpr _Tp* 5209: _S_ptr(const _Type&) noexcept 5209: { return nullptr; } 5209: }; 5209: # 93 "/usr/include/c++/10/array" 3 5209: template 5209: struct array 5209: { 5209: typedef _Tp value_type; 5209: typedef value_type* pointer; 5209: typedef const value_type* const_pointer; 5209: typedef value_type& reference; 5209: typedef const value_type& const_reference; 5209: typedef value_type* iterator; 5209: typedef const value_type* const_iterator; 5209: typedef std::size_t size_type; 5209: typedef std::ptrdiff_t difference_type; 5209: typedef std::reverse_iterator reverse_iterator; 5209: typedef std::reverse_iterator const_reverse_iterator; 5209: 5209: 5209: typedef std::__array_traits<_Tp, _Nm> _AT_Type; 5209: typename _AT_Type::_Type _M_elems; 5209: 5209: 5209: 5209: 5209: void 5209: fill(const value_type& __u) 5209: { std::fill_n(begin(), size(), __u); } 5209: 5209: void 5209: swap(array& __other) 5209: noexcept(_AT_Type::_Is_nothrow_swappable::value) 5209: { std::swap_ranges(begin(), end(), __other.begin()); } 5209: 5209: 5209: iterator 5209: begin() noexcept 5209: { return iterator(data()); } 5209: 5209: const_iterator 5209: begin() const noexcept 5209: { return const_iterator(data()); } 5209: 5209: iterator 5209: end() noexcept 5209: { return iterator(data() + _Nm); } 5209: 5209: const_iterator 5209: end() const noexcept 5209: { return const_iterator(data() + _Nm); } 5209: 5209: reverse_iterator 5209: rbegin() noexcept 5209: { return reverse_iterator(end()); } 5209: 5209: const_reverse_iterator 5209: rbegin() const noexcept 5209: { return const_reverse_iterator(end()); } 5209: 5209: reverse_iterator 5209: rend() noexcept 5209: { return reverse_iterator(begin()); } 5209: 5209: const_reverse_iterator 5209: rend() const noexcept 5209: { return const_reverse_iterator(begin()); } 5209: 5209: const_iterator 5209: cbegin() const noexcept 5209: { return const_iterator(data()); } 5209: 5209: const_iterator 5209: cend() const noexcept 5209: { return const_iterator(data() + _Nm); } 5209: 5209: const_reverse_iterator 5209: crbegin() const noexcept 5209: { return const_reverse_iterator(end()); } 5209: 5209: const_reverse_iterator 5209: crend() const noexcept 5209: { return const_reverse_iterator(begin()); } 5209: 5209: 5209: constexpr size_type 5209: size() const noexcept { return _Nm; } 5209: 5209: constexpr size_type 5209: max_size() const noexcept { return _Nm; } 5209: 5209: constexpr bool 5209: empty() const noexcept { return size() == 0; } 5209: 5209: 5209: reference 5209: operator[](size_type __n) noexcept 5209: { return _AT_Type::_S_ref(_M_elems, __n); } 5209: 5209: constexpr const_reference 5209: operator[](size_type __n) const noexcept 5209: { return _AT_Type::_S_ref(_M_elems, __n); } 5209: 5209: reference 5209: at(size_type __n) 5209: { 5209: if (__n >= _Nm) 5209: std::__throw_out_of_range_fmt(("array::at: __n (which is %zu) " ">= _Nm (which is %zu)") 5209: , 5209: __n, _Nm); 5209: return _AT_Type::_S_ref(_M_elems, __n); 5209: } 5209: 5209: constexpr const_reference 5209: at(size_type __n) const 5209: { 5209: 5209: 5209: return __n < _Nm ? _AT_Type::_S_ref(_M_elems, __n) 5209: : (std::__throw_out_of_range_fmt(("array::at: __n (which is %zu) " ">= _Nm (which is %zu)") 5209: , 5209: __n, _Nm), 5209: _AT_Type::_S_ref(_M_elems, 0)); 5209: } 5209: 5209: reference 5209: front() noexcept 5209: { return *begin(); } 5209: 5209: constexpr const_reference 5209: front() const noexcept 5209: { return _AT_Type::_S_ref(_M_elems, 0); } 5209: 5209: reference 5209: back() noexcept 5209: { return _Nm ? *(end() - 1) : *end(); } 5209: 5209: constexpr const_reference 5209: back() const noexcept 5209: { 5209: return _Nm ? _AT_Type::_S_ref(_M_elems, _Nm - 1) 5209: : _AT_Type::_S_ref(_M_elems, 0); 5209: } 5209: 5209: pointer 5209: data() noexcept 5209: { return _AT_Type::_S_ptr(_M_elems); } 5209: 5209: const_pointer 5209: data() const noexcept 5209: { return _AT_Type::_S_ptr(_M_elems); } 5209: }; 5209: # 250 "/usr/include/c++/10/array" 3 5209: template 5209: 5209: inline bool 5209: operator==(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) 5209: { return std::equal(__one.begin(), __one.end(), __two.begin()); } 5209: # 275 "/usr/include/c++/10/array" 3 5209: template 5209: 5209: inline bool 5209: operator!=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) 5209: { return !(__one == __two); } 5209: 5209: template 5209: 5209: inline bool 5209: operator<(const array<_Tp, _Nm>& __a, const array<_Tp, _Nm>& __b) 5209: { 5209: return std::lexicographical_compare(__a.begin(), __a.end(), 5209: __b.begin(), __b.end()); 5209: } 5209: 5209: template 5209: 5209: inline bool 5209: operator>(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) 5209: { return __two < __one; } 5209: 5209: template 5209: 5209: inline bool 5209: operator<=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) 5209: { return !(__one > __two); } 5209: 5209: template 5209: 5209: inline bool 5209: operator>=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) 5209: { return !(__one < __two); } 5209: 5209: 5209: 5209: template 5209: 5209: inline 5209: 5209: 5209: typename enable_if< 5209: std::__array_traits<_Tp, _Nm>::_Is_swappable::value 5209: >::type 5209: 5209: 5209: 5209: swap(array<_Tp, _Nm>& __one, array<_Tp, _Nm>& __two) 5209: noexcept(noexcept(__one.swap(__two))) 5209: { __one.swap(__two); } 5209: 5209: 5209: template 5209: typename enable_if< 5209: !std::__array_traits<_Tp, _Nm>::_Is_swappable::value>::type 5209: swap(array<_Tp, _Nm>&, array<_Tp, _Nm>&) = delete; 5209: 5209: 5209: template 5209: constexpr _Tp& 5209: get(array<_Tp, _Nm>& __arr) noexcept 5209: { 5209: static_assert(_Int < _Nm, "array index is within bounds"); 5209: return std::__array_traits<_Tp, _Nm>:: 5209: _S_ref(__arr._M_elems, _Int); 5209: } 5209: 5209: template 5209: constexpr _Tp&& 5209: get(array<_Tp, _Nm>&& __arr) noexcept 5209: { 5209: static_assert(_Int < _Nm, "array index is within bounds"); 5209: return std::move(std::get<_Int>(__arr)); 5209: } 5209: 5209: template 5209: constexpr const _Tp& 5209: get(const array<_Tp, _Nm>& __arr) noexcept 5209: { 5209: static_assert(_Int < _Nm, "array index is within bounds"); 5209: return std::__array_traits<_Tp, _Nm>:: 5209: _S_ref(__arr._M_elems, _Int); 5209: } 5209: 5209: template 5209: constexpr const _Tp&& 5209: get(const array<_Tp, _Nm>&& __arr) noexcept 5209: { 5209: static_assert(_Int < _Nm, "array index is within bounds"); 5209: return std::move(std::get<_Int>(__arr)); 5209: } 5209: # 404 "/usr/include/c++/10/array" 3 5209: 5209: } 5209: 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: template 5209: struct tuple_size; 5209: 5209: 5209: template 5209: struct tuple_size> 5209: : public integral_constant { }; 5209: 5209: 5209: template 5209: struct tuple_element; 5209: 5209: 5209: template 5209: struct tuple_element<_Int, std::array<_Tp, _Nm>> 5209: { 5209: static_assert(_Int < _Nm, "index is out of bounds"); 5209: typedef _Tp type; 5209: }; 5209: 5209: template 5209: struct __is_tuple_like_impl> : true_type 5209: { }; 5209: 5209: 5209: } 5209: # 40 "/usr/include/c++/10/tuple" 2 3 5209: # 1 "/usr/include/c++/10/bits/uses_allocator.h" 1 3 5209: # 35 "/usr/include/c++/10/bits/uses_allocator.h" 3 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: 5209: struct __erased_type { }; 5209: 5209: 5209: 5209: 5209: template 5209: using __is_erased_or_convertible 5209: = __or_, is_same<_Tp, __erased_type>>; 5209: 5209: 5209: struct allocator_arg_t { explicit allocator_arg_t() = default; }; 5209: 5209: constexpr allocator_arg_t allocator_arg = 5209: allocator_arg_t(); 5209: 5209: template> 5209: struct __uses_allocator_helper 5209: : false_type { }; 5209: 5209: template 5209: struct __uses_allocator_helper<_Tp, _Alloc, 5209: __void_t> 5209: : __is_erased_or_convertible<_Alloc, typename _Tp::allocator_type>::type 5209: { }; 5209: 5209: 5209: template 5209: struct uses_allocator 5209: : __uses_allocator_helper<_Tp, _Alloc>::type 5209: { }; 5209: 5209: struct __uses_alloc_base { }; 5209: 5209: struct __uses_alloc0 : __uses_alloc_base 5209: { 5209: struct _Sink { void operator=(const void*) { } } _M_a; 5209: }; 5209: 5209: template 5209: struct __uses_alloc1 : __uses_alloc_base { const _Alloc* _M_a; }; 5209: 5209: template 5209: struct __uses_alloc2 : __uses_alloc_base { const _Alloc* _M_a; }; 5209: 5209: template 5209: struct __uses_alloc; 5209: 5209: template 5209: struct __uses_alloc 5209: : conditional< 5209: is_constructible<_Tp, allocator_arg_t, const _Alloc&, _Args...>::value, 5209: __uses_alloc1<_Alloc>, 5209: __uses_alloc2<_Alloc>>::type 5209: { 5209: 5209: 5209: static_assert(__or_< 5209: is_constructible<_Tp, allocator_arg_t, const _Alloc&, _Args...>, 5209: is_constructible<_Tp, _Args..., const _Alloc&>>::value, 5209: "construction with an allocator must be possible" 5209: " if uses_allocator is true"); 5209: }; 5209: 5209: template 5209: struct __uses_alloc 5209: : __uses_alloc0 { }; 5209: 5209: template 5209: using __uses_alloc_t = 5209: __uses_alloc::value, _Tp, _Alloc, _Args...>; 5209: 5209: template 5209: 5209: inline __uses_alloc_t<_Tp, _Alloc, _Args...> 5209: __use_alloc(const _Alloc& __a) 5209: { 5209: __uses_alloc_t<_Tp, _Alloc, _Args...> __ret; 5209: __ret._M_a = std::__addressof(__a); 5209: return __ret; 5209: } 5209: 5209: template 5209: void 5209: __use_alloc(const _Alloc&&) = delete; 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: template class _Predicate, 5209: typename _Tp, typename _Alloc, typename... _Args> 5209: struct __is_uses_allocator_predicate 5209: : conditional::value, 5209: __or_<_Predicate<_Tp, allocator_arg_t, _Alloc, _Args...>, 5209: _Predicate<_Tp, _Args..., _Alloc>>, 5209: _Predicate<_Tp, _Args...>>::type { }; 5209: 5209: template 5209: struct __is_uses_allocator_constructible 5209: : __is_uses_allocator_predicate 5209: { }; 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: struct __is_nothrow_uses_allocator_constructible 5209: : __is_uses_allocator_predicate 5209: { }; 5209: # 164 "/usr/include/c++/10/bits/uses_allocator.h" 3 5209: template 5209: void __uses_allocator_construct_impl(__uses_alloc0 __a, _Tp* __ptr, 5209: _Args&&... __args) 5209: { ::new ((void*)__ptr) _Tp(std::forward<_Args>(__args)...); } 5209: 5209: template 5209: void __uses_allocator_construct_impl(__uses_alloc1<_Alloc> __a, _Tp* __ptr, 5209: _Args&&... __args) 5209: { 5209: ::new ((void*)__ptr) _Tp(allocator_arg, *__a._M_a, 5209: std::forward<_Args>(__args)...); 5209: } 5209: 5209: template 5209: void __uses_allocator_construct_impl(__uses_alloc2<_Alloc> __a, _Tp* __ptr, 5209: _Args&&... __args) 5209: { ::new ((void*)__ptr) _Tp(std::forward<_Args>(__args)..., *__a._M_a); } 5209: 5209: template 5209: void __uses_allocator_construct(const _Alloc& __a, _Tp* __ptr, 5209: _Args&&... __args) 5209: { 5209: std::__uses_allocator_construct_impl( 5209: std::__use_alloc<_Tp, _Alloc, _Args...>(__a), __ptr, 5209: std::forward<_Args>(__args)...); 5209: } 5209: 5209: 5209: } 5209: # 41 "/usr/include/c++/10/tuple" 2 3 5209: # 1 "/usr/include/c++/10/bits/invoke.h" 1 3 5209: # 33 "/usr/include/c++/10/bits/invoke.h" 3 5209: 5209: # 34 "/usr/include/c++/10/bits/invoke.h" 3 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: # 52 "/usr/include/c++/10/bits/invoke.h" 3 5209: template::type> 5209: constexpr _Up&& 5209: __invfwd(typename remove_reference<_Tp>::type& __t) noexcept 5209: { return static_cast<_Up&&>(__t); } 5209: 5209: template 5209: constexpr _Res 5209: __invoke_impl(__invoke_other, _Fn&& __f, _Args&&... __args) 5209: { return std::forward<_Fn>(__f)(std::forward<_Args>(__args)...); } 5209: 5209: template 5209: constexpr _Res 5209: __invoke_impl(__invoke_memfun_ref, _MemFun&& __f, _Tp&& __t, 5209: _Args&&... __args) 5209: { return (__invfwd<_Tp>(__t).*__f)(std::forward<_Args>(__args)...); } 5209: 5209: template 5209: constexpr _Res 5209: __invoke_impl(__invoke_memfun_deref, _MemFun&& __f, _Tp&& __t, 5209: _Args&&... __args) 5209: { 5209: return ((*std::forward<_Tp>(__t)).*__f)(std::forward<_Args>(__args)...); 5209: } 5209: 5209: template 5209: constexpr _Res 5209: __invoke_impl(__invoke_memobj_ref, _MemPtr&& __f, _Tp&& __t) 5209: { return __invfwd<_Tp>(__t).*__f; } 5209: 5209: template 5209: constexpr _Res 5209: __invoke_impl(__invoke_memobj_deref, _MemPtr&& __f, _Tp&& __t) 5209: { return (*std::forward<_Tp>(__t)).*__f; } 5209: 5209: 5209: template 5209: constexpr typename __invoke_result<_Callable, _Args...>::type 5209: __invoke(_Callable&& __fn, _Args&&... __args) 5209: noexcept(__is_nothrow_invocable<_Callable, _Args...>::value) 5209: { 5209: using __result = __invoke_result<_Callable, _Args...>; 5209: using __type = typename __result::type; 5209: using __tag = typename __result::__invoke_type; 5209: return std::__invoke_impl<__type>(__tag{}, std::forward<_Callable>(__fn), 5209: std::forward<_Args>(__args)...); 5209: } 5209: # 118 "/usr/include/c++/10/bits/invoke.h" 3 5209: template 5209: using __can_invoke_as_void = __enable_if_t< 5209: __and_, __is_invocable<_Callable, _Args...>>::value, 5209: _Res 5209: >; 5209: 5209: template 5209: using __can_invoke_as_nonvoid = __enable_if_t< 5209: __and_<__not_>, 5209: is_convertible::type, 5209: _Res> 5209: >::value, 5209: _Res 5209: >; 5209: 5209: 5209: template 5209: constexpr __can_invoke_as_nonvoid<_Res, _Callable, _Args...> 5209: __invoke_r(_Callable&& __fn, _Args&&... __args) 5209: { 5209: using __result = __invoke_result<_Callable, _Args...>; 5209: using __type = typename __result::type; 5209: using __tag = typename __result::__invoke_type; 5209: return std::__invoke_impl<__type>(__tag{}, std::forward<_Callable>(__fn), 5209: std::forward<_Args>(__args)...); 5209: } 5209: 5209: 5209: template 5209: __can_invoke_as_void<_Res, _Callable, _Args...> 5209: __invoke_r(_Callable&& __fn, _Args&&... __args) 5209: { 5209: using __result = __invoke_result<_Callable, _Args...>; 5209: using __type = typename __result::type; 5209: using __tag = typename __result::__invoke_type; 5209: std::__invoke_impl<__type>(__tag{}, std::forward<_Callable>(__fn), 5209: std::forward<_Args>(__args)...); 5209: } 5209: 5209: 5209: 5209: } 5209: # 42 "/usr/include/c++/10/tuple" 2 3 5209: 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: class tuple; 5209: 5209: template 5209: struct __is_empty_non_tuple : is_empty<_Tp> { }; 5209: 5209: 5209: template 5209: struct __is_empty_non_tuple> : false_type { }; 5209: 5209: 5209: template 5209: using __empty_not_final 5209: = typename conditional<__is_final(_Tp), false_type, 5209: __is_empty_non_tuple<_Tp>>::type; 5209: 5209: template::value> 5209: struct _Head_base; 5209: 5209: template 5209: struct _Head_base<_Idx, _Head, true> 5209: : public _Head 5209: { 5209: constexpr _Head_base() 5209: : _Head() { } 5209: 5209: constexpr _Head_base(const _Head& __h) 5209: : _Head(__h) { } 5209: 5209: constexpr _Head_base(const _Head_base&) = default; 5209: constexpr _Head_base(_Head_base&&) = default; 5209: 5209: template 5209: constexpr _Head_base(_UHead&& __h) 5209: : _Head(std::forward<_UHead>(__h)) { } 5209: 5209: _Head_base(allocator_arg_t, __uses_alloc0) 5209: : _Head() { } 5209: 5209: template 5209: _Head_base(allocator_arg_t, __uses_alloc1<_Alloc> __a) 5209: : _Head(allocator_arg, *__a._M_a) { } 5209: 5209: template 5209: _Head_base(allocator_arg_t, __uses_alloc2<_Alloc> __a) 5209: : _Head(*__a._M_a) { } 5209: 5209: template 5209: _Head_base(__uses_alloc0, _UHead&& __uhead) 5209: : _Head(std::forward<_UHead>(__uhead)) { } 5209: 5209: template 5209: _Head_base(__uses_alloc1<_Alloc> __a, _UHead&& __uhead) 5209: : _Head(allocator_arg, *__a._M_a, std::forward<_UHead>(__uhead)) { } 5209: 5209: template 5209: _Head_base(__uses_alloc2<_Alloc> __a, _UHead&& __uhead) 5209: : _Head(std::forward<_UHead>(__uhead), *__a._M_a) { } 5209: 5209: static constexpr _Head& 5209: _M_head(_Head_base& __b) noexcept { return __b; } 5209: 5209: static constexpr const _Head& 5209: _M_head(const _Head_base& __b) noexcept { return __b; } 5209: }; 5209: 5209: template 5209: struct _Head_base<_Idx, _Head, false> 5209: { 5209: constexpr _Head_base() 5209: : _M_head_impl() { } 5209: 5209: constexpr _Head_base(const _Head& __h) 5209: : _M_head_impl(__h) { } 5209: 5209: constexpr _Head_base(const _Head_base&) = default; 5209: constexpr _Head_base(_Head_base&&) = default; 5209: 5209: template 5209: constexpr _Head_base(_UHead&& __h) 5209: : _M_head_impl(std::forward<_UHead>(__h)) { } 5209: 5209: 5209: _Head_base(allocator_arg_t, __uses_alloc0) 5209: : _M_head_impl() { } 5209: 5209: template 5209: _Head_base(allocator_arg_t, __uses_alloc1<_Alloc> __a) 5209: : _M_head_impl(allocator_arg, *__a._M_a) { } 5209: 5209: template 5209: _Head_base(allocator_arg_t, __uses_alloc2<_Alloc> __a) 5209: : _M_head_impl(*__a._M_a) { } 5209: 5209: template 5209: 5209: _Head_base(__uses_alloc0, _UHead&& __uhead) 5209: : _M_head_impl(std::forward<_UHead>(__uhead)) { } 5209: 5209: template 5209: _Head_base(__uses_alloc1<_Alloc> __a, _UHead&& __uhead) 5209: : _M_head_impl(allocator_arg, *__a._M_a, std::forward<_UHead>(__uhead)) 5209: { } 5209: 5209: template 5209: _Head_base(__uses_alloc2<_Alloc> __a, _UHead&& __uhead) 5209: : _M_head_impl(std::forward<_UHead>(__uhead), *__a._M_a) { } 5209: 5209: static constexpr _Head& 5209: _M_head(_Head_base& __b) noexcept { return __b._M_head_impl; } 5209: 5209: static constexpr const _Head& 5209: _M_head(const _Head_base& __b) noexcept { return __b._M_head_impl; } 5209: 5209: _Head _M_head_impl; 5209: }; 5209: # 178 "/usr/include/c++/10/tuple" 3 5209: template 5209: struct _Tuple_impl; 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: struct _Tuple_impl<_Idx, _Head, _Tail...> 5209: : public _Tuple_impl<_Idx + 1, _Tail...>, 5209: private _Head_base<_Idx, _Head> 5209: { 5209: template friend class _Tuple_impl; 5209: 5209: typedef _Tuple_impl<_Idx + 1, _Tail...> _Inherited; 5209: typedef _Head_base<_Idx, _Head> _Base; 5209: 5209: static constexpr _Head& 5209: _M_head(_Tuple_impl& __t) noexcept { return _Base::_M_head(__t); } 5209: 5209: static constexpr const _Head& 5209: _M_head(const _Tuple_impl& __t) noexcept { return _Base::_M_head(__t); } 5209: 5209: static constexpr _Inherited& 5209: _M_tail(_Tuple_impl& __t) noexcept { return __t; } 5209: 5209: static constexpr const _Inherited& 5209: _M_tail(const _Tuple_impl& __t) noexcept { return __t; } 5209: 5209: constexpr _Tuple_impl() 5209: : _Inherited(), _Base() { } 5209: 5209: explicit 5209: constexpr _Tuple_impl(const _Head& __head, const _Tail&... __tail) 5209: : _Inherited(__tail...), _Base(__head) { } 5209: 5209: template::type> 5209: explicit 5209: constexpr _Tuple_impl(_UHead&& __head, _UTail&&... __tail) 5209: : _Inherited(std::forward<_UTail>(__tail)...), 5209: _Base(std::forward<_UHead>(__head)) { } 5209: 5209: constexpr _Tuple_impl(const _Tuple_impl&) = default; 5209: 5209: 5209: 5209: _Tuple_impl& operator=(const _Tuple_impl&) = delete; 5209: 5209: constexpr 5209: _Tuple_impl(_Tuple_impl&& __in) 5209: noexcept(__and_, 5209: is_nothrow_move_constructible<_Inherited>>::value) 5209: : _Inherited(std::move(_M_tail(__in))), 5209: _Base(std::forward<_Head>(_M_head(__in))) { } 5209: 5209: template 5209: constexpr _Tuple_impl(const _Tuple_impl<_Idx, _UElements...>& __in) 5209: : _Inherited(_Tuple_impl<_Idx, _UElements...>::_M_tail(__in)), 5209: _Base(_Tuple_impl<_Idx, _UElements...>::_M_head(__in)) { } 5209: 5209: template 5209: constexpr _Tuple_impl(_Tuple_impl<_Idx, _UHead, _UTails...>&& __in) 5209: : _Inherited(std::move 5209: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in))), 5209: _Base(std::forward<_UHead> 5209: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in))) { } 5209: 5209: template 5209: 5209: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a) 5209: : _Inherited(__tag, __a), 5209: _Base(__tag, __use_alloc<_Head>(__a)) { } 5209: 5209: template 5209: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 5209: const _Head& __head, const _Tail&... __tail) 5209: : _Inherited(__tag, __a, __tail...), 5209: _Base(__use_alloc<_Head, _Alloc, _Head>(__a), __head) { } 5209: 5209: template::type> 5209: 5209: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 5209: _UHead&& __head, _UTail&&... __tail) 5209: : _Inherited(__tag, __a, std::forward<_UTail>(__tail)...), 5209: _Base(__use_alloc<_Head, _Alloc, _UHead>(__a), 5209: std::forward<_UHead>(__head)) { } 5209: 5209: template 5209: 5209: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 5209: const _Tuple_impl& __in) 5209: : _Inherited(__tag, __a, _M_tail(__in)), 5209: _Base(__use_alloc<_Head, _Alloc, _Head>(__a), _M_head(__in)) { } 5209: 5209: template 5209: 5209: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 5209: _Tuple_impl&& __in) 5209: : _Inherited(__tag, __a, std::move(_M_tail(__in))), 5209: _Base(__use_alloc<_Head, _Alloc, _Head>(__a), 5209: std::forward<_Head>(_M_head(__in))) { } 5209: 5209: template 5209: 5209: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 5209: const _Tuple_impl<_Idx, _UElements...>& __in) 5209: : _Inherited(__tag, __a, 5209: _Tuple_impl<_Idx, _UElements...>::_M_tail(__in)), 5209: _Base(__use_alloc<_Head, _Alloc, _Head>(__a), 5209: _Tuple_impl<_Idx, _UElements...>::_M_head(__in)) { } 5209: 5209: template 5209: 5209: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 5209: _Tuple_impl<_Idx, _UHead, _UTails...>&& __in) 5209: : _Inherited(__tag, __a, std::move 5209: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in))), 5209: _Base(__use_alloc<_Head, _Alloc, _UHead>(__a), 5209: std::forward<_UHead> 5209: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in))) { } 5209: 5209: template 5209: 5209: void 5209: _M_assign(const _Tuple_impl<_Idx, _UElements...>& __in) 5209: { 5209: _M_head(*this) = _Tuple_impl<_Idx, _UElements...>::_M_head(__in); 5209: _M_tail(*this)._M_assign( 5209: _Tuple_impl<_Idx, _UElements...>::_M_tail(__in)); 5209: } 5209: 5209: template 5209: 5209: void 5209: _M_assign(_Tuple_impl<_Idx, _UHead, _UTails...>&& __in) 5209: { 5209: _M_head(*this) = std::forward<_UHead> 5209: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in)); 5209: _M_tail(*this)._M_assign( 5209: std::move(_Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in))); 5209: } 5209: 5209: protected: 5209: 5209: void 5209: _M_swap(_Tuple_impl& __in) 5209: { 5209: using std::swap; 5209: swap(_M_head(*this), _M_head(__in)); 5209: _Inherited::_M_swap(_M_tail(__in)); 5209: } 5209: }; 5209: 5209: 5209: template 5209: struct _Tuple_impl<_Idx, _Head> 5209: : private _Head_base<_Idx, _Head> 5209: { 5209: template friend class _Tuple_impl; 5209: 5209: typedef _Head_base<_Idx, _Head> _Base; 5209: 5209: static constexpr _Head& 5209: _M_head(_Tuple_impl& __t) noexcept { return _Base::_M_head(__t); } 5209: 5209: static constexpr const _Head& 5209: _M_head(const _Tuple_impl& __t) noexcept { return _Base::_M_head(__t); } 5209: 5209: constexpr _Tuple_impl() 5209: : _Base() { } 5209: 5209: explicit 5209: constexpr _Tuple_impl(const _Head& __head) 5209: : _Base(__head) { } 5209: 5209: template 5209: explicit 5209: constexpr _Tuple_impl(_UHead&& __head) 5209: : _Base(std::forward<_UHead>(__head)) { } 5209: 5209: constexpr _Tuple_impl(const _Tuple_impl&) = default; 5209: 5209: 5209: 5209: _Tuple_impl& operator=(const _Tuple_impl&) = delete; 5209: 5209: constexpr 5209: _Tuple_impl(_Tuple_impl&& __in) 5209: noexcept(is_nothrow_move_constructible<_Head>::value) 5209: : _Base(std::forward<_Head>(_M_head(__in))) { } 5209: 5209: template 5209: constexpr _Tuple_impl(const _Tuple_impl<_Idx, _UHead>& __in) 5209: : _Base(_Tuple_impl<_Idx, _UHead>::_M_head(__in)) { } 5209: 5209: template 5209: constexpr _Tuple_impl(_Tuple_impl<_Idx, _UHead>&& __in) 5209: : _Base(std::forward<_UHead>(_Tuple_impl<_Idx, _UHead>::_M_head(__in))) 5209: { } 5209: 5209: template 5209: 5209: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a) 5209: : _Base(__tag, __use_alloc<_Head>(__a)) { } 5209: 5209: template 5209: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 5209: const _Head& __head) 5209: : _Base(__use_alloc<_Head, _Alloc, _Head>(__a), __head) { } 5209: 5209: template 5209: 5209: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 5209: _UHead&& __head) 5209: : _Base(__use_alloc<_Head, _Alloc, _UHead>(__a), 5209: std::forward<_UHead>(__head)) { } 5209: 5209: template 5209: 5209: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 5209: const _Tuple_impl& __in) 5209: : _Base(__use_alloc<_Head, _Alloc, _Head>(__a), _M_head(__in)) { } 5209: 5209: template 5209: 5209: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 5209: _Tuple_impl&& __in) 5209: : _Base(__use_alloc<_Head, _Alloc, _Head>(__a), 5209: std::forward<_Head>(_M_head(__in))) { } 5209: 5209: template 5209: 5209: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 5209: const _Tuple_impl<_Idx, _UHead>& __in) 5209: : _Base(__use_alloc<_Head, _Alloc, _Head>(__a), 5209: _Tuple_impl<_Idx, _UHead>::_M_head(__in)) { } 5209: 5209: template 5209: 5209: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 5209: _Tuple_impl<_Idx, _UHead>&& __in) 5209: : _Base(__use_alloc<_Head, _Alloc, _UHead>(__a), 5209: std::forward<_UHead>(_Tuple_impl<_Idx, _UHead>::_M_head(__in))) 5209: { } 5209: 5209: template 5209: 5209: void 5209: _M_assign(const _Tuple_impl<_Idx, _UHead>& __in) 5209: { 5209: _M_head(*this) = _Tuple_impl<_Idx, _UHead>::_M_head(__in); 5209: } 5209: 5209: template 5209: 5209: void 5209: _M_assign(_Tuple_impl<_Idx, _UHead>&& __in) 5209: { 5209: _M_head(*this) 5209: = std::forward<_UHead>(_Tuple_impl<_Idx, _UHead>::_M_head(__in)); 5209: } 5209: 5209: protected: 5209: 5209: void 5209: _M_swap(_Tuple_impl& __in) 5209: { 5209: using std::swap; 5209: swap(_M_head(*this), _M_head(__in)); 5209: } 5209: }; 5209: 5209: 5209: 5209: template 5209: struct _TupleConstraints 5209: { 5209: 5209: 5209: 5209: template 5209: static constexpr bool __is_implicitly_constructible() 5209: { 5209: return __and_..., 5209: is_convertible<_UTypes, _Types>... 5209: >::value; 5209: } 5209: 5209: 5209: 5209: 5209: template 5209: static constexpr bool __is_explicitly_constructible() 5209: { 5209: return __and_..., 5209: __not_<__and_...>> 5209: >::value; 5209: } 5209: 5209: static constexpr bool __is_implicitly_default_constructible() 5209: { 5209: return __and_... 5209: >::value; 5209: } 5209: 5209: static constexpr bool __is_explicitly_default_constructible() 5209: { 5209: return __and_..., 5209: __not_<__and_< 5209: std::__is_implicitly_default_constructible<_Types>...> 5209: >>::value; 5209: } 5209: }; 5209: 5209: 5209: 5209: template 5209: struct _TupleConstraints 5209: { 5209: template 5209: static constexpr bool __is_implicitly_constructible() 5209: { return false; } 5209: 5209: template 5209: static constexpr bool __is_explicitly_constructible() 5209: { return false; } 5209: }; 5209: 5209: 5209: template 5209: class tuple : public _Tuple_impl<0, _Elements...> 5209: { 5209: typedef _Tuple_impl<0, _Elements...> _Inherited; 5209: 5209: template 5209: using _TCC = _TupleConstraints<_Cond, _Elements...>; 5209: 5209: 5209: template 5209: using _ImplicitDefaultCtor = __enable_if_t< 5209: _TCC<_Dummy>::__is_implicitly_default_constructible(), 5209: bool>; 5209: 5209: 5209: template 5209: using _ExplicitDefaultCtor = __enable_if_t< 5209: _TCC<_Dummy>::__is_explicitly_default_constructible(), 5209: bool>; 5209: 5209: 5209: template 5209: using _ImplicitCtor = __enable_if_t< 5209: _TCC<_Cond>::template __is_implicitly_constructible<_Args...>(), 5209: bool>; 5209: 5209: 5209: template 5209: using _ExplicitCtor = __enable_if_t< 5209: _TCC<_Cond>::template __is_explicitly_constructible<_Args...>(), 5209: bool>; 5209: 5209: template 5209: static constexpr 5209: __enable_if_t 5209: __assignable() 5209: { return __and_...>::value; } 5209: 5209: 5209: template 5209: static constexpr bool __nothrow_assignable() 5209: { 5209: return 5209: __and_...>::value; 5209: } 5209: 5209: 5209: template 5209: static constexpr bool __nothrow_constructible() 5209: { 5209: return 5209: __and_...>::value; 5209: } 5209: 5209: 5209: template 5209: static constexpr bool __valid_args() 5209: { 5209: return sizeof...(_Elements) == 1 5209: && !is_same>::value; 5209: } 5209: 5209: 5209: template 5209: static constexpr bool __valid_args() 5209: { return (sizeof...(_Tail) + 2) == sizeof...(_Elements); } 5209: # 587 "/usr/include/c++/10/tuple" 3 5209: template> 5209: struct _UseOtherCtor 5209: : false_type 5209: { }; 5209: 5209: 5209: template 5209: struct _UseOtherCtor<_Tuple, tuple<_Tp>, tuple<_Up>> 5209: : __or_, is_constructible<_Tp, _Tuple>> 5209: { }; 5209: 5209: 5209: template 5209: struct _UseOtherCtor<_Tuple, tuple<_Tp>, tuple<_Tp>> 5209: : true_type 5209: { }; 5209: 5209: 5209: 5209: 5209: template 5209: static constexpr bool __use_other_ctor() 5209: { return _UseOtherCtor<_Tuple>::value; } 5209: 5209: public: 5209: template::value> = true> 5209: constexpr 5209: tuple() 5209: noexcept(__and_...>::value) 5209: : _Inherited() { } 5209: 5209: template::value> = false> 5209: explicit constexpr 5209: tuple() 5209: noexcept(__and_...>::value) 5209: : _Inherited() { } 5209: 5209: template= 1), 5209: _ImplicitCtor<_NotEmpty, const _Elements&...> = true> 5209: constexpr 5209: tuple(const _Elements&... __elements) 5209: noexcept(__nothrow_constructible()) 5209: : _Inherited(__elements...) { } 5209: 5209: template= 1), 5209: _ExplicitCtor<_NotEmpty, const _Elements&...> = false> 5209: explicit constexpr 5209: tuple(const _Elements&... __elements) 5209: noexcept(__nothrow_constructible()) 5209: : _Inherited(__elements...) { } 5209: 5209: template(), 5209: _ImplicitCtor<_Valid, _UElements...> = true> 5209: constexpr 5209: tuple(_UElements&&... __elements) 5209: noexcept(__nothrow_constructible<_UElements...>()) 5209: : _Inherited(std::forward<_UElements>(__elements)...) { } 5209: 5209: template(), 5209: _ExplicitCtor<_Valid, _UElements...> = false> 5209: explicit constexpr 5209: tuple(_UElements&&... __elements) 5209: noexcept(__nothrow_constructible<_UElements...>()) 5209: : _Inherited(std::forward<_UElements>(__elements)...) { } 5209: 5209: constexpr tuple(const tuple&) = default; 5209: 5209: constexpr tuple(tuple&&) = default; 5209: 5209: template&>(), 5209: _ImplicitCtor<_Valid, const _UElements&...> = true> 5209: constexpr 5209: tuple(const tuple<_UElements...>& __in) 5209: noexcept(__nothrow_constructible()) 5209: : _Inherited(static_cast&>(__in)) 5209: { } 5209: 5209: template&>(), 5209: _ExplicitCtor<_Valid, const _UElements&...> = false> 5209: explicit constexpr 5209: tuple(const tuple<_UElements...>& __in) 5209: noexcept(__nothrow_constructible()) 5209: : _Inherited(static_cast&>(__in)) 5209: { } 5209: 5209: template&&>(), 5209: _ImplicitCtor<_Valid, _UElements...> = true> 5209: constexpr 5209: tuple(tuple<_UElements...>&& __in) 5209: noexcept(__nothrow_constructible<_UElements...>()) 5209: : _Inherited(static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) { } 5209: 5209: template&&>(), 5209: _ExplicitCtor<_Valid, _UElements...> = false> 5209: explicit constexpr 5209: tuple(tuple<_UElements...>&& __in) 5209: noexcept(__nothrow_constructible<_UElements...>()) 5209: : _Inherited(static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) { } 5209: 5209: 5209: 5209: template::value> = true> 5209: 5209: tuple(allocator_arg_t __tag, const _Alloc& __a) 5209: : _Inherited(__tag, __a) { } 5209: 5209: template= 1), 5209: _ImplicitCtor<_NotEmpty, const _Elements&...> = true> 5209: 5209: tuple(allocator_arg_t __tag, const _Alloc& __a, 5209: const _Elements&... __elements) 5209: : _Inherited(__tag, __a, __elements...) { } 5209: 5209: template= 1), 5209: _ExplicitCtor<_NotEmpty, const _Elements&...> = false> 5209: 5209: explicit 5209: tuple(allocator_arg_t __tag, const _Alloc& __a, 5209: const _Elements&... __elements) 5209: : _Inherited(__tag, __a, __elements...) { } 5209: 5209: template(), 5209: _ImplicitCtor<_Valid, _UElements...> = true> 5209: 5209: tuple(allocator_arg_t __tag, const _Alloc& __a, 5209: _UElements&&... __elements) 5209: : _Inherited(__tag, __a, std::forward<_UElements>(__elements)...) 5209: { } 5209: 5209: template(), 5209: _ExplicitCtor<_Valid, _UElements...> = false> 5209: 5209: explicit 5209: tuple(allocator_arg_t __tag, const _Alloc& __a, 5209: _UElements&&... __elements) 5209: : _Inherited(__tag, __a, std::forward<_UElements>(__elements)...) 5209: { } 5209: 5209: template 5209: 5209: tuple(allocator_arg_t __tag, const _Alloc& __a, const tuple& __in) 5209: : _Inherited(__tag, __a, static_cast(__in)) { } 5209: 5209: template 5209: 5209: tuple(allocator_arg_t __tag, const _Alloc& __a, tuple&& __in) 5209: : _Inherited(__tag, __a, static_cast<_Inherited&&>(__in)) { } 5209: 5209: template&>(), 5209: _ImplicitCtor<_Valid, const _UElements&...> = true> 5209: 5209: tuple(allocator_arg_t __tag, const _Alloc& __a, 5209: const tuple<_UElements...>& __in) 5209: : _Inherited(__tag, __a, 5209: static_cast&>(__in)) 5209: { } 5209: 5209: template&>(), 5209: _ExplicitCtor<_Valid, const _UElements&...> = false> 5209: 5209: explicit 5209: tuple(allocator_arg_t __tag, const _Alloc& __a, 5209: const tuple<_UElements...>& __in) 5209: : _Inherited(__tag, __a, 5209: static_cast&>(__in)) 5209: { } 5209: 5209: template&&>(), 5209: _ImplicitCtor<_Valid, _UElements...> = true> 5209: 5209: tuple(allocator_arg_t __tag, const _Alloc& __a, 5209: tuple<_UElements...>&& __in) 5209: : _Inherited(__tag, __a, 5209: static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) 5209: { } 5209: 5209: template&&>(), 5209: _ExplicitCtor<_Valid, _UElements...> = false> 5209: 5209: explicit 5209: tuple(allocator_arg_t __tag, const _Alloc& __a, 5209: tuple<_UElements...>&& __in) 5209: : _Inherited(__tag, __a, 5209: static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) 5209: { } 5209: 5209: 5209: 5209: 5209: tuple& 5209: operator=(typename conditional<__assignable(), 5209: const tuple&, 5209: const __nonesuch&>::type __in) 5209: noexcept(__nothrow_assignable()) 5209: { 5209: this->_M_assign(__in); 5209: return *this; 5209: } 5209: 5209: 5209: tuple& 5209: operator=(typename conditional<__assignable<_Elements...>(), 5209: tuple&&, 5209: __nonesuch&&>::type __in) 5209: noexcept(__nothrow_assignable<_Elements...>()) 5209: { 5209: this->_M_assign(std::move(__in)); 5209: return *this; 5209: } 5209: 5209: template 5209: 5209: __enable_if_t<__assignable(), tuple&> 5209: operator=(const tuple<_UElements...>& __in) 5209: noexcept(__nothrow_assignable()) 5209: { 5209: this->_M_assign(__in); 5209: return *this; 5209: } 5209: 5209: template 5209: 5209: __enable_if_t<__assignable<_UElements...>(), tuple&> 5209: operator=(tuple<_UElements...>&& __in) 5209: noexcept(__nothrow_assignable<_UElements...>()) 5209: { 5209: this->_M_assign(std::move(__in)); 5209: return *this; 5209: } 5209: 5209: 5209: 5209: void 5209: swap(tuple& __in) 5209: noexcept(__and_<__is_nothrow_swappable<_Elements>...>::value) 5209: { _Inherited::_M_swap(__in); } 5209: }; 5209: # 863 "/usr/include/c++/10/tuple" 3 5209: template<> 5209: class tuple<> 5209: { 5209: public: 5209: void swap(tuple&) noexcept { } 5209: 5209: 5209: tuple() = default; 5209: 5209: template 5209: 5209: tuple(allocator_arg_t, const _Alloc&) noexcept { } 5209: template 5209: 5209: tuple(allocator_arg_t, const _Alloc&, const tuple&) noexcept { } 5209: }; 5209: 5209: 5209: 5209: template 5209: class tuple<_T1, _T2> : public _Tuple_impl<0, _T1, _T2> 5209: { 5209: typedef _Tuple_impl<0, _T1, _T2> _Inherited; 5209: 5209: 5209: template 5209: using _ImplicitDefaultCtor = __enable_if_t< 5209: _TupleConstraints<_Dummy, _U1, _U2>:: 5209: __is_implicitly_default_constructible(), 5209: bool>; 5209: 5209: 5209: template 5209: using _ExplicitDefaultCtor = __enable_if_t< 5209: _TupleConstraints<_Dummy, _U1, _U2>:: 5209: __is_explicitly_default_constructible(), 5209: bool>; 5209: 5209: template 5209: using _TCC = _TupleConstraints<_Dummy, _T1, _T2>; 5209: 5209: 5209: template 5209: using _ImplicitCtor = __enable_if_t< 5209: _TCC<_Cond>::template __is_implicitly_constructible<_U1, _U2>(), 5209: bool>; 5209: 5209: 5209: template 5209: using _ExplicitCtor = __enable_if_t< 5209: _TCC<_Cond>::template __is_explicitly_constructible<_U1, _U2>(), 5209: bool>; 5209: 5209: template 5209: static constexpr bool __assignable() 5209: { 5209: return __and_, 5209: is_assignable<_T2&, _U2>>::value; 5209: } 5209: 5209: template 5209: static constexpr bool __nothrow_assignable() 5209: { 5209: return __and_, 5209: is_nothrow_assignable<_T2&, _U2>>::value; 5209: } 5209: 5209: template 5209: static constexpr bool __nothrow_constructible() 5209: { 5209: return __and_, 5209: is_nothrow_constructible<_T2, _U2>>::value; 5209: } 5209: 5209: static constexpr bool __nothrow_default_constructible() 5209: { 5209: return __and_, 5209: is_nothrow_default_constructible<_T2>>::value; 5209: } 5209: 5209: template 5209: static constexpr bool __is_alloc_arg() 5209: { return is_same<__remove_cvref_t<_U1>, allocator_arg_t>::value; } 5209: 5209: public: 5209: template = true> 5209: constexpr 5209: tuple() 5209: noexcept(__nothrow_default_constructible()) 5209: : _Inherited() { } 5209: 5209: template = false> 5209: explicit constexpr 5209: tuple() 5209: noexcept(__nothrow_default_constructible()) 5209: : _Inherited() { } 5209: 5209: template = true> 5209: constexpr 5209: tuple(const _T1& __a1, const _T2& __a2) 5209: noexcept(__nothrow_constructible()) 5209: : _Inherited(__a1, __a2) { } 5209: 5209: template = false> 5209: explicit constexpr 5209: tuple(const _T1& __a1, const _T2& __a2) 5209: noexcept(__nothrow_constructible()) 5209: : _Inherited(__a1, __a2) { } 5209: 5209: template(), _U1, _U2> = true> 5209: constexpr 5209: tuple(_U1&& __a1, _U2&& __a2) 5209: noexcept(__nothrow_constructible<_U1, _U2>()) 5209: : _Inherited(std::forward<_U1>(__a1), std::forward<_U2>(__a2)) { } 5209: 5209: template(), _U1, _U2> = false> 5209: explicit constexpr 5209: tuple(_U1&& __a1, _U2&& __a2) 5209: noexcept(__nothrow_constructible<_U1, _U2>()) 5209: : _Inherited(std::forward<_U1>(__a1), std::forward<_U2>(__a2)) { } 5209: 5209: constexpr tuple(const tuple&) = default; 5209: 5209: constexpr tuple(tuple&&) = default; 5209: 5209: template = true> 5209: constexpr 5209: tuple(const tuple<_U1, _U2>& __in) 5209: noexcept(__nothrow_constructible()) 5209: : _Inherited(static_cast&>(__in)) { } 5209: 5209: template = false> 5209: explicit constexpr 5209: tuple(const tuple<_U1, _U2>& __in) 5209: noexcept(__nothrow_constructible()) 5209: : _Inherited(static_cast&>(__in)) { } 5209: 5209: template = true> 5209: constexpr 5209: tuple(tuple<_U1, _U2>&& __in) 5209: noexcept(__nothrow_constructible<_U1, _U2>()) 5209: : _Inherited(static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) { } 5209: 5209: template = false> 5209: explicit constexpr 5209: tuple(tuple<_U1, _U2>&& __in) 5209: noexcept(__nothrow_constructible<_U1, _U2>()) 5209: : _Inherited(static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) { } 5209: 5209: template = true> 5209: constexpr 5209: tuple(const pair<_U1, _U2>& __in) 5209: noexcept(__nothrow_constructible()) 5209: : _Inherited(__in.first, __in.second) { } 5209: 5209: template = false> 5209: explicit constexpr 5209: tuple(const pair<_U1, _U2>& __in) 5209: noexcept(__nothrow_constructible()) 5209: : _Inherited(__in.first, __in.second) { } 5209: 5209: template = true> 5209: constexpr 5209: tuple(pair<_U1, _U2>&& __in) 5209: noexcept(__nothrow_constructible<_U1, _U2>()) 5209: : _Inherited(std::forward<_U1>(__in.first), 5209: std::forward<_U2>(__in.second)) { } 5209: 5209: template = false> 5209: explicit constexpr 5209: tuple(pair<_U1, _U2>&& __in) 5209: noexcept(__nothrow_constructible<_U1, _U2>()) 5209: : _Inherited(std::forward<_U1>(__in.first), 5209: std::forward<_U2>(__in.second)) { } 5209: 5209: 5209: 5209: template::value, _T1, _T2> = true> 5209: 5209: tuple(allocator_arg_t __tag, const _Alloc& __a) 5209: : _Inherited(__tag, __a) { } 5209: 5209: template = true> 5209: 5209: tuple(allocator_arg_t __tag, const _Alloc& __a, 5209: const _T1& __a1, const _T2& __a2) 5209: : _Inherited(__tag, __a, __a1, __a2) { } 5209: 5209: template = false> 5209: explicit 5209: 5209: tuple(allocator_arg_t __tag, const _Alloc& __a, 5209: const _T1& __a1, const _T2& __a2) 5209: : _Inherited(__tag, __a, __a1, __a2) { } 5209: 5209: template = true> 5209: 5209: tuple(allocator_arg_t __tag, const _Alloc& __a, _U1&& __a1, _U2&& __a2) 5209: : _Inherited(__tag, __a, std::forward<_U1>(__a1), 5209: std::forward<_U2>(__a2)) { } 5209: 5209: template = false> 5209: explicit 5209: 5209: tuple(allocator_arg_t __tag, const _Alloc& __a, 5209: _U1&& __a1, _U2&& __a2) 5209: : _Inherited(__tag, __a, std::forward<_U1>(__a1), 5209: std::forward<_U2>(__a2)) { } 5209: 5209: template 5209: 5209: tuple(allocator_arg_t __tag, const _Alloc& __a, const tuple& __in) 5209: : _Inherited(__tag, __a, static_cast(__in)) { } 5209: 5209: template 5209: 5209: tuple(allocator_arg_t __tag, const _Alloc& __a, tuple&& __in) 5209: : _Inherited(__tag, __a, static_cast<_Inherited&&>(__in)) { } 5209: 5209: template = true> 5209: 5209: tuple(allocator_arg_t __tag, const _Alloc& __a, 5209: const tuple<_U1, _U2>& __in) 5209: : _Inherited(__tag, __a, 5209: static_cast&>(__in)) 5209: { } 5209: 5209: template = false> 5209: explicit 5209: 5209: tuple(allocator_arg_t __tag, const _Alloc& __a, 5209: const tuple<_U1, _U2>& __in) 5209: : _Inherited(__tag, __a, 5209: static_cast&>(__in)) 5209: { } 5209: 5209: template = true> 5209: 5209: tuple(allocator_arg_t __tag, const _Alloc& __a, tuple<_U1, _U2>&& __in) 5209: : _Inherited(__tag, __a, static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) 5209: { } 5209: 5209: template = false> 5209: explicit 5209: 5209: tuple(allocator_arg_t __tag, const _Alloc& __a, tuple<_U1, _U2>&& __in) 5209: : _Inherited(__tag, __a, static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) 5209: { } 5209: 5209: template = true> 5209: 5209: tuple(allocator_arg_t __tag, const _Alloc& __a, 5209: const pair<_U1, _U2>& __in) 5209: : _Inherited(__tag, __a, __in.first, __in.second) { } 5209: 5209: template = false> 5209: explicit 5209: 5209: tuple(allocator_arg_t __tag, const _Alloc& __a, 5209: const pair<_U1, _U2>& __in) 5209: : _Inherited(__tag, __a, __in.first, __in.second) { } 5209: 5209: template = true> 5209: 5209: tuple(allocator_arg_t __tag, const _Alloc& __a, pair<_U1, _U2>&& __in) 5209: : _Inherited(__tag, __a, std::forward<_U1>(__in.first), 5209: std::forward<_U2>(__in.second)) { } 5209: 5209: template = false> 5209: explicit 5209: 5209: tuple(allocator_arg_t __tag, const _Alloc& __a, pair<_U1, _U2>&& __in) 5209: : _Inherited(__tag, __a, std::forward<_U1>(__in.first), 5209: std::forward<_U2>(__in.second)) { } 5209: 5209: 5209: 5209: 5209: tuple& 5209: operator=(typename conditional<__assignable(), 5209: const tuple&, 5209: const __nonesuch&>::type __in) 5209: noexcept(__nothrow_assignable()) 5209: { 5209: this->_M_assign(__in); 5209: return *this; 5209: } 5209: 5209: 5209: tuple& 5209: operator=(typename conditional<__assignable<_T1, _T2>(), 5209: tuple&&, 5209: __nonesuch&&>::type __in) 5209: noexcept(__nothrow_assignable<_T1, _T2>()) 5209: { 5209: this->_M_assign(std::move(__in)); 5209: return *this; 5209: } 5209: 5209: template 5209: 5209: __enable_if_t<__assignable(), tuple&> 5209: operator=(const tuple<_U1, _U2>& __in) 5209: noexcept(__nothrow_assignable()) 5209: { 5209: this->_M_assign(__in); 5209: return *this; 5209: } 5209: 5209: template 5209: 5209: __enable_if_t<__assignable<_U1, _U2>(), tuple&> 5209: operator=(tuple<_U1, _U2>&& __in) 5209: noexcept(__nothrow_assignable<_U1, _U2>()) 5209: { 5209: this->_M_assign(std::move(__in)); 5209: return *this; 5209: } 5209: 5209: template 5209: 5209: __enable_if_t<__assignable(), tuple&> 5209: operator=(const pair<_U1, _U2>& __in) 5209: noexcept(__nothrow_assignable()) 5209: { 5209: this->_M_head(*this) = __in.first; 5209: this->_M_tail(*this)._M_head(*this) = __in.second; 5209: return *this; 5209: } 5209: 5209: template 5209: 5209: __enable_if_t<__assignable<_U1, _U2>(), tuple&> 5209: operator=(pair<_U1, _U2>&& __in) 5209: noexcept(__nothrow_assignable<_U1, _U2>()) 5209: { 5209: this->_M_head(*this) = std::forward<_U1>(__in.first); 5209: this->_M_tail(*this)._M_head(*this) = std::forward<_U2>(__in.second); 5209: return *this; 5209: } 5209: 5209: 5209: void 5209: swap(tuple& __in) 5209: noexcept(__and_<__is_nothrow_swappable<_T1>, 5209: __is_nothrow_swappable<_T2>>::value) 5209: { _Inherited::_M_swap(__in); } 5209: }; 5209: 5209: 5209: 5209: template 5209: struct tuple_size> 5209: : public integral_constant { }; 5209: # 1254 "/usr/include/c++/10/tuple" 3 5209: template 5209: struct tuple_element<__i, tuple<_Head, _Tail...> > 5209: : tuple_element<__i - 1, tuple<_Tail...> > { }; 5209: 5209: 5209: 5209: 5209: template 5209: struct tuple_element<0, tuple<_Head, _Tail...> > 5209: { 5209: typedef _Head type; 5209: }; 5209: 5209: 5209: 5209: 5209: template 5209: struct tuple_element<__i, tuple<>> 5209: { 5209: static_assert(__i < tuple_size>::value, 5209: "tuple index is in range"); 5209: }; 5209: 5209: template 5209: constexpr _Head& 5209: __get_helper(_Tuple_impl<__i, _Head, _Tail...>& __t) noexcept 5209: { return _Tuple_impl<__i, _Head, _Tail...>::_M_head(__t); } 5209: 5209: template 5209: constexpr const _Head& 5209: __get_helper(const _Tuple_impl<__i, _Head, _Tail...>& __t) noexcept 5209: { return _Tuple_impl<__i, _Head, _Tail...>::_M_head(__t); } 5209: 5209: 5209: template 5209: constexpr __tuple_element_t<__i, tuple<_Elements...>>& 5209: get(tuple<_Elements...>& __t) noexcept 5209: { return std::__get_helper<__i>(__t); } 5209: 5209: 5209: template 5209: constexpr const __tuple_element_t<__i, tuple<_Elements...>>& 5209: get(const tuple<_Elements...>& __t) noexcept 5209: { return std::__get_helper<__i>(__t); } 5209: 5209: 5209: template 5209: constexpr __tuple_element_t<__i, tuple<_Elements...>>&& 5209: get(tuple<_Elements...>&& __t) noexcept 5209: { 5209: typedef __tuple_element_t<__i, tuple<_Elements...>> __element_type; 5209: return std::forward<__element_type&&>(std::get<__i>(__t)); 5209: } 5209: 5209: 5209: template 5209: constexpr const __tuple_element_t<__i, tuple<_Elements...>>&& 5209: get(const tuple<_Elements...>&& __t) noexcept 5209: { 5209: typedef __tuple_element_t<__i, tuple<_Elements...>> __element_type; 5209: return std::forward(std::get<__i>(__t)); 5209: } 5209: # 1358 "/usr/include/c++/10/tuple" 3 5209: template 5209: struct __tuple_compare 5209: { 5209: static constexpr bool 5209: __eq(const _Tp& __t, const _Up& __u) 5209: { 5209: return bool(std::get<__i>(__t) == std::get<__i>(__u)) 5209: && __tuple_compare<_Tp, _Up, __i + 1, __size>::__eq(__t, __u); 5209: } 5209: 5209: static constexpr bool 5209: __less(const _Tp& __t, const _Up& __u) 5209: { 5209: return bool(std::get<__i>(__t) < std::get<__i>(__u)) 5209: || (!bool(std::get<__i>(__u) < std::get<__i>(__t)) 5209: && __tuple_compare<_Tp, _Up, __i + 1, __size>::__less(__t, __u)); 5209: } 5209: }; 5209: 5209: template 5209: struct __tuple_compare<_Tp, _Up, __size, __size> 5209: { 5209: static constexpr bool 5209: __eq(const _Tp&, const _Up&) { return true; } 5209: 5209: static constexpr bool 5209: __less(const _Tp&, const _Up&) { return false; } 5209: }; 5209: 5209: template 5209: constexpr bool 5209: operator==(const tuple<_TElements...>& __t, 5209: const tuple<_UElements...>& __u) 5209: { 5209: static_assert(sizeof...(_TElements) == sizeof...(_UElements), 5209: "tuple objects can only be compared if they have equal sizes."); 5209: using __compare = __tuple_compare, 5209: tuple<_UElements...>, 5209: 0, sizeof...(_TElements)>; 5209: return __compare::__eq(__t, __u); 5209: } 5209: 5209: template 5209: constexpr bool 5209: operator<(const tuple<_TElements...>& __t, 5209: const tuple<_UElements...>& __u) 5209: { 5209: static_assert(sizeof...(_TElements) == sizeof...(_UElements), 5209: "tuple objects can only be compared if they have equal sizes."); 5209: using __compare = __tuple_compare, 5209: tuple<_UElements...>, 5209: 0, sizeof...(_TElements)>; 5209: return __compare::__less(__t, __u); 5209: } 5209: 5209: template 5209: constexpr bool 5209: operator!=(const tuple<_TElements...>& __t, 5209: const tuple<_UElements...>& __u) 5209: { return !(__t == __u); } 5209: 5209: template 5209: constexpr bool 5209: operator>(const tuple<_TElements...>& __t, 5209: const tuple<_UElements...>& __u) 5209: { return __u < __t; } 5209: 5209: template 5209: constexpr bool 5209: operator<=(const tuple<_TElements...>& __t, 5209: const tuple<_UElements...>& __u) 5209: { return !(__u < __t); } 5209: 5209: template 5209: constexpr bool 5209: operator>=(const tuple<_TElements...>& __t, 5209: const tuple<_UElements...>& __u) 5209: { return !(__t < __u); } 5209: 5209: 5209: template 5209: constexpr tuple::__type...> 5209: make_tuple(_Elements&&... __args) 5209: { 5209: typedef tuple::__type...> 5209: __result_type; 5209: return __result_type(std::forward<_Elements>(__args)...); 5209: } 5209: 5209: 5209: 5209: 5209: template 5209: constexpr tuple<_Elements&&...> 5209: forward_as_tuple(_Elements&&... __args) noexcept 5209: { return tuple<_Elements&&...>(std::forward<_Elements>(__args)...); } 5209: 5209: template 5209: struct __make_tuple_impl; 5209: 5209: template 5209: struct __make_tuple_impl<_Idx, tuple<_Tp...>, _Tuple, _Nm> 5209: : __make_tuple_impl<_Idx + 1, 5209: tuple<_Tp..., __tuple_element_t<_Idx, _Tuple>>, 5209: _Tuple, _Nm> 5209: { }; 5209: 5209: template 5209: struct __make_tuple_impl<_Nm, tuple<_Tp...>, _Tuple, _Nm> 5209: { 5209: typedef tuple<_Tp...> __type; 5209: }; 5209: 5209: template 5209: struct __do_make_tuple 5209: : __make_tuple_impl<0, tuple<>, _Tuple, std::tuple_size<_Tuple>::value> 5209: { }; 5209: 5209: 5209: template 5209: struct __make_tuple 5209: : public __do_make_tuple<__remove_cvref_t<_Tuple>> 5209: { }; 5209: 5209: 5209: template 5209: struct __combine_tuples; 5209: 5209: template<> 5209: struct __combine_tuples<> 5209: { 5209: typedef tuple<> __type; 5209: }; 5209: 5209: template 5209: struct __combine_tuples> 5209: { 5209: typedef tuple<_Ts...> __type; 5209: }; 5209: 5209: template 5209: struct __combine_tuples, tuple<_T2s...>, _Rem...> 5209: { 5209: typedef typename __combine_tuples, 5209: _Rem...>::__type __type; 5209: }; 5209: 5209: 5209: template 5209: struct __tuple_cat_result 5209: { 5209: typedef typename __combine_tuples 5209: ::__type...>::__type __type; 5209: }; 5209: 5209: 5209: 5209: template 5209: struct __make_1st_indices; 5209: 5209: template<> 5209: struct __make_1st_indices<> 5209: { 5209: typedef std::_Index_tuple<> __type; 5209: }; 5209: 5209: template 5209: struct __make_1st_indices<_Tp, _Tpls...> 5209: { 5209: typedef typename std::_Build_index_tuple::type>::value>::__type __type; 5209: }; 5209: 5209: 5209: 5209: 5209: template 5209: struct __tuple_concater; 5209: 5209: template 5209: struct __tuple_concater<_Ret, std::_Index_tuple<_Is...>, _Tp, _Tpls...> 5209: { 5209: template 5209: static constexpr _Ret 5209: _S_do(_Tp&& __tp, _Tpls&&... __tps, _Us&&... __us) 5209: { 5209: typedef typename __make_1st_indices<_Tpls...>::__type __idx; 5209: typedef __tuple_concater<_Ret, __idx, _Tpls...> __next; 5209: return __next::_S_do(std::forward<_Tpls>(__tps)..., 5209: std::forward<_Us>(__us)..., 5209: std::get<_Is>(std::forward<_Tp>(__tp))...); 5209: } 5209: }; 5209: 5209: template 5209: struct __tuple_concater<_Ret, std::_Index_tuple<>> 5209: { 5209: template 5209: static constexpr _Ret 5209: _S_do(_Us&&... __us) 5209: { 5209: return _Ret(std::forward<_Us>(__us)...); 5209: } 5209: }; 5209: 5209: 5209: template...>::value>::type> 5209: constexpr auto 5209: tuple_cat(_Tpls&&... __tpls) 5209: -> typename __tuple_cat_result<_Tpls...>::__type 5209: { 5209: typedef typename __tuple_cat_result<_Tpls...>::__type __ret; 5209: typedef typename __make_1st_indices<_Tpls...>::__type __idx; 5209: typedef __tuple_concater<__ret, __idx, _Tpls...> __concater; 5209: return __concater::_S_do(std::forward<_Tpls>(__tpls)...); 5209: } 5209: 5209: 5209: 5209: 5209: template 5209: constexpr tuple<_Elements&...> 5209: tie(_Elements&... __args) noexcept 5209: { return tuple<_Elements&...>(__args...); } 5209: 5209: 5209: template 5209: 5209: inline 5209: 5209: 5209: typename enable_if<__and_<__is_swappable<_Elements>...>::value 5209: >::type 5209: 5209: 5209: 5209: swap(tuple<_Elements...>& __x, tuple<_Elements...>& __y) 5209: noexcept(noexcept(__x.swap(__y))) 5209: { __x.swap(__y); } 5209: 5209: 5209: template 5209: 5209: typename enable_if...>::value>::type 5209: swap(tuple<_Elements...>&, tuple<_Elements...>&) = delete; 5209: 5209: 5209: 5209: 5209: 5209: 5209: struct _Swallow_assign 5209: { 5209: template 5209: const _Swallow_assign& 5209: operator=(const _Tp&) const 5209: { return *this; } 5209: }; 5209: 5209: 5209: 5209: constexpr _Swallow_assign ignore{}; 5209: 5209: 5209: template 5209: struct uses_allocator, _Alloc> : true_type { }; 5209: # 1635 "/usr/include/c++/10/tuple" 3 5209: template 5209: template 5209: 5209: inline 5209: pair<_T1, _T2>:: 5209: pair(piecewise_construct_t, 5209: tuple<_Args1...> __first, tuple<_Args2...> __second) 5209: : pair(__first, __second, 5209: typename _Build_index_tuple::__type(), 5209: typename _Build_index_tuple::__type()) 5209: { } 5209: 5209: template 5209: template 5209: inline 5209: pair<_T1, _T2>:: 5209: pair(tuple<_Args1...>& __tuple1, tuple<_Args2...>& __tuple2, 5209: _Index_tuple<_Indexes1...>, _Index_tuple<_Indexes2...>) 5209: : first(std::forward<_Args1>(std::get<_Indexes1>(__tuple1))...), 5209: second(std::forward<_Args2>(std::get<_Indexes2>(__tuple2))...) 5209: { } 5209: # 1725 "/usr/include/c++/10/tuple" 3 5209: 5209: } 5209: # 24 "/<>/test/../public/../internal/../public/output_stages.h" 2 5209: 5209: 5209: 5209: 5209: # 27 "/<>/test/../public/../internal/../public/output_stages.h" 5209: namespace gemmlowp { 5209: # 40 "/<>/test/../public/../internal/../public/output_stages.h" 5209: struct OutputStageQuantizeDownInt32ToUint8Scale { 5209: std::int32_t result_offset; 5209: std::int32_t result_mult_int; 5209: std::int32_t result_shift; 5209: }; 5209: # 61 "/<>/test/../public/../internal/../public/output_stages.h" 5209: template 5209: struct OutputStageQuantizeDownInt32ToUint8ScalePC { 5209: VectorMap result_offset; 5209: VectorMap result_mult_int; 5209: std::int32_t result_shift; 5209: }; 5209: # 115 "/<>/test/../public/../internal/../public/output_stages.h" 5209: struct OutputStageQuantizeDownInt32ByFixedPoint { 5209: std::int32_t result_fixedpoint_multiplier; 5209: std::int32_t result_shift; 5209: std::int32_t result_offset_after_shift; 5209: }; 5209: 5209: 5209: 5209: 5209: using OutputStageQuantizeDownInt32ToUint8ScaleByFixedPoint = OutputStageQuantizeDownInt32ByFixedPoint; 5209: # 135 "/<>/test/../public/../internal/../public/output_stages.h" 5209: struct OutputStageScaleInt32ByFixedPointAndExponent { 5209: std::int32_t result_fixedpoint_multiplier; 5209: std::int32_t result_exponent; 5209: std::int32_t result_offset_after_shift; 5209: }; 5209: # 154 "/<>/test/../public/../internal/../public/output_stages.h" 5209: template 5209: struct OutputStageScaleInt32ByFixedPointAndExponentPC { 5209: VectorMap result_fixedpoint_multiplier; 5209: VectorMap result_exponent; 5209: std::int32_t result_offset_after_shift; 5209: }; 5209: 5209: 5209: 5209: 5209: struct OutputStageSaturatingCastToUint8 {}; 5209: 5209: 5209: 5209: 5209: struct OutputStageSaturatingCastToInt8 {}; 5209: 5209: 5209: 5209: 5209: 5209: 5209: struct OutputStageTruncatingCastToUint8 {}; 5209: 5209: 5209: 5209: 5209: struct OutputStageSaturatingCastToInt16 {}; 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: struct OutputStageBiasAddition { 5209: VectorType bias_vector; 5209: }; 5209: 5209: 5209: 5209: 5209: struct OutputStageClamp { 5209: std::int32_t min; 5209: std::int32_t max; 5209: }; 5209: 5209: struct OutputStageTanh { 5209: std::int32_t real_zero_as_int32; 5209: std::int32_t real_amplitude_as_int32; 5209: }; 5209: 5209: 5209: 5209: 5209: inline std::tuple 5209: MakeStandardOutputPipeline(std::int32_t result_offset, 5209: std::int32_t result_mult_int, 5209: std::int32_t result_shift) { 5209: OutputStageQuantizeDownInt32ToUint8Scale quantize_down_stage; 5209: quantize_down_stage.result_offset = result_offset; 5209: quantize_down_stage.result_mult_int = result_mult_int; 5209: quantize_down_stage.result_shift = result_shift; 5209: OutputStageSaturatingCastToUint8 saturating_cast_stage; 5209: return std::make_tuple(quantize_down_stage, saturating_cast_stage); 5209: } 5209: 5209: 5209: 5209: 5209: template 5209: inline std::tuple, 5209: OutputStageSaturatingCastToUint8> 5209: MakeStandardOutputPipeline( 5209: const VectorMap& result_offset, 5209: const VectorMap& result_mult_int, 5209: std::int32_t result_shift) { 5209: OutputStageQuantizeDownInt32ToUint8ScalePC quantize_down_stage; 5209: quantize_down_stage.result_offset = result_offset; 5209: quantize_down_stage.result_mult_int = result_mult_int; 5209: quantize_down_stage.result_shift = result_shift; 5209: OutputStageSaturatingCastToUint8 saturating_cast_stage; 5209: return std::make_tuple(quantize_down_stage, saturating_cast_stage); 5209: } 5209: 5209: } 5209: # 23 "/<>/test/../public/../internal/dispatch_gemm_shape.h" 2 5209: # 1 "/<>/test/../public/../internal/multi_thread_gemm.h" 1 5209: # 22 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: # 1 "/usr/include/c++/10/atomic" 1 3 5209: # 35 "/usr/include/c++/10/atomic" 3 5209: 5209: # 36 "/usr/include/c++/10/atomic" 3 5209: 5209: 5209: 5209: 5209: 5209: # 1 "/usr/include/c++/10/bits/atomic_base.h" 1 3 5209: # 33 "/usr/include/c++/10/bits/atomic_base.h" 3 5209: 5209: # 34 "/usr/include/c++/10/bits/atomic_base.h" 3 5209: 5209: 5209: 5209: # 1 "/usr/include/c++/10/bits/atomic_lockfree_defines.h" 1 3 5209: # 33 "/usr/include/c++/10/bits/atomic_lockfree_defines.h" 3 5209: 5209: # 34 "/usr/include/c++/10/bits/atomic_lockfree_defines.h" 3 5209: # 38 "/usr/include/c++/10/bits/atomic_base.h" 2 3 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: # 44 "/usr/include/c++/10/bits/atomic_base.h" 3 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: # 74 "/usr/include/c++/10/bits/atomic_base.h" 3 5209: typedef enum memory_order 5209: { 5209: memory_order_relaxed, 5209: memory_order_consume, 5209: memory_order_acquire, 5209: memory_order_release, 5209: memory_order_acq_rel, 5209: memory_order_seq_cst 5209: } memory_order; 5209: 5209: 5209: enum __memory_order_modifier 5209: { 5209: __memory_order_mask = 0x0ffff, 5209: __memory_order_modifier_mask = 0xffff0000, 5209: __memory_order_hle_acquire = 0x10000, 5209: __memory_order_hle_release = 0x20000 5209: }; 5209: 5209: constexpr memory_order 5209: operator|(memory_order __m, __memory_order_modifier __mod) 5209: { 5209: return memory_order(int(__m) | int(__mod)); 5209: } 5209: 5209: constexpr memory_order 5209: operator&(memory_order __m, __memory_order_modifier __mod) 5209: { 5209: return memory_order(int(__m) & int(__mod)); 5209: } 5209: 5209: 5209: constexpr memory_order 5209: __cmpexch_failure_order2(memory_order __m) noexcept 5209: { 5209: return __m == memory_order_acq_rel ? memory_order_acquire 5209: : __m == memory_order_release ? memory_order_relaxed : __m; 5209: } 5209: 5209: constexpr memory_order 5209: __cmpexch_failure_order(memory_order __m) noexcept 5209: { 5209: return memory_order(__cmpexch_failure_order2(__m & __memory_order_mask) 5209: | __memory_order_modifier(__m & __memory_order_modifier_mask)); 5209: } 5209: 5209: inline __attribute__((__always_inline__)) void 5209: atomic_thread_fence(memory_order __m) noexcept 5209: { __atomic_thread_fence(int(__m)); } 5209: 5209: inline __attribute__((__always_inline__)) void 5209: atomic_signal_fence(memory_order __m) noexcept 5209: { __atomic_signal_fence(int(__m)); } 5209: 5209: 5209: template 5209: inline _Tp 5209: kill_dependency(_Tp __y) noexcept 5209: { 5209: _Tp __ret(__y); 5209: return __ret; 5209: } 5209: 5209: 5209: 5209: template 5209: struct __atomic_base; 5209: 5209: 5209: 5209: 5209: template 5209: struct atomic; 5209: 5209: template 5209: struct atomic<_Tp*>; 5209: 5209: 5209: 5209: typedef bool __atomic_flag_data_type; 5209: # 168 "/usr/include/c++/10/bits/atomic_base.h" 3 5209: extern "C" { 5209: 5209: struct __atomic_flag_base 5209: { 5209: __atomic_flag_data_type _M_i; 5209: }; 5209: 5209: } 5209: 5209: 5209: 5209: 5209: struct atomic_flag : public __atomic_flag_base 5209: { 5209: atomic_flag() noexcept = default; 5209: ~atomic_flag() noexcept = default; 5209: atomic_flag(const atomic_flag&) = delete; 5209: atomic_flag& operator=(const atomic_flag&) = delete; 5209: atomic_flag& operator=(const atomic_flag&) volatile = delete; 5209: 5209: 5209: constexpr atomic_flag(bool __i) noexcept 5209: : __atomic_flag_base{ _S_init(__i) } 5209: { } 5209: 5209: inline __attribute__((__always_inline__)) bool 5209: test_and_set(memory_order __m = memory_order_seq_cst) noexcept 5209: { 5209: return __atomic_test_and_set (&_M_i, int(__m)); 5209: } 5209: 5209: inline __attribute__((__always_inline__)) bool 5209: test_and_set(memory_order __m = memory_order_seq_cst) volatile noexcept 5209: { 5209: return __atomic_test_and_set (&_M_i, int(__m)); 5209: } 5209: 5209: inline __attribute__((__always_inline__)) void 5209: clear(memory_order __m = memory_order_seq_cst) noexcept 5209: { 5209: memory_order __b = __m & __memory_order_mask; 5209: ; 5209: ; 5209: ; 5209: 5209: __atomic_clear (&_M_i, int(__m)); 5209: } 5209: 5209: inline __attribute__((__always_inline__)) void 5209: clear(memory_order __m = memory_order_seq_cst) volatile noexcept 5209: { 5209: memory_order __b = __m & __memory_order_mask; 5209: ; 5209: ; 5209: ; 5209: 5209: __atomic_clear (&_M_i, int(__m)); 5209: } 5209: 5209: private: 5209: static constexpr __atomic_flag_data_type 5209: _S_init(bool __i) 5209: { return __i ? 1 : 0; } 5209: }; 5209: # 258 "/usr/include/c++/10/bits/atomic_base.h" 3 5209: template 5209: struct __atomic_base 5209: { 5209: using value_type = _ITp; 5209: using difference_type = value_type; 5209: 5209: private: 5209: typedef _ITp __int_type; 5209: 5209: static constexpr int _S_alignment = 5209: sizeof(_ITp) > alignof(_ITp) ? sizeof(_ITp) : alignof(_ITp); 5209: 5209: alignas(_S_alignment) __int_type _M_i; 5209: 5209: public: 5209: __atomic_base() noexcept = default; 5209: ~__atomic_base() noexcept = default; 5209: __atomic_base(const __atomic_base&) = delete; 5209: __atomic_base& operator=(const __atomic_base&) = delete; 5209: __atomic_base& operator=(const __atomic_base&) volatile = delete; 5209: 5209: 5209: constexpr __atomic_base(__int_type __i) noexcept : _M_i (__i) { } 5209: 5209: operator __int_type() const noexcept 5209: { return load(); } 5209: 5209: operator __int_type() const volatile noexcept 5209: { return load(); } 5209: 5209: __int_type 5209: operator=(__int_type __i) noexcept 5209: { 5209: store(__i); 5209: return __i; 5209: } 5209: 5209: __int_type 5209: operator=(__int_type __i) volatile noexcept 5209: { 5209: store(__i); 5209: return __i; 5209: } 5209: 5209: __int_type 5209: operator++(int) noexcept 5209: { return fetch_add(1); } 5209: 5209: __int_type 5209: operator++(int) volatile noexcept 5209: { return fetch_add(1); } 5209: 5209: __int_type 5209: operator--(int) noexcept 5209: { return fetch_sub(1); } 5209: 5209: __int_type 5209: operator--(int) volatile noexcept 5209: { return fetch_sub(1); } 5209: 5209: __int_type 5209: operator++() noexcept 5209: { return __atomic_add_fetch(&_M_i, 1, int(memory_order_seq_cst)); } 5209: 5209: __int_type 5209: operator++() volatile noexcept 5209: { return __atomic_add_fetch(&_M_i, 1, int(memory_order_seq_cst)); } 5209: 5209: __int_type 5209: operator--() noexcept 5209: { return __atomic_sub_fetch(&_M_i, 1, int(memory_order_seq_cst)); } 5209: 5209: __int_type 5209: operator--() volatile noexcept 5209: { return __atomic_sub_fetch(&_M_i, 1, int(memory_order_seq_cst)); } 5209: 5209: __int_type 5209: operator+=(__int_type __i) noexcept 5209: { return __atomic_add_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 5209: 5209: __int_type 5209: operator+=(__int_type __i) volatile noexcept 5209: { return __atomic_add_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 5209: 5209: __int_type 5209: operator-=(__int_type __i) noexcept 5209: { return __atomic_sub_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 5209: 5209: __int_type 5209: operator-=(__int_type __i) volatile noexcept 5209: { return __atomic_sub_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 5209: 5209: __int_type 5209: operator&=(__int_type __i) noexcept 5209: { return __atomic_and_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 5209: 5209: __int_type 5209: operator&=(__int_type __i) volatile noexcept 5209: { return __atomic_and_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 5209: 5209: __int_type 5209: operator|=(__int_type __i) noexcept 5209: { return __atomic_or_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 5209: 5209: __int_type 5209: operator|=(__int_type __i) volatile noexcept 5209: { return __atomic_or_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 5209: 5209: __int_type 5209: operator^=(__int_type __i) noexcept 5209: { return __atomic_xor_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 5209: 5209: __int_type 5209: operator^=(__int_type __i) volatile noexcept 5209: { return __atomic_xor_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 5209: 5209: bool 5209: is_lock_free() const noexcept 5209: { 5209: 5209: return __atomic_is_lock_free(sizeof(_M_i), 5209: reinterpret_cast(-_S_alignment)); 5209: } 5209: 5209: bool 5209: is_lock_free() const volatile noexcept 5209: { 5209: 5209: return __atomic_is_lock_free(sizeof(_M_i), 5209: reinterpret_cast(-_S_alignment)); 5209: } 5209: 5209: inline __attribute__((__always_inline__)) void 5209: store(__int_type __i, memory_order __m = memory_order_seq_cst) noexcept 5209: { 5209: memory_order __b = __m & __memory_order_mask; 5209: ; 5209: ; 5209: ; 5209: 5209: __atomic_store_n(&_M_i, __i, int(__m)); 5209: } 5209: 5209: inline __attribute__((__always_inline__)) void 5209: store(__int_type __i, 5209: memory_order __m = memory_order_seq_cst) volatile noexcept 5209: { 5209: memory_order __b = __m & __memory_order_mask; 5209: ; 5209: ; 5209: ; 5209: 5209: __atomic_store_n(&_M_i, __i, int(__m)); 5209: } 5209: 5209: inline __attribute__((__always_inline__)) __int_type 5209: load(memory_order __m = memory_order_seq_cst) const noexcept 5209: { 5209: memory_order __b = __m & __memory_order_mask; 5209: ; 5209: ; 5209: 5209: return __atomic_load_n(&_M_i, int(__m)); 5209: } 5209: 5209: inline __attribute__((__always_inline__)) __int_type 5209: load(memory_order __m = memory_order_seq_cst) const volatile noexcept 5209: { 5209: memory_order __b = __m & __memory_order_mask; 5209: ; 5209: ; 5209: 5209: return __atomic_load_n(&_M_i, int(__m)); 5209: } 5209: 5209: inline __attribute__((__always_inline__)) __int_type 5209: exchange(__int_type __i, 5209: memory_order __m = memory_order_seq_cst) noexcept 5209: { 5209: return __atomic_exchange_n(&_M_i, __i, int(__m)); 5209: } 5209: 5209: 5209: inline __attribute__((__always_inline__)) __int_type 5209: exchange(__int_type __i, 5209: memory_order __m = memory_order_seq_cst) volatile noexcept 5209: { 5209: return __atomic_exchange_n(&_M_i, __i, int(__m)); 5209: } 5209: 5209: inline __attribute__((__always_inline__)) bool 5209: compare_exchange_weak(__int_type& __i1, __int_type __i2, 5209: memory_order __m1, memory_order __m2) noexcept 5209: { 5209: memory_order __b2 = __m2 & __memory_order_mask; 5209: memory_order __b1 = __m1 & __memory_order_mask; 5209: ; 5209: ; 5209: ; 5209: 5209: return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 1, 5209: int(__m1), int(__m2)); 5209: } 5209: 5209: inline __attribute__((__always_inline__)) bool 5209: compare_exchange_weak(__int_type& __i1, __int_type __i2, 5209: memory_order __m1, 5209: memory_order __m2) volatile noexcept 5209: { 5209: memory_order __b2 = __m2 & __memory_order_mask; 5209: memory_order __b1 = __m1 & __memory_order_mask; 5209: ; 5209: ; 5209: ; 5209: 5209: return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 1, 5209: int(__m1), int(__m2)); 5209: } 5209: 5209: inline __attribute__((__always_inline__)) bool 5209: compare_exchange_weak(__int_type& __i1, __int_type __i2, 5209: memory_order __m = memory_order_seq_cst) noexcept 5209: { 5209: return compare_exchange_weak(__i1, __i2, __m, 5209: __cmpexch_failure_order(__m)); 5209: } 5209: 5209: inline __attribute__((__always_inline__)) bool 5209: compare_exchange_weak(__int_type& __i1, __int_type __i2, 5209: memory_order __m = memory_order_seq_cst) volatile noexcept 5209: { 5209: return compare_exchange_weak(__i1, __i2, __m, 5209: __cmpexch_failure_order(__m)); 5209: } 5209: 5209: inline __attribute__((__always_inline__)) bool 5209: compare_exchange_strong(__int_type& __i1, __int_type __i2, 5209: memory_order __m1, memory_order __m2) noexcept 5209: { 5209: memory_order __b2 = __m2 & __memory_order_mask; 5209: memory_order __b1 = __m1 & __memory_order_mask; 5209: ; 5209: ; 5209: ; 5209: 5209: return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 0, 5209: int(__m1), int(__m2)); 5209: } 5209: 5209: inline __attribute__((__always_inline__)) bool 5209: compare_exchange_strong(__int_type& __i1, __int_type __i2, 5209: memory_order __m1, 5209: memory_order __m2) volatile noexcept 5209: { 5209: memory_order __b2 = __m2 & __memory_order_mask; 5209: memory_order __b1 = __m1 & __memory_order_mask; 5209: 5209: ; 5209: ; 5209: ; 5209: 5209: return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 0, 5209: int(__m1), int(__m2)); 5209: } 5209: 5209: inline __attribute__((__always_inline__)) bool 5209: compare_exchange_strong(__int_type& __i1, __int_type __i2, 5209: memory_order __m = memory_order_seq_cst) noexcept 5209: { 5209: return compare_exchange_strong(__i1, __i2, __m, 5209: __cmpexch_failure_order(__m)); 5209: } 5209: 5209: inline __attribute__((__always_inline__)) bool 5209: compare_exchange_strong(__int_type& __i1, __int_type __i2, 5209: memory_order __m = memory_order_seq_cst) volatile noexcept 5209: { 5209: return compare_exchange_strong(__i1, __i2, __m, 5209: __cmpexch_failure_order(__m)); 5209: } 5209: 5209: inline __attribute__((__always_inline__)) __int_type 5209: fetch_add(__int_type __i, 5209: memory_order __m = memory_order_seq_cst) noexcept 5209: { return __atomic_fetch_add(&_M_i, __i, int(__m)); } 5209: 5209: inline __attribute__((__always_inline__)) __int_type 5209: fetch_add(__int_type __i, 5209: memory_order __m = memory_order_seq_cst) volatile noexcept 5209: { return __atomic_fetch_add(&_M_i, __i, int(__m)); } 5209: 5209: inline __attribute__((__always_inline__)) __int_type 5209: fetch_sub(__int_type __i, 5209: memory_order __m = memory_order_seq_cst) noexcept 5209: { return __atomic_fetch_sub(&_M_i, __i, int(__m)); } 5209: 5209: inline __attribute__((__always_inline__)) __int_type 5209: fetch_sub(__int_type __i, 5209: memory_order __m = memory_order_seq_cst) volatile noexcept 5209: { return __atomic_fetch_sub(&_M_i, __i, int(__m)); } 5209: 5209: inline __attribute__((__always_inline__)) __int_type 5209: fetch_and(__int_type __i, 5209: memory_order __m = memory_order_seq_cst) noexcept 5209: { return __atomic_fetch_and(&_M_i, __i, int(__m)); } 5209: 5209: inline __attribute__((__always_inline__)) __int_type 5209: fetch_and(__int_type __i, 5209: memory_order __m = memory_order_seq_cst) volatile noexcept 5209: { return __atomic_fetch_and(&_M_i, __i, int(__m)); } 5209: 5209: inline __attribute__((__always_inline__)) __int_type 5209: fetch_or(__int_type __i, 5209: memory_order __m = memory_order_seq_cst) noexcept 5209: { return __atomic_fetch_or(&_M_i, __i, int(__m)); } 5209: 5209: inline __attribute__((__always_inline__)) __int_type 5209: fetch_or(__int_type __i, 5209: memory_order __m = memory_order_seq_cst) volatile noexcept 5209: { return __atomic_fetch_or(&_M_i, __i, int(__m)); } 5209: 5209: inline __attribute__((__always_inline__)) __int_type 5209: fetch_xor(__int_type __i, 5209: memory_order __m = memory_order_seq_cst) noexcept 5209: { return __atomic_fetch_xor(&_M_i, __i, int(__m)); } 5209: 5209: inline __attribute__((__always_inline__)) __int_type 5209: fetch_xor(__int_type __i, 5209: memory_order __m = memory_order_seq_cst) volatile noexcept 5209: { return __atomic_fetch_xor(&_M_i, __i, int(__m)); } 5209: }; 5209: 5209: 5209: 5209: template 5209: struct __atomic_base<_PTp*> 5209: { 5209: private: 5209: typedef _PTp* __pointer_type; 5209: 5209: __pointer_type _M_p; 5209: 5209: 5209: constexpr ptrdiff_t 5209: _M_type_size(ptrdiff_t __d) const { return __d * sizeof(_PTp); } 5209: 5209: constexpr ptrdiff_t 5209: _M_type_size(ptrdiff_t __d) const volatile { return __d * sizeof(_PTp); } 5209: 5209: public: 5209: __atomic_base() noexcept = default; 5209: ~__atomic_base() noexcept = default; 5209: __atomic_base(const __atomic_base&) = delete; 5209: __atomic_base& operator=(const __atomic_base&) = delete; 5209: __atomic_base& operator=(const __atomic_base&) volatile = delete; 5209: 5209: 5209: constexpr __atomic_base(__pointer_type __p) noexcept : _M_p (__p) { } 5209: 5209: operator __pointer_type() const noexcept 5209: { return load(); } 5209: 5209: operator __pointer_type() const volatile noexcept 5209: { return load(); } 5209: 5209: __pointer_type 5209: operator=(__pointer_type __p) noexcept 5209: { 5209: store(__p); 5209: return __p; 5209: } 5209: 5209: __pointer_type 5209: operator=(__pointer_type __p) volatile noexcept 5209: { 5209: store(__p); 5209: return __p; 5209: } 5209: 5209: __pointer_type 5209: operator++(int) noexcept 5209: { return fetch_add(1); } 5209: 5209: __pointer_type 5209: operator++(int) volatile noexcept 5209: { return fetch_add(1); } 5209: 5209: __pointer_type 5209: operator--(int) noexcept 5209: { return fetch_sub(1); } 5209: 5209: __pointer_type 5209: operator--(int) volatile noexcept 5209: { return fetch_sub(1); } 5209: 5209: __pointer_type 5209: operator++() noexcept 5209: { return __atomic_add_fetch(&_M_p, _M_type_size(1), 5209: int(memory_order_seq_cst)); } 5209: 5209: __pointer_type 5209: operator++() volatile noexcept 5209: { return __atomic_add_fetch(&_M_p, _M_type_size(1), 5209: int(memory_order_seq_cst)); } 5209: 5209: __pointer_type 5209: operator--() noexcept 5209: { return __atomic_sub_fetch(&_M_p, _M_type_size(1), 5209: int(memory_order_seq_cst)); } 5209: 5209: __pointer_type 5209: operator--() volatile noexcept 5209: { return __atomic_sub_fetch(&_M_p, _M_type_size(1), 5209: int(memory_order_seq_cst)); } 5209: 5209: __pointer_type 5209: operator+=(ptrdiff_t __d) noexcept 5209: { return __atomic_add_fetch(&_M_p, _M_type_size(__d), 5209: int(memory_order_seq_cst)); } 5209: 5209: __pointer_type 5209: operator+=(ptrdiff_t __d) volatile noexcept 5209: { return __atomic_add_fetch(&_M_p, _M_type_size(__d), 5209: int(memory_order_seq_cst)); } 5209: 5209: __pointer_type 5209: operator-=(ptrdiff_t __d) noexcept 5209: { return __atomic_sub_fetch(&_M_p, _M_type_size(__d), 5209: int(memory_order_seq_cst)); } 5209: 5209: __pointer_type 5209: operator-=(ptrdiff_t __d) volatile noexcept 5209: { return __atomic_sub_fetch(&_M_p, _M_type_size(__d), 5209: int(memory_order_seq_cst)); } 5209: 5209: bool 5209: is_lock_free() const noexcept 5209: { 5209: 5209: return __atomic_is_lock_free(sizeof(_M_p), 5209: reinterpret_cast(-__alignof(_M_p))); 5209: } 5209: 5209: bool 5209: is_lock_free() const volatile noexcept 5209: { 5209: 5209: return __atomic_is_lock_free(sizeof(_M_p), 5209: reinterpret_cast(-__alignof(_M_p))); 5209: } 5209: 5209: inline __attribute__((__always_inline__)) void 5209: store(__pointer_type __p, 5209: memory_order __m = memory_order_seq_cst) noexcept 5209: { 5209: memory_order __b = __m & __memory_order_mask; 5209: 5209: ; 5209: ; 5209: ; 5209: 5209: __atomic_store_n(&_M_p, __p, int(__m)); 5209: } 5209: 5209: inline __attribute__((__always_inline__)) void 5209: store(__pointer_type __p, 5209: memory_order __m = memory_order_seq_cst) volatile noexcept 5209: { 5209: memory_order __b = __m & __memory_order_mask; 5209: ; 5209: ; 5209: ; 5209: 5209: __atomic_store_n(&_M_p, __p, int(__m)); 5209: } 5209: 5209: inline __attribute__((__always_inline__)) __pointer_type 5209: load(memory_order __m = memory_order_seq_cst) const noexcept 5209: { 5209: memory_order __b = __m & __memory_order_mask; 5209: ; 5209: ; 5209: 5209: return __atomic_load_n(&_M_p, int(__m)); 5209: } 5209: 5209: inline __attribute__((__always_inline__)) __pointer_type 5209: load(memory_order __m = memory_order_seq_cst) const volatile noexcept 5209: { 5209: memory_order __b = __m & __memory_order_mask; 5209: ; 5209: ; 5209: 5209: return __atomic_load_n(&_M_p, int(__m)); 5209: } 5209: 5209: inline __attribute__((__always_inline__)) __pointer_type 5209: exchange(__pointer_type __p, 5209: memory_order __m = memory_order_seq_cst) noexcept 5209: { 5209: return __atomic_exchange_n(&_M_p, __p, int(__m)); 5209: } 5209: 5209: 5209: inline __attribute__((__always_inline__)) __pointer_type 5209: exchange(__pointer_type __p, 5209: memory_order __m = memory_order_seq_cst) volatile noexcept 5209: { 5209: return __atomic_exchange_n(&_M_p, __p, int(__m)); 5209: } 5209: 5209: inline __attribute__((__always_inline__)) bool 5209: compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, 5209: memory_order __m1, 5209: memory_order __m2) noexcept 5209: { 5209: memory_order __b2 = __m2 & __memory_order_mask; 5209: memory_order __b1 = __m1 & __memory_order_mask; 5209: ; 5209: ; 5209: ; 5209: 5209: return __atomic_compare_exchange_n(&_M_p, &__p1, __p2, 0, 5209: int(__m1), int(__m2)); 5209: } 5209: 5209: inline __attribute__((__always_inline__)) bool 5209: compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, 5209: memory_order __m1, 5209: memory_order __m2) volatile noexcept 5209: { 5209: memory_order __b2 = __m2 & __memory_order_mask; 5209: memory_order __b1 = __m1 & __memory_order_mask; 5209: 5209: ; 5209: ; 5209: ; 5209: 5209: return __atomic_compare_exchange_n(&_M_p, &__p1, __p2, 0, 5209: int(__m1), int(__m2)); 5209: } 5209: 5209: inline __attribute__((__always_inline__)) __pointer_type 5209: fetch_add(ptrdiff_t __d, 5209: memory_order __m = memory_order_seq_cst) noexcept 5209: { return __atomic_fetch_add(&_M_p, _M_type_size(__d), int(__m)); } 5209: 5209: inline __attribute__((__always_inline__)) __pointer_type 5209: fetch_add(ptrdiff_t __d, 5209: memory_order __m = memory_order_seq_cst) volatile noexcept 5209: { return __atomic_fetch_add(&_M_p, _M_type_size(__d), int(__m)); } 5209: 5209: inline __attribute__((__always_inline__)) __pointer_type 5209: fetch_sub(ptrdiff_t __d, 5209: memory_order __m = memory_order_seq_cst) noexcept 5209: { return __atomic_fetch_sub(&_M_p, _M_type_size(__d), int(__m)); } 5209: 5209: inline __attribute__((__always_inline__)) __pointer_type 5209: fetch_sub(ptrdiff_t __d, 5209: memory_order __m = memory_order_seq_cst) volatile noexcept 5209: { return __atomic_fetch_sub(&_M_p, _M_type_size(__d), int(__m)); } 5209: }; 5209: # 1693 "/usr/include/c++/10/bits/atomic_base.h" 3 5209: 5209: } 5209: # 42 "/usr/include/c++/10/atomic" 2 3 5209: 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: # 56 "/usr/include/c++/10/atomic" 3 5209: template 5209: struct atomic; 5209: 5209: 5209: 5209: template<> 5209: struct atomic 5209: { 5209: using value_type = bool; 5209: 5209: private: 5209: __atomic_base _M_base; 5209: 5209: public: 5209: atomic() noexcept = default; 5209: ~atomic() noexcept = default; 5209: atomic(const atomic&) = delete; 5209: atomic& operator=(const atomic&) = delete; 5209: atomic& operator=(const atomic&) volatile = delete; 5209: 5209: constexpr atomic(bool __i) noexcept : _M_base(__i) { } 5209: 5209: bool 5209: operator=(bool __i) noexcept 5209: { return _M_base.operator=(__i); } 5209: 5209: bool 5209: operator=(bool __i) volatile noexcept 5209: { return _M_base.operator=(__i); } 5209: 5209: operator bool() const noexcept 5209: { return _M_base.load(); } 5209: 5209: operator bool() const volatile noexcept 5209: { return _M_base.load(); } 5209: 5209: bool 5209: is_lock_free() const noexcept { return _M_base.is_lock_free(); } 5209: 5209: bool 5209: is_lock_free() const volatile noexcept { return _M_base.is_lock_free(); } 5209: 5209: 5209: 5209: 5209: 5209: void 5209: store(bool __i, memory_order __m = memory_order_seq_cst) noexcept 5209: { _M_base.store(__i, __m); } 5209: 5209: void 5209: store(bool __i, memory_order __m = memory_order_seq_cst) volatile noexcept 5209: { _M_base.store(__i, __m); } 5209: 5209: bool 5209: load(memory_order __m = memory_order_seq_cst) const noexcept 5209: { return _M_base.load(__m); } 5209: 5209: bool 5209: load(memory_order __m = memory_order_seq_cst) const volatile noexcept 5209: { return _M_base.load(__m); } 5209: 5209: bool 5209: exchange(bool __i, memory_order __m = memory_order_seq_cst) noexcept 5209: { return _M_base.exchange(__i, __m); } 5209: 5209: bool 5209: exchange(bool __i, 5209: memory_order __m = memory_order_seq_cst) volatile noexcept 5209: { return _M_base.exchange(__i, __m); } 5209: 5209: bool 5209: compare_exchange_weak(bool& __i1, bool __i2, memory_order __m1, 5209: memory_order __m2) noexcept 5209: { return _M_base.compare_exchange_weak(__i1, __i2, __m1, __m2); } 5209: 5209: bool 5209: compare_exchange_weak(bool& __i1, bool __i2, memory_order __m1, 5209: memory_order __m2) volatile noexcept 5209: { return _M_base.compare_exchange_weak(__i1, __i2, __m1, __m2); } 5209: 5209: bool 5209: compare_exchange_weak(bool& __i1, bool __i2, 5209: memory_order __m = memory_order_seq_cst) noexcept 5209: { return _M_base.compare_exchange_weak(__i1, __i2, __m); } 5209: 5209: bool 5209: compare_exchange_weak(bool& __i1, bool __i2, 5209: memory_order __m = memory_order_seq_cst) volatile noexcept 5209: { return _M_base.compare_exchange_weak(__i1, __i2, __m); } 5209: 5209: bool 5209: compare_exchange_strong(bool& __i1, bool __i2, memory_order __m1, 5209: memory_order __m2) noexcept 5209: { return _M_base.compare_exchange_strong(__i1, __i2, __m1, __m2); } 5209: 5209: bool 5209: compare_exchange_strong(bool& __i1, bool __i2, memory_order __m1, 5209: memory_order __m2) volatile noexcept 5209: { return _M_base.compare_exchange_strong(__i1, __i2, __m1, __m2); } 5209: 5209: bool 5209: compare_exchange_strong(bool& __i1, bool __i2, 5209: memory_order __m = memory_order_seq_cst) noexcept 5209: { return _M_base.compare_exchange_strong(__i1, __i2, __m); } 5209: 5209: bool 5209: compare_exchange_strong(bool& __i1, bool __i2, 5209: memory_order __m = memory_order_seq_cst) volatile noexcept 5209: { return _M_base.compare_exchange_strong(__i1, __i2, __m); } 5209: }; 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: struct atomic 5209: { 5209: using value_type = _Tp; 5209: 5209: private: 5209: 5209: static constexpr int _S_min_alignment 5209: = (sizeof(_Tp) & (sizeof(_Tp) - 1)) || sizeof(_Tp) > 16 5209: ? 0 : sizeof(_Tp); 5209: 5209: static constexpr int _S_alignment 5209: = _S_min_alignment > alignof(_Tp) ? _S_min_alignment : alignof(_Tp); 5209: 5209: alignas(_S_alignment) _Tp _M_i; 5209: 5209: static_assert(__is_trivially_copyable(_Tp), 5209: "std::atomic requires a trivially copyable type"); 5209: 5209: static_assert(sizeof(_Tp) > 0, 5209: "Incomplete or zero-sized types are not supported"); 5209: 5209: public: 5209: atomic() noexcept = default; 5209: ~atomic() noexcept = default; 5209: atomic(const atomic&) = delete; 5209: atomic& operator=(const atomic&) = delete; 5209: atomic& operator=(const atomic&) volatile = delete; 5209: 5209: constexpr atomic(_Tp __i) noexcept : _M_i(__i) { } 5209: 5209: operator _Tp() const noexcept 5209: { return load(); } 5209: 5209: operator _Tp() const volatile noexcept 5209: { return load(); } 5209: 5209: _Tp 5209: operator=(_Tp __i) noexcept 5209: { store(__i); return __i; } 5209: 5209: _Tp 5209: operator=(_Tp __i) volatile noexcept 5209: { store(__i); return __i; } 5209: 5209: bool 5209: is_lock_free() const noexcept 5209: { 5209: 5209: return __atomic_is_lock_free(sizeof(_M_i), 5209: reinterpret_cast(-_S_alignment)); 5209: } 5209: 5209: bool 5209: is_lock_free() const volatile noexcept 5209: { 5209: 5209: return __atomic_is_lock_free(sizeof(_M_i), 5209: reinterpret_cast(-_S_alignment)); 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: void 5209: store(_Tp __i, memory_order __m = memory_order_seq_cst) noexcept 5209: { __atomic_store(std::__addressof(_M_i), std::__addressof(__i), int(__m)); } 5209: 5209: void 5209: store(_Tp __i, memory_order __m = memory_order_seq_cst) volatile noexcept 5209: { __atomic_store(std::__addressof(_M_i), std::__addressof(__i), int(__m)); } 5209: 5209: _Tp 5209: load(memory_order __m = memory_order_seq_cst) const noexcept 5209: { 5209: alignas(_Tp) unsigned char __buf[sizeof(_Tp)]; 5209: _Tp* __ptr = reinterpret_cast<_Tp*>(__buf); 5209: __atomic_load(std::__addressof(_M_i), __ptr, int(__m)); 5209: return *__ptr; 5209: } 5209: 5209: _Tp 5209: load(memory_order __m = memory_order_seq_cst) const volatile noexcept 5209: { 5209: alignas(_Tp) unsigned char __buf[sizeof(_Tp)]; 5209: _Tp* __ptr = reinterpret_cast<_Tp*>(__buf); 5209: __atomic_load(std::__addressof(_M_i), __ptr, int(__m)); 5209: return *__ptr; 5209: } 5209: 5209: _Tp 5209: exchange(_Tp __i, memory_order __m = memory_order_seq_cst) noexcept 5209: { 5209: alignas(_Tp) unsigned char __buf[sizeof(_Tp)]; 5209: _Tp* __ptr = reinterpret_cast<_Tp*>(__buf); 5209: __atomic_exchange(std::__addressof(_M_i), std::__addressof(__i), 5209: __ptr, int(__m)); 5209: return *__ptr; 5209: } 5209: 5209: _Tp 5209: exchange(_Tp __i, 5209: memory_order __m = memory_order_seq_cst) volatile noexcept 5209: { 5209: alignas(_Tp) unsigned char __buf[sizeof(_Tp)]; 5209: _Tp* __ptr = reinterpret_cast<_Tp*>(__buf); 5209: __atomic_exchange(std::__addressof(_M_i), std::__addressof(__i), 5209: __ptr, int(__m)); 5209: return *__ptr; 5209: } 5209: 5209: bool 5209: compare_exchange_weak(_Tp& __e, _Tp __i, memory_order __s, 5209: memory_order __f) noexcept 5209: { 5209: return __atomic_compare_exchange(std::__addressof(_M_i), 5209: std::__addressof(__e), 5209: std::__addressof(__i), 5209: true, int(__s), int(__f)); 5209: } 5209: 5209: bool 5209: compare_exchange_weak(_Tp& __e, _Tp __i, memory_order __s, 5209: memory_order __f) volatile noexcept 5209: { 5209: return __atomic_compare_exchange(std::__addressof(_M_i), 5209: std::__addressof(__e), 5209: std::__addressof(__i), 5209: true, int(__s), int(__f)); 5209: } 5209: 5209: bool 5209: compare_exchange_weak(_Tp& __e, _Tp __i, 5209: memory_order __m = memory_order_seq_cst) noexcept 5209: { return compare_exchange_weak(__e, __i, __m, 5209: __cmpexch_failure_order(__m)); } 5209: 5209: bool 5209: compare_exchange_weak(_Tp& __e, _Tp __i, 5209: memory_order __m = memory_order_seq_cst) volatile noexcept 5209: { return compare_exchange_weak(__e, __i, __m, 5209: __cmpexch_failure_order(__m)); } 5209: 5209: bool 5209: compare_exchange_strong(_Tp& __e, _Tp __i, memory_order __s, 5209: memory_order __f) noexcept 5209: { 5209: return __atomic_compare_exchange(std::__addressof(_M_i), 5209: std::__addressof(__e), 5209: std::__addressof(__i), 5209: false, int(__s), int(__f)); 5209: } 5209: 5209: bool 5209: compare_exchange_strong(_Tp& __e, _Tp __i, memory_order __s, 5209: memory_order __f) volatile noexcept 5209: { 5209: return __atomic_compare_exchange(std::__addressof(_M_i), 5209: std::__addressof(__e), 5209: std::__addressof(__i), 5209: false, int(__s), int(__f)); 5209: } 5209: 5209: bool 5209: compare_exchange_strong(_Tp& __e, _Tp __i, 5209: memory_order __m = memory_order_seq_cst) noexcept 5209: { return compare_exchange_strong(__e, __i, __m, 5209: __cmpexch_failure_order(__m)); } 5209: 5209: bool 5209: compare_exchange_strong(_Tp& __e, _Tp __i, 5209: memory_order __m = memory_order_seq_cst) volatile noexcept 5209: { return compare_exchange_strong(__e, __i, __m, 5209: __cmpexch_failure_order(__m)); } 5209: }; 5209: 5209: 5209: 5209: template 5209: struct atomic<_Tp*> 5209: { 5209: using value_type = _Tp*; 5209: using difference_type = ptrdiff_t; 5209: 5209: typedef _Tp* __pointer_type; 5209: typedef __atomic_base<_Tp*> __base_type; 5209: __base_type _M_b; 5209: 5209: atomic() noexcept = default; 5209: ~atomic() noexcept = default; 5209: atomic(const atomic&) = delete; 5209: atomic& operator=(const atomic&) = delete; 5209: atomic& operator=(const atomic&) volatile = delete; 5209: 5209: constexpr atomic(__pointer_type __p) noexcept : _M_b(__p) { } 5209: 5209: operator __pointer_type() const noexcept 5209: { return __pointer_type(_M_b); } 5209: 5209: operator __pointer_type() const volatile noexcept 5209: { return __pointer_type(_M_b); } 5209: 5209: __pointer_type 5209: operator=(__pointer_type __p) noexcept 5209: { return _M_b.operator=(__p); } 5209: 5209: __pointer_type 5209: operator=(__pointer_type __p) volatile noexcept 5209: { return _M_b.operator=(__p); } 5209: 5209: __pointer_type 5209: operator++(int) noexcept 5209: { 5209: 5209: 5209: 5209: return _M_b++; 5209: } 5209: 5209: __pointer_type 5209: operator++(int) volatile noexcept 5209: { 5209: 5209: 5209: 5209: return _M_b++; 5209: } 5209: 5209: __pointer_type 5209: operator--(int) noexcept 5209: { 5209: 5209: 5209: 5209: return _M_b--; 5209: } 5209: 5209: __pointer_type 5209: operator--(int) volatile noexcept 5209: { 5209: 5209: 5209: 5209: return _M_b--; 5209: } 5209: 5209: __pointer_type 5209: operator++() noexcept 5209: { 5209: 5209: 5209: 5209: return ++_M_b; 5209: } 5209: 5209: __pointer_type 5209: operator++() volatile noexcept 5209: { 5209: 5209: 5209: 5209: return ++_M_b; 5209: } 5209: 5209: __pointer_type 5209: operator--() noexcept 5209: { 5209: 5209: 5209: 5209: return --_M_b; 5209: } 5209: 5209: __pointer_type 5209: operator--() volatile noexcept 5209: { 5209: 5209: 5209: 5209: return --_M_b; 5209: } 5209: 5209: __pointer_type 5209: operator+=(ptrdiff_t __d) noexcept 5209: { 5209: 5209: 5209: 5209: return _M_b.operator+=(__d); 5209: } 5209: 5209: __pointer_type 5209: operator+=(ptrdiff_t __d) volatile noexcept 5209: { 5209: 5209: 5209: 5209: return _M_b.operator+=(__d); 5209: } 5209: 5209: __pointer_type 5209: operator-=(ptrdiff_t __d) noexcept 5209: { 5209: 5209: 5209: 5209: return _M_b.operator-=(__d); 5209: } 5209: 5209: __pointer_type 5209: operator-=(ptrdiff_t __d) volatile noexcept 5209: { 5209: 5209: 5209: 5209: return _M_b.operator-=(__d); 5209: } 5209: 5209: bool 5209: is_lock_free() const noexcept 5209: { return _M_b.is_lock_free(); } 5209: 5209: bool 5209: is_lock_free() const volatile noexcept 5209: { return _M_b.is_lock_free(); } 5209: 5209: 5209: 5209: 5209: 5209: void 5209: store(__pointer_type __p, 5209: memory_order __m = memory_order_seq_cst) noexcept 5209: { return _M_b.store(__p, __m); } 5209: 5209: void 5209: store(__pointer_type __p, 5209: memory_order __m = memory_order_seq_cst) volatile noexcept 5209: { return _M_b.store(__p, __m); } 5209: 5209: __pointer_type 5209: load(memory_order __m = memory_order_seq_cst) const noexcept 5209: { return _M_b.load(__m); } 5209: 5209: __pointer_type 5209: load(memory_order __m = memory_order_seq_cst) const volatile noexcept 5209: { return _M_b.load(__m); } 5209: 5209: __pointer_type 5209: exchange(__pointer_type __p, 5209: memory_order __m = memory_order_seq_cst) noexcept 5209: { return _M_b.exchange(__p, __m); } 5209: 5209: __pointer_type 5209: exchange(__pointer_type __p, 5209: memory_order __m = memory_order_seq_cst) volatile noexcept 5209: { return _M_b.exchange(__p, __m); } 5209: 5209: bool 5209: compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2, 5209: memory_order __m1, memory_order __m2) noexcept 5209: { return _M_b.compare_exchange_strong(__p1, __p2, __m1, __m2); } 5209: 5209: bool 5209: compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2, 5209: memory_order __m1, 5209: memory_order __m2) volatile noexcept 5209: { return _M_b.compare_exchange_strong(__p1, __p2, __m1, __m2); } 5209: 5209: bool 5209: compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2, 5209: memory_order __m = memory_order_seq_cst) noexcept 5209: { 5209: return compare_exchange_weak(__p1, __p2, __m, 5209: __cmpexch_failure_order(__m)); 5209: } 5209: 5209: bool 5209: compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2, 5209: memory_order __m = memory_order_seq_cst) volatile noexcept 5209: { 5209: return compare_exchange_weak(__p1, __p2, __m, 5209: __cmpexch_failure_order(__m)); 5209: } 5209: 5209: bool 5209: compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, 5209: memory_order __m1, memory_order __m2) noexcept 5209: { return _M_b.compare_exchange_strong(__p1, __p2, __m1, __m2); } 5209: 5209: bool 5209: compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, 5209: memory_order __m1, 5209: memory_order __m2) volatile noexcept 5209: { return _M_b.compare_exchange_strong(__p1, __p2, __m1, __m2); } 5209: 5209: bool 5209: compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, 5209: memory_order __m = memory_order_seq_cst) noexcept 5209: { 5209: return _M_b.compare_exchange_strong(__p1, __p2, __m, 5209: __cmpexch_failure_order(__m)); 5209: } 5209: 5209: bool 5209: compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, 5209: memory_order __m = memory_order_seq_cst) volatile noexcept 5209: { 5209: return _M_b.compare_exchange_strong(__p1, __p2, __m, 5209: __cmpexch_failure_order(__m)); 5209: } 5209: 5209: __pointer_type 5209: fetch_add(ptrdiff_t __d, 5209: memory_order __m = memory_order_seq_cst) noexcept 5209: { 5209: 5209: 5209: 5209: return _M_b.fetch_add(__d, __m); 5209: } 5209: 5209: __pointer_type 5209: fetch_add(ptrdiff_t __d, 5209: memory_order __m = memory_order_seq_cst) volatile noexcept 5209: { 5209: 5209: 5209: 5209: return _M_b.fetch_add(__d, __m); 5209: } 5209: 5209: __pointer_type 5209: fetch_sub(ptrdiff_t __d, 5209: memory_order __m = memory_order_seq_cst) noexcept 5209: { 5209: 5209: 5209: 5209: return _M_b.fetch_sub(__d, __m); 5209: } 5209: 5209: __pointer_type 5209: fetch_sub(ptrdiff_t __d, 5209: memory_order __m = memory_order_seq_cst) volatile noexcept 5209: { 5209: 5209: 5209: 5209: return _M_b.fetch_sub(__d, __m); 5209: } 5209: }; 5209: 5209: 5209: 5209: template<> 5209: struct atomic : __atomic_base 5209: { 5209: typedef char __integral_type; 5209: typedef __atomic_base __base_type; 5209: 5209: atomic() noexcept = default; 5209: ~atomic() noexcept = default; 5209: atomic(const atomic&) = delete; 5209: atomic& operator=(const atomic&) = delete; 5209: atomic& operator=(const atomic&) volatile = delete; 5209: 5209: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 5209: 5209: using __base_type::operator __integral_type; 5209: using __base_type::operator=; 5209: 5209: 5209: 5209: 5209: }; 5209: 5209: 5209: template<> 5209: struct atomic : __atomic_base 5209: { 5209: typedef signed char __integral_type; 5209: typedef __atomic_base __base_type; 5209: 5209: atomic() noexcept= default; 5209: ~atomic() noexcept = default; 5209: atomic(const atomic&) = delete; 5209: atomic& operator=(const atomic&) = delete; 5209: atomic& operator=(const atomic&) volatile = delete; 5209: 5209: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 5209: 5209: using __base_type::operator __integral_type; 5209: using __base_type::operator=; 5209: 5209: 5209: 5209: 5209: }; 5209: 5209: 5209: template<> 5209: struct atomic : __atomic_base 5209: { 5209: typedef unsigned char __integral_type; 5209: typedef __atomic_base __base_type; 5209: 5209: atomic() noexcept= default; 5209: ~atomic() noexcept = default; 5209: atomic(const atomic&) = delete; 5209: atomic& operator=(const atomic&) = delete; 5209: atomic& operator=(const atomic&) volatile = delete; 5209: 5209: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 5209: 5209: using __base_type::operator __integral_type; 5209: using __base_type::operator=; 5209: 5209: 5209: 5209: 5209: }; 5209: 5209: 5209: template<> 5209: struct atomic : __atomic_base 5209: { 5209: typedef short __integral_type; 5209: typedef __atomic_base __base_type; 5209: 5209: atomic() noexcept = default; 5209: ~atomic() noexcept = default; 5209: atomic(const atomic&) = delete; 5209: atomic& operator=(const atomic&) = delete; 5209: atomic& operator=(const atomic&) volatile = delete; 5209: 5209: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 5209: 5209: using __base_type::operator __integral_type; 5209: using __base_type::operator=; 5209: 5209: 5209: 5209: 5209: }; 5209: 5209: 5209: template<> 5209: struct atomic : __atomic_base 5209: { 5209: typedef unsigned short __integral_type; 5209: typedef __atomic_base __base_type; 5209: 5209: atomic() noexcept = default; 5209: ~atomic() noexcept = default; 5209: atomic(const atomic&) = delete; 5209: atomic& operator=(const atomic&) = delete; 5209: atomic& operator=(const atomic&) volatile = delete; 5209: 5209: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 5209: 5209: using __base_type::operator __integral_type; 5209: using __base_type::operator=; 5209: 5209: 5209: 5209: 5209: }; 5209: 5209: 5209: template<> 5209: struct atomic : __atomic_base 5209: { 5209: typedef int __integral_type; 5209: typedef __atomic_base __base_type; 5209: 5209: atomic() noexcept = default; 5209: ~atomic() noexcept = default; 5209: atomic(const atomic&) = delete; 5209: atomic& operator=(const atomic&) = delete; 5209: atomic& operator=(const atomic&) volatile = delete; 5209: 5209: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 5209: 5209: using __base_type::operator __integral_type; 5209: using __base_type::operator=; 5209: 5209: 5209: 5209: 5209: }; 5209: 5209: 5209: template<> 5209: struct atomic : __atomic_base 5209: { 5209: typedef unsigned int __integral_type; 5209: typedef __atomic_base __base_type; 5209: 5209: atomic() noexcept = default; 5209: ~atomic() noexcept = default; 5209: atomic(const atomic&) = delete; 5209: atomic& operator=(const atomic&) = delete; 5209: atomic& operator=(const atomic&) volatile = delete; 5209: 5209: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 5209: 5209: using __base_type::operator __integral_type; 5209: using __base_type::operator=; 5209: 5209: 5209: 5209: 5209: }; 5209: 5209: 5209: template<> 5209: struct atomic : __atomic_base 5209: { 5209: typedef long __integral_type; 5209: typedef __atomic_base __base_type; 5209: 5209: atomic() noexcept = default; 5209: ~atomic() noexcept = default; 5209: atomic(const atomic&) = delete; 5209: atomic& operator=(const atomic&) = delete; 5209: atomic& operator=(const atomic&) volatile = delete; 5209: 5209: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 5209: 5209: using __base_type::operator __integral_type; 5209: using __base_type::operator=; 5209: 5209: 5209: 5209: 5209: }; 5209: 5209: 5209: template<> 5209: struct atomic : __atomic_base 5209: { 5209: typedef unsigned long __integral_type; 5209: typedef __atomic_base __base_type; 5209: 5209: atomic() noexcept = default; 5209: ~atomic() noexcept = default; 5209: atomic(const atomic&) = delete; 5209: atomic& operator=(const atomic&) = delete; 5209: atomic& operator=(const atomic&) volatile = delete; 5209: 5209: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 5209: 5209: using __base_type::operator __integral_type; 5209: using __base_type::operator=; 5209: 5209: 5209: 5209: 5209: }; 5209: 5209: 5209: template<> 5209: struct atomic : __atomic_base 5209: { 5209: typedef long long __integral_type; 5209: typedef __atomic_base __base_type; 5209: 5209: atomic() noexcept = default; 5209: ~atomic() noexcept = default; 5209: atomic(const atomic&) = delete; 5209: atomic& operator=(const atomic&) = delete; 5209: atomic& operator=(const atomic&) volatile = delete; 5209: 5209: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 5209: 5209: using __base_type::operator __integral_type; 5209: using __base_type::operator=; 5209: 5209: 5209: 5209: 5209: }; 5209: 5209: 5209: template<> 5209: struct atomic : __atomic_base 5209: { 5209: typedef unsigned long long __integral_type; 5209: typedef __atomic_base __base_type; 5209: 5209: atomic() noexcept = default; 5209: ~atomic() noexcept = default; 5209: atomic(const atomic&) = delete; 5209: atomic& operator=(const atomic&) = delete; 5209: atomic& operator=(const atomic&) volatile = delete; 5209: 5209: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 5209: 5209: using __base_type::operator __integral_type; 5209: using __base_type::operator=; 5209: 5209: 5209: 5209: 5209: }; 5209: 5209: 5209: template<> 5209: struct atomic : __atomic_base 5209: { 5209: typedef wchar_t __integral_type; 5209: typedef __atomic_base __base_type; 5209: 5209: atomic() noexcept = default; 5209: ~atomic() noexcept = default; 5209: atomic(const atomic&) = delete; 5209: atomic& operator=(const atomic&) = delete; 5209: atomic& operator=(const atomic&) volatile = delete; 5209: 5209: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 5209: 5209: using __base_type::operator __integral_type; 5209: using __base_type::operator=; 5209: 5209: 5209: 5209: 5209: }; 5209: # 932 "/usr/include/c++/10/atomic" 3 5209: template<> 5209: struct atomic : __atomic_base 5209: { 5209: typedef char16_t __integral_type; 5209: typedef __atomic_base __base_type; 5209: 5209: atomic() noexcept = default; 5209: ~atomic() noexcept = default; 5209: atomic(const atomic&) = delete; 5209: atomic& operator=(const atomic&) = delete; 5209: atomic& operator=(const atomic&) volatile = delete; 5209: 5209: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 5209: 5209: using __base_type::operator __integral_type; 5209: using __base_type::operator=; 5209: 5209: 5209: 5209: 5209: }; 5209: 5209: 5209: template<> 5209: struct atomic : __atomic_base 5209: { 5209: typedef char32_t __integral_type; 5209: typedef __atomic_base __base_type; 5209: 5209: atomic() noexcept = default; 5209: ~atomic() noexcept = default; 5209: atomic(const atomic&) = delete; 5209: atomic& operator=(const atomic&) = delete; 5209: atomic& operator=(const atomic&) volatile = delete; 5209: 5209: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } 5209: 5209: using __base_type::operator __integral_type; 5209: using __base_type::operator=; 5209: 5209: 5209: 5209: 5209: }; 5209: 5209: 5209: 5209: typedef atomic atomic_bool; 5209: 5209: 5209: typedef atomic atomic_char; 5209: 5209: 5209: typedef atomic atomic_schar; 5209: 5209: 5209: typedef atomic atomic_uchar; 5209: 5209: 5209: typedef atomic atomic_short; 5209: 5209: 5209: typedef atomic atomic_ushort; 5209: 5209: 5209: typedef atomic atomic_int; 5209: 5209: 5209: typedef atomic atomic_uint; 5209: 5209: 5209: typedef atomic atomic_long; 5209: 5209: 5209: typedef atomic atomic_ulong; 5209: 5209: 5209: typedef atomic atomic_llong; 5209: 5209: 5209: typedef atomic atomic_ullong; 5209: 5209: 5209: typedef atomic atomic_wchar_t; 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: typedef atomic atomic_char16_t; 5209: 5209: 5209: typedef atomic atomic_char32_t; 5209: 5209: 5209: 5209: 5209: 5209: 5209: typedef atomic atomic_int8_t; 5209: 5209: 5209: typedef atomic atomic_uint8_t; 5209: 5209: 5209: typedef atomic atomic_int16_t; 5209: 5209: 5209: typedef atomic atomic_uint16_t; 5209: 5209: 5209: typedef atomic atomic_int32_t; 5209: 5209: 5209: typedef atomic atomic_uint32_t; 5209: 5209: 5209: typedef atomic atomic_int64_t; 5209: 5209: 5209: typedef atomic atomic_uint64_t; 5209: 5209: 5209: 5209: typedef atomic atomic_int_least8_t; 5209: 5209: 5209: typedef atomic atomic_uint_least8_t; 5209: 5209: 5209: typedef atomic atomic_int_least16_t; 5209: 5209: 5209: typedef atomic atomic_uint_least16_t; 5209: 5209: 5209: typedef atomic atomic_int_least32_t; 5209: 5209: 5209: typedef atomic atomic_uint_least32_t; 5209: 5209: 5209: typedef atomic atomic_int_least64_t; 5209: 5209: 5209: typedef atomic atomic_uint_least64_t; 5209: 5209: 5209: 5209: typedef atomic atomic_int_fast8_t; 5209: 5209: 5209: typedef atomic atomic_uint_fast8_t; 5209: 5209: 5209: typedef atomic atomic_int_fast16_t; 5209: 5209: 5209: typedef atomic atomic_uint_fast16_t; 5209: 5209: 5209: typedef atomic atomic_int_fast32_t; 5209: 5209: 5209: typedef atomic atomic_uint_fast32_t; 5209: 5209: 5209: typedef atomic atomic_int_fast64_t; 5209: 5209: 5209: typedef atomic atomic_uint_fast64_t; 5209: 5209: 5209: 5209: 5209: typedef atomic atomic_intptr_t; 5209: 5209: 5209: typedef atomic atomic_uintptr_t; 5209: 5209: 5209: typedef atomic atomic_size_t; 5209: 5209: 5209: typedef atomic atomic_ptrdiff_t; 5209: 5209: 5209: 5209: typedef atomic atomic_intmax_t; 5209: 5209: 5209: typedef atomic atomic_uintmax_t; 5209: 5209: 5209: 5209: inline bool 5209: atomic_flag_test_and_set_explicit(atomic_flag* __a, 5209: memory_order __m) noexcept 5209: { return __a->test_and_set(__m); } 5209: 5209: inline bool 5209: atomic_flag_test_and_set_explicit(volatile atomic_flag* __a, 5209: memory_order __m) noexcept 5209: { return __a->test_and_set(__m); } 5209: 5209: inline void 5209: atomic_flag_clear_explicit(atomic_flag* __a, memory_order __m) noexcept 5209: { __a->clear(__m); } 5209: 5209: inline void 5209: atomic_flag_clear_explicit(volatile atomic_flag* __a, 5209: memory_order __m) noexcept 5209: { __a->clear(__m); } 5209: 5209: inline bool 5209: atomic_flag_test_and_set(atomic_flag* __a) noexcept 5209: { return atomic_flag_test_and_set_explicit(__a, memory_order_seq_cst); } 5209: 5209: inline bool 5209: atomic_flag_test_and_set(volatile atomic_flag* __a) noexcept 5209: { return atomic_flag_test_and_set_explicit(__a, memory_order_seq_cst); } 5209: 5209: inline void 5209: atomic_flag_clear(atomic_flag* __a) noexcept 5209: { atomic_flag_clear_explicit(__a, memory_order_seq_cst); } 5209: 5209: inline void 5209: atomic_flag_clear(volatile atomic_flag* __a) noexcept 5209: { atomic_flag_clear_explicit(__a, memory_order_seq_cst); } 5209: 5209: 5209: template 5209: using __atomic_val_t = typename atomic<_Tp>::value_type; 5209: template 5209: using __atomic_diff_t = typename atomic<_Tp>::difference_type; 5209: 5209: 5209: 5209: template 5209: inline bool 5209: atomic_is_lock_free(const atomic<_ITp>* __a) noexcept 5209: { return __a->is_lock_free(); } 5209: 5209: template 5209: inline bool 5209: atomic_is_lock_free(const volatile atomic<_ITp>* __a) noexcept 5209: { return __a->is_lock_free(); } 5209: 5209: template 5209: inline void 5209: atomic_init(atomic<_ITp>* __a, __atomic_val_t<_ITp> __i) noexcept 5209: { __a->store(__i, memory_order_relaxed); } 5209: 5209: template 5209: inline void 5209: atomic_init(volatile atomic<_ITp>* __a, __atomic_val_t<_ITp> __i) noexcept 5209: { __a->store(__i, memory_order_relaxed); } 5209: 5209: template 5209: inline void 5209: atomic_store_explicit(atomic<_ITp>* __a, __atomic_val_t<_ITp> __i, 5209: memory_order __m) noexcept 5209: { __a->store(__i, __m); } 5209: 5209: template 5209: inline void 5209: atomic_store_explicit(volatile atomic<_ITp>* __a, __atomic_val_t<_ITp> __i, 5209: memory_order __m) noexcept 5209: { __a->store(__i, __m); } 5209: 5209: template 5209: inline _ITp 5209: atomic_load_explicit(const atomic<_ITp>* __a, memory_order __m) noexcept 5209: { return __a->load(__m); } 5209: 5209: template 5209: inline _ITp 5209: atomic_load_explicit(const volatile atomic<_ITp>* __a, 5209: memory_order __m) noexcept 5209: { return __a->load(__m); } 5209: 5209: template 5209: inline _ITp 5209: atomic_exchange_explicit(atomic<_ITp>* __a, __atomic_val_t<_ITp> __i, 5209: memory_order __m) noexcept 5209: { return __a->exchange(__i, __m); } 5209: 5209: template 5209: inline _ITp 5209: atomic_exchange_explicit(volatile atomic<_ITp>* __a, 5209: __atomic_val_t<_ITp> __i, 5209: memory_order __m) noexcept 5209: { return __a->exchange(__i, __m); } 5209: 5209: template 5209: inline bool 5209: atomic_compare_exchange_weak_explicit(atomic<_ITp>* __a, 5209: __atomic_val_t<_ITp>* __i1, 5209: __atomic_val_t<_ITp> __i2, 5209: memory_order __m1, 5209: memory_order __m2) noexcept 5209: { return __a->compare_exchange_weak(*__i1, __i2, __m1, __m2); } 5209: 5209: template 5209: inline bool 5209: atomic_compare_exchange_weak_explicit(volatile atomic<_ITp>* __a, 5209: __atomic_val_t<_ITp>* __i1, 5209: __atomic_val_t<_ITp> __i2, 5209: memory_order __m1, 5209: memory_order __m2) noexcept 5209: { return __a->compare_exchange_weak(*__i1, __i2, __m1, __m2); } 5209: 5209: template 5209: inline bool 5209: atomic_compare_exchange_strong_explicit(atomic<_ITp>* __a, 5209: __atomic_val_t<_ITp>* __i1, 5209: __atomic_val_t<_ITp> __i2, 5209: memory_order __m1, 5209: memory_order __m2) noexcept 5209: { return __a->compare_exchange_strong(*__i1, __i2, __m1, __m2); } 5209: 5209: template 5209: inline bool 5209: atomic_compare_exchange_strong_explicit(volatile atomic<_ITp>* __a, 5209: __atomic_val_t<_ITp>* __i1, 5209: __atomic_val_t<_ITp> __i2, 5209: memory_order __m1, 5209: memory_order __m2) noexcept 5209: { return __a->compare_exchange_strong(*__i1, __i2, __m1, __m2); } 5209: 5209: 5209: template 5209: inline void 5209: atomic_store(atomic<_ITp>* __a, __atomic_val_t<_ITp> __i) noexcept 5209: { atomic_store_explicit(__a, __i, memory_order_seq_cst); } 5209: 5209: template 5209: inline void 5209: atomic_store(volatile atomic<_ITp>* __a, __atomic_val_t<_ITp> __i) noexcept 5209: { atomic_store_explicit(__a, __i, memory_order_seq_cst); } 5209: 5209: template 5209: inline _ITp 5209: atomic_load(const atomic<_ITp>* __a) noexcept 5209: { return atomic_load_explicit(__a, memory_order_seq_cst); } 5209: 5209: template 5209: inline _ITp 5209: atomic_load(const volatile atomic<_ITp>* __a) noexcept 5209: { return atomic_load_explicit(__a, memory_order_seq_cst); } 5209: 5209: template 5209: inline _ITp 5209: atomic_exchange(atomic<_ITp>* __a, __atomic_val_t<_ITp> __i) noexcept 5209: { return atomic_exchange_explicit(__a, __i, memory_order_seq_cst); } 5209: 5209: template 5209: inline _ITp 5209: atomic_exchange(volatile atomic<_ITp>* __a, 5209: __atomic_val_t<_ITp> __i) noexcept 5209: { return atomic_exchange_explicit(__a, __i, memory_order_seq_cst); } 5209: 5209: template 5209: inline bool 5209: atomic_compare_exchange_weak(atomic<_ITp>* __a, 5209: __atomic_val_t<_ITp>* __i1, 5209: __atomic_val_t<_ITp> __i2) noexcept 5209: { 5209: return atomic_compare_exchange_weak_explicit(__a, __i1, __i2, 5209: memory_order_seq_cst, 5209: memory_order_seq_cst); 5209: } 5209: 5209: template 5209: inline bool 5209: atomic_compare_exchange_weak(volatile atomic<_ITp>* __a, 5209: __atomic_val_t<_ITp>* __i1, 5209: __atomic_val_t<_ITp> __i2) noexcept 5209: { 5209: return atomic_compare_exchange_weak_explicit(__a, __i1, __i2, 5209: memory_order_seq_cst, 5209: memory_order_seq_cst); 5209: } 5209: 5209: template 5209: inline bool 5209: atomic_compare_exchange_strong(atomic<_ITp>* __a, 5209: __atomic_val_t<_ITp>* __i1, 5209: __atomic_val_t<_ITp> __i2) noexcept 5209: { 5209: return atomic_compare_exchange_strong_explicit(__a, __i1, __i2, 5209: memory_order_seq_cst, 5209: memory_order_seq_cst); 5209: } 5209: 5209: template 5209: inline bool 5209: atomic_compare_exchange_strong(volatile atomic<_ITp>* __a, 5209: __atomic_val_t<_ITp>* __i1, 5209: __atomic_val_t<_ITp> __i2) noexcept 5209: { 5209: return atomic_compare_exchange_strong_explicit(__a, __i1, __i2, 5209: memory_order_seq_cst, 5209: memory_order_seq_cst); 5209: } 5209: 5209: 5209: 5209: 5209: 5209: template 5209: inline _ITp 5209: atomic_fetch_add_explicit(atomic<_ITp>* __a, 5209: __atomic_diff_t<_ITp> __i, 5209: memory_order __m) noexcept 5209: { return __a->fetch_add(__i, __m); } 5209: 5209: template 5209: inline _ITp 5209: atomic_fetch_add_explicit(volatile atomic<_ITp>* __a, 5209: __atomic_diff_t<_ITp> __i, 5209: memory_order __m) noexcept 5209: { return __a->fetch_add(__i, __m); } 5209: 5209: template 5209: inline _ITp 5209: atomic_fetch_sub_explicit(atomic<_ITp>* __a, 5209: __atomic_diff_t<_ITp> __i, 5209: memory_order __m) noexcept 5209: { return __a->fetch_sub(__i, __m); } 5209: 5209: template 5209: inline _ITp 5209: atomic_fetch_sub_explicit(volatile atomic<_ITp>* __a, 5209: __atomic_diff_t<_ITp> __i, 5209: memory_order __m) noexcept 5209: { return __a->fetch_sub(__i, __m); } 5209: 5209: template 5209: inline _ITp 5209: atomic_fetch_and_explicit(__atomic_base<_ITp>* __a, 5209: __atomic_val_t<_ITp> __i, 5209: memory_order __m) noexcept 5209: { return __a->fetch_and(__i, __m); } 5209: 5209: template 5209: inline _ITp 5209: atomic_fetch_and_explicit(volatile __atomic_base<_ITp>* __a, 5209: __atomic_val_t<_ITp> __i, 5209: memory_order __m) noexcept 5209: { return __a->fetch_and(__i, __m); } 5209: 5209: template 5209: inline _ITp 5209: atomic_fetch_or_explicit(__atomic_base<_ITp>* __a, 5209: __atomic_val_t<_ITp> __i, 5209: memory_order __m) noexcept 5209: { return __a->fetch_or(__i, __m); } 5209: 5209: template 5209: inline _ITp 5209: atomic_fetch_or_explicit(volatile __atomic_base<_ITp>* __a, 5209: __atomic_val_t<_ITp> __i, 5209: memory_order __m) noexcept 5209: { return __a->fetch_or(__i, __m); } 5209: 5209: template 5209: inline _ITp 5209: atomic_fetch_xor_explicit(__atomic_base<_ITp>* __a, 5209: __atomic_val_t<_ITp> __i, 5209: memory_order __m) noexcept 5209: { return __a->fetch_xor(__i, __m); } 5209: 5209: template 5209: inline _ITp 5209: atomic_fetch_xor_explicit(volatile __atomic_base<_ITp>* __a, 5209: __atomic_val_t<_ITp> __i, 5209: memory_order __m) noexcept 5209: { return __a->fetch_xor(__i, __m); } 5209: 5209: template 5209: inline _ITp 5209: atomic_fetch_add(atomic<_ITp>* __a, 5209: __atomic_diff_t<_ITp> __i) noexcept 5209: { return atomic_fetch_add_explicit(__a, __i, memory_order_seq_cst); } 5209: 5209: template 5209: inline _ITp 5209: atomic_fetch_add(volatile atomic<_ITp>* __a, 5209: __atomic_diff_t<_ITp> __i) noexcept 5209: { return atomic_fetch_add_explicit(__a, __i, memory_order_seq_cst); } 5209: 5209: template 5209: inline _ITp 5209: atomic_fetch_sub(atomic<_ITp>* __a, 5209: __atomic_diff_t<_ITp> __i) noexcept 5209: { return atomic_fetch_sub_explicit(__a, __i, memory_order_seq_cst); } 5209: 5209: template 5209: inline _ITp 5209: atomic_fetch_sub(volatile atomic<_ITp>* __a, 5209: __atomic_diff_t<_ITp> __i) noexcept 5209: { return atomic_fetch_sub_explicit(__a, __i, memory_order_seq_cst); } 5209: 5209: template 5209: inline _ITp 5209: atomic_fetch_and(__atomic_base<_ITp>* __a, 5209: __atomic_val_t<_ITp> __i) noexcept 5209: { return atomic_fetch_and_explicit(__a, __i, memory_order_seq_cst); } 5209: 5209: template 5209: inline _ITp 5209: atomic_fetch_and(volatile __atomic_base<_ITp>* __a, 5209: __atomic_val_t<_ITp> __i) noexcept 5209: { return atomic_fetch_and_explicit(__a, __i, memory_order_seq_cst); } 5209: 5209: template 5209: inline _ITp 5209: atomic_fetch_or(__atomic_base<_ITp>* __a, 5209: __atomic_val_t<_ITp> __i) noexcept 5209: { return atomic_fetch_or_explicit(__a, __i, memory_order_seq_cst); } 5209: 5209: template 5209: inline _ITp 5209: atomic_fetch_or(volatile __atomic_base<_ITp>* __a, 5209: __atomic_val_t<_ITp> __i) noexcept 5209: { return atomic_fetch_or_explicit(__a, __i, memory_order_seq_cst); } 5209: 5209: template 5209: inline _ITp 5209: atomic_fetch_xor(__atomic_base<_ITp>* __a, 5209: __atomic_val_t<_ITp> __i) noexcept 5209: { return atomic_fetch_xor_explicit(__a, __i, memory_order_seq_cst); } 5209: 5209: template 5209: inline _ITp 5209: atomic_fetch_xor(volatile __atomic_base<_ITp>* __a, 5209: __atomic_val_t<_ITp> __i) noexcept 5209: { return atomic_fetch_xor_explicit(__a, __i, memory_order_seq_cst); } 5209: # 1541 "/usr/include/c++/10/atomic" 3 5209: 5209: } 5209: # 23 "/<>/test/../public/../internal/multi_thread_gemm.h" 2 5209: # 1 "/usr/include/c++/10/chrono" 1 3 5209: # 33 "/usr/include/c++/10/chrono" 3 5209: 5209: # 34 "/usr/include/c++/10/chrono" 3 5209: 5209: 5209: 5209: 5209: 5209: # 1 "/usr/include/c++/10/ratio" 1 3 5209: # 33 "/usr/include/c++/10/ratio" 3 5209: 5209: # 34 "/usr/include/c++/10/ratio" 3 5209: # 42 "/usr/include/c++/10/ratio" 3 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: # 56 "/usr/include/c++/10/ratio" 3 5209: template 5209: struct __static_sign 5209: : integral_constant 5209: { }; 5209: 5209: template 5209: struct __static_abs 5209: : integral_constant::value> 5209: { }; 5209: 5209: template 5209: struct __static_gcd 5209: : __static_gcd<_Qn, (_Pn % _Qn)> 5209: { }; 5209: 5209: template 5209: struct __static_gcd<_Pn, 0> 5209: : integral_constant::value> 5209: { }; 5209: 5209: template 5209: struct __static_gcd<0, _Qn> 5209: : integral_constant::value> 5209: { }; 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: struct __safe_multiply 5209: { 5209: private: 5209: static const uintmax_t __c = uintmax_t(1) << (sizeof(intmax_t) * 4); 5209: 5209: static const uintmax_t __a0 = __static_abs<_Pn>::value % __c; 5209: static const uintmax_t __a1 = __static_abs<_Pn>::value / __c; 5209: static const uintmax_t __b0 = __static_abs<_Qn>::value % __c; 5209: static const uintmax_t __b1 = __static_abs<_Qn>::value / __c; 5209: 5209: static_assert(__a1 == 0 || __b1 == 0, 5209: "overflow in multiplication"); 5209: static_assert(__a0 * __b1 + __b0 * __a1 < (__c >> 1), 5209: "overflow in multiplication"); 5209: static_assert(__b0 * __a0 <= 0x7fffffffffffffffL, 5209: "overflow in multiplication"); 5209: static_assert((__a0 * __b1 + __b0 * __a1) * __c 5209: <= 0x7fffffffffffffffL - __b0 * __a0, 5209: "overflow in multiplication"); 5209: 5209: public: 5209: static const intmax_t value = _Pn * _Qn; 5209: }; 5209: 5209: 5209: 5209: template 5209: struct __big_less 5209: : integral_constant 5209: { }; 5209: 5209: template 5209: struct __big_add 5209: { 5209: static constexpr uintmax_t __lo = __lo1 + __lo2; 5209: static constexpr uintmax_t __hi = (__hi1 + __hi2 + 5209: (__lo1 + __lo2 < __lo1)); 5209: }; 5209: 5209: 5209: template 5209: struct __big_sub 5209: { 5209: static_assert(!__big_less<__hi1, __lo1, __hi2, __lo2>::value, 5209: "Internal library error"); 5209: static constexpr uintmax_t __lo = __lo1 - __lo2; 5209: static constexpr uintmax_t __hi = (__hi1 - __hi2 - 5209: (__lo1 < __lo2)); 5209: }; 5209: 5209: 5209: template 5209: struct __big_mul 5209: { 5209: private: 5209: static constexpr uintmax_t __c = uintmax_t(1) << (sizeof(intmax_t) * 4); 5209: static constexpr uintmax_t __x0 = __x % __c; 5209: static constexpr uintmax_t __x1 = __x / __c; 5209: static constexpr uintmax_t __y0 = __y % __c; 5209: static constexpr uintmax_t __y1 = __y / __c; 5209: static constexpr uintmax_t __x0y0 = __x0 * __y0; 5209: static constexpr uintmax_t __x0y1 = __x0 * __y1; 5209: static constexpr uintmax_t __x1y0 = __x1 * __y0; 5209: static constexpr uintmax_t __x1y1 = __x1 * __y1; 5209: static constexpr uintmax_t __mix = __x0y1 + __x1y0; 5209: static constexpr uintmax_t __mix_lo = __mix * __c; 5209: static constexpr uintmax_t __mix_hi 5209: = __mix / __c + ((__mix < __x0y1) ? __c : 0); 5209: typedef __big_add<__mix_hi, __mix_lo, __x1y1, __x0y0> _Res; 5209: public: 5209: static constexpr uintmax_t __hi = _Res::__hi; 5209: static constexpr uintmax_t __lo = _Res::__lo; 5209: }; 5209: 5209: 5209: 5209: template 5209: struct __big_div_impl 5209: { 5209: private: 5209: static_assert(__d >= (uintmax_t(1) << (sizeof(intmax_t) * 8 - 1)), 5209: "Internal library error"); 5209: static_assert(__n1 < __d, "Internal library error"); 5209: static constexpr uintmax_t __c = uintmax_t(1) << (sizeof(intmax_t) * 4); 5209: static constexpr uintmax_t __d1 = __d / __c; 5209: static constexpr uintmax_t __d0 = __d % __c; 5209: 5209: static constexpr uintmax_t __q1x = __n1 / __d1; 5209: static constexpr uintmax_t __r1x = __n1 % __d1; 5209: static constexpr uintmax_t __m = __q1x * __d0; 5209: static constexpr uintmax_t __r1y = __r1x * __c + __n0 / __c; 5209: static constexpr uintmax_t __r1z = __r1y + __d; 5209: static constexpr uintmax_t __r1 5209: = ((__r1y < __m) ? ((__r1z >= __d) && (__r1z < __m)) 5209: ? (__r1z + __d) : __r1z : __r1y) - __m; 5209: static constexpr uintmax_t __q1 5209: = __q1x - ((__r1y < __m) 5209: ? ((__r1z >= __d) && (__r1z < __m)) ? 2 : 1 : 0); 5209: static constexpr uintmax_t __q0x = __r1 / __d1; 5209: static constexpr uintmax_t __r0x = __r1 % __d1; 5209: static constexpr uintmax_t __n = __q0x * __d0; 5209: static constexpr uintmax_t __r0y = __r0x * __c + __n0 % __c; 5209: static constexpr uintmax_t __r0z = __r0y + __d; 5209: static constexpr uintmax_t __r0 5209: = ((__r0y < __n) ? ((__r0z >= __d) && (__r0z < __n)) 5209: ? (__r0z + __d) : __r0z : __r0y) - __n; 5209: static constexpr uintmax_t __q0 5209: = __q0x - ((__r0y < __n) ? ((__r0z >= __d) 5209: && (__r0z < __n)) ? 2 : 1 : 0); 5209: 5209: public: 5209: static constexpr uintmax_t __quot = __q1 * __c + __q0; 5209: static constexpr uintmax_t __rem = __r0; 5209: 5209: private: 5209: typedef __big_mul<__quot, __d> _Prod; 5209: typedef __big_add<_Prod::__hi, _Prod::__lo, 0, __rem> _Sum; 5209: static_assert(_Sum::__hi == __n1 && _Sum::__lo == __n0, 5209: "Internal library error"); 5209: }; 5209: 5209: template 5209: struct __big_div 5209: { 5209: private: 5209: static_assert(__d != 0, "Internal library error"); 5209: static_assert(sizeof (uintmax_t) == sizeof (unsigned long long), 5209: "This library calls __builtin_clzll on uintmax_t, which " 5209: "is unsafe on your platform. Please complain to " 5209: "http://gcc.gnu.org/bugzilla/"); 5209: static constexpr int __shift = __builtin_clzll(__d); 5209: static constexpr int __coshift_ = sizeof(uintmax_t) * 8 - __shift; 5209: static constexpr int __coshift = (__shift != 0) ? __coshift_ : 0; 5209: static constexpr uintmax_t __c1 = uintmax_t(1) << __shift; 5209: static constexpr uintmax_t __c2 = uintmax_t(1) << __coshift; 5209: static constexpr uintmax_t __new_d = __d * __c1; 5209: static constexpr uintmax_t __new_n0 = __n0 * __c1; 5209: static constexpr uintmax_t __n1_shifted = (__n1 % __d) * __c1; 5209: static constexpr uintmax_t __n0_top = (__shift != 0) ? (__n0 / __c2) : 0; 5209: static constexpr uintmax_t __new_n1 = __n1_shifted + __n0_top; 5209: typedef __big_div_impl<__new_n1, __new_n0, __new_d> _Res; 5209: 5209: public: 5209: static constexpr uintmax_t __quot_hi = __n1 / __d; 5209: static constexpr uintmax_t __quot_lo = _Res::__quot; 5209: static constexpr uintmax_t __rem = _Res::__rem / __c1; 5209: 5209: private: 5209: typedef __big_mul<__quot_lo, __d> _P0; 5209: typedef __big_mul<__quot_hi, __d> _P1; 5209: typedef __big_add<_P0::__hi, _P0::__lo, _P1::__lo, __rem> _Sum; 5209: 5209: static_assert(_P1::__hi == 0, "Internal library error"); 5209: static_assert(_Sum::__hi >= _P0::__hi, "Internal library error"); 5209: 5209: static_assert(_Sum::__hi == __n1 && _Sum::__lo == __n0, 5209: "Internal library error"); 5209: static_assert(__rem < __d, "Internal library error"); 5209: }; 5209: # 265 "/usr/include/c++/10/ratio" 3 5209: template 5209: struct ratio 5209: { 5209: static_assert(_Den != 0, "denominator cannot be zero"); 5209: static_assert(_Num >= -0x7fffffffffffffffL && _Den >= -0x7fffffffffffffffL, 5209: "out of range"); 5209: 5209: 5209: static constexpr intmax_t num = 5209: _Num * __static_sign<_Den>::value / __static_gcd<_Num, _Den>::value; 5209: 5209: static constexpr intmax_t den = 5209: __static_abs<_Den>::value / __static_gcd<_Num, _Den>::value; 5209: 5209: typedef ratio type; 5209: }; 5209: 5209: template 5209: constexpr intmax_t ratio<_Num, _Den>::num; 5209: 5209: template 5209: constexpr intmax_t ratio<_Num, _Den>::den; 5209: 5209: 5209: 5209: template 5209: struct __ratio_multiply 5209: { 5209: private: 5209: static const intmax_t __gcd1 = 5209: __static_gcd<_R1::num, _R2::den>::value; 5209: static const intmax_t __gcd2 = 5209: __static_gcd<_R2::num, _R1::den>::value; 5209: 5209: public: 5209: typedef ratio< 5209: __safe_multiply<(_R1::num / __gcd1), 5209: (_R2::num / __gcd2)>::value, 5209: __safe_multiply<(_R1::den / __gcd2), 5209: (_R2::den / __gcd1)>::value> type; 5209: 5209: static constexpr intmax_t num = type::num; 5209: static constexpr intmax_t den = type::den; 5209: }; 5209: 5209: template 5209: constexpr intmax_t __ratio_multiply<_R1, _R2>::num; 5209: 5209: template 5209: constexpr intmax_t __ratio_multiply<_R1, _R2>::den; 5209: 5209: 5209: 5209: 5209: template 5209: using ratio_multiply = typename __ratio_multiply<_R1, _R2>::type; 5209: 5209: 5209: 5209: template 5209: struct __ratio_divide 5209: { 5209: static_assert(_R2::num != 0, "division by 0"); 5209: 5209: typedef typename __ratio_multiply< 5209: _R1, 5209: ratio<_R2::den, _R2::num>>::type type; 5209: 5209: static constexpr intmax_t num = type::num; 5209: static constexpr intmax_t den = type::den; 5209: }; 5209: 5209: template 5209: constexpr intmax_t __ratio_divide<_R1, _R2>::num; 5209: 5209: template 5209: constexpr intmax_t __ratio_divide<_R1, _R2>::den; 5209: 5209: 5209: 5209: 5209: template 5209: using ratio_divide = typename __ratio_divide<_R1, _R2>::type; 5209: 5209: 5209: template 5209: struct ratio_equal 5209: : integral_constant 5209: { }; 5209: 5209: 5209: template 5209: struct ratio_not_equal 5209: : integral_constant::value> 5209: { }; 5209: 5209: 5209: 5209: 5209: template, 5209: typename _Right = __big_mul<_R2::num,_R1::den> > 5209: struct __ratio_less_impl_1 5209: : integral_constant::value> 5209: { }; 5209: 5209: template::value 5209: != __static_sign<_R2::num>::value)), 5209: bool = (__static_sign<_R1::num>::value == -1 5209: && __static_sign<_R2::num>::value == -1)> 5209: struct __ratio_less_impl 5209: : __ratio_less_impl_1<_R1, _R2>::type 5209: { }; 5209: 5209: template 5209: struct __ratio_less_impl<_R1, _R2, true, false> 5209: : integral_constant 5209: { }; 5209: 5209: template 5209: struct __ratio_less_impl<_R1, _R2, false, true> 5209: : __ratio_less_impl_1, 5209: ratio<-_R1::num, _R1::den> >::type 5209: { }; 5209: 5209: 5209: 5209: 5209: template 5209: struct ratio_less 5209: : __ratio_less_impl<_R1, _R2>::type 5209: { }; 5209: 5209: 5209: template 5209: struct ratio_less_equal 5209: : integral_constant::value> 5209: { }; 5209: 5209: 5209: template 5209: struct ratio_greater 5209: : integral_constant::value> 5209: { }; 5209: 5209: 5209: template 5209: struct ratio_greater_equal 5209: : integral_constant::value> 5209: { }; 5209: # 438 "/usr/include/c++/10/ratio" 3 5209: template= 0), 5209: bool = (_R2::num >= 0), 5209: bool = ratio_less::value, _R1::den>, 5209: ratio<__static_abs<_R2::num>::value, _R2::den> >::value> 5209: struct __ratio_add_impl 5209: { 5209: private: 5209: typedef typename __ratio_add_impl< 5209: ratio<-_R1::num, _R1::den>, 5209: ratio<-_R2::num, _R2::den> >::type __t; 5209: public: 5209: typedef ratio<-__t::num, __t::den> type; 5209: }; 5209: 5209: 5209: template 5209: struct __ratio_add_impl<_R1, _R2, true, true, __b> 5209: { 5209: private: 5209: static constexpr uintmax_t __g = __static_gcd<_R1::den, _R2::den>::value; 5209: static constexpr uintmax_t __d2 = _R2::den / __g; 5209: typedef __big_mul<_R1::den, __d2> __d; 5209: typedef __big_mul<_R1::num, _R2::den / __g> __x; 5209: typedef __big_mul<_R2::num, _R1::den / __g> __y; 5209: typedef __big_add<__x::__hi, __x::__lo, __y::__hi, __y::__lo> __n; 5209: static_assert(__n::__hi >= __x::__hi, "Internal library error"); 5209: typedef __big_div<__n::__hi, __n::__lo, __g> __ng; 5209: static constexpr uintmax_t __g2 = __static_gcd<__ng::__rem, __g>::value; 5209: typedef __big_div<__n::__hi, __n::__lo, __g2> __n_final; 5209: static_assert(__n_final::__rem == 0, "Internal library error"); 5209: static_assert(__n_final::__quot_hi == 0 && 5209: __n_final::__quot_lo <= 0x7fffffffffffffffL, "overflow in addition"); 5209: typedef __big_mul<_R1::den / __g2, __d2> __d_final; 5209: static_assert(__d_final::__hi == 0 && 5209: __d_final::__lo <= 0x7fffffffffffffffL, "overflow in addition"); 5209: public: 5209: typedef ratio<__n_final::__quot_lo, __d_final::__lo> type; 5209: }; 5209: 5209: template 5209: struct __ratio_add_impl<_R1, _R2, false, true, true> 5209: : __ratio_add_impl<_R2, _R1> 5209: { }; 5209: 5209: 5209: template 5209: struct __ratio_add_impl<_R1, _R2, true, false, false> 5209: { 5209: private: 5209: static constexpr uintmax_t __g = __static_gcd<_R1::den, _R2::den>::value; 5209: static constexpr uintmax_t __d2 = _R2::den / __g; 5209: typedef __big_mul<_R1::den, __d2> __d; 5209: typedef __big_mul<_R1::num, _R2::den / __g> __x; 5209: typedef __big_mul<-_R2::num, _R1::den / __g> __y; 5209: typedef __big_sub<__x::__hi, __x::__lo, __y::__hi, __y::__lo> __n; 5209: typedef __big_div<__n::__hi, __n::__lo, __g> __ng; 5209: static constexpr uintmax_t __g2 = __static_gcd<__ng::__rem, __g>::value; 5209: typedef __big_div<__n::__hi, __n::__lo, __g2> __n_final; 5209: static_assert(__n_final::__rem == 0, "Internal library error"); 5209: static_assert(__n_final::__quot_hi == 0 && 5209: __n_final::__quot_lo <= 0x7fffffffffffffffL, "overflow in addition"); 5209: typedef __big_mul<_R1::den / __g2, __d2> __d_final; 5209: static_assert(__d_final::__hi == 0 && 5209: __d_final::__lo <= 0x7fffffffffffffffL, "overflow in addition"); 5209: public: 5209: typedef ratio<__n_final::__quot_lo, __d_final::__lo> type; 5209: }; 5209: 5209: template 5209: struct __ratio_add 5209: { 5209: typedef typename __ratio_add_impl<_R1, _R2>::type type; 5209: static constexpr intmax_t num = type::num; 5209: static constexpr intmax_t den = type::den; 5209: }; 5209: 5209: template 5209: constexpr intmax_t __ratio_add<_R1, _R2>::num; 5209: 5209: template 5209: constexpr intmax_t __ratio_add<_R1, _R2>::den; 5209: 5209: 5209: 5209: 5209: template 5209: using ratio_add = typename __ratio_add<_R1, _R2>::type; 5209: 5209: 5209: 5209: template 5209: struct __ratio_subtract 5209: { 5209: typedef typename __ratio_add< 5209: _R1, 5209: ratio<-_R2::num, _R2::den>>::type type; 5209: 5209: static constexpr intmax_t num = type::num; 5209: static constexpr intmax_t den = type::den; 5209: }; 5209: 5209: template 5209: constexpr intmax_t __ratio_subtract<_R1, _R2>::num; 5209: 5209: template 5209: constexpr intmax_t __ratio_subtract<_R1, _R2>::den; 5209: 5209: 5209: 5209: 5209: template 5209: using ratio_subtract = typename __ratio_subtract<_R1, _R2>::type; 5209: 5209: 5209: typedef ratio<1, 1000000000000000000> atto; 5209: typedef ratio<1, 1000000000000000> femto; 5209: typedef ratio<1, 1000000000000> pico; 5209: typedef ratio<1, 1000000000> nano; 5209: typedef ratio<1, 1000000> micro; 5209: typedef ratio<1, 1000> milli; 5209: typedef ratio<1, 100> centi; 5209: typedef ratio<1, 10> deci; 5209: typedef ratio< 10, 1> deca; 5209: typedef ratio< 100, 1> hecto; 5209: typedef ratio< 1000, 1> kilo; 5209: typedef ratio< 1000000, 1> mega; 5209: typedef ratio< 1000000000, 1> giga; 5209: typedef ratio< 1000000000000, 1> tera; 5209: typedef ratio< 1000000000000000, 1> peta; 5209: typedef ratio< 1000000000000000000, 1> exa; 5209: 5209: 5209: 5209: } 5209: # 40 "/usr/include/c++/10/chrono" 2 3 5209: 5209: 5209: # 1 "/usr/include/c++/10/ctime" 1 3 5209: # 39 "/usr/include/c++/10/ctime" 3 5209: 5209: # 40 "/usr/include/c++/10/ctime" 3 5209: # 58 "/usr/include/c++/10/ctime" 3 5209: namespace std 5209: { 5209: using ::clock_t; 5209: using ::time_t; 5209: using ::tm; 5209: 5209: using ::clock; 5209: using ::difftime; 5209: using ::mktime; 5209: using ::time; 5209: using ::asctime; 5209: using ::ctime; 5209: using ::gmtime; 5209: using ::localtime; 5209: using ::strftime; 5209: } 5209: # 43 "/usr/include/c++/10/chrono" 2 3 5209: # 1 "/usr/include/c++/10/bits/parse_numbers.h" 1 3 5209: # 33 "/usr/include/c++/10/bits/parse_numbers.h" 3 5209: 5209: # 34 "/usr/include/c++/10/bits/parse_numbers.h" 3 5209: # 44 "/usr/include/c++/10/chrono" 2 3 5209: 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: # 60 "/usr/include/c++/10/chrono" 3 5209: namespace chrono 5209: { 5209: template> 5209: struct duration; 5209: 5209: template 5209: struct time_point; 5209: } 5209: 5209: 5209: 5209: 5209: 5209: template 5209: struct __duration_common_type 5209: { }; 5209: 5209: template 5209: struct __duration_common_type<_CT, _Period1, _Period2, 5209: __void_t> 5209: { 5209: private: 5209: using __gcd_num = __static_gcd<_Period1::num, _Period2::num>; 5209: using __gcd_den = __static_gcd<_Period1::den, _Period2::den>; 5209: using __cr = typename _CT::type; 5209: using __r = ratio<__gcd_num::value, 5209: (_Period1::den / __gcd_den::value) * _Period2::den>; 5209: 5209: public: 5209: using type = chrono::duration<__cr, __r>; 5209: }; 5209: 5209: template 5209: struct __duration_common_type<__failure_type, _Period1, _Period2> 5209: { typedef __failure_type type; }; 5209: 5209: 5209: 5209: 5209: 5209: template 5209: struct common_type, 5209: chrono::duration<_Rep2, _Period2>> 5209: : __duration_common_type, _Period1, _Period2> 5209: { }; 5209: 5209: 5209: 5209: 5209: 5209: template 5209: struct __timepoint_common_type 5209: { }; 5209: 5209: template 5209: struct __timepoint_common_type<_CT, _Clock, __void_t> 5209: { 5209: using type = chrono::time_point<_Clock, typename _CT::type>; 5209: }; 5209: 5209: 5209: 5209: 5209: 5209: template 5209: struct common_type, 5209: chrono::time_point<_Clock, _Duration2>> 5209: : __timepoint_common_type, _Clock> 5209: { }; 5209: 5209: 5209: 5209: namespace chrono 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: struct __duration_cast_impl 5209: { 5209: template 5209: static constexpr _ToDur 5209: __cast(const duration<_Rep, _Period>& __d) 5209: { 5209: typedef typename _ToDur::rep __to_rep; 5209: return _ToDur(static_cast<__to_rep>(static_cast<_CR>(__d.count()) 5209: * static_cast<_CR>(_CF::num) 5209: / static_cast<_CR>(_CF::den))); 5209: } 5209: }; 5209: 5209: template 5209: struct __duration_cast_impl<_ToDur, _CF, _CR, true, true> 5209: { 5209: template 5209: static constexpr _ToDur 5209: __cast(const duration<_Rep, _Period>& __d) 5209: { 5209: typedef typename _ToDur::rep __to_rep; 5209: return _ToDur(static_cast<__to_rep>(__d.count())); 5209: } 5209: }; 5209: 5209: template 5209: struct __duration_cast_impl<_ToDur, _CF, _CR, true, false> 5209: { 5209: template 5209: static constexpr _ToDur 5209: __cast(const duration<_Rep, _Period>& __d) 5209: { 5209: typedef typename _ToDur::rep __to_rep; 5209: return _ToDur(static_cast<__to_rep>( 5209: static_cast<_CR>(__d.count()) / static_cast<_CR>(_CF::den))); 5209: } 5209: }; 5209: 5209: template 5209: struct __duration_cast_impl<_ToDur, _CF, _CR, false, true> 5209: { 5209: template 5209: static constexpr _ToDur 5209: __cast(const duration<_Rep, _Period>& __d) 5209: { 5209: typedef typename _ToDur::rep __to_rep; 5209: return _ToDur(static_cast<__to_rep>( 5209: static_cast<_CR>(__d.count()) * static_cast<_CR>(_CF::num))); 5209: } 5209: }; 5209: 5209: template 5209: struct __is_duration 5209: : std::false_type 5209: { }; 5209: 5209: template 5209: struct __is_duration> 5209: : std::true_type 5209: { }; 5209: 5209: template 5209: using __enable_if_is_duration 5209: = typename enable_if<__is_duration<_Tp>::value, _Tp>::type; 5209: 5209: template 5209: using __disable_if_is_duration 5209: = typename enable_if::value, _Tp>::type; 5209: 5209: 5209: 5209: 5209: template 5209: constexpr __enable_if_is_duration<_ToDur> 5209: duration_cast(const duration<_Rep, _Period>& __d) 5209: { 5209: typedef typename _ToDur::period __to_period; 5209: typedef typename _ToDur::rep __to_rep; 5209: typedef ratio_divide<_Period, __to_period> __cf; 5209: typedef typename common_type<__to_rep, _Rep, intmax_t>::type 5209: __cr; 5209: typedef __duration_cast_impl<_ToDur, __cf, __cr, 5209: __cf::num == 1, __cf::den == 1> __dc; 5209: return __dc::__cast(__d); 5209: } 5209: 5209: 5209: template 5209: struct treat_as_floating_point 5209: : is_floating_point<_Rep> 5209: { }; 5209: # 297 "/usr/include/c++/10/chrono" 3 5209: template 5209: struct duration_values 5209: { 5209: static constexpr _Rep 5209: zero() noexcept 5209: { return _Rep(0); } 5209: 5209: static constexpr _Rep 5209: max() noexcept 5209: { return numeric_limits<_Rep>::max(); } 5209: 5209: static constexpr _Rep 5209: min() noexcept 5209: { return numeric_limits<_Rep>::lowest(); } 5209: }; 5209: 5209: 5209: 5209: template 5209: struct __is_ratio 5209: : std::false_type 5209: { }; 5209: 5209: template 5209: struct __is_ratio> 5209: : std::true_type 5209: { }; 5209: 5209: 5209: 5209: 5209: template 5209: struct duration 5209: { 5209: private: 5209: template 5209: using __is_float = treat_as_floating_point<_Rep2>; 5209: 5209: 5209: template 5209: using __is_harmonic 5209: = __bool_constant::den == 1>; 5209: 5209: public: 5209: 5209: typedef _Rep rep; 5209: typedef _Period period; 5209: 5209: static_assert(!__is_duration<_Rep>::value, "rep cannot be a duration"); 5209: static_assert(__is_ratio<_Period>::value, 5209: "period must be a specialization of ratio"); 5209: static_assert(_Period::num > 0, "period must be positive"); 5209: 5209: 5209: constexpr duration() = default; 5209: 5209: duration(const duration&) = default; 5209: 5209: 5209: 5209: template, 5209: __or_<__is_float, __not_<__is_float<_Rep2>>>>> 5209: constexpr explicit duration(const _Rep2& __rep) 5209: : __r(static_cast(__rep)) { } 5209: 5209: template, 5209: __and_<__is_harmonic<_Period2>, 5209: __not_<__is_float<_Rep2>>>>>> 5209: constexpr duration(const duration<_Rep2, _Period2>& __d) 5209: : __r(duration_cast(__d).count()) { } 5209: 5209: ~duration() = default; 5209: duration& operator=(const duration&) = default; 5209: 5209: 5209: constexpr rep 5209: count() const 5209: { return __r; } 5209: 5209: 5209: constexpr duration 5209: operator+() const 5209: { return *this; } 5209: 5209: constexpr duration 5209: operator-() const 5209: { return duration(-__r); } 5209: 5209: duration& 5209: operator++() 5209: { 5209: ++__r; 5209: return *this; 5209: } 5209: 5209: duration 5209: operator++(int) 5209: { return duration(__r++); } 5209: 5209: duration& 5209: operator--() 5209: { 5209: --__r; 5209: return *this; 5209: } 5209: 5209: duration 5209: operator--(int) 5209: { return duration(__r--); } 5209: 5209: duration& 5209: operator+=(const duration& __d) 5209: { 5209: __r += __d.count(); 5209: return *this; 5209: } 5209: 5209: duration& 5209: operator-=(const duration& __d) 5209: { 5209: __r -= __d.count(); 5209: return *this; 5209: } 5209: 5209: duration& 5209: operator*=(const rep& __rhs) 5209: { 5209: __r *= __rhs; 5209: return *this; 5209: } 5209: 5209: duration& 5209: operator/=(const rep& __rhs) 5209: { 5209: __r /= __rhs; 5209: return *this; 5209: } 5209: 5209: 5209: template 5209: 5209: typename enable_if::value, 5209: duration&>::type 5209: operator%=(const rep& __rhs) 5209: { 5209: __r %= __rhs; 5209: return *this; 5209: } 5209: 5209: template 5209: 5209: typename enable_if::value, 5209: duration&>::type 5209: operator%=(const duration& __d) 5209: { 5209: __r %= __d.count(); 5209: return *this; 5209: } 5209: 5209: 5209: static constexpr duration 5209: zero() noexcept 5209: { return duration(duration_values::zero()); } 5209: 5209: static constexpr duration 5209: min() noexcept 5209: { return duration(duration_values::min()); } 5209: 5209: static constexpr duration 5209: max() noexcept 5209: { return duration(duration_values::max()); } 5209: 5209: private: 5209: rep __r; 5209: }; 5209: 5209: 5209: 5209: 5209: template 5209: constexpr typename common_type, 5209: duration<_Rep2, _Period2>>::type 5209: operator+(const duration<_Rep1, _Period1>& __lhs, 5209: const duration<_Rep2, _Period2>& __rhs) 5209: { 5209: typedef duration<_Rep1, _Period1> __dur1; 5209: typedef duration<_Rep2, _Period2> __dur2; 5209: typedef typename common_type<__dur1,__dur2>::type __cd; 5209: return __cd(__cd(__lhs).count() + __cd(__rhs).count()); 5209: } 5209: 5209: 5209: template 5209: constexpr typename common_type, 5209: duration<_Rep2, _Period2>>::type 5209: operator-(const duration<_Rep1, _Period1>& __lhs, 5209: const duration<_Rep2, _Period2>& __rhs) 5209: { 5209: typedef duration<_Rep1, _Period1> __dur1; 5209: typedef duration<_Rep2, _Period2> __dur2; 5209: typedef typename common_type<__dur1,__dur2>::type __cd; 5209: return __cd(__cd(__lhs).count() - __cd(__rhs).count()); 5209: } 5209: # 513 "/usr/include/c++/10/chrono" 3 5209: template::type> 5209: using __common_rep_t = typename 5209: enable_if::value, _CRep>::type; 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: constexpr duration<__common_rep_t<_Rep1, _Rep2>, _Period> 5209: operator*(const duration<_Rep1, _Period>& __d, const _Rep2& __s) 5209: { 5209: typedef duration::type, _Period> 5209: __cd; 5209: return __cd(__cd(__d).count() * __s); 5209: } 5209: 5209: 5209: template 5209: constexpr duration<__common_rep_t<_Rep2, _Rep1>, _Period> 5209: operator*(const _Rep1& __s, const duration<_Rep2, _Period>& __d) 5209: { return __d * __s; } 5209: 5209: template 5209: constexpr 5209: duration<__common_rep_t<_Rep1, __disable_if_is_duration<_Rep2>>, _Period> 5209: operator/(const duration<_Rep1, _Period>& __d, const _Rep2& __s) 5209: { 5209: typedef duration::type, _Period> 5209: __cd; 5209: return __cd(__cd(__d).count() / __s); 5209: } 5209: 5209: template 5209: constexpr typename common_type<_Rep1, _Rep2>::type 5209: operator/(const duration<_Rep1, _Period1>& __lhs, 5209: const duration<_Rep2, _Period2>& __rhs) 5209: { 5209: typedef duration<_Rep1, _Period1> __dur1; 5209: typedef duration<_Rep2, _Period2> __dur2; 5209: typedef typename common_type<__dur1,__dur2>::type __cd; 5209: return __cd(__lhs).count() / __cd(__rhs).count(); 5209: } 5209: 5209: 5209: template 5209: constexpr 5209: duration<__common_rep_t<_Rep1, __disable_if_is_duration<_Rep2>>, _Period> 5209: operator%(const duration<_Rep1, _Period>& __d, const _Rep2& __s) 5209: { 5209: typedef duration::type, _Period> 5209: __cd; 5209: return __cd(__cd(__d).count() % __s); 5209: } 5209: 5209: template 5209: constexpr typename common_type, 5209: duration<_Rep2, _Period2>>::type 5209: operator%(const duration<_Rep1, _Period1>& __lhs, 5209: const duration<_Rep2, _Period2>& __rhs) 5209: { 5209: typedef duration<_Rep1, _Period1> __dur1; 5209: typedef duration<_Rep2, _Period2> __dur2; 5209: typedef typename common_type<__dur1,__dur2>::type __cd; 5209: return __cd(__cd(__lhs).count() % __cd(__rhs).count()); 5209: } 5209: 5209: 5209: 5209: template 5209: constexpr bool 5209: operator==(const duration<_Rep1, _Period1>& __lhs, 5209: const duration<_Rep2, _Period2>& __rhs) 5209: { 5209: typedef duration<_Rep1, _Period1> __dur1; 5209: typedef duration<_Rep2, _Period2> __dur2; 5209: typedef typename common_type<__dur1,__dur2>::type __ct; 5209: return __ct(__lhs).count() == __ct(__rhs).count(); 5209: } 5209: 5209: template 5209: constexpr bool 5209: operator<(const duration<_Rep1, _Period1>& __lhs, 5209: const duration<_Rep2, _Period2>& __rhs) 5209: { 5209: typedef duration<_Rep1, _Period1> __dur1; 5209: typedef duration<_Rep2, _Period2> __dur2; 5209: typedef typename common_type<__dur1,__dur2>::type __ct; 5209: return __ct(__lhs).count() < __ct(__rhs).count(); 5209: } 5209: 5209: template 5209: constexpr bool 5209: operator!=(const duration<_Rep1, _Period1>& __lhs, 5209: const duration<_Rep2, _Period2>& __rhs) 5209: { return !(__lhs == __rhs); } 5209: 5209: template 5209: constexpr bool 5209: operator<=(const duration<_Rep1, _Period1>& __lhs, 5209: const duration<_Rep2, _Period2>& __rhs) 5209: { return !(__rhs < __lhs); } 5209: 5209: template 5209: constexpr bool 5209: operator>(const duration<_Rep1, _Period1>& __lhs, 5209: const duration<_Rep2, _Period2>& __rhs) 5209: { return __rhs < __lhs; } 5209: 5209: template 5209: constexpr bool 5209: operator>=(const duration<_Rep1, _Period1>& __lhs, 5209: const duration<_Rep2, _Period2>& __rhs) 5209: { return !(__lhs < __rhs); } 5209: # 651 "/usr/include/c++/10/chrono" 3 5209: typedef duration nanoseconds; 5209: 5209: 5209: typedef duration microseconds; 5209: 5209: 5209: typedef duration milliseconds; 5209: 5209: 5209: typedef duration seconds; 5209: 5209: 5209: typedef duration> minutes; 5209: 5209: 5209: typedef duration> hours; 5209: 5209: 5209: 5209: 5209: template 5209: struct time_point 5209: { 5209: typedef _Clock clock; 5209: typedef _Dur duration; 5209: typedef typename duration::rep rep; 5209: typedef typename duration::period period; 5209: 5209: constexpr time_point() : __d(duration::zero()) 5209: { } 5209: 5209: constexpr explicit time_point(const duration& __dur) 5209: : __d(__dur) 5209: { } 5209: 5209: 5209: template>> 5209: constexpr time_point(const time_point& __t) 5209: : __d(__t.time_since_epoch()) 5209: { } 5209: 5209: 5209: constexpr duration 5209: time_since_epoch() const 5209: { return __d; } 5209: 5209: 5209: time_point& 5209: operator+=(const duration& __dur) 5209: { 5209: __d += __dur; 5209: return *this; 5209: } 5209: 5209: time_point& 5209: operator-=(const duration& __dur) 5209: { 5209: __d -= __dur; 5209: return *this; 5209: } 5209: 5209: 5209: static constexpr time_point 5209: min() noexcept 5209: { return time_point(duration::min()); } 5209: 5209: static constexpr time_point 5209: max() noexcept 5209: { return time_point(duration::max()); } 5209: 5209: private: 5209: duration __d; 5209: }; 5209: 5209: 5209: template 5209: constexpr typename enable_if<__is_duration<_ToDur>::value, 5209: time_point<_Clock, _ToDur>>::type 5209: time_point_cast(const time_point<_Clock, _Dur>& __t) 5209: { 5209: typedef time_point<_Clock, _ToDur> __time_point; 5209: return __time_point(duration_cast<_ToDur>(__t.time_since_epoch())); 5209: } 5209: # 770 "/usr/include/c++/10/chrono" 3 5209: template 5209: constexpr time_point<_Clock, 5209: typename common_type<_Dur1, duration<_Rep2, _Period2>>::type> 5209: operator+(const time_point<_Clock, _Dur1>& __lhs, 5209: const duration<_Rep2, _Period2>& __rhs) 5209: { 5209: typedef duration<_Rep2, _Period2> __dur2; 5209: typedef typename common_type<_Dur1,__dur2>::type __ct; 5209: typedef time_point<_Clock, __ct> __time_point; 5209: return __time_point(__lhs.time_since_epoch() + __rhs); 5209: } 5209: 5209: 5209: template 5209: constexpr time_point<_Clock, 5209: typename common_type, _Dur2>::type> 5209: operator+(const duration<_Rep1, _Period1>& __lhs, 5209: const time_point<_Clock, _Dur2>& __rhs) 5209: { 5209: typedef duration<_Rep1, _Period1> __dur1; 5209: typedef typename common_type<__dur1,_Dur2>::type __ct; 5209: typedef time_point<_Clock, __ct> __time_point; 5209: return __time_point(__rhs.time_since_epoch() + __lhs); 5209: } 5209: 5209: 5209: template 5209: constexpr time_point<_Clock, 5209: typename common_type<_Dur1, duration<_Rep2, _Period2>>::type> 5209: operator-(const time_point<_Clock, _Dur1>& __lhs, 5209: const duration<_Rep2, _Period2>& __rhs) 5209: { 5209: typedef duration<_Rep2, _Period2> __dur2; 5209: typedef typename common_type<_Dur1,__dur2>::type __ct; 5209: typedef time_point<_Clock, __ct> __time_point; 5209: return __time_point(__lhs.time_since_epoch() -__rhs); 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: constexpr typename common_type<_Dur1, _Dur2>::type 5209: operator-(const time_point<_Clock, _Dur1>& __lhs, 5209: const time_point<_Clock, _Dur2>& __rhs) 5209: { return __lhs.time_since_epoch() - __rhs.time_since_epoch(); } 5209: 5209: template 5209: constexpr bool 5209: operator==(const time_point<_Clock, _Dur1>& __lhs, 5209: const time_point<_Clock, _Dur2>& __rhs) 5209: { return __lhs.time_since_epoch() == __rhs.time_since_epoch(); } 5209: 5209: template 5209: constexpr bool 5209: operator!=(const time_point<_Clock, _Dur1>& __lhs, 5209: const time_point<_Clock, _Dur2>& __rhs) 5209: { return !(__lhs == __rhs); } 5209: 5209: template 5209: constexpr bool 5209: operator<(const time_point<_Clock, _Dur1>& __lhs, 5209: const time_point<_Clock, _Dur2>& __rhs) 5209: { return __lhs.time_since_epoch() < __rhs.time_since_epoch(); } 5209: 5209: template 5209: constexpr bool 5209: operator<=(const time_point<_Clock, _Dur1>& __lhs, 5209: const time_point<_Clock, _Dur2>& __rhs) 5209: { return !(__rhs < __lhs); } 5209: 5209: template 5209: constexpr bool 5209: operator>(const time_point<_Clock, _Dur1>& __lhs, 5209: const time_point<_Clock, _Dur2>& __rhs) 5209: { return __rhs < __lhs; } 5209: 5209: template 5209: constexpr bool 5209: operator>=(const time_point<_Clock, _Dur1>& __lhs, 5209: const time_point<_Clock, _Dur2>& __rhs) 5209: { return !(__lhs < __rhs); } 5209: # 878 "/usr/include/c++/10/chrono" 3 5209: inline namespace _V2 { 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: struct system_clock 5209: { 5209: typedef chrono::nanoseconds duration; 5209: typedef duration::rep rep; 5209: typedef duration::period period; 5209: typedef chrono::time_point time_point; 5209: 5209: static_assert(system_clock::duration::min() 5209: < system_clock::duration::zero(), 5209: "a clock's minimum duration cannot be less than its epoch"); 5209: 5209: static constexpr bool is_steady = false; 5209: 5209: static time_point 5209: now() noexcept; 5209: 5209: 5209: static std::time_t 5209: to_time_t(const time_point& __t) noexcept 5209: { 5209: return std::time_t(duration_cast 5209: (__t.time_since_epoch()).count()); 5209: } 5209: 5209: static time_point 5209: from_time_t(std::time_t __t) noexcept 5209: { 5209: typedef chrono::time_point __from; 5209: return time_point_cast 5209: (__from(chrono::seconds(__t))); 5209: } 5209: }; 5209: # 926 "/usr/include/c++/10/chrono" 3 5209: struct steady_clock 5209: { 5209: typedef chrono::nanoseconds duration; 5209: typedef duration::rep rep; 5209: typedef duration::period period; 5209: typedef chrono::time_point time_point; 5209: 5209: static constexpr bool is_steady = true; 5209: 5209: static time_point 5209: now() noexcept; 5209: }; 5209: # 948 "/usr/include/c++/10/chrono" 3 5209: using high_resolution_clock = system_clock; 5209: 5209: } 5209: 5209: } 5209: # 1076 "/usr/include/c++/10/chrono" 3 5209: 5209: } 5209: # 24 "/<>/test/../public/../internal/multi_thread_gemm.h" 2 5209: # 1 "/usr/include/c++/10/thread" 1 3 5209: # 32 "/usr/include/c++/10/thread" 3 5209: 5209: # 33 "/usr/include/c++/10/thread" 3 5209: # 44 "/usr/include/c++/10/thread" 3 5209: # 1 "/usr/include/c++/10/memory" 1 3 5209: # 47 "/usr/include/c++/10/memory" 3 5209: 5209: # 48 "/usr/include/c++/10/memory" 3 5209: # 68 "/usr/include/c++/10/memory" 3 5209: # 1 "/usr/include/c++/10/bits/stl_raw_storage_iter.h" 1 3 5209: # 59 "/usr/include/c++/10/bits/stl_raw_storage_iter.h" 3 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: class raw_storage_iterator 5209: : public iterator 5209: { 5209: protected: 5209: _OutputIterator _M_iter; 5209: 5209: public: 5209: explicit 5209: raw_storage_iterator(_OutputIterator __x) 5209: : _M_iter(__x) {} 5209: 5209: raw_storage_iterator& 5209: operator*() { return *this; } 5209: 5209: raw_storage_iterator& 5209: operator=(const _Tp& __element) 5209: { 5209: std::_Construct(std::__addressof(*_M_iter), __element); 5209: return *this; 5209: } 5209: 5209: 5209: 5209: 5209: raw_storage_iterator& 5209: operator=(_Tp&& __element) 5209: { 5209: std::_Construct(std::__addressof(*_M_iter), std::move(__element)); 5209: return *this; 5209: } 5209: 5209: 5209: raw_storage_iterator& 5209: operator++() 5209: { 5209: ++_M_iter; 5209: return *this; 5209: } 5209: 5209: raw_storage_iterator 5209: operator++(int) 5209: { 5209: raw_storage_iterator __tmp = *this; 5209: ++_M_iter; 5209: return __tmp; 5209: } 5209: 5209: 5209: 5209: _OutputIterator base() const { return _M_iter; } 5209: }; 5209: 5209: 5209: } 5209: # 69 "/usr/include/c++/10/memory" 2 3 5209: 5209: 5209: 5209: 5209: 5209: 5209: # 1 "/usr/include/c++/10/ext/concurrence.h" 1 3 5209: # 32 "/usr/include/c++/10/ext/concurrence.h" 3 5209: 5209: # 33 "/usr/include/c++/10/ext/concurrence.h" 3 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: enum _Lock_policy { _S_single, _S_mutex, _S_atomic }; 5209: 5209: 5209: 5209: static const _Lock_policy __default_lock_policy = 5209: 5209: 5209: 5209: _S_atomic; 5209: 5209: 5209: 5209: 5209: 5209: 5209: class __concurrence_lock_error : public std::exception 5209: { 5209: public: 5209: virtual char const* 5209: what() const throw() 5209: { return "__gnu_cxx::__concurrence_lock_error"; } 5209: }; 5209: 5209: class __concurrence_unlock_error : public std::exception 5209: { 5209: public: 5209: virtual char const* 5209: what() const throw() 5209: { return "__gnu_cxx::__concurrence_unlock_error"; } 5209: }; 5209: 5209: class __concurrence_broadcast_error : public std::exception 5209: { 5209: public: 5209: virtual char const* 5209: what() const throw() 5209: { return "__gnu_cxx::__concurrence_broadcast_error"; } 5209: }; 5209: 5209: class __concurrence_wait_error : public std::exception 5209: { 5209: public: 5209: virtual char const* 5209: what() const throw() 5209: { return "__gnu_cxx::__concurrence_wait_error"; } 5209: }; 5209: 5209: 5209: inline void 5209: __throw_concurrence_lock_error() 5209: { (throw (__concurrence_lock_error())); } 5209: 5209: inline void 5209: __throw_concurrence_unlock_error() 5209: { (throw (__concurrence_unlock_error())); } 5209: 5209: 5209: inline void 5209: __throw_concurrence_broadcast_error() 5209: { (throw (__concurrence_broadcast_error())); } 5209: 5209: inline void 5209: __throw_concurrence_wait_error() 5209: { (throw (__concurrence_wait_error())); } 5209: 5209: 5209: class __mutex 5209: { 5209: private: 5209: 5209: __gthread_mutex_t _M_mutex = { { 0, 0, 0, 0, 0, 0, { 0, 0 } } }; 5209: 5209: 5209: 5209: 5209: __mutex(const __mutex&); 5209: __mutex& operator=(const __mutex&); 5209: 5209: public: 5209: __mutex() 5209: { 5209: 5209: 5209: 5209: 5209: } 5209: # 144 "/usr/include/c++/10/ext/concurrence.h" 3 5209: void lock() 5209: { 5209: 5209: if (__gthread_active_p()) 5209: { 5209: if (__gthread_mutex_lock(&_M_mutex) != 0) 5209: __throw_concurrence_lock_error(); 5209: } 5209: 5209: } 5209: 5209: void unlock() 5209: { 5209: 5209: if (__gthread_active_p()) 5209: { 5209: if (__gthread_mutex_unlock(&_M_mutex) != 0) 5209: __throw_concurrence_unlock_error(); 5209: } 5209: 5209: } 5209: 5209: __gthread_mutex_t* gthread_mutex(void) 5209: { return &_M_mutex; } 5209: }; 5209: 5209: class __recursive_mutex 5209: { 5209: private: 5209: 5209: __gthread_recursive_mutex_t _M_mutex = { { 0, 0, 0, 0, PTHREAD_MUTEX_RECURSIVE_NP, 0, { 0, 0 } } }; 5209: 5209: 5209: 5209: 5209: __recursive_mutex(const __recursive_mutex&); 5209: __recursive_mutex& operator=(const __recursive_mutex&); 5209: 5209: public: 5209: __recursive_mutex() 5209: { 5209: 5209: 5209: 5209: 5209: } 5209: # 199 "/usr/include/c++/10/ext/concurrence.h" 3 5209: void lock() 5209: { 5209: 5209: if (__gthread_active_p()) 5209: { 5209: if (__gthread_recursive_mutex_lock(&_M_mutex) != 0) 5209: __throw_concurrence_lock_error(); 5209: } 5209: 5209: } 5209: 5209: void unlock() 5209: { 5209: 5209: if (__gthread_active_p()) 5209: { 5209: if (__gthread_recursive_mutex_unlock(&_M_mutex) != 0) 5209: __throw_concurrence_unlock_error(); 5209: } 5209: 5209: } 5209: 5209: __gthread_recursive_mutex_t* gthread_recursive_mutex(void) 5209: { return &_M_mutex; } 5209: }; 5209: 5209: 5209: 5209: 5209: class __scoped_lock 5209: { 5209: public: 5209: typedef __mutex __mutex_type; 5209: 5209: private: 5209: __mutex_type& _M_device; 5209: 5209: __scoped_lock(const __scoped_lock&); 5209: __scoped_lock& operator=(const __scoped_lock&); 5209: 5209: public: 5209: explicit __scoped_lock(__mutex_type& __name) : _M_device(__name) 5209: { _M_device.lock(); } 5209: 5209: ~__scoped_lock() throw() 5209: { _M_device.unlock(); } 5209: }; 5209: 5209: 5209: class __cond 5209: { 5209: private: 5209: 5209: __gthread_cond_t _M_cond = { { {0}, {0}, {0, 0}, {0, 0}, 0, 0, {0, 0} } }; 5209: 5209: 5209: 5209: 5209: __cond(const __cond&); 5209: __cond& operator=(const __cond&); 5209: 5209: public: 5209: __cond() 5209: { 5209: 5209: 5209: 5209: 5209: } 5209: # 277 "/usr/include/c++/10/ext/concurrence.h" 3 5209: void broadcast() 5209: { 5209: 5209: if (__gthread_active_p()) 5209: { 5209: if (__gthread_cond_broadcast(&_M_cond) != 0) 5209: __throw_concurrence_broadcast_error(); 5209: } 5209: 5209: } 5209: 5209: void wait(__mutex *mutex) 5209: { 5209: 5209: { 5209: if (__gthread_cond_wait(&_M_cond, mutex->gthread_mutex()) != 0) 5209: __throw_concurrence_wait_error(); 5209: } 5209: 5209: } 5209: 5209: void wait_recursive(__recursive_mutex *mutex) 5209: { 5209: 5209: { 5209: if (__gthread_cond_wait_recursive(&_M_cond, 5209: mutex->gthread_recursive_mutex()) 5209: != 0) 5209: __throw_concurrence_wait_error(); 5209: } 5209: 5209: } 5209: }; 5209: 5209: 5209: 5209: } 5209: # 76 "/usr/include/c++/10/memory" 2 3 5209: 5209: 5209: 5209: 5209: 5209: 5209: # 1 "/usr/include/c++/10/bits/unique_ptr.h" 1 3 5209: # 41 "/usr/include/c++/10/bits/unique_ptr.h" 3 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: #pragma GCC diagnostic push 5209: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 5209: template class auto_ptr; 5209: #pragma GCC diagnostic pop 5209: 5209: 5209: 5209: template 5209: struct default_delete 5209: { 5209: 5209: constexpr default_delete() noexcept = default; 5209: 5209: 5209: 5209: 5209: 5209: 5209: template>> 5209: default_delete(const default_delete<_Up>&) noexcept { } 5209: 5209: 5209: void 5209: operator()(_Tp* __ptr) const 5209: { 5209: static_assert(!is_void<_Tp>::value, 5209: "can't delete pointer to incomplete type"); 5209: static_assert(sizeof(_Tp)>0, 5209: "can't delete pointer to incomplete type"); 5209: delete __ptr; 5209: } 5209: }; 5209: 5209: 5209: 5209: 5209: 5209: template 5209: struct default_delete<_Tp[]> 5209: { 5209: public: 5209: 5209: constexpr default_delete() noexcept = default; 5209: # 105 "/usr/include/c++/10/bits/unique_ptr.h" 3 5209: template>> 5209: default_delete(const default_delete<_Up[]>&) noexcept { } 5209: 5209: 5209: template 5209: typename enable_if::value>::type 5209: operator()(_Up* __ptr) const 5209: { 5209: static_assert(sizeof(_Tp)>0, 5209: "can't delete pointer to incomplete type"); 5209: delete [] __ptr; 5209: } 5209: }; 5209: 5209: 5209: 5209: 5209: template 5209: class __uniq_ptr_impl 5209: { 5209: template 5209: struct _Ptr 5209: { 5209: using type = _Up*; 5209: }; 5209: 5209: template 5209: struct 5209: _Ptr<_Up, _Ep, __void_t::type::pointer>> 5209: { 5209: using type = typename remove_reference<_Ep>::type::pointer; 5209: }; 5209: 5209: public: 5209: using _DeleterConstraint = enable_if< 5209: __and_<__not_>, 5209: is_default_constructible<_Dp>>::value>; 5209: 5209: using pointer = typename _Ptr<_Tp, _Dp>::type; 5209: 5209: static_assert( !is_rvalue_reference<_Dp>::value, 5209: "unique_ptr's deleter type must be a function object type" 5209: " or an lvalue reference type" ); 5209: 5209: __uniq_ptr_impl() = default; 5209: __uniq_ptr_impl(pointer __p) : _M_t() { _M_ptr() = __p; } 5209: 5209: template 5209: __uniq_ptr_impl(pointer __p, _Del&& __d) 5209: : _M_t(__p, std::forward<_Del>(__d)) { } 5209: 5209: __uniq_ptr_impl(__uniq_ptr_impl&& __u) noexcept 5209: : _M_t(std::move(__u._M_t)) 5209: { __u._M_ptr() = nullptr; } 5209: 5209: __uniq_ptr_impl& operator=(__uniq_ptr_impl&& __u) noexcept 5209: { 5209: reset(__u.release()); 5209: _M_deleter() = std::forward<_Dp>(__u._M_deleter()); 5209: return *this; 5209: } 5209: 5209: pointer& _M_ptr() { return std::get<0>(_M_t); } 5209: pointer _M_ptr() const { return std::get<0>(_M_t); } 5209: _Dp& _M_deleter() { return std::get<1>(_M_t); } 5209: const _Dp& _M_deleter() const { return std::get<1>(_M_t); } 5209: 5209: void reset(pointer __p) noexcept 5209: { 5209: const pointer __old_p = _M_ptr(); 5209: _M_ptr() = __p; 5209: if (__old_p) 5209: _M_deleter()(__old_p); 5209: } 5209: 5209: pointer release() noexcept 5209: { 5209: pointer __p = _M_ptr(); 5209: _M_ptr() = nullptr; 5209: return __p; 5209: } 5209: 5209: private: 5209: tuple _M_t; 5209: }; 5209: 5209: 5209: template ::value, 5209: bool = is_move_assignable<_Dp>::value> 5209: struct __uniq_ptr_data : __uniq_ptr_impl<_Tp, _Dp> 5209: { 5209: using __uniq_ptr_impl<_Tp, _Dp>::__uniq_ptr_impl; 5209: __uniq_ptr_data(__uniq_ptr_data&&) = default; 5209: __uniq_ptr_data& operator=(__uniq_ptr_data&&) = default; 5209: }; 5209: 5209: template 5209: struct __uniq_ptr_data<_Tp, _Dp, true, false> : __uniq_ptr_impl<_Tp, _Dp> 5209: { 5209: using __uniq_ptr_impl<_Tp, _Dp>::__uniq_ptr_impl; 5209: __uniq_ptr_data(__uniq_ptr_data&&) = default; 5209: __uniq_ptr_data& operator=(__uniq_ptr_data&&) = delete; 5209: }; 5209: 5209: template 5209: struct __uniq_ptr_data<_Tp, _Dp, false, true> : __uniq_ptr_impl<_Tp, _Dp> 5209: { 5209: using __uniq_ptr_impl<_Tp, _Dp>::__uniq_ptr_impl; 5209: __uniq_ptr_data(__uniq_ptr_data&&) = delete; 5209: __uniq_ptr_data& operator=(__uniq_ptr_data&&) = default; 5209: }; 5209: 5209: template 5209: struct __uniq_ptr_data<_Tp, _Dp, false, false> : __uniq_ptr_impl<_Tp, _Dp> 5209: { 5209: using __uniq_ptr_impl<_Tp, _Dp>::__uniq_ptr_impl; 5209: __uniq_ptr_data(__uniq_ptr_data&&) = delete; 5209: __uniq_ptr_data& operator=(__uniq_ptr_data&&) = delete; 5209: }; 5209: 5209: 5209: 5209: template > 5209: class unique_ptr 5209: { 5209: template 5209: using _DeleterConstraint = 5209: typename __uniq_ptr_impl<_Tp, _Up>::_DeleterConstraint::type; 5209: 5209: __uniq_ptr_data<_Tp, _Dp> _M_t; 5209: 5209: public: 5209: using pointer = typename __uniq_ptr_impl<_Tp, _Dp>::pointer; 5209: using element_type = _Tp; 5209: using deleter_type = _Dp; 5209: 5209: private: 5209: 5209: 5209: template 5209: using __safe_conversion_up = __and_< 5209: is_convertible::pointer, pointer>, 5209: __not_> 5209: >; 5209: 5209: public: 5209: 5209: 5209: 5209: template> 5209: constexpr unique_ptr() noexcept 5209: : _M_t() 5209: { } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: template> 5209: explicit 5209: unique_ptr(pointer __p) noexcept 5209: : _M_t(__p) 5209: { } 5209: # 280 "/usr/include/c++/10/bits/unique_ptr.h" 3 5209: template>> 5209: unique_ptr(pointer __p, const deleter_type& __d) noexcept 5209: : _M_t(__p, __d) { } 5209: # 292 "/usr/include/c++/10/bits/unique_ptr.h" 3 5209: template>> 5209: unique_ptr(pointer __p, 5209: __enable_if_t::value, 5209: _Del&&> __d) noexcept 5209: : _M_t(__p, std::move(__d)) 5209: { } 5209: 5209: template::type> 5209: unique_ptr(pointer, 5209: __enable_if_t::value, 5209: _DelUnref&&>) = delete; 5209: 5209: 5209: template> 5209: constexpr unique_ptr(nullptr_t) noexcept 5209: : _M_t() 5209: { } 5209: 5209: 5209: 5209: 5209: unique_ptr(unique_ptr&&) = default; 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: template, 5209: typename conditional::value, 5209: is_same<_Ep, _Dp>, 5209: is_convertible<_Ep, _Dp>>::type>> 5209: unique_ptr(unique_ptr<_Up, _Ep>&& __u) noexcept 5209: : _M_t(__u.release(), std::forward<_Ep>(__u.get_deleter())) 5209: { } 5209: 5209: 5209: #pragma GCC diagnostic push 5209: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 5209: 5209: template, is_same<_Dp, default_delete<_Tp>>>> 5209: unique_ptr(auto_ptr<_Up>&& __u) noexcept; 5209: #pragma GCC diagnostic pop 5209: 5209: 5209: 5209: ~unique_ptr() noexcept 5209: { 5209: static_assert(__is_invocable::value, 5209: "unique_ptr's deleter must be invocable with a pointer"); 5209: auto& __ptr = _M_t._M_ptr(); 5209: if (__ptr != nullptr) 5209: get_deleter()(std::move(__ptr)); 5209: __ptr = pointer(); 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: unique_ptr& operator=(unique_ptr&&) = default; 5209: # 368 "/usr/include/c++/10/bits/unique_ptr.h" 3 5209: template 5209: typename enable_if< __and_< 5209: __safe_conversion_up<_Up, _Ep>, 5209: is_assignable 5209: >::value, 5209: unique_ptr&>::type 5209: operator=(unique_ptr<_Up, _Ep>&& __u) noexcept 5209: { 5209: reset(__u.release()); 5209: get_deleter() = std::forward<_Ep>(__u.get_deleter()); 5209: return *this; 5209: } 5209: 5209: 5209: unique_ptr& 5209: operator=(nullptr_t) noexcept 5209: { 5209: reset(); 5209: return *this; 5209: } 5209: 5209: 5209: 5209: 5209: typename add_lvalue_reference::type 5209: operator*() const 5209: { 5209: ; 5209: return *get(); 5209: } 5209: 5209: 5209: pointer 5209: operator->() const noexcept 5209: { 5209: ; 5209: return get(); 5209: } 5209: 5209: 5209: pointer 5209: get() const noexcept 5209: { return _M_t._M_ptr(); } 5209: 5209: 5209: deleter_type& 5209: get_deleter() noexcept 5209: { return _M_t._M_deleter(); } 5209: 5209: 5209: const deleter_type& 5209: get_deleter() const noexcept 5209: { return _M_t._M_deleter(); } 5209: 5209: 5209: explicit operator bool() const noexcept 5209: { return get() == pointer() ? false : true; } 5209: 5209: 5209: 5209: 5209: pointer 5209: release() noexcept 5209: { return _M_t.release(); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: void 5209: reset(pointer __p = pointer()) noexcept 5209: { 5209: static_assert(__is_invocable::value, 5209: "unique_ptr's deleter must be invocable with a pointer"); 5209: _M_t.reset(std::move(__p)); 5209: } 5209: 5209: 5209: void 5209: swap(unique_ptr& __u) noexcept 5209: { 5209: using std::swap; 5209: swap(_M_t, __u._M_t); 5209: } 5209: 5209: 5209: unique_ptr(const unique_ptr&) = delete; 5209: unique_ptr& operator=(const unique_ptr&) = delete; 5209: }; 5209: 5209: 5209: 5209: 5209: 5209: template 5209: class unique_ptr<_Tp[], _Dp> 5209: { 5209: template 5209: using _DeleterConstraint = 5209: typename __uniq_ptr_impl<_Tp, _Up>::_DeleterConstraint::type; 5209: 5209: __uniq_ptr_data<_Tp, _Dp> _M_t; 5209: 5209: template 5209: using __remove_cv = typename remove_cv<_Up>::type; 5209: 5209: 5209: template 5209: using __is_derived_Tp 5209: = __and_< is_base_of<_Tp, _Up>, 5209: __not_, __remove_cv<_Up>>> >; 5209: 5209: public: 5209: using pointer = typename __uniq_ptr_impl<_Tp, _Dp>::pointer; 5209: using element_type = _Tp; 5209: using deleter_type = _Dp; 5209: 5209: 5209: 5209: template, 5209: typename _UP_pointer = typename _UPtr::pointer, 5209: typename _UP_element_type = typename _UPtr::element_type> 5209: using __safe_conversion_up = __and_< 5209: is_array<_Up>, 5209: is_same, 5209: is_same<_UP_pointer, _UP_element_type*>, 5209: is_convertible<_UP_element_type(*)[], element_type(*)[]> 5209: >; 5209: 5209: 5209: template 5209: using __safe_conversion_raw = __and_< 5209: __or_<__or_, 5209: is_same<_Up, nullptr_t>>, 5209: __and_, 5209: is_same, 5209: is_convertible< 5209: typename remove_pointer<_Up>::type(*)[], 5209: element_type(*)[]> 5209: > 5209: > 5209: >; 5209: 5209: 5209: 5209: 5209: template> 5209: constexpr unique_ptr() noexcept 5209: : _M_t() 5209: { } 5209: # 529 "/usr/include/c++/10/bits/unique_ptr.h" 3 5209: template, 5209: typename = typename enable_if< 5209: __safe_conversion_raw<_Up>::value, bool>::type> 5209: explicit 5209: unique_ptr(_Up __p) noexcept 5209: : _M_t(__p) 5209: { } 5209: # 547 "/usr/include/c++/10/bits/unique_ptr.h" 3 5209: template, 5209: is_copy_constructible<_Del>>> 5209: unique_ptr(_Up __p, const deleter_type& __d) noexcept 5209: : _M_t(__p, __d) { } 5209: # 561 "/usr/include/c++/10/bits/unique_ptr.h" 3 5209: template, 5209: is_move_constructible<_Del>>> 5209: unique_ptr(_Up __p, 5209: __enable_if_t::value, 5209: _Del&&> __d) noexcept 5209: : _M_t(std::move(__p), std::move(__d)) 5209: { } 5209: 5209: template::type, 5209: typename = _Require<__safe_conversion_raw<_Up>>> 5209: unique_ptr(_Up, 5209: __enable_if_t::value, 5209: _DelUnref&&>) = delete; 5209: 5209: 5209: unique_ptr(unique_ptr&&) = default; 5209: 5209: 5209: template> 5209: constexpr unique_ptr(nullptr_t) noexcept 5209: : _M_t() 5209: { } 5209: 5209: template, 5209: typename conditional::value, 5209: is_same<_Ep, _Dp>, 5209: is_convertible<_Ep, _Dp>>::type>> 5209: unique_ptr(unique_ptr<_Up, _Ep>&& __u) noexcept 5209: : _M_t(__u.release(), std::forward<_Ep>(__u.get_deleter())) 5209: { } 5209: 5209: 5209: ~unique_ptr() 5209: { 5209: auto& __ptr = _M_t._M_ptr(); 5209: if (__ptr != nullptr) 5209: get_deleter()(__ptr); 5209: __ptr = pointer(); 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: unique_ptr& 5209: operator=(unique_ptr&&) = default; 5209: # 620 "/usr/include/c++/10/bits/unique_ptr.h" 3 5209: template 5209: typename 5209: enable_if<__and_<__safe_conversion_up<_Up, _Ep>, 5209: is_assignable 5209: >::value, 5209: unique_ptr&>::type 5209: operator=(unique_ptr<_Up, _Ep>&& __u) noexcept 5209: { 5209: reset(__u.release()); 5209: get_deleter() = std::forward<_Ep>(__u.get_deleter()); 5209: return *this; 5209: } 5209: 5209: 5209: unique_ptr& 5209: operator=(nullptr_t) noexcept 5209: { 5209: reset(); 5209: return *this; 5209: } 5209: 5209: 5209: 5209: 5209: typename std::add_lvalue_reference::type 5209: operator[](size_t __i) const 5209: { 5209: ; 5209: return get()[__i]; 5209: } 5209: 5209: 5209: pointer 5209: get() const noexcept 5209: { return _M_t._M_ptr(); } 5209: 5209: 5209: deleter_type& 5209: get_deleter() noexcept 5209: { return _M_t._M_deleter(); } 5209: 5209: 5209: const deleter_type& 5209: get_deleter() const noexcept 5209: { return _M_t._M_deleter(); } 5209: 5209: 5209: explicit operator bool() const noexcept 5209: { return get() == pointer() ? false : true; } 5209: 5209: 5209: 5209: 5209: pointer 5209: release() noexcept 5209: { return _M_t.release(); } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: template , 5209: __and_, 5209: is_pointer<_Up>, 5209: is_convertible< 5209: typename remove_pointer<_Up>::type(*)[], 5209: element_type(*)[] 5209: > 5209: > 5209: > 5209: >> 5209: void 5209: reset(_Up __p) noexcept 5209: { _M_t.reset(std::move(__p)); } 5209: 5209: void reset(nullptr_t = nullptr) noexcept 5209: { reset(pointer()); } 5209: 5209: 5209: void 5209: swap(unique_ptr& __u) noexcept 5209: { 5209: using std::swap; 5209: swap(_M_t, __u._M_t); 5209: } 5209: 5209: 5209: unique_ptr(const unique_ptr&) = delete; 5209: unique_ptr& operator=(const unique_ptr&) = delete; 5209: }; 5209: 5209: 5209: 5209: 5209: template 5209: inline 5209: 5209: 5209: typename enable_if<__is_swappable<_Dp>::value>::type 5209: 5209: 5209: 5209: swap(unique_ptr<_Tp, _Dp>& __x, 5209: unique_ptr<_Tp, _Dp>& __y) noexcept 5209: { __x.swap(__y); } 5209: 5209: 5209: template 5209: typename enable_if::value>::type 5209: swap(unique_ptr<_Tp, _Dp>&, 5209: unique_ptr<_Tp, _Dp>&) = delete; 5209: 5209: 5209: 5209: template 5209: inline bool 5209: operator==(const unique_ptr<_Tp, _Dp>& __x, 5209: const unique_ptr<_Up, _Ep>& __y) 5209: { return __x.get() == __y.get(); } 5209: 5209: 5209: template 5209: inline bool 5209: operator==(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) noexcept 5209: { return !__x; } 5209: 5209: 5209: template 5209: inline bool 5209: operator==(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) noexcept 5209: { return !__x; } 5209: 5209: 5209: template 5209: inline bool 5209: operator!=(const unique_ptr<_Tp, _Dp>& __x, 5209: const unique_ptr<_Up, _Ep>& __y) 5209: { return __x.get() != __y.get(); } 5209: 5209: 5209: template 5209: inline bool 5209: operator!=(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) noexcept 5209: { return (bool)__x; } 5209: 5209: 5209: template 5209: inline bool 5209: operator!=(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) noexcept 5209: { return (bool)__x; } 5209: 5209: 5209: template 5209: inline bool 5209: operator<(const unique_ptr<_Tp, _Dp>& __x, 5209: const unique_ptr<_Up, _Ep>& __y) 5209: { 5209: typedef typename 5209: std::common_type::pointer, 5209: typename unique_ptr<_Up, _Ep>::pointer>::type _CT; 5209: return std::less<_CT>()(__x.get(), __y.get()); 5209: } 5209: 5209: 5209: template 5209: inline bool 5209: operator<(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) 5209: { 5209: return std::less::pointer>()(__x.get(), 5209: nullptr); 5209: } 5209: 5209: 5209: template 5209: inline bool 5209: operator<(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) 5209: { 5209: return std::less::pointer>()(nullptr, 5209: __x.get()); 5209: } 5209: 5209: 5209: template 5209: inline bool 5209: operator<=(const unique_ptr<_Tp, _Dp>& __x, 5209: const unique_ptr<_Up, _Ep>& __y) 5209: { return !(__y < __x); } 5209: 5209: 5209: template 5209: inline bool 5209: operator<=(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) 5209: { return !(nullptr < __x); } 5209: 5209: 5209: template 5209: inline bool 5209: operator<=(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) 5209: { return !(__x < nullptr); } 5209: 5209: 5209: template 5209: inline bool 5209: operator>(const unique_ptr<_Tp, _Dp>& __x, 5209: const unique_ptr<_Up, _Ep>& __y) 5209: { return (__y < __x); } 5209: 5209: 5209: template 5209: inline bool 5209: operator>(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) 5209: { 5209: return std::less::pointer>()(nullptr, 5209: __x.get()); 5209: } 5209: 5209: 5209: template 5209: inline bool 5209: operator>(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) 5209: { 5209: return std::less::pointer>()(__x.get(), 5209: nullptr); 5209: } 5209: 5209: 5209: template 5209: inline bool 5209: operator>=(const unique_ptr<_Tp, _Dp>& __x, 5209: const unique_ptr<_Up, _Ep>& __y) 5209: { return !(__x < __y); } 5209: 5209: 5209: template 5209: inline bool 5209: operator>=(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) 5209: { return !(__x < nullptr); } 5209: 5209: 5209: template 5209: inline bool 5209: operator>=(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) 5209: { return !(nullptr < __x); } 5209: 5209: 5209: 5209: template::__enable_hash_call> 5209: struct __uniq_ptr_hash 5209: 5209: : private __poison_hash<_Ptr> 5209: 5209: { 5209: size_t 5209: operator()(const _Up& __u) const 5209: noexcept(noexcept(std::declval>()(std::declval<_Ptr>()))) 5209: { return hash<_Ptr>()(__u.get()); } 5209: }; 5209: 5209: template 5209: struct __uniq_ptr_hash<_Up, _Ptr, false> 5209: : private __poison_hash<_Ptr> 5209: { }; 5209: 5209: 5209: 5209: template 5209: struct hash> 5209: : public __hash_base>, 5209: public __uniq_ptr_hash> 5209: { }; 5209: # 957 "/usr/include/c++/10/bits/unique_ptr.h" 3 5209: 5209: } 5209: # 83 "/usr/include/c++/10/memory" 2 3 5209: # 1 "/usr/include/c++/10/bits/shared_ptr.h" 1 3 5209: # 52 "/usr/include/c++/10/bits/shared_ptr.h" 3 5209: # 1 "/usr/include/c++/10/bits/shared_ptr_base.h" 1 3 5209: # 53 "/usr/include/c++/10/bits/shared_ptr_base.h" 3 5209: # 1 "/usr/include/c++/10/bits/allocated_ptr.h" 1 3 5209: # 40 "/usr/include/c++/10/bits/allocated_ptr.h" 3 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: 5209: template 5209: struct __allocated_ptr 5209: { 5209: using pointer = typename allocator_traits<_Alloc>::pointer; 5209: using value_type = typename allocator_traits<_Alloc>::value_type; 5209: 5209: 5209: __allocated_ptr(_Alloc& __a, pointer __ptr) noexcept 5209: : _M_alloc(std::__addressof(__a)), _M_ptr(__ptr) 5209: { } 5209: 5209: 5209: template>> 5209: __allocated_ptr(_Alloc& __a, _Ptr __ptr) 5209: : _M_alloc(std::__addressof(__a)), 5209: _M_ptr(pointer_traits::pointer_to(*__ptr)) 5209: { } 5209: 5209: 5209: __allocated_ptr(__allocated_ptr&& __gd) noexcept 5209: : _M_alloc(__gd._M_alloc), _M_ptr(__gd._M_ptr) 5209: { __gd._M_ptr = nullptr; } 5209: 5209: 5209: ~__allocated_ptr() 5209: { 5209: if (_M_ptr != nullptr) 5209: std::allocator_traits<_Alloc>::deallocate(*_M_alloc, _M_ptr, 1); 5209: } 5209: 5209: 5209: __allocated_ptr& 5209: operator=(std::nullptr_t) noexcept 5209: { 5209: _M_ptr = nullptr; 5209: return *this; 5209: } 5209: 5209: 5209: value_type* get() { return std::__to_address(_M_ptr); } 5209: 5209: private: 5209: _Alloc* _M_alloc; 5209: pointer _M_ptr; 5209: }; 5209: 5209: 5209: template 5209: __allocated_ptr<_Alloc> 5209: __allocate_guarded(_Alloc& __a) 5209: { 5209: return { __a, std::allocator_traits<_Alloc>::allocate(__a, 1) }; 5209: } 5209: 5209: 5209: } 5209: # 54 "/usr/include/c++/10/bits/shared_ptr_base.h" 2 3 5209: # 1 "/usr/include/c++/10/bits/refwrap.h" 1 3 5209: # 33 "/usr/include/c++/10/bits/refwrap.h" 3 5209: 5209: # 34 "/usr/include/c++/10/bits/refwrap.h" 3 5209: # 43 "/usr/include/c++/10/bits/refwrap.h" 3 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: # 54 "/usr/include/c++/10/bits/refwrap.h" 3 5209: template 5209: struct _Maybe_unary_or_binary_function { }; 5209: 5209: 5209: template 5209: struct _Maybe_unary_or_binary_function<_Res, _T1> 5209: : std::unary_function<_T1, _Res> { }; 5209: 5209: 5209: template 5209: struct _Maybe_unary_or_binary_function<_Res, _T1, _T2> 5209: : std::binary_function<_T1, _T2, _Res> { }; 5209: 5209: template 5209: struct _Mem_fn_traits; 5209: 5209: template 5209: struct _Mem_fn_traits_base 5209: { 5209: using __result_type = _Res; 5209: using __maybe_type 5209: = _Maybe_unary_or_binary_function<_Res, _Class*, _ArgTypes...>; 5209: using __arity = integral_constant; 5209: }; 5209: # 99 "/usr/include/c++/10/bits/refwrap.h" 3 5209: template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) > : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) > : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const > : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const > : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) volatile > : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) volatile > : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const volatile > : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const volatile > : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = true_type; }; 5209: template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) &> : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) &> : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const &> : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const &> : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) volatile &> : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) volatile &> : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const volatile &> : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const volatile &> : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = true_type; }; 5209: template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) &&> : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) &&> : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const &&> : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const &&> : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) volatile &&> : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) volatile &&> : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const volatile &&> : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const volatile &&> : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = true_type; }; 5209: # 113 "/usr/include/c++/10/bits/refwrap.h" 3 5209: template> 5209: struct _Maybe_get_result_type 5209: { }; 5209: 5209: template 5209: struct _Maybe_get_result_type<_Functor, 5209: __void_t> 5209: { typedef typename _Functor::result_type result_type; }; 5209: 5209: 5209: 5209: 5209: 5209: template 5209: struct _Weak_result_type_impl 5209: : _Maybe_get_result_type<_Functor> 5209: { }; 5209: 5209: 5209: template 5209: struct _Weak_result_type_impl<_Res(_ArgTypes...) > 5209: { typedef _Res result_type; }; 5209: 5209: 5209: template 5209: struct _Weak_result_type_impl<_Res(_ArgTypes......) > 5209: { typedef _Res result_type; }; 5209: 5209: 5209: template 5209: struct _Weak_result_type_impl<_Res(*)(_ArgTypes...) > 5209: { typedef _Res result_type; }; 5209: 5209: 5209: template 5209: struct 5209: _Weak_result_type_impl<_Res(*)(_ArgTypes......) > 5209: { typedef _Res result_type; }; 5209: 5209: 5209: template::value> 5209: struct _Weak_result_type_memfun 5209: : _Weak_result_type_impl<_Functor> 5209: { }; 5209: 5209: 5209: template 5209: struct _Weak_result_type_memfun<_MemFunPtr, true> 5209: { 5209: using result_type = typename _Mem_fn_traits<_MemFunPtr>::__result_type; 5209: }; 5209: 5209: 5209: template 5209: struct _Weak_result_type_memfun<_Func _Class::*, false> 5209: { }; 5209: 5209: 5209: 5209: 5209: 5209: template 5209: struct _Weak_result_type 5209: : _Weak_result_type_memfun::type> 5209: { }; 5209: 5209: 5209: 5209: template> 5209: struct _Refwrap_base_arg1 5209: { }; 5209: 5209: 5209: template 5209: struct _Refwrap_base_arg1<_Tp, 5209: __void_t> 5209: { 5209: typedef typename _Tp::argument_type argument_type; 5209: }; 5209: 5209: 5209: template> 5209: struct _Refwrap_base_arg2 5209: { }; 5209: 5209: 5209: template 5209: struct _Refwrap_base_arg2<_Tp, 5209: __void_t> 5209: { 5209: typedef typename _Tp::first_argument_type first_argument_type; 5209: typedef typename _Tp::second_argument_type second_argument_type; 5209: }; 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: struct _Reference_wrapper_base 5209: : _Weak_result_type<_Tp>, _Refwrap_base_arg1<_Tp>, _Refwrap_base_arg2<_Tp> 5209: { }; 5209: 5209: 5209: template 5209: struct _Reference_wrapper_base<_Res(_T1) > 5209: : unary_function<_T1, _Res> 5209: { }; 5209: 5209: template 5209: struct _Reference_wrapper_base<_Res(_T1) const> 5209: : unary_function<_T1, _Res> 5209: { }; 5209: 5209: template 5209: struct _Reference_wrapper_base<_Res(_T1) volatile> 5209: : unary_function<_T1, _Res> 5209: { }; 5209: 5209: template 5209: struct _Reference_wrapper_base<_Res(_T1) const volatile> 5209: : unary_function<_T1, _Res> 5209: { }; 5209: 5209: 5209: template 5209: struct _Reference_wrapper_base<_Res(_T1, _T2) > 5209: : binary_function<_T1, _T2, _Res> 5209: { }; 5209: 5209: template 5209: struct _Reference_wrapper_base<_Res(_T1, _T2) const> 5209: : binary_function<_T1, _T2, _Res> 5209: { }; 5209: 5209: template 5209: struct _Reference_wrapper_base<_Res(_T1, _T2) volatile> 5209: : binary_function<_T1, _T2, _Res> 5209: { }; 5209: 5209: template 5209: struct _Reference_wrapper_base<_Res(_T1, _T2) const volatile> 5209: : binary_function<_T1, _T2, _Res> 5209: { }; 5209: 5209: 5209: template 5209: struct _Reference_wrapper_base<_Res(*)(_T1) > 5209: : unary_function<_T1, _Res> 5209: { }; 5209: 5209: 5209: template 5209: struct _Reference_wrapper_base<_Res(*)(_T1, _T2) > 5209: : binary_function<_T1, _T2, _Res> 5209: { }; 5209: 5209: template::value> 5209: struct _Reference_wrapper_base_memfun 5209: : _Reference_wrapper_base<_Tp> 5209: { }; 5209: 5209: template 5209: struct _Reference_wrapper_base_memfun<_MemFunPtr, true> 5209: : _Mem_fn_traits<_MemFunPtr>::__maybe_type 5209: { 5209: using result_type = typename _Mem_fn_traits<_MemFunPtr>::__result_type; 5209: }; 5209: # 293 "/usr/include/c++/10/bits/refwrap.h" 3 5209: template 5209: class reference_wrapper 5209: 5209: 5209: 5209: : public _Reference_wrapper_base_memfun::type> 5209: 5209: { 5209: _Tp* _M_data; 5209: 5209: 5209: static _Tp* _S_fun(_Tp& __r) noexcept { return std::__addressof(__r); } 5209: 5209: static void _S_fun(_Tp&&) = delete; 5209: 5209: template> 5209: using __not_same 5209: = typename enable_if::value>::type; 5209: 5209: public: 5209: typedef _Tp type; 5209: 5209: 5209: 5209: 5209: template, typename 5209: = decltype(reference_wrapper::_S_fun(std::declval<_Up>()))> 5209: 5209: reference_wrapper(_Up&& __uref) 5209: noexcept(noexcept(reference_wrapper::_S_fun(std::declval<_Up>()))) 5209: : _M_data(reference_wrapper::_S_fun(std::forward<_Up>(__uref))) 5209: { } 5209: 5209: reference_wrapper(const reference_wrapper&) = default; 5209: 5209: reference_wrapper& 5209: operator=(const reference_wrapper&) = default; 5209: 5209: 5209: operator _Tp&() const noexcept 5209: { return this->get(); } 5209: 5209: 5209: _Tp& 5209: get() const noexcept 5209: { return *_M_data; } 5209: 5209: template 5209: 5209: typename result_of<_Tp&(_Args&&...)>::type 5209: operator()(_Args&&... __args) const 5209: { 5209: 5209: 5209: 5209: return std::__invoke(get(), std::forward<_Args>(__args)...); 5209: } 5209: }; 5209: # 360 "/usr/include/c++/10/bits/refwrap.h" 3 5209: template 5209: 5209: inline reference_wrapper<_Tp> 5209: ref(_Tp& __t) noexcept 5209: { return reference_wrapper<_Tp>(__t); } 5209: 5209: 5209: template 5209: 5209: inline reference_wrapper 5209: cref(const _Tp& __t) noexcept 5209: { return reference_wrapper(__t); } 5209: 5209: template 5209: void ref(const _Tp&&) = delete; 5209: 5209: template 5209: void cref(const _Tp&&) = delete; 5209: 5209: 5209: template 5209: 5209: inline reference_wrapper<_Tp> 5209: ref(reference_wrapper<_Tp> __t) noexcept 5209: { return __t; } 5209: 5209: 5209: template 5209: 5209: inline reference_wrapper 5209: cref(reference_wrapper<_Tp> __t) noexcept 5209: { return { __t.get() }; } 5209: 5209: 5209: 5209: 5209: } 5209: # 55 "/usr/include/c++/10/bits/shared_ptr_base.h" 2 3 5209: 5209: # 1 "/usr/include/c++/10/ext/aligned_buffer.h" 1 3 5209: # 32 "/usr/include/c++/10/ext/aligned_buffer.h" 3 5209: 5209: # 33 "/usr/include/c++/10/ext/aligned_buffer.h" 3 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: namespace __gnu_cxx 5209: { 5209: 5209: 5209: 5209: 5209: template 5209: struct __aligned_membuf 5209: { 5209: 5209: 5209: 5209: 5209: 5209: struct _Tp2 { _Tp _M_t; }; 5209: 5209: alignas(__alignof__(_Tp2::_M_t)) unsigned char _M_storage[sizeof(_Tp)]; 5209: 5209: __aligned_membuf() = default; 5209: 5209: 5209: __aligned_membuf(std::nullptr_t) { } 5209: 5209: void* 5209: _M_addr() noexcept 5209: { return static_cast(&_M_storage); } 5209: 5209: const void* 5209: _M_addr() const noexcept 5209: { return static_cast(&_M_storage); } 5209: 5209: _Tp* 5209: _M_ptr() noexcept 5209: { return static_cast<_Tp*>(_M_addr()); } 5209: 5209: const _Tp* 5209: _M_ptr() const noexcept 5209: { return static_cast(_M_addr()); } 5209: }; 5209: # 89 "/usr/include/c++/10/ext/aligned_buffer.h" 3 5209: template 5209: struct __aligned_buffer 5209: : std::aligned_storage 5209: { 5209: typename 5209: std::aligned_storage::type _M_storage; 5209: 5209: __aligned_buffer() = default; 5209: 5209: 5209: __aligned_buffer(std::nullptr_t) { } 5209: 5209: void* 5209: _M_addr() noexcept 5209: { 5209: return static_cast(&_M_storage); 5209: } 5209: 5209: const void* 5209: _M_addr() const noexcept 5209: { 5209: return static_cast(&_M_storage); 5209: } 5209: 5209: _Tp* 5209: _M_ptr() noexcept 5209: { return static_cast<_Tp*>(_M_addr()); } 5209: 5209: const _Tp* 5209: _M_ptr() const noexcept 5209: { return static_cast(_M_addr()); } 5209: }; 5209: 5209: 5209: } 5209: # 57 "/usr/include/c++/10/bits/shared_ptr_base.h" 2 3 5209: 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: 5209: 5209: #pragma GCC diagnostic push 5209: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 5209: template class auto_ptr; 5209: #pragma GCC diagnostic pop 5209: 5209: 5209: 5209: 5209: 5209: 5209: class bad_weak_ptr : public std::exception 5209: { 5209: public: 5209: virtual char const* what() const noexcept; 5209: 5209: virtual ~bad_weak_ptr() noexcept; 5209: }; 5209: 5209: 5209: inline void 5209: __throw_bad_weak_ptr() 5209: { (throw (bad_weak_ptr())); } 5209: 5209: using __gnu_cxx::_Lock_policy; 5209: using __gnu_cxx::__default_lock_policy; 5209: using __gnu_cxx::_S_single; 5209: using __gnu_cxx::_S_mutex; 5209: using __gnu_cxx::_S_atomic; 5209: 5209: 5209: template<_Lock_policy _Lp> 5209: class _Mutex_base 5209: { 5209: protected: 5209: 5209: enum { _S_need_barriers = 0 }; 5209: }; 5209: 5209: template<> 5209: class _Mutex_base<_S_mutex> 5209: : public __gnu_cxx::__mutex 5209: { 5209: protected: 5209: 5209: 5209: 5209: enum { _S_need_barriers = 1 }; 5209: }; 5209: 5209: template<_Lock_policy _Lp = __default_lock_policy> 5209: class _Sp_counted_base 5209: : public _Mutex_base<_Lp> 5209: { 5209: public: 5209: _Sp_counted_base() noexcept 5209: : _M_use_count(1), _M_weak_count(1) { } 5209: 5209: virtual 5209: ~_Sp_counted_base() noexcept 5209: { } 5209: 5209: 5209: 5209: virtual void 5209: _M_dispose() noexcept = 0; 5209: 5209: 5209: virtual void 5209: _M_destroy() noexcept 5209: { delete this; } 5209: 5209: virtual void* 5209: _M_get_deleter(const std::type_info&) noexcept = 0; 5209: 5209: void 5209: _M_add_ref_copy() 5209: { __gnu_cxx::__atomic_add_dispatch(&_M_use_count, 1); } 5209: 5209: void 5209: _M_add_ref_lock(); 5209: 5209: bool 5209: _M_add_ref_lock_nothrow(); 5209: 5209: void 5209: _M_release() noexcept 5209: { 5209: 5209: ; 5209: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_use_count, -1) == 1) 5209: { 5209: ; 5209: _M_dispose(); 5209: 5209: 5209: 5209: 5209: if (_Mutex_base<_Lp>::_S_need_barriers) 5209: { 5209: __atomic_thread_fence (4); 5209: } 5209: 5209: 5209: ; 5209: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_weak_count, 5209: -1) == 1) 5209: { 5209: ; 5209: _M_destroy(); 5209: } 5209: } 5209: } 5209: 5209: void 5209: _M_weak_add_ref() noexcept 5209: { __gnu_cxx::__atomic_add_dispatch(&_M_weak_count, 1); } 5209: 5209: void 5209: _M_weak_release() noexcept 5209: { 5209: 5209: ; 5209: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_weak_count, -1) == 1) 5209: { 5209: ; 5209: if (_Mutex_base<_Lp>::_S_need_barriers) 5209: { 5209: 5209: 5209: __atomic_thread_fence (4); 5209: } 5209: _M_destroy(); 5209: } 5209: } 5209: 5209: long 5209: _M_get_use_count() const noexcept 5209: { 5209: 5209: 5209: return __atomic_load_n(&_M_use_count, 0); 5209: } 5209: 5209: private: 5209: _Sp_counted_base(_Sp_counted_base const&) = delete; 5209: _Sp_counted_base& operator=(_Sp_counted_base const&) = delete; 5209: 5209: _Atomic_word _M_use_count; 5209: _Atomic_word _M_weak_count; 5209: }; 5209: 5209: template<> 5209: inline void 5209: _Sp_counted_base<_S_single>:: 5209: _M_add_ref_lock() 5209: { 5209: if (_M_use_count == 0) 5209: __throw_bad_weak_ptr(); 5209: ++_M_use_count; 5209: } 5209: 5209: template<> 5209: inline void 5209: _Sp_counted_base<_S_mutex>:: 5209: _M_add_ref_lock() 5209: { 5209: __gnu_cxx::__scoped_lock sentry(*this); 5209: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_use_count, 1) == 0) 5209: { 5209: _M_use_count = 0; 5209: __throw_bad_weak_ptr(); 5209: } 5209: } 5209: 5209: template<> 5209: inline void 5209: _Sp_counted_base<_S_atomic>:: 5209: _M_add_ref_lock() 5209: { 5209: 5209: _Atomic_word __count = _M_get_use_count(); 5209: do 5209: { 5209: if (__count == 0) 5209: __throw_bad_weak_ptr(); 5209: 5209: 5209: } 5209: while (!__atomic_compare_exchange_n(&_M_use_count, &__count, __count + 1, 5209: true, 4, 5209: 0)); 5209: } 5209: 5209: template<> 5209: inline bool 5209: _Sp_counted_base<_S_single>:: 5209: _M_add_ref_lock_nothrow() 5209: { 5209: if (_M_use_count == 0) 5209: return false; 5209: ++_M_use_count; 5209: return true; 5209: } 5209: 5209: template<> 5209: inline bool 5209: _Sp_counted_base<_S_mutex>:: 5209: _M_add_ref_lock_nothrow() 5209: { 5209: __gnu_cxx::__scoped_lock sentry(*this); 5209: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_use_count, 1) == 0) 5209: { 5209: _M_use_count = 0; 5209: return false; 5209: } 5209: return true; 5209: } 5209: 5209: template<> 5209: inline bool 5209: _Sp_counted_base<_S_atomic>:: 5209: _M_add_ref_lock_nothrow() 5209: { 5209: 5209: _Atomic_word __count = _M_get_use_count(); 5209: do 5209: { 5209: if (__count == 0) 5209: return false; 5209: 5209: 5209: } 5209: while (!__atomic_compare_exchange_n(&_M_use_count, &__count, __count + 1, 5209: true, 4, 5209: 0)); 5209: return true; 5209: } 5209: 5209: template<> 5209: inline void 5209: _Sp_counted_base<_S_single>::_M_add_ref_copy() 5209: { ++_M_use_count; } 5209: 5209: template<> 5209: inline void 5209: _Sp_counted_base<_S_single>::_M_release() noexcept 5209: { 5209: if (--_M_use_count == 0) 5209: { 5209: _M_dispose(); 5209: if (--_M_weak_count == 0) 5209: _M_destroy(); 5209: } 5209: } 5209: 5209: template<> 5209: inline void 5209: _Sp_counted_base<_S_single>::_M_weak_add_ref() noexcept 5209: { ++_M_weak_count; } 5209: 5209: template<> 5209: inline void 5209: _Sp_counted_base<_S_single>::_M_weak_release() noexcept 5209: { 5209: if (--_M_weak_count == 0) 5209: _M_destroy(); 5209: } 5209: 5209: template<> 5209: inline long 5209: _Sp_counted_base<_S_single>::_M_get_use_count() const noexcept 5209: { return _M_use_count; } 5209: 5209: 5209: 5209: template 5209: class __shared_ptr; 5209: 5209: template 5209: class __weak_ptr; 5209: 5209: template 5209: class __enable_shared_from_this; 5209: 5209: template 5209: class shared_ptr; 5209: 5209: template 5209: class weak_ptr; 5209: 5209: template 5209: struct owner_less; 5209: 5209: template 5209: class enable_shared_from_this; 5209: 5209: template<_Lock_policy _Lp = __default_lock_policy> 5209: class __weak_count; 5209: 5209: template<_Lock_policy _Lp = __default_lock_policy> 5209: class __shared_count; 5209: 5209: 5209: 5209: template 5209: class _Sp_counted_ptr final : public _Sp_counted_base<_Lp> 5209: { 5209: public: 5209: explicit 5209: _Sp_counted_ptr(_Ptr __p) noexcept 5209: : _M_ptr(__p) { } 5209: 5209: virtual void 5209: _M_dispose() noexcept 5209: { delete _M_ptr; } 5209: 5209: virtual void 5209: _M_destroy() noexcept 5209: { delete this; } 5209: 5209: virtual void* 5209: _M_get_deleter(const std::type_info&) noexcept 5209: { return nullptr; } 5209: 5209: _Sp_counted_ptr(const _Sp_counted_ptr&) = delete; 5209: _Sp_counted_ptr& operator=(const _Sp_counted_ptr&) = delete; 5209: 5209: private: 5209: _Ptr _M_ptr; 5209: }; 5209: 5209: template<> 5209: inline void 5209: _Sp_counted_ptr::_M_dispose() noexcept { } 5209: 5209: template<> 5209: inline void 5209: _Sp_counted_ptr::_M_dispose() noexcept { } 5209: 5209: template<> 5209: inline void 5209: _Sp_counted_ptr::_M_dispose() noexcept { } 5209: 5209: template 5209: struct _Sp_ebo_helper; 5209: 5209: 5209: template 5209: struct _Sp_ebo_helper<_Nm, _Tp, true> : private _Tp 5209: { 5209: explicit _Sp_ebo_helper(const _Tp& __tp) : _Tp(__tp) { } 5209: explicit _Sp_ebo_helper(_Tp&& __tp) : _Tp(std::move(__tp)) { } 5209: 5209: static _Tp& 5209: _S_get(_Sp_ebo_helper& __eboh) { return static_cast<_Tp&>(__eboh); } 5209: }; 5209: 5209: 5209: template 5209: struct _Sp_ebo_helper<_Nm, _Tp, false> 5209: { 5209: explicit _Sp_ebo_helper(const _Tp& __tp) : _M_tp(__tp) { } 5209: explicit _Sp_ebo_helper(_Tp&& __tp) : _M_tp(std::move(__tp)) { } 5209: 5209: static _Tp& 5209: _S_get(_Sp_ebo_helper& __eboh) 5209: { return __eboh._M_tp; } 5209: 5209: private: 5209: _Tp _M_tp; 5209: }; 5209: 5209: 5209: template 5209: class _Sp_counted_deleter final : public _Sp_counted_base<_Lp> 5209: { 5209: class _Impl : _Sp_ebo_helper<0, _Deleter>, _Sp_ebo_helper<1, _Alloc> 5209: { 5209: typedef _Sp_ebo_helper<0, _Deleter> _Del_base; 5209: typedef _Sp_ebo_helper<1, _Alloc> _Alloc_base; 5209: 5209: public: 5209: _Impl(_Ptr __p, _Deleter __d, const _Alloc& __a) noexcept 5209: : _M_ptr(__p), _Del_base(std::move(__d)), _Alloc_base(__a) 5209: { } 5209: 5209: _Deleter& _M_del() noexcept { return _Del_base::_S_get(*this); } 5209: _Alloc& _M_alloc() noexcept { return _Alloc_base::_S_get(*this); } 5209: 5209: _Ptr _M_ptr; 5209: }; 5209: 5209: public: 5209: using __allocator_type = __alloc_rebind<_Alloc, _Sp_counted_deleter>; 5209: 5209: 5209: _Sp_counted_deleter(_Ptr __p, _Deleter __d) noexcept 5209: : _M_impl(__p, std::move(__d), _Alloc()) { } 5209: 5209: 5209: _Sp_counted_deleter(_Ptr __p, _Deleter __d, const _Alloc& __a) noexcept 5209: : _M_impl(__p, std::move(__d), __a) { } 5209: 5209: ~_Sp_counted_deleter() noexcept { } 5209: 5209: virtual void 5209: _M_dispose() noexcept 5209: { _M_impl._M_del()(_M_impl._M_ptr); } 5209: 5209: virtual void 5209: _M_destroy() noexcept 5209: { 5209: __allocator_type __a(_M_impl._M_alloc()); 5209: __allocated_ptr<__allocator_type> __guard_ptr{ __a, this }; 5209: this->~_Sp_counted_deleter(); 5209: } 5209: 5209: virtual void* 5209: _M_get_deleter(const std::type_info& __ti) noexcept 5209: { 5209: 5209: 5209: 5209: return __ti == typeid(_Deleter) 5209: ? std::__addressof(_M_impl._M_del()) 5209: : nullptr; 5209: 5209: 5209: 5209: } 5209: 5209: private: 5209: _Impl _M_impl; 5209: }; 5209: 5209: 5209: 5209: struct _Sp_make_shared_tag 5209: { 5209: private: 5209: template 5209: friend class _Sp_counted_ptr_inplace; 5209: 5209: static const type_info& 5209: _S_ti() noexcept __attribute__ ((__visibility__ ("default"))) 5209: { 5209: alignas(type_info) static constexpr char __tag[sizeof(type_info)] = { }; 5209: return reinterpret_cast(__tag); 5209: } 5209: 5209: static bool _S_eq(const type_info&) noexcept; 5209: }; 5209: 5209: template 5209: struct _Sp_alloc_shared_tag 5209: { 5209: const _Alloc& _M_a; 5209: }; 5209: 5209: template 5209: class _Sp_counted_ptr_inplace final : public _Sp_counted_base<_Lp> 5209: { 5209: class _Impl : _Sp_ebo_helper<0, _Alloc> 5209: { 5209: typedef _Sp_ebo_helper<0, _Alloc> _A_base; 5209: 5209: public: 5209: explicit _Impl(_Alloc __a) noexcept : _A_base(__a) { } 5209: 5209: _Alloc& _M_alloc() noexcept { return _A_base::_S_get(*this); } 5209: 5209: __gnu_cxx::__aligned_buffer<_Tp> _M_storage; 5209: }; 5209: 5209: public: 5209: using __allocator_type = __alloc_rebind<_Alloc, _Sp_counted_ptr_inplace>; 5209: 5209: 5209: template 5209: _Sp_counted_ptr_inplace(_Alloc __a, _Args&&... __args) 5209: : _M_impl(__a) 5209: { 5209: 5209: 5209: allocator_traits<_Alloc>::construct(__a, _M_ptr(), 5209: std::forward<_Args>(__args)...); 5209: } 5209: 5209: ~_Sp_counted_ptr_inplace() noexcept { } 5209: 5209: virtual void 5209: _M_dispose() noexcept 5209: { 5209: allocator_traits<_Alloc>::destroy(_M_impl._M_alloc(), _M_ptr()); 5209: } 5209: 5209: 5209: virtual void 5209: _M_destroy() noexcept 5209: { 5209: __allocator_type __a(_M_impl._M_alloc()); 5209: __allocated_ptr<__allocator_type> __guard_ptr{ __a, this }; 5209: this->~_Sp_counted_ptr_inplace(); 5209: } 5209: 5209: private: 5209: friend class __shared_count<_Lp>; 5209: 5209: 5209: 5209: virtual void* 5209: _M_get_deleter(const std::type_info& __ti) noexcept override 5209: { 5209: auto __ptr = const_cast::type*>(_M_ptr()); 5209: 5209: 5209: 5209: 5209: if (&__ti == &_Sp_make_shared_tag::_S_ti() 5209: || 5209: 5209: __ti == typeid(_Sp_make_shared_tag) 5209: 5209: 5209: 5209: ) 5209: return __ptr; 5209: return nullptr; 5209: } 5209: 5209: _Tp* _M_ptr() noexcept { return _M_impl._M_storage._M_ptr(); } 5209: 5209: _Impl _M_impl; 5209: }; 5209: 5209: 5209: struct __sp_array_delete 5209: { 5209: template 5209: void operator()(_Yp* __p) const { delete[] __p; } 5209: }; 5209: 5209: template<_Lock_policy _Lp> 5209: class __shared_count 5209: { 5209: template 5209: struct __not_alloc_shared_tag { using type = void; }; 5209: 5209: template 5209: struct __not_alloc_shared_tag<_Sp_alloc_shared_tag<_Tp>> { }; 5209: 5209: public: 5209: constexpr __shared_count() noexcept : _M_pi(0) 5209: { } 5209: 5209: template 5209: explicit 5209: __shared_count(_Ptr __p) : _M_pi(0) 5209: { 5209: try 5209: { 5209: _M_pi = new _Sp_counted_ptr<_Ptr, _Lp>(__p); 5209: } 5209: catch(...) 5209: { 5209: delete __p; 5209: throw; 5209: } 5209: } 5209: 5209: template 5209: __shared_count(_Ptr __p, false_type) 5209: : __shared_count(__p) 5209: { } 5209: 5209: template 5209: __shared_count(_Ptr __p, true_type) 5209: : __shared_count(__p, __sp_array_delete{}, allocator()) 5209: { } 5209: 5209: template::type> 5209: __shared_count(_Ptr __p, _Deleter __d) 5209: : __shared_count(__p, std::move(__d), allocator()) 5209: { } 5209: 5209: template::type> 5209: __shared_count(_Ptr __p, _Deleter __d, _Alloc __a) : _M_pi(0) 5209: { 5209: typedef _Sp_counted_deleter<_Ptr, _Deleter, _Alloc, _Lp> _Sp_cd_type; 5209: try 5209: { 5209: typename _Sp_cd_type::__allocator_type __a2(__a); 5209: auto __guard = std::__allocate_guarded(__a2); 5209: _Sp_cd_type* __mem = __guard.get(); 5209: ::new (__mem) _Sp_cd_type(__p, std::move(__d), std::move(__a)); 5209: _M_pi = __mem; 5209: __guard = nullptr; 5209: } 5209: catch(...) 5209: { 5209: __d(__p); 5209: throw; 5209: } 5209: } 5209: 5209: template 5209: __shared_count(_Tp*& __p, _Sp_alloc_shared_tag<_Alloc> __a, 5209: _Args&&... __args) 5209: { 5209: typedef _Sp_counted_ptr_inplace<_Tp, _Alloc, _Lp> _Sp_cp_type; 5209: typename _Sp_cp_type::__allocator_type __a2(__a._M_a); 5209: auto __guard = std::__allocate_guarded(__a2); 5209: _Sp_cp_type* __mem = __guard.get(); 5209: auto __pi = ::new (__mem) 5209: _Sp_cp_type(__a._M_a, std::forward<_Args>(__args)...); 5209: __guard = nullptr; 5209: _M_pi = __pi; 5209: __p = __pi->_M_ptr(); 5209: } 5209: 5209: 5209: #pragma GCC diagnostic push 5209: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 5209: 5209: template 5209: explicit 5209: __shared_count(std::auto_ptr<_Tp>&& __r); 5209: #pragma GCC diagnostic pop 5209: 5209: 5209: 5209: template 5209: explicit 5209: __shared_count(std::unique_ptr<_Tp, _Del>&& __r) : _M_pi(0) 5209: { 5209: 5209: 5209: if (__r.get() == nullptr) 5209: return; 5209: 5209: using _Ptr = typename unique_ptr<_Tp, _Del>::pointer; 5209: using _Del2 = typename conditional::value, 5209: reference_wrapper::type>, 5209: _Del>::type; 5209: using _Sp_cd_type 5209: = _Sp_counted_deleter<_Ptr, _Del2, allocator, _Lp>; 5209: using _Alloc = allocator<_Sp_cd_type>; 5209: using _Alloc_traits = allocator_traits<_Alloc>; 5209: _Alloc __a; 5209: _Sp_cd_type* __mem = _Alloc_traits::allocate(__a, 1); 5209: _Alloc_traits::construct(__a, __mem, __r.release(), 5209: __r.get_deleter()); 5209: _M_pi = __mem; 5209: } 5209: 5209: 5209: explicit __shared_count(const __weak_count<_Lp>& __r); 5209: 5209: 5209: explicit __shared_count(const __weak_count<_Lp>& __r, std::nothrow_t); 5209: 5209: ~__shared_count() noexcept 5209: { 5209: if (_M_pi != nullptr) 5209: _M_pi->_M_release(); 5209: } 5209: 5209: __shared_count(const __shared_count& __r) noexcept 5209: : _M_pi(__r._M_pi) 5209: { 5209: if (_M_pi != 0) 5209: _M_pi->_M_add_ref_copy(); 5209: } 5209: 5209: __shared_count& 5209: operator=(const __shared_count& __r) noexcept 5209: { 5209: _Sp_counted_base<_Lp>* __tmp = __r._M_pi; 5209: if (__tmp != _M_pi) 5209: { 5209: if (__tmp != 0) 5209: __tmp->_M_add_ref_copy(); 5209: if (_M_pi != 0) 5209: _M_pi->_M_release(); 5209: _M_pi = __tmp; 5209: } 5209: return *this; 5209: } 5209: 5209: void 5209: _M_swap(__shared_count& __r) noexcept 5209: { 5209: _Sp_counted_base<_Lp>* __tmp = __r._M_pi; 5209: __r._M_pi = _M_pi; 5209: _M_pi = __tmp; 5209: } 5209: 5209: long 5209: _M_get_use_count() const noexcept 5209: { return _M_pi != 0 ? _M_pi->_M_get_use_count() : 0; } 5209: 5209: bool 5209: _M_unique() const noexcept 5209: { return this->_M_get_use_count() == 1; } 5209: 5209: void* 5209: _M_get_deleter(const std::type_info& __ti) const noexcept 5209: { return _M_pi ? _M_pi->_M_get_deleter(__ti) : nullptr; } 5209: 5209: bool 5209: _M_less(const __shared_count& __rhs) const noexcept 5209: { return std::less<_Sp_counted_base<_Lp>*>()(this->_M_pi, __rhs._M_pi); } 5209: 5209: bool 5209: _M_less(const __weak_count<_Lp>& __rhs) const noexcept 5209: { return std::less<_Sp_counted_base<_Lp>*>()(this->_M_pi, __rhs._M_pi); } 5209: 5209: 5209: friend inline bool 5209: operator==(const __shared_count& __a, const __shared_count& __b) noexcept 5209: { return __a._M_pi == __b._M_pi; } 5209: 5209: private: 5209: friend class __weak_count<_Lp>; 5209: 5209: _Sp_counted_base<_Lp>* _M_pi; 5209: }; 5209: 5209: 5209: template<_Lock_policy _Lp> 5209: class __weak_count 5209: { 5209: public: 5209: constexpr __weak_count() noexcept : _M_pi(nullptr) 5209: { } 5209: 5209: __weak_count(const __shared_count<_Lp>& __r) noexcept 5209: : _M_pi(__r._M_pi) 5209: { 5209: if (_M_pi != nullptr) 5209: _M_pi->_M_weak_add_ref(); 5209: } 5209: 5209: __weak_count(const __weak_count& __r) noexcept 5209: : _M_pi(__r._M_pi) 5209: { 5209: if (_M_pi != nullptr) 5209: _M_pi->_M_weak_add_ref(); 5209: } 5209: 5209: __weak_count(__weak_count&& __r) noexcept 5209: : _M_pi(__r._M_pi) 5209: { __r._M_pi = nullptr; } 5209: 5209: ~__weak_count() noexcept 5209: { 5209: if (_M_pi != nullptr) 5209: _M_pi->_M_weak_release(); 5209: } 5209: 5209: __weak_count& 5209: operator=(const __shared_count<_Lp>& __r) noexcept 5209: { 5209: _Sp_counted_base<_Lp>* __tmp = __r._M_pi; 5209: if (__tmp != nullptr) 5209: __tmp->_M_weak_add_ref(); 5209: if (_M_pi != nullptr) 5209: _M_pi->_M_weak_release(); 5209: _M_pi = __tmp; 5209: return *this; 5209: } 5209: 5209: __weak_count& 5209: operator=(const __weak_count& __r) noexcept 5209: { 5209: _Sp_counted_base<_Lp>* __tmp = __r._M_pi; 5209: if (__tmp != nullptr) 5209: __tmp->_M_weak_add_ref(); 5209: if (_M_pi != nullptr) 5209: _M_pi->_M_weak_release(); 5209: _M_pi = __tmp; 5209: return *this; 5209: } 5209: 5209: __weak_count& 5209: operator=(__weak_count&& __r) noexcept 5209: { 5209: if (_M_pi != nullptr) 5209: _M_pi->_M_weak_release(); 5209: _M_pi = __r._M_pi; 5209: __r._M_pi = nullptr; 5209: return *this; 5209: } 5209: 5209: void 5209: _M_swap(__weak_count& __r) noexcept 5209: { 5209: _Sp_counted_base<_Lp>* __tmp = __r._M_pi; 5209: __r._M_pi = _M_pi; 5209: _M_pi = __tmp; 5209: } 5209: 5209: long 5209: _M_get_use_count() const noexcept 5209: { return _M_pi != nullptr ? _M_pi->_M_get_use_count() : 0; } 5209: 5209: bool 5209: _M_less(const __weak_count& __rhs) const noexcept 5209: { return std::less<_Sp_counted_base<_Lp>*>()(this->_M_pi, __rhs._M_pi); } 5209: 5209: bool 5209: _M_less(const __shared_count<_Lp>& __rhs) const noexcept 5209: { return std::less<_Sp_counted_base<_Lp>*>()(this->_M_pi, __rhs._M_pi); } 5209: 5209: 5209: friend inline bool 5209: operator==(const __weak_count& __a, const __weak_count& __b) noexcept 5209: { return __a._M_pi == __b._M_pi; } 5209: 5209: private: 5209: friend class __shared_count<_Lp>; 5209: 5209: _Sp_counted_base<_Lp>* _M_pi; 5209: }; 5209: 5209: 5209: template<_Lock_policy _Lp> 5209: inline 5209: __shared_count<_Lp>::__shared_count(const __weak_count<_Lp>& __r) 5209: : _M_pi(__r._M_pi) 5209: { 5209: if (_M_pi != nullptr) 5209: _M_pi->_M_add_ref_lock(); 5209: else 5209: __throw_bad_weak_ptr(); 5209: } 5209: 5209: 5209: template<_Lock_policy _Lp> 5209: inline 5209: __shared_count<_Lp>:: 5209: __shared_count(const __weak_count<_Lp>& __r, std::nothrow_t) 5209: : _M_pi(__r._M_pi) 5209: { 5209: if (_M_pi != nullptr) 5209: if (!_M_pi->_M_add_ref_lock_nothrow()) 5209: _M_pi = nullptr; 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: struct __sp_compatible_with 5209: : false_type 5209: { }; 5209: 5209: template 5209: struct __sp_compatible_with<_Yp*, _Tp*> 5209: : is_convertible<_Yp*, _Tp*>::type 5209: { }; 5209: 5209: template 5209: struct __sp_compatible_with<_Up(*)[_Nm], _Up(*)[]> 5209: : true_type 5209: { }; 5209: 5209: template 5209: struct __sp_compatible_with<_Up(*)[_Nm], const _Up(*)[]> 5209: : true_type 5209: { }; 5209: 5209: template 5209: struct __sp_compatible_with<_Up(*)[_Nm], volatile _Up(*)[]> 5209: : true_type 5209: { }; 5209: 5209: template 5209: struct __sp_compatible_with<_Up(*)[_Nm], const volatile _Up(*)[]> 5209: : true_type 5209: { }; 5209: 5209: 5209: template 5209: struct __sp_is_constructible_arrN 5209: : false_type 5209: { }; 5209: 5209: template 5209: struct __sp_is_constructible_arrN<_Up, _Nm, _Yp, __void_t<_Yp[_Nm]>> 5209: : is_convertible<_Yp(*)[_Nm], _Up(*)[_Nm]>::type 5209: { }; 5209: 5209: 5209: template 5209: struct __sp_is_constructible_arr 5209: : false_type 5209: { }; 5209: 5209: template 5209: struct __sp_is_constructible_arr<_Up, _Yp, __void_t<_Yp[]>> 5209: : is_convertible<_Yp(*)[], _Up(*)[]>::type 5209: { }; 5209: 5209: 5209: template 5209: struct __sp_is_constructible; 5209: 5209: 5209: template 5209: struct __sp_is_constructible<_Up[_Nm], _Yp> 5209: : __sp_is_constructible_arrN<_Up, _Nm, _Yp>::type 5209: { }; 5209: 5209: 5209: template 5209: struct __sp_is_constructible<_Up[], _Yp> 5209: : __sp_is_constructible_arr<_Up, _Yp>::type 5209: { }; 5209: 5209: 5209: template 5209: struct __sp_is_constructible 5209: : is_convertible<_Yp*, _Tp*>::type 5209: { }; 5209: 5209: 5209: 5209: template::value, bool = is_void<_Tp>::value> 5209: class __shared_ptr_access 5209: { 5209: public: 5209: using element_type = _Tp; 5209: 5209: element_type& 5209: operator*() const noexcept 5209: { 5209: ; 5209: return *_M_get(); 5209: } 5209: 5209: element_type* 5209: operator->() const noexcept 5209: { 5209: ; 5209: return _M_get(); 5209: } 5209: 5209: private: 5209: element_type* 5209: _M_get() const noexcept 5209: { return static_cast*>(this)->get(); } 5209: }; 5209: 5209: 5209: template 5209: class __shared_ptr_access<_Tp, _Lp, false, true> 5209: { 5209: public: 5209: using element_type = _Tp; 5209: 5209: element_type* 5209: operator->() const noexcept 5209: { 5209: auto __ptr = static_cast*>(this)->get(); 5209: ; 5209: return __ptr; 5209: } 5209: }; 5209: 5209: 5209: template 5209: class __shared_ptr_access<_Tp, _Lp, true, false> 5209: { 5209: public: 5209: using element_type = typename remove_extent<_Tp>::type; 5209: 5209: 5209: [[__deprecated__("shared_ptr::operator* is absent from C++17")]] 5209: element_type& 5209: operator*() const noexcept 5209: { 5209: ; 5209: return *_M_get(); 5209: } 5209: 5209: [[__deprecated__("shared_ptr::operator-> is absent from C++17")]] 5209: element_type* 5209: operator->() const noexcept 5209: { 5209: ; 5209: return _M_get(); 5209: } 5209: 5209: 5209: element_type& 5209: operator[](ptrdiff_t __i) const 5209: { 5209: ; 5209: ; 5209: return _M_get()[__i]; 5209: } 5209: 5209: private: 5209: element_type* 5209: _M_get() const noexcept 5209: { return static_cast*>(this)->get(); } 5209: }; 5209: 5209: template 5209: class __shared_ptr 5209: : public __shared_ptr_access<_Tp, _Lp> 5209: { 5209: public: 5209: using element_type = typename remove_extent<_Tp>::type; 5209: 5209: private: 5209: 5209: template 5209: using _SafeConv 5209: = typename enable_if<__sp_is_constructible<_Tp, _Yp>::value>::type; 5209: 5209: 5209: template 5209: using _Compatible = typename 5209: enable_if<__sp_compatible_with<_Yp*, _Tp*>::value, _Res>::type; 5209: 5209: 5209: template 5209: using _Assignable = _Compatible<_Yp, __shared_ptr&>; 5209: 5209: 5209: template::pointer> 5209: using _UniqCompatible = typename enable_if<__and_< 5209: __sp_compatible_with<_Yp*, _Tp*>, is_convertible<_Ptr, element_type*> 5209: >::value, _Res>::type; 5209: 5209: 5209: template 5209: using _UniqAssignable = _UniqCompatible<_Yp, _Del, __shared_ptr&>; 5209: 5209: public: 5209: 5209: 5209: 5209: 5209: 5209: constexpr __shared_ptr() noexcept 5209: : _M_ptr(0), _M_refcount() 5209: { } 5209: 5209: template> 5209: explicit 5209: __shared_ptr(_Yp* __p) 5209: : _M_ptr(__p), _M_refcount(__p, typename is_array<_Tp>::type()) 5209: { 5209: static_assert( !is_void<_Yp>::value, "incomplete type" ); 5209: static_assert( sizeof(_Yp) > 0, "incomplete type" ); 5209: _M_enable_shared_from_this_with(__p); 5209: } 5209: 5209: template> 5209: __shared_ptr(_Yp* __p, _Deleter __d) 5209: : _M_ptr(__p), _M_refcount(__p, std::move(__d)) 5209: { 5209: static_assert(__is_invocable<_Deleter&, _Yp*&>::value, 5209: "deleter expression d(p) is well-formed"); 5209: _M_enable_shared_from_this_with(__p); 5209: } 5209: 5209: template> 5209: __shared_ptr(_Yp* __p, _Deleter __d, _Alloc __a) 5209: : _M_ptr(__p), _M_refcount(__p, std::move(__d), std::move(__a)) 5209: { 5209: static_assert(__is_invocable<_Deleter&, _Yp*&>::value, 5209: "deleter expression d(p) is well-formed"); 5209: _M_enable_shared_from_this_with(__p); 5209: } 5209: 5209: template 5209: __shared_ptr(nullptr_t __p, _Deleter __d) 5209: : _M_ptr(0), _M_refcount(__p, std::move(__d)) 5209: { } 5209: 5209: template 5209: __shared_ptr(nullptr_t __p, _Deleter __d, _Alloc __a) 5209: : _M_ptr(0), _M_refcount(__p, std::move(__d), std::move(__a)) 5209: { } 5209: 5209: 5209: template 5209: __shared_ptr(const __shared_ptr<_Yp, _Lp>& __r, 5209: element_type* __p) noexcept 5209: : _M_ptr(__p), _M_refcount(__r._M_refcount) 5209: { } 5209: 5209: 5209: template 5209: __shared_ptr(__shared_ptr<_Yp, _Lp>&& __r, 5209: element_type* __p) noexcept 5209: : _M_ptr(__p), _M_refcount() 5209: { 5209: _M_refcount._M_swap(__r._M_refcount); 5209: __r._M_ptr = 0; 5209: } 5209: 5209: __shared_ptr(const __shared_ptr&) noexcept = default; 5209: __shared_ptr& operator=(const __shared_ptr&) noexcept = default; 5209: ~__shared_ptr() = default; 5209: 5209: template> 5209: __shared_ptr(const __shared_ptr<_Yp, _Lp>& __r) noexcept 5209: : _M_ptr(__r._M_ptr), _M_refcount(__r._M_refcount) 5209: { } 5209: 5209: __shared_ptr(__shared_ptr&& __r) noexcept 5209: : _M_ptr(__r._M_ptr), _M_refcount() 5209: { 5209: _M_refcount._M_swap(__r._M_refcount); 5209: __r._M_ptr = 0; 5209: } 5209: 5209: template> 5209: __shared_ptr(__shared_ptr<_Yp, _Lp>&& __r) noexcept 5209: : _M_ptr(__r._M_ptr), _M_refcount() 5209: { 5209: _M_refcount._M_swap(__r._M_refcount); 5209: __r._M_ptr = 0; 5209: } 5209: 5209: template> 5209: explicit __shared_ptr(const __weak_ptr<_Yp, _Lp>& __r) 5209: : _M_refcount(__r._M_refcount) 5209: { 5209: 5209: 5209: _M_ptr = __r._M_ptr; 5209: } 5209: 5209: 5209: template> 5209: __shared_ptr(unique_ptr<_Yp, _Del>&& __r) 5209: : _M_ptr(__r.get()), _M_refcount() 5209: { 5209: auto __raw = __to_address(__r.get()); 5209: _M_refcount = __shared_count<_Lp>(std::move(__r)); 5209: _M_enable_shared_from_this_with(__raw); 5209: } 5209: 5209: 5209: protected: 5209: 5209: template>, is_array<_Tp1>, 5209: is_convertible::pointer, _Tp*> 5209: >::value, bool>::type = true> 5209: __shared_ptr(unique_ptr<_Tp1, _Del>&& __r, __sp_array_delete) 5209: : _M_ptr(__r.get()), _M_refcount() 5209: { 5209: auto __raw = __to_address(__r.get()); 5209: _M_refcount = __shared_count<_Lp>(std::move(__r)); 5209: _M_enable_shared_from_this_with(__raw); 5209: } 5209: public: 5209: 5209: 5209: 5209: #pragma GCC diagnostic push 5209: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 5209: 5209: template> 5209: __shared_ptr(auto_ptr<_Yp>&& __r); 5209: #pragma GCC diagnostic pop 5209: 5209: 5209: constexpr __shared_ptr(nullptr_t) noexcept : __shared_ptr() { } 5209: 5209: template 5209: _Assignable<_Yp> 5209: operator=(const __shared_ptr<_Yp, _Lp>& __r) noexcept 5209: { 5209: _M_ptr = __r._M_ptr; 5209: _M_refcount = __r._M_refcount; 5209: return *this; 5209: } 5209: 5209: 5209: #pragma GCC diagnostic push 5209: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 5209: template 5209: _Assignable<_Yp> 5209: operator=(auto_ptr<_Yp>&& __r) 5209: { 5209: __shared_ptr(std::move(__r)).swap(*this); 5209: return *this; 5209: } 5209: #pragma GCC diagnostic pop 5209: 5209: 5209: __shared_ptr& 5209: operator=(__shared_ptr&& __r) noexcept 5209: { 5209: __shared_ptr(std::move(__r)).swap(*this); 5209: return *this; 5209: } 5209: 5209: template 5209: _Assignable<_Yp> 5209: operator=(__shared_ptr<_Yp, _Lp>&& __r) noexcept 5209: { 5209: __shared_ptr(std::move(__r)).swap(*this); 5209: return *this; 5209: } 5209: 5209: template 5209: _UniqAssignable<_Yp, _Del> 5209: operator=(unique_ptr<_Yp, _Del>&& __r) 5209: { 5209: __shared_ptr(std::move(__r)).swap(*this); 5209: return *this; 5209: } 5209: 5209: void 5209: reset() noexcept 5209: { __shared_ptr().swap(*this); } 5209: 5209: template 5209: _SafeConv<_Yp> 5209: reset(_Yp* __p) 5209: { 5209: 5209: ; 5209: __shared_ptr(__p).swap(*this); 5209: } 5209: 5209: template 5209: _SafeConv<_Yp> 5209: reset(_Yp* __p, _Deleter __d) 5209: { __shared_ptr(__p, std::move(__d)).swap(*this); } 5209: 5209: template 5209: _SafeConv<_Yp> 5209: reset(_Yp* __p, _Deleter __d, _Alloc __a) 5209: { __shared_ptr(__p, std::move(__d), std::move(__a)).swap(*this); } 5209: 5209: 5209: element_type* 5209: get() const noexcept 5209: { return _M_ptr; } 5209: 5209: 5209: explicit operator bool() const 5209: { return _M_ptr == 0 ? false : true; } 5209: 5209: 5209: bool 5209: unique() const noexcept 5209: { return _M_refcount._M_unique(); } 5209: 5209: 5209: long 5209: use_count() const noexcept 5209: { return _M_refcount._M_get_use_count(); } 5209: 5209: 5209: void 5209: swap(__shared_ptr<_Tp, _Lp>& __other) noexcept 5209: { 5209: std::swap(_M_ptr, __other._M_ptr); 5209: _M_refcount._M_swap(__other._M_refcount); 5209: } 5209: # 1353 "/usr/include/c++/10/bits/shared_ptr_base.h" 3 5209: template 5209: bool 5209: owner_before(__shared_ptr<_Tp1, _Lp> const& __rhs) const noexcept 5209: { return _M_refcount._M_less(__rhs._M_refcount); } 5209: 5209: template 5209: bool 5209: owner_before(__weak_ptr<_Tp1, _Lp> const& __rhs) const noexcept 5209: { return _M_refcount._M_less(__rhs._M_refcount); } 5209: 5209: 5209: protected: 5209: 5209: template 5209: __shared_ptr(_Sp_alloc_shared_tag<_Alloc> __tag, _Args&&... __args) 5209: : _M_ptr(), _M_refcount(_M_ptr, __tag, std::forward<_Args>(__args)...) 5209: { _M_enable_shared_from_this_with(_M_ptr); } 5209: 5209: template 5209: friend __shared_ptr<_Tp1, _Lp1> 5209: __allocate_shared(const _Alloc& __a, _Args&&... __args); 5209: 5209: 5209: 5209: __shared_ptr(const __weak_ptr<_Tp, _Lp>& __r, std::nothrow_t) 5209: : _M_refcount(__r._M_refcount, std::nothrow) 5209: { 5209: _M_ptr = _M_refcount._M_get_use_count() ? __r._M_ptr : nullptr; 5209: } 5209: 5209: friend class __weak_ptr<_Tp, _Lp>; 5209: 5209: private: 5209: 5209: template 5209: using __esft_base_t = decltype(__enable_shared_from_this_base( 5209: std::declval&>(), 5209: std::declval<_Yp*>())); 5209: 5209: 5209: template 5209: struct __has_esft_base 5209: : false_type { }; 5209: 5209: template 5209: struct __has_esft_base<_Yp, __void_t<__esft_base_t<_Yp>>> 5209: : __not_> { }; 5209: 5209: template::type> 5209: typename enable_if<__has_esft_base<_Yp2>::value>::type 5209: _M_enable_shared_from_this_with(_Yp* __p) noexcept 5209: { 5209: if (auto __base = __enable_shared_from_this_base(_M_refcount, __p)) 5209: __base->_M_weak_assign(const_cast<_Yp2*>(__p), _M_refcount); 5209: } 5209: 5209: template::type> 5209: typename enable_if::value>::type 5209: _M_enable_shared_from_this_with(_Yp*) noexcept 5209: { } 5209: 5209: void* 5209: _M_get_deleter(const std::type_info& __ti) const noexcept 5209: { return _M_refcount._M_get_deleter(__ti); } 5209: 5209: template friend class __shared_ptr; 5209: template friend class __weak_ptr; 5209: 5209: template 5209: friend _Del* get_deleter(const __shared_ptr<_Tp1, _Lp1>&) noexcept; 5209: 5209: template 5209: friend _Del* get_deleter(const shared_ptr<_Tp1>&) noexcept; 5209: 5209: element_type* _M_ptr; 5209: __shared_count<_Lp> _M_refcount; 5209: }; 5209: 5209: 5209: 5209: template 5209: inline bool 5209: operator==(const __shared_ptr<_Tp1, _Lp>& __a, 5209: const __shared_ptr<_Tp2, _Lp>& __b) noexcept 5209: { return __a.get() == __b.get(); } 5209: 5209: template 5209: inline bool 5209: operator==(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept 5209: { return !__a; } 5209: 5209: template 5209: inline bool 5209: operator==(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept 5209: { return !__a; } 5209: 5209: template 5209: inline bool 5209: operator!=(const __shared_ptr<_Tp1, _Lp>& __a, 5209: const __shared_ptr<_Tp2, _Lp>& __b) noexcept 5209: { return __a.get() != __b.get(); } 5209: 5209: template 5209: inline bool 5209: operator!=(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept 5209: { return (bool)__a; } 5209: 5209: template 5209: inline bool 5209: operator!=(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept 5209: { return (bool)__a; } 5209: 5209: template 5209: inline bool 5209: operator<(const __shared_ptr<_Tp, _Lp>& __a, 5209: const __shared_ptr<_Up, _Lp>& __b) noexcept 5209: { 5209: using _Tp_elt = typename __shared_ptr<_Tp, _Lp>::element_type; 5209: using _Up_elt = typename __shared_ptr<_Up, _Lp>::element_type; 5209: using _Vp = typename common_type<_Tp_elt*, _Up_elt*>::type; 5209: return less<_Vp>()(__a.get(), __b.get()); 5209: } 5209: 5209: template 5209: inline bool 5209: operator<(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept 5209: { 5209: using _Tp_elt = typename __shared_ptr<_Tp, _Lp>::element_type; 5209: return less<_Tp_elt*>()(__a.get(), nullptr); 5209: } 5209: 5209: template 5209: inline bool 5209: operator<(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept 5209: { 5209: using _Tp_elt = typename __shared_ptr<_Tp, _Lp>::element_type; 5209: return less<_Tp_elt*>()(nullptr, __a.get()); 5209: } 5209: 5209: template 5209: inline bool 5209: operator<=(const __shared_ptr<_Tp1, _Lp>& __a, 5209: const __shared_ptr<_Tp2, _Lp>& __b) noexcept 5209: { return !(__b < __a); } 5209: 5209: template 5209: inline bool 5209: operator<=(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept 5209: { return !(nullptr < __a); } 5209: 5209: template 5209: inline bool 5209: operator<=(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept 5209: { return !(__a < nullptr); } 5209: 5209: template 5209: inline bool 5209: operator>(const __shared_ptr<_Tp1, _Lp>& __a, 5209: const __shared_ptr<_Tp2, _Lp>& __b) noexcept 5209: { return (__b < __a); } 5209: 5209: template 5209: inline bool 5209: operator>(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept 5209: { return nullptr < __a; } 5209: 5209: template 5209: inline bool 5209: operator>(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept 5209: { return __a < nullptr; } 5209: 5209: template 5209: inline bool 5209: operator>=(const __shared_ptr<_Tp1, _Lp>& __a, 5209: const __shared_ptr<_Tp2, _Lp>& __b) noexcept 5209: { return !(__a < __b); } 5209: 5209: template 5209: inline bool 5209: operator>=(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept 5209: { return !(__a < nullptr); } 5209: 5209: template 5209: inline bool 5209: operator>=(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept 5209: { return !(nullptr < __a); } 5209: 5209: 5209: template 5209: inline void 5209: swap(__shared_ptr<_Tp, _Lp>& __a, __shared_ptr<_Tp, _Lp>& __b) noexcept 5209: { __a.swap(__b); } 5209: # 1554 "/usr/include/c++/10/bits/shared_ptr_base.h" 3 5209: template 5209: inline __shared_ptr<_Tp, _Lp> 5209: static_pointer_cast(const __shared_ptr<_Tp1, _Lp>& __r) noexcept 5209: { 5209: using _Sp = __shared_ptr<_Tp, _Lp>; 5209: return _Sp(__r, static_cast(__r.get())); 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: inline __shared_ptr<_Tp, _Lp> 5209: const_pointer_cast(const __shared_ptr<_Tp1, _Lp>& __r) noexcept 5209: { 5209: using _Sp = __shared_ptr<_Tp, _Lp>; 5209: return _Sp(__r, const_cast(__r.get())); 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: inline __shared_ptr<_Tp, _Lp> 5209: dynamic_pointer_cast(const __shared_ptr<_Tp1, _Lp>& __r) noexcept 5209: { 5209: using _Sp = __shared_ptr<_Tp, _Lp>; 5209: if (auto* __p = dynamic_cast(__r.get())) 5209: return _Sp(__r, __p); 5209: return _Sp(); 5209: } 5209: # 1600 "/usr/include/c++/10/bits/shared_ptr_base.h" 3 5209: template 5209: class __weak_ptr 5209: { 5209: template 5209: using _Compatible = typename 5209: enable_if<__sp_compatible_with<_Yp*, _Tp*>::value, _Res>::type; 5209: 5209: 5209: template 5209: using _Assignable = _Compatible<_Yp, __weak_ptr&>; 5209: 5209: public: 5209: using element_type = typename remove_extent<_Tp>::type; 5209: 5209: constexpr __weak_ptr() noexcept 5209: : _M_ptr(nullptr), _M_refcount() 5209: { } 5209: 5209: __weak_ptr(const __weak_ptr&) noexcept = default; 5209: 5209: ~__weak_ptr() = default; 5209: # 1636 "/usr/include/c++/10/bits/shared_ptr_base.h" 3 5209: template> 5209: __weak_ptr(const __weak_ptr<_Yp, _Lp>& __r) noexcept 5209: : _M_refcount(__r._M_refcount) 5209: { _M_ptr = __r.lock().get(); } 5209: 5209: template> 5209: __weak_ptr(const __shared_ptr<_Yp, _Lp>& __r) noexcept 5209: : _M_ptr(__r._M_ptr), _M_refcount(__r._M_refcount) 5209: { } 5209: 5209: __weak_ptr(__weak_ptr&& __r) noexcept 5209: : _M_ptr(__r._M_ptr), _M_refcount(std::move(__r._M_refcount)) 5209: { __r._M_ptr = nullptr; } 5209: 5209: template> 5209: __weak_ptr(__weak_ptr<_Yp, _Lp>&& __r) noexcept 5209: : _M_ptr(__r.lock().get()), _M_refcount(std::move(__r._M_refcount)) 5209: { __r._M_ptr = nullptr; } 5209: 5209: __weak_ptr& 5209: operator=(const __weak_ptr& __r) noexcept = default; 5209: 5209: template 5209: _Assignable<_Yp> 5209: operator=(const __weak_ptr<_Yp, _Lp>& __r) noexcept 5209: { 5209: _M_ptr = __r.lock().get(); 5209: _M_refcount = __r._M_refcount; 5209: return *this; 5209: } 5209: 5209: template 5209: _Assignable<_Yp> 5209: operator=(const __shared_ptr<_Yp, _Lp>& __r) noexcept 5209: { 5209: _M_ptr = __r._M_ptr; 5209: _M_refcount = __r._M_refcount; 5209: return *this; 5209: } 5209: 5209: __weak_ptr& 5209: operator=(__weak_ptr&& __r) noexcept 5209: { 5209: _M_ptr = __r._M_ptr; 5209: _M_refcount = std::move(__r._M_refcount); 5209: __r._M_ptr = nullptr; 5209: return *this; 5209: } 5209: 5209: template 5209: _Assignable<_Yp> 5209: operator=(__weak_ptr<_Yp, _Lp>&& __r) noexcept 5209: { 5209: _M_ptr = __r.lock().get(); 5209: _M_refcount = std::move(__r._M_refcount); 5209: __r._M_ptr = nullptr; 5209: return *this; 5209: } 5209: 5209: __shared_ptr<_Tp, _Lp> 5209: lock() const noexcept 5209: { return __shared_ptr(*this, std::nothrow); } 5209: 5209: long 5209: use_count() const noexcept 5209: { return _M_refcount._M_get_use_count(); } 5209: 5209: bool 5209: expired() const noexcept 5209: { return _M_refcount._M_get_use_count() == 0; } 5209: 5209: template 5209: bool 5209: owner_before(const __shared_ptr<_Tp1, _Lp>& __rhs) const noexcept 5209: { return _M_refcount._M_less(__rhs._M_refcount); } 5209: 5209: template 5209: bool 5209: owner_before(const __weak_ptr<_Tp1, _Lp>& __rhs) const noexcept 5209: { return _M_refcount._M_less(__rhs._M_refcount); } 5209: 5209: void 5209: reset() noexcept 5209: { __weak_ptr().swap(*this); } 5209: 5209: void 5209: swap(__weak_ptr& __s) noexcept 5209: { 5209: std::swap(_M_ptr, __s._M_ptr); 5209: _M_refcount._M_swap(__s._M_refcount); 5209: } 5209: 5209: private: 5209: 5209: void 5209: _M_assign(_Tp* __ptr, const __shared_count<_Lp>& __refcount) noexcept 5209: { 5209: if (use_count() == 0) 5209: { 5209: _M_ptr = __ptr; 5209: _M_refcount = __refcount; 5209: } 5209: } 5209: 5209: template friend class __shared_ptr; 5209: template friend class __weak_ptr; 5209: friend class __enable_shared_from_this<_Tp, _Lp>; 5209: friend class enable_shared_from_this<_Tp>; 5209: 5209: element_type* _M_ptr; 5209: __weak_count<_Lp> _M_refcount; 5209: }; 5209: 5209: 5209: template 5209: inline void 5209: swap(__weak_ptr<_Tp, _Lp>& __a, __weak_ptr<_Tp, _Lp>& __b) noexcept 5209: { __a.swap(__b); } 5209: 5209: template 5209: struct _Sp_owner_less : public binary_function<_Tp, _Tp, bool> 5209: { 5209: bool 5209: operator()(const _Tp& __lhs, const _Tp& __rhs) const noexcept 5209: { return __lhs.owner_before(__rhs); } 5209: 5209: bool 5209: operator()(const _Tp& __lhs, const _Tp1& __rhs) const noexcept 5209: { return __lhs.owner_before(__rhs); } 5209: 5209: bool 5209: operator()(const _Tp1& __lhs, const _Tp& __rhs) const noexcept 5209: { return __lhs.owner_before(__rhs); } 5209: }; 5209: 5209: template<> 5209: struct _Sp_owner_less 5209: { 5209: template 5209: auto 5209: operator()(const _Tp& __lhs, const _Up& __rhs) const noexcept 5209: -> decltype(__lhs.owner_before(__rhs)) 5209: { return __lhs.owner_before(__rhs); } 5209: 5209: using is_transparent = void; 5209: }; 5209: 5209: template 5209: struct owner_less<__shared_ptr<_Tp, _Lp>> 5209: : public _Sp_owner_less<__shared_ptr<_Tp, _Lp>, __weak_ptr<_Tp, _Lp>> 5209: { }; 5209: 5209: template 5209: struct owner_less<__weak_ptr<_Tp, _Lp>> 5209: : public _Sp_owner_less<__weak_ptr<_Tp, _Lp>, __shared_ptr<_Tp, _Lp>> 5209: { }; 5209: 5209: 5209: template 5209: class __enable_shared_from_this 5209: { 5209: protected: 5209: constexpr __enable_shared_from_this() noexcept { } 5209: 5209: __enable_shared_from_this(const __enable_shared_from_this&) noexcept { } 5209: 5209: __enable_shared_from_this& 5209: operator=(const __enable_shared_from_this&) noexcept 5209: { return *this; } 5209: 5209: ~__enable_shared_from_this() { } 5209: 5209: public: 5209: __shared_ptr<_Tp, _Lp> 5209: shared_from_this() 5209: { return __shared_ptr<_Tp, _Lp>(this->_M_weak_this); } 5209: 5209: __shared_ptr 5209: shared_from_this() const 5209: { return __shared_ptr(this->_M_weak_this); } 5209: 5209: 5209: __weak_ptr<_Tp, _Lp> 5209: weak_from_this() noexcept 5209: { return this->_M_weak_this; } 5209: 5209: __weak_ptr 5209: weak_from_this() const noexcept 5209: { return this->_M_weak_this; } 5209: 5209: 5209: private: 5209: template 5209: void 5209: _M_weak_assign(_Tp1* __p, const __shared_count<_Lp>& __n) const noexcept 5209: { _M_weak_this._M_assign(__p, __n); } 5209: 5209: friend const __enable_shared_from_this* 5209: __enable_shared_from_this_base(const __shared_count<_Lp>&, 5209: const __enable_shared_from_this* __p) 5209: { return __p; } 5209: 5209: template 5209: friend class __shared_ptr; 5209: 5209: mutable __weak_ptr<_Tp, _Lp> _M_weak_this; 5209: }; 5209: 5209: template 5209: inline __shared_ptr<_Tp, _Lp> 5209: __allocate_shared(const _Alloc& __a, _Args&&... __args) 5209: { 5209: return __shared_ptr<_Tp, _Lp>(_Sp_alloc_shared_tag<_Alloc>{__a}, 5209: std::forward<_Args>(__args)...); 5209: } 5209: 5209: template 5209: inline __shared_ptr<_Tp, _Lp> 5209: __make_shared(_Args&&... __args) 5209: { 5209: typedef typename std::remove_const<_Tp>::type _Tp_nc; 5209: return std::__allocate_shared<_Tp, _Lp>(std::allocator<_Tp_nc>(), 5209: std::forward<_Args>(__args)...); 5209: } 5209: 5209: 5209: template 5209: struct hash<__shared_ptr<_Tp, _Lp>> 5209: : public __hash_base> 5209: { 5209: size_t 5209: operator()(const __shared_ptr<_Tp, _Lp>& __s) const noexcept 5209: { 5209: return hash::element_type*>()( 5209: __s.get()); 5209: } 5209: }; 5209: 5209: 5209: } 5209: # 53 "/usr/include/c++/10/bits/shared_ptr.h" 2 3 5209: 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: # 67 "/usr/include/c++/10/bits/shared_ptr.h" 3 5209: template 5209: inline std::basic_ostream<_Ch, _Tr>& 5209: operator<<(std::basic_ostream<_Ch, _Tr>& __os, 5209: const __shared_ptr<_Tp, _Lp>& __p) 5209: { 5209: __os << __p.get(); 5209: return __os; 5209: } 5209: 5209: template 5209: inline _Del* 5209: get_deleter(const __shared_ptr<_Tp, _Lp>& __p) noexcept 5209: { 5209: 5209: return static_cast<_Del*>(__p._M_get_deleter(typeid(_Del))); 5209: 5209: 5209: 5209: } 5209: 5209: 5209: 5209: 5209: 5209: template 5209: inline _Del* 5209: get_deleter(const shared_ptr<_Tp>& __p) noexcept 5209: { 5209: 5209: return static_cast<_Del*>(__p._M_get_deleter(typeid(_Del))); 5209: 5209: 5209: 5209: } 5209: # 120 "/usr/include/c++/10/bits/shared_ptr.h" 3 5209: template 5209: class shared_ptr : public __shared_ptr<_Tp> 5209: { 5209: template 5209: using _Constructible = typename enable_if< 5209: is_constructible<__shared_ptr<_Tp>, _Args...>::value 5209: >::type; 5209: 5209: template 5209: using _Assignable = typename enable_if< 5209: is_assignable<__shared_ptr<_Tp>&, _Arg>::value, shared_ptr& 5209: >::type; 5209: 5209: public: 5209: 5209: 5209: using element_type = typename __shared_ptr<_Tp>::element_type; 5209: # 147 "/usr/include/c++/10/bits/shared_ptr.h" 3 5209: constexpr shared_ptr() noexcept : __shared_ptr<_Tp>() { } 5209: 5209: shared_ptr(const shared_ptr&) noexcept = default; 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: template> 5209: explicit 5209: shared_ptr(_Yp* __p) : __shared_ptr<_Tp>(__p) { } 5209: # 174 "/usr/include/c++/10/bits/shared_ptr.h" 3 5209: template> 5209: shared_ptr(_Yp* __p, _Deleter __d) 5209: : __shared_ptr<_Tp>(__p, std::move(__d)) { } 5209: # 192 "/usr/include/c++/10/bits/shared_ptr.h" 3 5209: template 5209: shared_ptr(nullptr_t __p, _Deleter __d) 5209: : __shared_ptr<_Tp>(__p, std::move(__d)) { } 5209: # 211 "/usr/include/c++/10/bits/shared_ptr.h" 3 5209: template> 5209: shared_ptr(_Yp* __p, _Deleter __d, _Alloc __a) 5209: : __shared_ptr<_Tp>(__p, std::move(__d), std::move(__a)) { } 5209: # 231 "/usr/include/c++/10/bits/shared_ptr.h" 3 5209: template 5209: shared_ptr(nullptr_t __p, _Deleter __d, _Alloc __a) 5209: : __shared_ptr<_Tp>(__p, std::move(__d), std::move(__a)) { } 5209: # 255 "/usr/include/c++/10/bits/shared_ptr.h" 3 5209: template 5209: shared_ptr(const shared_ptr<_Yp>& __r, element_type* __p) noexcept 5209: : __shared_ptr<_Tp>(__r, __p) { } 5209: # 293 "/usr/include/c++/10/bits/shared_ptr.h" 3 5209: template&>> 5209: shared_ptr(const shared_ptr<_Yp>& __r) noexcept 5209: : __shared_ptr<_Tp>(__r) { } 5209: 5209: 5209: 5209: 5209: 5209: 5209: shared_ptr(shared_ptr&& __r) noexcept 5209: : __shared_ptr<_Tp>(std::move(__r)) { } 5209: 5209: 5209: 5209: 5209: 5209: 5209: template>> 5209: shared_ptr(shared_ptr<_Yp>&& __r) noexcept 5209: : __shared_ptr<_Tp>(std::move(__r)) { } 5209: # 323 "/usr/include/c++/10/bits/shared_ptr.h" 3 5209: template&>> 5209: explicit shared_ptr(const weak_ptr<_Yp>& __r) 5209: : __shared_ptr<_Tp>(__r) { } 5209: 5209: 5209: #pragma GCC diagnostic push 5209: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 5209: template>> 5209: shared_ptr(auto_ptr<_Yp>&& __r); 5209: #pragma GCC diagnostic pop 5209: 5209: 5209: 5209: 5209: template>> 5209: shared_ptr(unique_ptr<_Yp, _Del>&& __r) 5209: : __shared_ptr<_Tp>(std::move(__r)) { } 5209: 5209: 5209: 5209: 5209: 5209: template, __sp_array_delete>* = 0> 5209: shared_ptr(unique_ptr<_Yp, _Del>&& __r) 5209: : __shared_ptr<_Tp>(std::move(__r), __sp_array_delete()) { } 5209: 5209: 5209: 5209: 5209: 5209: 5209: constexpr shared_ptr(nullptr_t) noexcept : shared_ptr() { } 5209: 5209: shared_ptr& operator=(const shared_ptr&) noexcept = default; 5209: 5209: template 5209: _Assignable&> 5209: operator=(const shared_ptr<_Yp>& __r) noexcept 5209: { 5209: this->__shared_ptr<_Tp>::operator=(__r); 5209: return *this; 5209: } 5209: 5209: 5209: #pragma GCC diagnostic push 5209: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 5209: template 5209: _Assignable> 5209: operator=(auto_ptr<_Yp>&& __r) 5209: { 5209: this->__shared_ptr<_Tp>::operator=(std::move(__r)); 5209: return *this; 5209: } 5209: #pragma GCC diagnostic pop 5209: 5209: 5209: shared_ptr& 5209: operator=(shared_ptr&& __r) noexcept 5209: { 5209: this->__shared_ptr<_Tp>::operator=(std::move(__r)); 5209: return *this; 5209: } 5209: 5209: template 5209: _Assignable> 5209: operator=(shared_ptr<_Yp>&& __r) noexcept 5209: { 5209: this->__shared_ptr<_Tp>::operator=(std::move(__r)); 5209: return *this; 5209: } 5209: 5209: template 5209: _Assignable> 5209: operator=(unique_ptr<_Yp, _Del>&& __r) 5209: { 5209: this->__shared_ptr<_Tp>::operator=(std::move(__r)); 5209: return *this; 5209: } 5209: 5209: private: 5209: 5209: template 5209: shared_ptr(_Sp_alloc_shared_tag<_Alloc> __tag, _Args&&... __args) 5209: : __shared_ptr<_Tp>(__tag, std::forward<_Args>(__args)...) 5209: { } 5209: 5209: template 5209: friend shared_ptr<_Yp> 5209: allocate_shared(const _Alloc& __a, _Args&&... __args); 5209: 5209: 5209: shared_ptr(const weak_ptr<_Tp>& __r, std::nothrow_t) 5209: : __shared_ptr<_Tp>(__r, std::nothrow) { } 5209: 5209: friend class weak_ptr<_Tp>; 5209: }; 5209: # 434 "/usr/include/c++/10/bits/shared_ptr.h" 3 5209: template 5209: inline bool 5209: operator==(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept 5209: { return __a.get() == __b.get(); } 5209: 5209: 5209: template 5209: inline bool 5209: operator==(const shared_ptr<_Tp>& __a, nullptr_t) noexcept 5209: { return !__a; } 5209: 5209: 5209: template 5209: inline bool 5209: operator==(nullptr_t, const shared_ptr<_Tp>& __a) noexcept 5209: { return !__a; } 5209: 5209: 5209: template 5209: inline bool 5209: operator!=(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept 5209: { return __a.get() != __b.get(); } 5209: 5209: 5209: template 5209: inline bool 5209: operator!=(const shared_ptr<_Tp>& __a, nullptr_t) noexcept 5209: { return (bool)__a; } 5209: 5209: 5209: template 5209: inline bool 5209: operator!=(nullptr_t, const shared_ptr<_Tp>& __a) noexcept 5209: { return (bool)__a; } 5209: 5209: 5209: template 5209: inline bool 5209: operator<(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept 5209: { 5209: using _Tp_elt = typename shared_ptr<_Tp>::element_type; 5209: using _Up_elt = typename shared_ptr<_Up>::element_type; 5209: using _Vp = typename common_type<_Tp_elt*, _Up_elt*>::type; 5209: return less<_Vp>()(__a.get(), __b.get()); 5209: } 5209: 5209: 5209: template 5209: inline bool 5209: operator<(const shared_ptr<_Tp>& __a, nullptr_t) noexcept 5209: { 5209: using _Tp_elt = typename shared_ptr<_Tp>::element_type; 5209: return less<_Tp_elt*>()(__a.get(), nullptr); 5209: } 5209: 5209: 5209: template 5209: inline bool 5209: operator<(nullptr_t, const shared_ptr<_Tp>& __a) noexcept 5209: { 5209: using _Tp_elt = typename shared_ptr<_Tp>::element_type; 5209: return less<_Tp_elt*>()(nullptr, __a.get()); 5209: } 5209: 5209: 5209: template 5209: inline bool 5209: operator<=(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept 5209: { return !(__b < __a); } 5209: 5209: 5209: template 5209: inline bool 5209: operator<=(const shared_ptr<_Tp>& __a, nullptr_t) noexcept 5209: { return !(nullptr < __a); } 5209: 5209: 5209: template 5209: inline bool 5209: operator<=(nullptr_t, const shared_ptr<_Tp>& __a) noexcept 5209: { return !(__a < nullptr); } 5209: 5209: 5209: template 5209: inline bool 5209: operator>(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept 5209: { return (__b < __a); } 5209: 5209: 5209: template 5209: inline bool 5209: operator>(const shared_ptr<_Tp>& __a, nullptr_t) noexcept 5209: { return nullptr < __a; } 5209: 5209: 5209: template 5209: inline bool 5209: operator>(nullptr_t, const shared_ptr<_Tp>& __a) noexcept 5209: { return __a < nullptr; } 5209: 5209: 5209: template 5209: inline bool 5209: operator>=(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept 5209: { return !(__a < __b); } 5209: 5209: 5209: template 5209: inline bool 5209: operator>=(const shared_ptr<_Tp>& __a, nullptr_t) noexcept 5209: { return !(__a < nullptr); } 5209: 5209: 5209: template 5209: inline bool 5209: operator>=(nullptr_t, const shared_ptr<_Tp>& __a) noexcept 5209: { return !(nullptr < __a); } 5209: 5209: 5209: 5209: 5209: template 5209: inline void 5209: swap(shared_ptr<_Tp>& __a, shared_ptr<_Tp>& __b) noexcept 5209: { __a.swap(__b); } 5209: 5209: 5209: 5209: 5209: template 5209: inline shared_ptr<_Tp> 5209: static_pointer_cast(const shared_ptr<_Up>& __r) noexcept 5209: { 5209: using _Sp = shared_ptr<_Tp>; 5209: return _Sp(__r, static_cast(__r.get())); 5209: } 5209: 5209: 5209: template 5209: inline shared_ptr<_Tp> 5209: const_pointer_cast(const shared_ptr<_Up>& __r) noexcept 5209: { 5209: using _Sp = shared_ptr<_Tp>; 5209: return _Sp(__r, const_cast(__r.get())); 5209: } 5209: 5209: 5209: template 5209: inline shared_ptr<_Tp> 5209: dynamic_pointer_cast(const shared_ptr<_Up>& __r) noexcept 5209: { 5209: using _Sp = shared_ptr<_Tp>; 5209: if (auto* __p = dynamic_cast(__r.get())) 5209: return _Sp(__r, __p); 5209: return _Sp(); 5209: } 5209: # 668 "/usr/include/c++/10/bits/shared_ptr.h" 3 5209: template 5209: class weak_ptr : public __weak_ptr<_Tp> 5209: { 5209: template 5209: using _Constructible = typename enable_if< 5209: is_constructible<__weak_ptr<_Tp>, _Arg>::value 5209: >::type; 5209: 5209: template 5209: using _Assignable = typename enable_if< 5209: is_assignable<__weak_ptr<_Tp>&, _Arg>::value, weak_ptr& 5209: >::type; 5209: 5209: public: 5209: constexpr weak_ptr() noexcept = default; 5209: 5209: template&>> 5209: weak_ptr(const shared_ptr<_Yp>& __r) noexcept 5209: : __weak_ptr<_Tp>(__r) { } 5209: 5209: weak_ptr(const weak_ptr&) noexcept = default; 5209: 5209: template&>> 5209: weak_ptr(const weak_ptr<_Yp>& __r) noexcept 5209: : __weak_ptr<_Tp>(__r) { } 5209: 5209: weak_ptr(weak_ptr&&) noexcept = default; 5209: 5209: template>> 5209: weak_ptr(weak_ptr<_Yp>&& __r) noexcept 5209: : __weak_ptr<_Tp>(std::move(__r)) { } 5209: 5209: weak_ptr& 5209: operator=(const weak_ptr& __r) noexcept = default; 5209: 5209: template 5209: _Assignable&> 5209: operator=(const weak_ptr<_Yp>& __r) noexcept 5209: { 5209: this->__weak_ptr<_Tp>::operator=(__r); 5209: return *this; 5209: } 5209: 5209: template 5209: _Assignable&> 5209: operator=(const shared_ptr<_Yp>& __r) noexcept 5209: { 5209: this->__weak_ptr<_Tp>::operator=(__r); 5209: return *this; 5209: } 5209: 5209: weak_ptr& 5209: operator=(weak_ptr&& __r) noexcept = default; 5209: 5209: template 5209: _Assignable> 5209: operator=(weak_ptr<_Yp>&& __r) noexcept 5209: { 5209: this->__weak_ptr<_Tp>::operator=(std::move(__r)); 5209: return *this; 5209: } 5209: 5209: shared_ptr<_Tp> 5209: lock() const noexcept 5209: { return shared_ptr<_Tp>(*this, std::nothrow); } 5209: }; 5209: # 744 "/usr/include/c++/10/bits/shared_ptr.h" 3 5209: template 5209: inline void 5209: swap(weak_ptr<_Tp>& __a, weak_ptr<_Tp>& __b) noexcept 5209: { __a.swap(__b); } 5209: 5209: 5209: 5209: template 5209: struct owner_less; 5209: 5209: 5209: template<> 5209: struct owner_less : _Sp_owner_less 5209: { }; 5209: 5209: 5209: template 5209: struct owner_less> 5209: : public _Sp_owner_less, weak_ptr<_Tp>> 5209: { }; 5209: 5209: 5209: template 5209: struct owner_less> 5209: : public _Sp_owner_less, shared_ptr<_Tp>> 5209: { }; 5209: 5209: 5209: 5209: 5209: template 5209: class enable_shared_from_this 5209: { 5209: protected: 5209: constexpr enable_shared_from_this() noexcept { } 5209: 5209: enable_shared_from_this(const enable_shared_from_this&) noexcept { } 5209: 5209: enable_shared_from_this& 5209: operator=(const enable_shared_from_this&) noexcept 5209: { return *this; } 5209: 5209: ~enable_shared_from_this() { } 5209: 5209: public: 5209: shared_ptr<_Tp> 5209: shared_from_this() 5209: { return shared_ptr<_Tp>(this->_M_weak_this); } 5209: 5209: shared_ptr 5209: shared_from_this() const 5209: { return shared_ptr(this->_M_weak_this); } 5209: 5209: 5209: 5209: weak_ptr<_Tp> 5209: weak_from_this() noexcept 5209: { return this->_M_weak_this; } 5209: 5209: weak_ptr 5209: weak_from_this() const noexcept 5209: { return this->_M_weak_this; } 5209: 5209: 5209: private: 5209: template 5209: void 5209: _M_weak_assign(_Tp1* __p, const __shared_count<>& __n) const noexcept 5209: { _M_weak_this._M_assign(__p, __n); } 5209: 5209: 5209: friend const enable_shared_from_this* 5209: __enable_shared_from_this_base(const __shared_count<>&, 5209: const enable_shared_from_this* __p) 5209: { return __p; } 5209: 5209: template 5209: friend class __shared_ptr; 5209: 5209: mutable weak_ptr<_Tp> _M_weak_this; 5209: }; 5209: # 839 "/usr/include/c++/10/bits/shared_ptr.h" 3 5209: template 5209: inline shared_ptr<_Tp> 5209: allocate_shared(const _Alloc& __a, _Args&&... __args) 5209: { 5209: return shared_ptr<_Tp>(_Sp_alloc_shared_tag<_Alloc>{__a}, 5209: std::forward<_Args>(__args)...); 5209: } 5209: # 854 "/usr/include/c++/10/bits/shared_ptr.h" 3 5209: template 5209: inline shared_ptr<_Tp> 5209: make_shared(_Args&&... __args) 5209: { 5209: typedef typename std::remove_cv<_Tp>::type _Tp_nc; 5209: return std::allocate_shared<_Tp>(std::allocator<_Tp_nc>(), 5209: std::forward<_Args>(__args)...); 5209: } 5209: 5209: 5209: template 5209: struct hash> 5209: : public __hash_base> 5209: { 5209: size_t 5209: operator()(const shared_ptr<_Tp>& __s) const noexcept 5209: { 5209: return std::hash::element_type*>()(__s.get()); 5209: } 5209: }; 5209: # 899 "/usr/include/c++/10/bits/shared_ptr.h" 3 5209: 5209: } 5209: # 84 "/usr/include/c++/10/memory" 2 3 5209: # 1 "/usr/include/c++/10/bits/shared_ptr_atomic.h" 1 3 5209: # 35 "/usr/include/c++/10/bits/shared_ptr_atomic.h" 3 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: # 47 "/usr/include/c++/10/bits/shared_ptr_atomic.h" 3 5209: struct _Sp_locker 5209: { 5209: _Sp_locker(const _Sp_locker&) = delete; 5209: _Sp_locker& operator=(const _Sp_locker&) = delete; 5209: 5209: 5209: explicit 5209: _Sp_locker(const void*) noexcept; 5209: _Sp_locker(const void*, const void*) noexcept; 5209: ~_Sp_locker(); 5209: 5209: private: 5209: unsigned char _M_key1; 5209: unsigned char _M_key2; 5209: 5209: 5209: 5209: }; 5209: # 74 "/usr/include/c++/10/bits/shared_ptr_atomic.h" 3 5209: template 5209: inline bool 5209: atomic_is_lock_free(const __shared_ptr<_Tp, _Lp>* __p) 5209: { 5209: 5209: return __gthread_active_p() == 0; 5209: 5209: 5209: 5209: } 5209: 5209: template 5209: inline bool 5209: atomic_is_lock_free(const shared_ptr<_Tp>* __p) 5209: { return std::atomic_is_lock_free<_Tp, __default_lock_policy>(__p); } 5209: # 101 "/usr/include/c++/10/bits/shared_ptr_atomic.h" 3 5209: template 5209: inline shared_ptr<_Tp> 5209: atomic_load_explicit(const shared_ptr<_Tp>* __p, memory_order) 5209: { 5209: _Sp_locker __lock{__p}; 5209: return *__p; 5209: } 5209: 5209: template 5209: inline shared_ptr<_Tp> 5209: atomic_load(const shared_ptr<_Tp>* __p) 5209: { return std::atomic_load_explicit(__p, memory_order_seq_cst); } 5209: 5209: template 5209: inline __shared_ptr<_Tp, _Lp> 5209: atomic_load_explicit(const __shared_ptr<_Tp, _Lp>* __p, memory_order) 5209: { 5209: _Sp_locker __lock{__p}; 5209: return *__p; 5209: } 5209: 5209: template 5209: inline __shared_ptr<_Tp, _Lp> 5209: atomic_load(const __shared_ptr<_Tp, _Lp>* __p) 5209: { return std::atomic_load_explicit(__p, memory_order_seq_cst); } 5209: # 137 "/usr/include/c++/10/bits/shared_ptr_atomic.h" 3 5209: template 5209: inline void 5209: atomic_store_explicit(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r, 5209: memory_order) 5209: { 5209: _Sp_locker __lock{__p}; 5209: __p->swap(__r); 5209: } 5209: 5209: template 5209: inline void 5209: atomic_store(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r) 5209: { std::atomic_store_explicit(__p, std::move(__r), memory_order_seq_cst); } 5209: 5209: template 5209: inline void 5209: atomic_store_explicit(__shared_ptr<_Tp, _Lp>* __p, 5209: __shared_ptr<_Tp, _Lp> __r, 5209: memory_order) 5209: { 5209: _Sp_locker __lock{__p}; 5209: __p->swap(__r); 5209: } 5209: 5209: template 5209: inline void 5209: atomic_store(__shared_ptr<_Tp, _Lp>* __p, __shared_ptr<_Tp, _Lp> __r) 5209: { std::atomic_store_explicit(__p, std::move(__r), memory_order_seq_cst); } 5209: # 174 "/usr/include/c++/10/bits/shared_ptr_atomic.h" 3 5209: template 5209: inline shared_ptr<_Tp> 5209: atomic_exchange_explicit(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r, 5209: memory_order) 5209: { 5209: _Sp_locker __lock{__p}; 5209: __p->swap(__r); 5209: return __r; 5209: } 5209: 5209: template 5209: inline shared_ptr<_Tp> 5209: atomic_exchange(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r) 5209: { 5209: return std::atomic_exchange_explicit(__p, std::move(__r), 5209: memory_order_seq_cst); 5209: } 5209: 5209: template 5209: inline __shared_ptr<_Tp, _Lp> 5209: atomic_exchange_explicit(__shared_ptr<_Tp, _Lp>* __p, 5209: __shared_ptr<_Tp, _Lp> __r, 5209: memory_order) 5209: { 5209: _Sp_locker __lock{__p}; 5209: __p->swap(__r); 5209: return __r; 5209: } 5209: 5209: template 5209: inline __shared_ptr<_Tp, _Lp> 5209: atomic_exchange(__shared_ptr<_Tp, _Lp>* __p, __shared_ptr<_Tp, _Lp> __r) 5209: { 5209: return std::atomic_exchange_explicit(__p, std::move(__r), 5209: memory_order_seq_cst); 5209: } 5209: # 223 "/usr/include/c++/10/bits/shared_ptr_atomic.h" 3 5209: template 5209: bool 5209: atomic_compare_exchange_strong_explicit(shared_ptr<_Tp>* __p, 5209: shared_ptr<_Tp>* __v, 5209: shared_ptr<_Tp> __w, 5209: memory_order, 5209: memory_order) 5209: { 5209: shared_ptr<_Tp> __x; 5209: _Sp_locker __lock{__p, __v}; 5209: owner_less> __less; 5209: if (*__p == *__v && !__less(*__p, *__v) && !__less(*__v, *__p)) 5209: { 5209: __x = std::move(*__p); 5209: *__p = std::move(__w); 5209: return true; 5209: } 5209: __x = std::move(*__v); 5209: *__v = *__p; 5209: return false; 5209: } 5209: 5209: template 5209: inline bool 5209: atomic_compare_exchange_strong(shared_ptr<_Tp>* __p, shared_ptr<_Tp>* __v, 5209: shared_ptr<_Tp> __w) 5209: { 5209: return std::atomic_compare_exchange_strong_explicit(__p, __v, 5209: std::move(__w), memory_order_seq_cst, memory_order_seq_cst); 5209: } 5209: 5209: template 5209: inline bool 5209: atomic_compare_exchange_weak_explicit(shared_ptr<_Tp>* __p, 5209: shared_ptr<_Tp>* __v, 5209: shared_ptr<_Tp> __w, 5209: memory_order __success, 5209: memory_order __failure) 5209: { 5209: return std::atomic_compare_exchange_strong_explicit(__p, __v, 5209: std::move(__w), __success, __failure); 5209: } 5209: 5209: template 5209: inline bool 5209: atomic_compare_exchange_weak(shared_ptr<_Tp>* __p, shared_ptr<_Tp>* __v, 5209: shared_ptr<_Tp> __w) 5209: { 5209: return std::atomic_compare_exchange_weak_explicit(__p, __v, 5209: std::move(__w), memory_order_seq_cst, memory_order_seq_cst); 5209: } 5209: 5209: template 5209: bool 5209: atomic_compare_exchange_strong_explicit(__shared_ptr<_Tp, _Lp>* __p, 5209: __shared_ptr<_Tp, _Lp>* __v, 5209: __shared_ptr<_Tp, _Lp> __w, 5209: memory_order, 5209: memory_order) 5209: { 5209: __shared_ptr<_Tp, _Lp> __x; 5209: _Sp_locker __lock{__p, __v}; 5209: owner_less<__shared_ptr<_Tp, _Lp>> __less; 5209: if (*__p == *__v && !__less(*__p, *__v) && !__less(*__v, *__p)) 5209: { 5209: __x = std::move(*__p); 5209: *__p = std::move(__w); 5209: return true; 5209: } 5209: __x = std::move(*__v); 5209: *__v = *__p; 5209: return false; 5209: } 5209: 5209: template 5209: inline bool 5209: atomic_compare_exchange_strong(__shared_ptr<_Tp, _Lp>* __p, 5209: __shared_ptr<_Tp, _Lp>* __v, 5209: __shared_ptr<_Tp, _Lp> __w) 5209: { 5209: return std::atomic_compare_exchange_strong_explicit(__p, __v, 5209: std::move(__w), memory_order_seq_cst, memory_order_seq_cst); 5209: } 5209: 5209: template 5209: inline bool 5209: atomic_compare_exchange_weak_explicit(__shared_ptr<_Tp, _Lp>* __p, 5209: __shared_ptr<_Tp, _Lp>* __v, 5209: __shared_ptr<_Tp, _Lp> __w, 5209: memory_order __success, 5209: memory_order __failure) 5209: { 5209: return std::atomic_compare_exchange_strong_explicit(__p, __v, 5209: std::move(__w), __success, __failure); 5209: } 5209: 5209: template 5209: inline bool 5209: atomic_compare_exchange_weak(__shared_ptr<_Tp, _Lp>* __p, 5209: __shared_ptr<_Tp, _Lp>* __v, 5209: __shared_ptr<_Tp, _Lp> __w) 5209: { 5209: return std::atomic_compare_exchange_weak_explicit(__p, __v, 5209: std::move(__w), memory_order_seq_cst, memory_order_seq_cst); 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: } 5209: # 85 "/usr/include/c++/10/memory" 2 3 5209: 5209: # 1 "/usr/include/c++/10/backward/auto_ptr.h" 1 3 5209: # 36 "/usr/include/c++/10/backward/auto_ptr.h" 3 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: # 47 "/usr/include/c++/10/backward/auto_ptr.h" 3 5209: template 5209: struct auto_ptr_ref 5209: { 5209: _Tp1* _M_ptr; 5209: 5209: explicit 5209: auto_ptr_ref(_Tp1* __p): _M_ptr(__p) { } 5209: } __attribute__ ((__deprecated__)); 5209: 5209: #pragma GCC diagnostic push 5209: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 5209: # 88 "/usr/include/c++/10/backward/auto_ptr.h" 3 5209: template 5209: class auto_ptr 5209: { 5209: private: 5209: _Tp* _M_ptr; 5209: 5209: public: 5209: 5209: typedef _Tp element_type; 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: explicit 5209: auto_ptr(element_type* __p = 0) throw() : _M_ptr(__p) { } 5209: # 114 "/usr/include/c++/10/backward/auto_ptr.h" 3 5209: auto_ptr(auto_ptr& __a) throw() : _M_ptr(__a.release()) { } 5209: # 126 "/usr/include/c++/10/backward/auto_ptr.h" 3 5209: template 5209: auto_ptr(auto_ptr<_Tp1>& __a) throw() : _M_ptr(__a.release()) { } 5209: # 137 "/usr/include/c++/10/backward/auto_ptr.h" 3 5209: auto_ptr& 5209: operator=(auto_ptr& __a) throw() 5209: { 5209: reset(__a.release()); 5209: return *this; 5209: } 5209: # 154 "/usr/include/c++/10/backward/auto_ptr.h" 3 5209: template 5209: auto_ptr& 5209: operator=(auto_ptr<_Tp1>& __a) throw() 5209: { 5209: reset(__a.release()); 5209: return *this; 5209: } 5209: # 172 "/usr/include/c++/10/backward/auto_ptr.h" 3 5209: ~auto_ptr() { delete _M_ptr; } 5209: # 182 "/usr/include/c++/10/backward/auto_ptr.h" 3 5209: element_type& 5209: operator*() const throw() 5209: { 5209: ; 5209: return *_M_ptr; 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: element_type* 5209: operator->() const throw() 5209: { 5209: ; 5209: return _M_ptr; 5209: } 5209: # 212 "/usr/include/c++/10/backward/auto_ptr.h" 3 5209: element_type* 5209: get() const throw() { return _M_ptr; } 5209: # 226 "/usr/include/c++/10/backward/auto_ptr.h" 3 5209: element_type* 5209: release() throw() 5209: { 5209: element_type* __tmp = _M_ptr; 5209: _M_ptr = 0; 5209: return __tmp; 5209: } 5209: # 241 "/usr/include/c++/10/backward/auto_ptr.h" 3 5209: void 5209: reset(element_type* __p = 0) throw() 5209: { 5209: if (__p != _M_ptr) 5209: { 5209: delete _M_ptr; 5209: _M_ptr = __p; 5209: } 5209: } 5209: # 266 "/usr/include/c++/10/backward/auto_ptr.h" 3 5209: auto_ptr(auto_ptr_ref __ref) throw() 5209: : _M_ptr(__ref._M_ptr) { } 5209: 5209: auto_ptr& 5209: operator=(auto_ptr_ref __ref) throw() 5209: { 5209: if (__ref._M_ptr != this->get()) 5209: { 5209: delete _M_ptr; 5209: _M_ptr = __ref._M_ptr; 5209: } 5209: return *this; 5209: } 5209: 5209: template 5209: operator auto_ptr_ref<_Tp1>() throw() 5209: { return auto_ptr_ref<_Tp1>(this->release()); } 5209: 5209: template 5209: operator auto_ptr<_Tp1>() throw() 5209: { return auto_ptr<_Tp1>(this->release()); } 5209: } __attribute__ ((__deprecated__)); 5209: 5209: 5209: 5209: template<> 5209: class auto_ptr 5209: { 5209: public: 5209: typedef void element_type; 5209: } __attribute__ ((__deprecated__)); 5209: 5209: 5209: template<_Lock_policy _Lp> 5209: template 5209: inline 5209: __shared_count<_Lp>::__shared_count(std::auto_ptr<_Tp>&& __r) 5209: : _M_pi(new _Sp_counted_ptr<_Tp*, _Lp>(__r.get())) 5209: { __r.release(); } 5209: 5209: template 5209: template 5209: inline 5209: __shared_ptr<_Tp, _Lp>::__shared_ptr(std::auto_ptr<_Tp1>&& __r) 5209: : _M_ptr(__r.get()), _M_refcount() 5209: { 5209: 5209: static_assert( sizeof(_Tp1) > 0, "incomplete type" ); 5209: _Tp1* __tmp = __r.get(); 5209: _M_refcount = __shared_count<_Lp>(std::move(__r)); 5209: _M_enable_shared_from_this_with(__tmp); 5209: } 5209: 5209: template 5209: template 5209: inline 5209: shared_ptr<_Tp>::shared_ptr(std::auto_ptr<_Tp1>&& __r) 5209: : __shared_ptr<_Tp>(std::move(__r)) { } 5209: 5209: template 5209: template 5209: inline 5209: unique_ptr<_Tp, _Dp>::unique_ptr(auto_ptr<_Up>&& __u) noexcept 5209: : _M_t(__u.release(), deleter_type()) { } 5209: 5209: 5209: #pragma GCC diagnostic pop 5209: 5209: 5209: } 5209: # 87 "/usr/include/c++/10/memory" 2 3 5209: # 99 "/usr/include/c++/10/memory" 3 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: # 121 "/usr/include/c++/10/memory" 3 5209: inline void* 5209: align(size_t __align, size_t __size, void*& __ptr, size_t& __space) noexcept 5209: { 5209: 5209: const auto __intptr = reinterpret_cast(__ptr); 5209: 5209: 5209: 5209: 5209: 5209: 5209: const auto __aligned = (__intptr - 1u + __align) & -__align; 5209: const auto __diff = __aligned - __intptr; 5209: if ((__size + __diff) > __space) 5209: return nullptr; 5209: else 5209: { 5209: __space -= __diff; 5209: return __ptr = reinterpret_cast(__aligned); 5209: } 5209: } 5209: # 157 "/usr/include/c++/10/memory" 3 5209: enum class pointer_safety { relaxed, preferred, strict }; 5209: 5209: 5209: inline void 5209: declare_reachable(void*) { } 5209: 5209: 5209: template 5209: inline _Tp* 5209: undeclare_reachable(_Tp* __p) { return __p; } 5209: 5209: 5209: inline void 5209: declare_no_pointers(char*, size_t) { } 5209: 5209: 5209: inline void 5209: undeclare_no_pointers(char*, size_t) { } 5209: 5209: 5209: inline pointer_safety 5209: get_pointer_safety() noexcept { return pointer_safety::relaxed; } 5209: # 397 "/usr/include/c++/10/memory" 3 5209: 5209: } 5209: # 45 "/usr/include/c++/10/thread" 2 3 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: # 1 "/usr/include/c++/10/cerrno" 1 3 5209: # 39 "/usr/include/c++/10/cerrno" 3 5209: 5209: # 40 "/usr/include/c++/10/cerrno" 3 5209: # 53 "/usr/include/c++/10/thread" 2 3 5209: 5209: 5209: 5209: 5209: 5209: 5209: namespace std __attribute__ ((__visibility__ ("default"))) 5209: { 5209: 5209: # 72 "/usr/include/c++/10/thread" 3 5209: class thread 5209: { 5209: public: 5209: 5209: 5209: struct _State 5209: { 5209: virtual ~_State(); 5209: virtual void _M_run() = 0; 5209: }; 5209: using _State_ptr = unique_ptr<_State>; 5209: 5209: typedef __gthread_t native_handle_type; 5209: 5209: 5209: class id 5209: { 5209: native_handle_type _M_thread; 5209: 5209: public: 5209: id() noexcept : _M_thread() { } 5209: 5209: explicit 5209: id(native_handle_type __id) : _M_thread(__id) { } 5209: 5209: private: 5209: friend class thread; 5209: friend class hash; 5209: 5209: friend bool 5209: operator==(thread::id __x, thread::id __y) noexcept; 5209: 5209: friend bool 5209: operator<(thread::id __x, thread::id __y) noexcept; 5209: 5209: template 5209: friend basic_ostream<_CharT, _Traits>& 5209: operator<<(basic_ostream<_CharT, _Traits>& __out, thread::id __id); 5209: }; 5209: 5209: private: 5209: id _M_id; 5209: 5209: 5209: 5209: 5209: template 5209: using __not_same = __not_, thread>>; 5209: 5209: public: 5209: thread() noexcept = default; 5209: 5209: template>> 5209: explicit 5209: thread(_Callable&& __f, _Args&&... __args) 5209: { 5209: static_assert( __is_invocable::type, 5209: typename decay<_Args>::type...>::value, 5209: "std::thread arguments must be invocable after conversion to rvalues" 5209: ); 5209: 5209: 5209: 5209: auto __depend = reinterpret_cast(&pthread_create); 5209: 5209: 5209: 5209: 5209: using _Invoker_type = _Invoker<__decayed_tuple<_Callable, _Args...>>; 5209: 5209: _M_start_thread(_S_make_state<_Invoker_type>( 5209: std::forward<_Callable>(__f), std::forward<_Args>(__args)...), 5209: __depend); 5209: } 5209: 5209: ~thread() 5209: { 5209: if (joinable()) 5209: std::terminate(); 5209: } 5209: 5209: thread(const thread&) = delete; 5209: 5209: thread(thread&& __t) noexcept 5209: { swap(__t); } 5209: 5209: thread& operator=(const thread&) = delete; 5209: 5209: thread& operator=(thread&& __t) noexcept 5209: { 5209: if (joinable()) 5209: std::terminate(); 5209: swap(__t); 5209: return *this; 5209: } 5209: 5209: void 5209: swap(thread& __t) noexcept 5209: { std::swap(_M_id, __t._M_id); } 5209: 5209: bool 5209: joinable() const noexcept 5209: { return !(_M_id == id()); } 5209: 5209: void 5209: join(); 5209: 5209: void 5209: detach(); 5209: 5209: thread::id 5209: get_id() const noexcept 5209: { return _M_id; } 5209: 5209: 5209: 5209: native_handle_type 5209: native_handle() 5209: { return _M_id._M_thread; } 5209: 5209: 5209: static unsigned int 5209: hardware_concurrency() noexcept; 5209: 5209: private: 5209: template 5209: struct _State_impl : public _State 5209: { 5209: _Callable _M_func; 5209: 5209: template 5209: _State_impl(_Args&&... __args) 5209: : _M_func{{std::forward<_Args>(__args)...}} 5209: { } 5209: 5209: void 5209: _M_run() { _M_func(); } 5209: }; 5209: 5209: void 5209: _M_start_thread(_State_ptr, void (*)()); 5209: 5209: template 5209: static _State_ptr 5209: _S_make_state(_Args&&... __args) 5209: { 5209: using _Impl = _State_impl<_Callable>; 5209: return _State_ptr{new _Impl{std::forward<_Args>(__args)...}}; 5209: } 5209: # 241 "/usr/include/c++/10/thread" 3 5209: private: 5209: 5209: template 5209: struct _Invoker 5209: { 5209: _Tuple _M_t; 5209: 5209: template 5209: struct __result; 5209: template 5209: struct __result> 5209: : __invoke_result<_Fn, _Args...> 5209: { }; 5209: 5209: template 5209: typename __result<_Tuple>::type 5209: _M_invoke(_Index_tuple<_Ind...>) 5209: { return std::__invoke(std::get<_Ind>(std::move(_M_t))...); } 5209: 5209: typename __result<_Tuple>::type 5209: operator()() 5209: { 5209: using _Indices 5209: = typename _Build_index_tuple::value>::__type; 5209: return _M_invoke(_Indices()); 5209: } 5209: }; 5209: 5209: template 5209: using __decayed_tuple = tuple::type...>; 5209: 5209: public: 5209: 5209: 5209: template 5209: static _Invoker<__decayed_tuple<_Callable, _Args...>> 5209: __make_invoker(_Callable&& __callable, _Args&&... __args) 5209: { 5209: return { __decayed_tuple<_Callable, _Args...>{ 5209: std::forward<_Callable>(__callable), std::forward<_Args>(__args)... 5209: } }; 5209: } 5209: }; 5209: 5209: inline void 5209: swap(thread& __x, thread& __y) noexcept 5209: { __x.swap(__y); } 5209: 5209: inline bool 5209: operator==(thread::id __x, thread::id __y) noexcept 5209: { 5209: 5209: 5209: 5209: 5209: return __x._M_thread == __y._M_thread; 5209: } 5209: 5209: inline bool 5209: operator!=(thread::id __x, thread::id __y) noexcept 5209: { return !(__x == __y); } 5209: 5209: inline bool 5209: operator<(thread::id __x, thread::id __y) noexcept 5209: { 5209: 5209: 5209: return __x._M_thread < __y._M_thread; 5209: } 5209: 5209: inline bool 5209: operator<=(thread::id __x, thread::id __y) noexcept 5209: { return !(__y < __x); } 5209: 5209: inline bool 5209: operator>(thread::id __x, thread::id __y) noexcept 5209: { return __y < __x; } 5209: 5209: inline bool 5209: operator>=(thread::id __x, thread::id __y) noexcept 5209: { return !(__x < __y); } 5209: 5209: 5209: 5209: template<> 5209: struct hash 5209: : public __hash_base 5209: { 5209: size_t 5209: operator()(const thread::id& __id) const noexcept 5209: { return std::_Hash_impl::hash(__id._M_thread); } 5209: }; 5209: 5209: template 5209: inline basic_ostream<_CharT, _Traits>& 5209: operator<<(basic_ostream<_CharT, _Traits>& __out, thread::id __id) 5209: { 5209: if (__id == thread::id()) 5209: return __out << "thread::id of a non-executing thread"; 5209: else 5209: return __out << __id._M_thread; 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: namespace this_thread 5209: { 5209: 5209: inline thread::id 5209: get_id() noexcept 5209: { 5209: 5209: 5209: 5209: 5209: 5209: if (!__gthread_active_p()) 5209: return thread::id(1); 5209: 5209: return thread::id(__gthread_self()); 5209: } 5209: 5209: 5209: inline void 5209: yield() noexcept 5209: { 5209: 5209: __gthread_yield(); 5209: 5209: } 5209: 5209: void 5209: __sleep_for(chrono::seconds, chrono::nanoseconds); 5209: 5209: 5209: template 5209: inline void 5209: sleep_for(const chrono::duration<_Rep, _Period>& __rtime) 5209: { 5209: if (__rtime <= __rtime.zero()) 5209: return; 5209: auto __s = chrono::duration_cast(__rtime); 5209: auto __ns = chrono::duration_cast(__rtime - __s); 5209: 5209: __gthread_time_t __ts = 5209: { 5209: static_cast(__s.count()), 5209: static_cast(__ns.count()) 5209: }; 5209: while (::nanosleep(&__ts, &__ts) == -1 && (*__errno_location ()) == 4) 5209: { } 5209: 5209: 5209: 5209: } 5209: 5209: 5209: template 5209: inline void 5209: sleep_until(const chrono::time_point<_Clock, _Duration>& __atime) 5209: { 5209: auto __now = _Clock::now(); 5209: if (_Clock::is_steady) 5209: { 5209: if (__now < __atime) 5209: sleep_for(__atime - __now); 5209: return; 5209: } 5209: while (__now < __atime) 5209: { 5209: sleep_for(__atime - __now); 5209: __now = _Clock::now(); 5209: } 5209: } 5209: } 5209: # 550 "/usr/include/c++/10/thread" 3 5209: 5209: } 5209: # 25 "/<>/test/../public/../internal/multi_thread_gemm.h" 2 5209: 5209: 5209: # 1 "/<>/test/../public/../internal/single_thread_gemm.h" 1 5209: # 22 "/<>/test/../public/../internal/single_thread_gemm.h" 5209: # 1 "/usr/include/c++/10/cassert" 1 3 5209: # 41 "/usr/include/c++/10/cassert" 3 5209: 5209: # 42 "/usr/include/c++/10/cassert" 3 5209: 5209: 5209: # 1 "/usr/include/assert.h" 1 3 4 5209: # 45 "/usr/include/c++/10/cassert" 2 3 5209: # 23 "/<>/test/../public/../internal/single_thread_gemm.h" 2 5209: 5209: 5209: # 1 "/<>/test/../public/../internal/allocator.h" 1 5209: # 42 "/<>/test/../public/../internal/allocator.h" 5209: # 1 "/<>/test/../public/../internal/common.h" 1 5209: # 43 "/<>/test/../public/../internal/allocator.h" 2 5209: 5209: 5209: # 44 "/<>/test/../public/../internal/allocator.h" 5209: namespace gemmlowp { 5209: 5209: enum class TypeId : std::uint8_t { Uint8, Int8, Uint16, Int16, Uint32, Int32 }; 5209: 5209: template 5209: struct GetTypeIdImpl {}; 5209: 5209: template 5209: inline TypeId GetTypeId() { 5209: return GetTypeIdImpl::Value; 5209: } 5209: 5209: template 5209: struct GetTypeIdImpl : GetTypeIdImpl {}; 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: template <> struct GetTypeIdImpl { static const TypeId Value = TypeId::Uint8; }; 5209: template <> struct GetTypeIdImpl { static const TypeId Value = TypeId::Int8; }; 5209: template <> struct GetTypeIdImpl { static const TypeId Value = TypeId::Uint16; }; 5209: template <> struct GetTypeIdImpl { static const TypeId Value = TypeId::Int16; }; 5209: template <> struct GetTypeIdImpl { static const TypeId Value = TypeId::Uint32; }; 5209: template <> struct GetTypeIdImpl { static const TypeId Value = TypeId::Int32; }; 5209: 5209: class Allocator { 5209: public: 5209: Allocator() 5209: : committed_(false), 5209: storage_size_(0), 5209: storage_(nullptr), 5209: reserved_blocks_(0), 5209: reserved_bytes_(0), 5209: generation_(0) {} 5209: 5209: ~Allocator() { 5209: 5209: # 83 "/<>/test/../public/../internal/allocator.h" 3 4 5209: (static_cast ( 5209: # 83 "/<>/test/../public/../internal/allocator.h" 5209: !committed_ 5209: # 83 "/<>/test/../public/../internal/allocator.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 83 "/<>/test/../public/../internal/allocator.h" 5209: "!committed_" 5209: # 83 "/<>/test/../public/../internal/allocator.h" 3 4 5209: , "/<>/test/../public/../internal/allocator.h", 83, __extension__ __PRETTY_FUNCTION__)) 5209: # 83 "/<>/test/../public/../internal/allocator.h" 5209: ; 5209: 5209: # 84 "/<>/test/../public/../internal/allocator.h" 3 4 5209: (static_cast ( 5209: # 84 "/<>/test/../public/../internal/allocator.h" 5209: !reserved_blocks_ 5209: # 84 "/<>/test/../public/../internal/allocator.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 84 "/<>/test/../public/../internal/allocator.h" 5209: "!reserved_blocks_" 5209: # 84 "/<>/test/../public/../internal/allocator.h" 3 4 5209: , "/<>/test/../public/../internal/allocator.h", 84, __extension__ __PRETTY_FUNCTION__)) 5209: # 84 "/<>/test/../public/../internal/allocator.h" 5209: ; 5209: DeallocateStorage(); 5209: } 5209: 5209: 5209: static const std::size_t kAlignment = kDefaultCacheLineSize; 5209: 5209: 5209: 5209: static const std::size_t kMaxBlocks = 5; 5209: 5209: void Commit() { 5209: 5209: # 96 "/<>/test/../public/../internal/allocator.h" 3 4 5209: (static_cast ( 5209: # 96 "/<>/test/../public/../internal/allocator.h" 5209: !committed_ 5209: # 96 "/<>/test/../public/../internal/allocator.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 96 "/<>/test/../public/../internal/allocator.h" 5209: "!committed_" 5209: # 96 "/<>/test/../public/../internal/allocator.h" 3 4 5209: , "/<>/test/../public/../internal/allocator.h", 96, __extension__ __PRETTY_FUNCTION__)) 5209: # 96 "/<>/test/../public/../internal/allocator.h" 5209: ; 5209: 5209: if (reserved_bytes_ > storage_size_) { 5209: DeallocateStorage(); 5209: storage_size_ = RoundUpToPowerOfTwo(reserved_bytes_); 5209: storage_ = aligned_alloc(kAlignment, storage_size_); 5209: } 5209: 5209: ReleaseBuildAssertion(!storage_size_ || storage_, "allocation failure"); 5209: committed_ = true; 5209: } 5209: 5209: void Decommit() { 5209: 5209: # 109 "/<>/test/../public/../internal/allocator.h" 3 4 5209: (static_cast ( 5209: # 109 "/<>/test/../public/../internal/allocator.h" 5209: committed_ 5209: # 109 "/<>/test/../public/../internal/allocator.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 109 "/<>/test/../public/../internal/allocator.h" 5209: "committed_" 5209: # 109 "/<>/test/../public/../internal/allocator.h" 3 4 5209: , "/<>/test/../public/../internal/allocator.h", 109, __extension__ __PRETTY_FUNCTION__)) 5209: # 109 "/<>/test/../public/../internal/allocator.h" 5209: ; 5209: committed_ = false; 5209: generation_++; 5209: 5209: reserved_blocks_ = 0; 5209: reserved_bytes_ = 0; 5209: } 5209: 5209: 5209: typedef std::size_t generation_t; 5209: 5209: 5209: 5209: 5209: class Handle { 5209: std::uint8_t index_; 5209: generation_t generation_; 5209: TypeId type_; 5209: 5209: friend class Allocator; 5209: }; 5209: 5209: 5209: 5209: template 5209: Handle Reserve(std::size_t n) { 5209: 5209: # 135 "/<>/test/../public/../internal/allocator.h" 3 4 5209: (static_cast ( 5209: # 135 "/<>/test/../public/../internal/allocator.h" 5209: !committed_ && "can't reserve blocks while committed" 5209: # 135 "/<>/test/../public/../internal/allocator.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 135 "/<>/test/../public/../internal/allocator.h" 5209: "!committed_ && \"can't reserve blocks while committed\"" 5209: # 135 "/<>/test/../public/../internal/allocator.h" 3 4 5209: , "/<>/test/../public/../internal/allocator.h", 135, __extension__ __PRETTY_FUNCTION__)) 5209: # 135 "/<>/test/../public/../internal/allocator.h" 5209: ; 5209: 5209: # 136 "/<>/test/../public/../internal/allocator.h" 3 4 5209: (static_cast ( 5209: # 136 "/<>/test/../public/../internal/allocator.h" 5209: reserved_blocks_ < kMaxBlocks && "didn't expect to allocate this many blocks" 5209: # 136 "/<>/test/../public/../internal/allocator.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 136 "/<>/test/../public/../internal/allocator.h" 5209: "reserved_blocks_ < kMaxBlocks && \"didn't expect to allocate this many blocks\"" 5209: # 136 "/<>/test/../public/../internal/allocator.h" 3 4 5209: , "/<>/test/../public/../internal/allocator.h", 136, __extension__ __PRETTY_FUNCTION__)) 5209: 5209: # 137 "/<>/test/../public/../internal/allocator.h" 5209: ; 5209: const std::size_t bytes = RoundUp(n * sizeof(T)); 5209: const std::size_t offset = reserved_bytes_; 5209: const std::size_t index = reserved_blocks_; 5209: 5209: reserved_blocks_offsets_[index] = offset; 5209: Handle h; 5209: h.index_ = index; 5209: h.generation_ = generation_; 5209: h.type_ = GetTypeId(); 5209: 5209: reserved_blocks_++; 5209: reserved_bytes_ += bytes; 5209: 5209: return h; 5209: } 5209: 5209: 5209: 5209: template 5209: T* GetPointer(const Handle& h) const { 5209: 5209: # 158 "/<>/test/../public/../internal/allocator.h" 3 4 5209: (static_cast ( 5209: # 158 "/<>/test/../public/../internal/allocator.h" 5209: committed_ && "can't get block pointers unless committed" 5209: # 158 "/<>/test/../public/../internal/allocator.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 158 "/<>/test/../public/../internal/allocator.h" 5209: "committed_ && \"can't get block pointers unless committed\"" 5209: # 158 "/<>/test/../public/../internal/allocator.h" 3 4 5209: , "/<>/test/../public/../internal/allocator.h", 158, __extension__ __PRETTY_FUNCTION__)) 5209: # 158 "/<>/test/../public/../internal/allocator.h" 5209: ; 5209: 5209: # 159 "/<>/test/../public/../internal/allocator.h" 3 4 5209: (static_cast ( 5209: # 159 "/<>/test/../public/../internal/allocator.h" 5209: h.index_ < reserved_blocks_ && "bad handle, points to inexistant block" 5209: # 159 "/<>/test/../public/../internal/allocator.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 159 "/<>/test/../public/../internal/allocator.h" 5209: "h.index_ < reserved_blocks_ && \"bad handle, points to inexistant block\"" 5209: # 159 "/<>/test/../public/../internal/allocator.h" 3 4 5209: , "/<>/test/../public/../internal/allocator.h", 159, __extension__ __PRETTY_FUNCTION__)) 5209: 5209: # 160 "/<>/test/../public/../internal/allocator.h" 5209: ; 5209: 5209: # 161 "/<>/test/../public/../internal/allocator.h" 3 4 5209: (static_cast ( 5209: # 161 "/<>/test/../public/../internal/allocator.h" 5209: h.generation_ == generation_ && "handle from earlier generation, have decommitted since" 5209: # 161 "/<>/test/../public/../internal/allocator.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 161 "/<>/test/../public/../internal/allocator.h" 5209: "h.generation_ == generation_ && \"handle from earlier generation, have decommitted since\"" 5209: # 161 "/<>/test/../public/../internal/allocator.h" 3 4 5209: , "/<>/test/../public/../internal/allocator.h", 161, __extension__ __PRETTY_FUNCTION__)) 5209: 5209: # 162 "/<>/test/../public/../internal/allocator.h" 5209: ; 5209: 5209: # 163 "/<>/test/../public/../internal/allocator.h" 3 4 5209: (static_cast ( 5209: # 163 "/<>/test/../public/../internal/allocator.h" 5209: h.type_ == GetTypeId() && "type mismatch" 5209: # 163 "/<>/test/../public/../internal/allocator.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 163 "/<>/test/../public/../internal/allocator.h" 5209: "h.type_ == GetTypeId() && \"type mismatch\"" 5209: # 163 "/<>/test/../public/../internal/allocator.h" 3 4 5209: , "/<>/test/../public/../internal/allocator.h", 163, __extension__ __PRETTY_FUNCTION__)) 5209: # 163 "/<>/test/../public/../internal/allocator.h" 5209: ; 5209: std::size_t offset = reserved_blocks_offsets_[h.index_]; 5209: std::uintptr_t addr = reinterpret_cast(storage_) + offset; 5209: return reinterpret_cast(addr); 5209: } 5209: 5209: private: 5209: void DeallocateStorage() { 5209: 5209: # 171 "/<>/test/../public/../internal/allocator.h" 3 4 5209: (static_cast ( 5209: # 171 "/<>/test/../public/../internal/allocator.h" 5209: !committed_ 5209: # 171 "/<>/test/../public/../internal/allocator.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 171 "/<>/test/../public/../internal/allocator.h" 5209: "!committed_" 5209: # 171 "/<>/test/../public/../internal/allocator.h" 3 4 5209: , "/<>/test/../public/../internal/allocator.h", 171, __extension__ __PRETTY_FUNCTION__)) 5209: # 171 "/<>/test/../public/../internal/allocator.h" 5209: ; 5209: aligned_free(storage_); 5209: storage_size_ = 0; 5209: } 5209: 5209: 5209: bool committed_; 5209: 5209: 5209: std::size_t storage_size_; 5209: mutable void* storage_; 5209: 5209: 5209: std::size_t reserved_blocks_; 5209: 5209: std::size_t reserved_bytes_; 5209: 5209: std::size_t reserved_blocks_offsets_[kMaxBlocks]; 5209: 5209: 5209: 5209: generation_t generation_; 5209: }; 5209: 5209: } 5209: # 26 "/<>/test/../public/../internal/single_thread_gemm.h" 2 5209: # 1 "/<>/test/../public/../internal/compute.h" 1 5209: # 22 "/<>/test/../public/../internal/compute.h" 5209: # 1 "/<>/test/../public/../internal/block_params.h" 1 5209: # 23 "/<>/test/../public/../internal/block_params.h" 5209: namespace gemmlowp { 5209: # 32 "/<>/test/../public/../internal/block_params.h" 5209: struct BlockParams { 5209: 5209: 5209: int l1_rows; 5209: int l1_cols; 5209: int l1_depth; 5209: 5209: 5209: 5209: int l2_rows; 5209: int l2_cols; 5209: int l2_depth; 5209: 5209: template 5209: void Init(int rows, int cols, int depth, int num_threads, int l1_bytes_to_use, 5209: int l2_bytes_to_use, float l2_rhs_factor) { 5209: FindL2BlockSizes(rows, cols, depth, num_threads, 5209: l2_bytes_to_use, l2_rhs_factor, &l2_rows, 5209: &l2_cols, &l2_depth); 5209: FindL1BlockSizes(l2_rows, l2_cols, l2_depth, l1_bytes_to_use, 5209: &l1_rows, &l1_cols, &l1_depth); 5209: } 5209: 5209: template 5209: static void FindL2BlockSizes(int rows, int cols, int depth, int num_threads, 5209: int l2_bytes_to_use, float l2_rhs_factor, 5209: int* out_l2_rows, int* out_l2_cols, 5209: int* out_l2_depth) { 5209: int l2_rows = 0; 5209: int l2_cols = 0; 5209: int l2_depth = 0; 5209: 5209: int per_thread_rows = 5209: std::max(1, RoundUp(rows) / num_threads); 5209: 5209: 5209: 5209: 5209: 5209: 5209: l2_depth = RoundUp(depth); 5209: 5209: { 5209: int max_cache_friendly_l2_cols = std::max( 5209: 1, static_cast(l2_rhs_factor * (l2_bytes_to_use / l2_depth))); 5209: int min_l2_cols_blocks = 5209: std::max(1, CeilQuotient(cols, max_cache_friendly_l2_cols)); 5209: l2_cols = 5209: RoundUp(CeilQuotient(cols, min_l2_cols_blocks)); 5209: } 5209: 5209: 5209: 5209: 5209: if (l2_rhs_factor == 1.0f) { 5209: l2_rows = RoundUp(per_thread_rows); 5209: } else { 5209: int max_cache_friendly_l2_rows = 5209: std::max(1, (l2_bytes_to_use - l2_depth * l2_cols) / 5209: (num_threads * (l2_depth + 4 * l2_cols))); 5209: int min_l2_rows_blocks = std::max( 5209: 1, CeilQuotient(per_thread_rows, max_cache_friendly_l2_rows)); 5209: l2_rows = RoundUp( 5209: CeilQuotient(per_thread_rows, min_l2_rows_blocks)); 5209: } 5209: 5209: *out_l2_rows = l2_rows; 5209: *out_l2_cols = l2_cols; 5209: *out_l2_depth = l2_depth; 5209: } 5209: 5209: template 5209: static void FindL1BlockSizes(int rows, int cols, int depth, 5209: int l1_bytes_to_use, int* out_l1_rows, 5209: int* out_l1_cols, int* out_l1_depth) { 5209: int l1_rows = 0; 5209: int l1_cols = 0; 5209: int l1_depth = 0; 5209: 5209: 5209: 5209: # 112 "/<>/test/../public/../internal/block_params.h" 3 4 5209: (static_cast ( 5209: # 112 "/<>/test/../public/../internal/block_params.h" 5209: rows % KernelFormat::kRows == 0 5209: # 112 "/<>/test/../public/../internal/block_params.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 112 "/<>/test/../public/../internal/block_params.h" 5209: "rows % KernelFormat::kRows == 0" 5209: # 112 "/<>/test/../public/../internal/block_params.h" 3 4 5209: , "/<>/test/../public/../internal/block_params.h", 112, __extension__ __PRETTY_FUNCTION__)) 5209: # 112 "/<>/test/../public/../internal/block_params.h" 5209: ; 5209: 5209: # 113 "/<>/test/../public/../internal/block_params.h" 3 4 5209: (static_cast ( 5209: # 113 "/<>/test/../public/../internal/block_params.h" 5209: cols % KernelFormat::kCols == 0 5209: # 113 "/<>/test/../public/../internal/block_params.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 113 "/<>/test/../public/../internal/block_params.h" 5209: "cols % KernelFormat::kCols == 0" 5209: # 113 "/<>/test/../public/../internal/block_params.h" 3 4 5209: , "/<>/test/../public/../internal/block_params.h", 113, __extension__ __PRETTY_FUNCTION__)) 5209: # 113 "/<>/test/../public/../internal/block_params.h" 5209: ; 5209: 5209: # 114 "/<>/test/../public/../internal/block_params.h" 3 4 5209: (static_cast ( 5209: # 114 "/<>/test/../public/../internal/block_params.h" 5209: depth % KernelFormat::kDepth == 0 5209: # 114 "/<>/test/../public/../internal/block_params.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 114 "/<>/test/../public/../internal/block_params.h" 5209: "depth % KernelFormat::kDepth == 0" 5209: # 114 "/<>/test/../public/../internal/block_params.h" 3 4 5209: , "/<>/test/../public/../internal/block_params.h", 114, __extension__ __PRETTY_FUNCTION__)) 5209: # 114 "/<>/test/../public/../internal/block_params.h" 5209: ; 5209: 5209: 5209: 5209: l1_cols = cols; 5209: 5209: { 5209: int max_cache_friendly_l1_depth = std::max( 5209: 1, (l1_bytes_to_use - 4 * KernelFormat::kRows * KernelFormat::kCols) / 5209: (KernelFormat::kRows + KernelFormat::kCols)); 5209: int min_l1_depth_blocks = 5209: std::max(1, CeilQuotient(depth, max_cache_friendly_l1_depth)); 5209: l1_depth = 5209: RoundUp(CeilQuotient(depth, min_l1_depth_blocks)); 5209: } 5209: 5209: { 5209: int max_cache_friendly_l1_rows = 5209: std::max(1, l1_bytes_to_use / (l1_depth + 4 * l1_cols)); 5209: int min_l1_rows_blocks = 5209: std::max(1, CeilQuotient(rows, max_cache_friendly_l1_rows)); 5209: l1_rows = 5209: RoundUp(CeilQuotient(rows, min_l1_rows_blocks)); 5209: } 5209: 5209: *out_l1_rows = l1_rows; 5209: *out_l1_cols = l1_cols; 5209: *out_l1_depth = l1_depth; 5209: } 5209: }; 5209: 5209: 5209: 5209: 5209: 5209: 5209: struct SideBlockParams { 5209: 5209: 5209: int l1_width; 5209: int l1_depth; 5209: 5209: 5209: 5209: int l2_width; 5209: int l2_depth; 5209: }; 5209: 5209: enum class Side { Lhs, Rhs }; 5209: 5209: inline void GetSideBlockParams(Side side, SideBlockParams* side_block_params, 5209: const BlockParams& block_params) { 5209: side_block_params->l1_width = 5209: side == Side::Lhs ? block_params.l1_rows : block_params.l1_cols; 5209: side_block_params->l2_width = 5209: side == Side::Lhs ? block_params.l2_rows : block_params.l2_cols; 5209: 5209: side_block_params->l1_depth = block_params.l1_depth; 5209: side_block_params->l2_depth = block_params.l2_depth; 5209: } 5209: 5209: } 5209: # 23 "/<>/test/../public/../internal/compute.h" 2 5209: # 1 "/<>/test/../public/../internal/kernel.h" 1 5209: # 24 "/<>/test/../public/../internal/compute.h" 2 5209: # 1 "/<>/test/../public/../internal/pack.h" 1 5209: # 30 "/<>/test/../public/../internal/pack.h" 5209: # 1 "/usr/include/c++/10/cstring" 1 3 5209: # 39 "/usr/include/c++/10/cstring" 3 5209: 5209: # 40 "/usr/include/c++/10/cstring" 3 5209: # 31 "/<>/test/../public/../internal/pack.h" 2 5209: 5209: 5209: 5209: 5209: 5209: 5209: namespace gemmlowp { 5209: # 46 "/<>/test/../public/../internal/pack.h" 5209: template 5209: class PackedSideBlock { 5209: public: 5209: typedef tKernelSideFormat KernelSideFormat; 5209: 5209: PackedSideBlock(Side side, Allocator* allocator, 5209: const BlockParams& block_params) 5209: : allocator_(allocator), pos_(0) { 5209: GetSideBlockParams(side, ¶ms_, block_params); 5209: data_handle_ = 5209: allocator_->Reserve(params_.l2_width * params_.l2_depth); 5209: sums_of_each_slice_handle_ = 5209: allocator_->Reserve(params_.l2_width); 5209: } 5209: 5209: ~PackedSideBlock() {} 5209: 5209: void seek_run(int start_width, int start_depth) const { 5209: int kernel_run_depth = 5209: std::min(params_.l1_depth, params_.l2_depth - start_depth); 5209: pos_ = params_.l2_width * start_depth + start_width * kernel_run_depth; 5209: } 5209: 5209: void seek_next_cell() const { pos_ += KernelSideFormat::Cell::kSize; } 5209: 5209: void seek_forward_n_cells(int n) const { 5209: pos_ += n * KernelSideFormat::Cell::kSize; 5209: } 5209: 5209: 5209: 5209: 5209: 5209: const std::uint8_t* current_data() const { 5209: return allocator_->GetPointer(data_handle_) + pos_; 5209: } 5209: 5209: std::uint8_t* current_data() { 5209: return allocator_->GetPointer(data_handle_) + pos_; 5209: } 5209: 5209: std::int32_t* sums_of_each_slice() { 5209: return allocator_->GetPointer(sums_of_each_slice_handle_); 5209: } 5209: 5209: const std::int32_t* sums_of_each_slice() const { 5209: return allocator_->GetPointer( 5209: sums_of_each_slice_handle_); 5209: } 5209: 5209: const SideBlockParams& params() const { return params_; } 5209: 5209: private: 5209: 5209: 5209: 5209: 5209: SideBlockParams params_; 5209: 5209: 5209: 5209: Allocator* const allocator_; 5209: 5209: 5209: Allocator::Handle data_handle_; 5209: 5209: 5209: 5209: Allocator::Handle sums_of_each_slice_handle_; 5209: # 127 "/<>/test/../public/../internal/pack.h" 5209: mutable int pos_; 5209: }; 5209: # 137 "/<>/test/../public/../internal/pack.h" 5209: enum class SideMapOrder { WidthMajor, DepthMajor }; 5209: 5209: 5209: 5209: 5209: template 5209: class SideMap { 5209: public: 5209: typedef tScalar Scalar; 5209: static const SideMapOrder kOrder = tOrder; 5209: 5209: SideMap(Scalar* data, int width, int depth, int stride) 5209: : data_(data), width_(width), depth_(depth), stride_(stride) {} 5209: 5209: SideMap(Scalar* data, int width, int depth) 5209: : data_(data), width_(width), depth_(depth) { 5209: stride_ = kOrder == SideMapOrder::WidthMajor ? depth_ : width_; 5209: } 5209: 5209: SideMap(const SideMap& other) 5209: : data_(other.data_), 5209: width_(other.width_), 5209: depth_(other.depth_), 5209: stride_(other.stride_) {} 5209: 5209: int width() const { return width_; } 5209: int depth() const { return depth_; } 5209: int stride() const { return stride_; } 5209: int width_stride() const { 5209: return kOrder == SideMapOrder::DepthMajor ? 1 : stride_; 5209: } 5209: int depth_stride() const { 5209: return kOrder == SideMapOrder::WidthMajor ? 1 : stride_; 5209: } 5209: Scalar* data() const { return data_; } 5209: Scalar* data(int w, int d) const { 5209: return data_ + w * width_stride() + d * depth_stride(); 5209: } 5209: Scalar operator()(int w, int d) const { return *data(w, d); } 5209: Scalar& operator()(int w, int d) { return *data(w, d); } 5209: 5209: SideMap block(int start_width, int start_depth, int block_width, 5209: int block_depth) const { 5209: 5209: # 180 "/<>/test/../public/../internal/pack.h" 3 4 5209: (static_cast ( 5209: # 180 "/<>/test/../public/../internal/pack.h" 5209: start_width >= 0 5209: # 180 "/<>/test/../public/../internal/pack.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 180 "/<>/test/../public/../internal/pack.h" 5209: "start_width >= 0" 5209: # 180 "/<>/test/../public/../internal/pack.h" 3 4 5209: , "/<>/test/../public/../internal/pack.h", 180, __extension__ __PRETTY_FUNCTION__)) 5209: # 180 "/<>/test/../public/../internal/pack.h" 5209: ; 5209: 5209: # 181 "/<>/test/../public/../internal/pack.h" 3 4 5209: (static_cast ( 5209: # 181 "/<>/test/../public/../internal/pack.h" 5209: start_width + block_width <= width_ 5209: # 181 "/<>/test/../public/../internal/pack.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 181 "/<>/test/../public/../internal/pack.h" 5209: "start_width + block_width <= width_" 5209: # 181 "/<>/test/../public/../internal/pack.h" 3 4 5209: , "/<>/test/../public/../internal/pack.h", 181, __extension__ __PRETTY_FUNCTION__)) 5209: # 181 "/<>/test/../public/../internal/pack.h" 5209: ; 5209: 5209: # 182 "/<>/test/../public/../internal/pack.h" 3 4 5209: (static_cast ( 5209: # 182 "/<>/test/../public/../internal/pack.h" 5209: start_depth >= 0 5209: # 182 "/<>/test/../public/../internal/pack.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 182 "/<>/test/../public/../internal/pack.h" 5209: "start_depth >= 0" 5209: # 182 "/<>/test/../public/../internal/pack.h" 3 4 5209: , "/<>/test/../public/../internal/pack.h", 182, __extension__ __PRETTY_FUNCTION__)) 5209: # 182 "/<>/test/../public/../internal/pack.h" 5209: ; 5209: 5209: # 183 "/<>/test/../public/../internal/pack.h" 3 4 5209: (static_cast ( 5209: # 183 "/<>/test/../public/../internal/pack.h" 5209: start_depth + block_depth <= depth_ 5209: # 183 "/<>/test/../public/../internal/pack.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 183 "/<>/test/../public/../internal/pack.h" 5209: "start_depth + block_depth <= depth_" 5209: # 183 "/<>/test/../public/../internal/pack.h" 3 4 5209: , "/<>/test/../public/../internal/pack.h", 183, __extension__ __PRETTY_FUNCTION__)) 5209: # 183 "/<>/test/../public/../internal/pack.h" 5209: ; 5209: 5209: return SideMap(data(start_width, start_depth), block_width, block_depth, 5209: stride_); 5209: } 5209: 5209: private: 5209: Scalar* data_; 5209: int width_, depth_, stride_; 5209: }; 5209: # 210 "/<>/test/../public/../internal/pack.h" 5209: template 5209: class PackingRegisterBlockBase { 5209: public: 5209: typedef typename PackedSideBlock::KernelSideFormat KernelSideFormat; 5209: typedef typename KernelSideFormat::Cell CellFormat; 5209: typedef typename KernelSideFormat::InputScalar KernelInputScalar; 5209: typedef typename KernelSideFormat::Scalar KernelScalar; 5209: static const int kCells = KernelSideFormat::kCells; 5209: static const int kCellWidth = CellFormat::kWidth; 5209: static const int kKernelWidth = CellFormat::kWidth * kCells; 5209: static const int kCellDepth = CellFormat::kDepth; 5209: static const int kCellSize = CellFormat::kSize; 5209: static const SideMapOrder kSrcOrder = SrcMapType::kOrder; 5209: static const int kZeroPointInputValue = 5209: ZeroPointInputValue::kValue; 5209: 5209: PackingRegisterBlockBase() : complete_src_(nullptr, 0, 0, 0) {} 5209: 5209: protected: 5209: 5209: 5209: 5209: 5209: 5209: SrcMapType complete_src_; 5209: 5209: 5209: 5209: std::uint8_t buf_[kKernelWidth * kRegisterSize]; 5209: 5209: public: 5209: 5209: void UseCompleteSrcInPlace(const SrcMapType& src) { complete_src_ = src; } 5209: 5209: 5209: void MakeCompleteSrc(const SrcMapType& src) { 5209: memset(buf_, kZeroPointInputValue, kKernelWidth * kRegisterSize); 5209: if (kSrcOrder == SideMapOrder::WidthMajor) { 5209: for (int w = 0; w < src.width(); w++) { 5209: memcpy(buf_ + w * kRegisterSize, src.data(w, 0), src.depth()); 5209: } 5209: } else { 5209: 5209: # 252 "/<>/test/../public/../internal/pack.h" 3 4 5209: (static_cast ( 5209: # 252 "/<>/test/../public/../internal/pack.h" 5209: kSrcOrder == SideMapOrder::DepthMajor 5209: # 252 "/<>/test/../public/../internal/pack.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 252 "/<>/test/../public/../internal/pack.h" 5209: "kSrcOrder == SideMapOrder::DepthMajor" 5209: # 252 "/<>/test/../public/../internal/pack.h" 3 4 5209: , "/<>/test/../public/../internal/pack.h", 252, __extension__ __PRETTY_FUNCTION__)) 5209: # 252 "/<>/test/../public/../internal/pack.h" 5209: ; 5209: for (int d = 0; d < src.depth(); d++) { 5209: memcpy(buf_ + d * kKernelWidth, src.data(0, d), src.width()); 5209: } 5209: } 5209: 5209: 5209: complete_src_ = SrcMapType(reinterpret_cast(buf_), 5209: kKernelWidth, kRegisterSize); 5209: } 5209: 5209: 5209: 5209: void Pack(PackedSideBlock* dst, int start_width) { 5209: std::uint8_t* dst_ptr = dst->current_data(); 5209: for (int cell_start_depth = 0; cell_start_depth < kRegisterSize; 5209: cell_start_depth += kCellDepth) { 5209: for (int cell_start_width = 0; cell_start_width < kKernelWidth; 5209: cell_start_width += kCellWidth) { 5209: std::int32_t* cell_sums_of_each_slice_ptr = 5209: dst->sums_of_each_slice() + start_width + cell_start_width; 5209: const SideMap src_cell_map( 5209: complete_src_.block(cell_start_width, cell_start_depth, kCellWidth, 5209: kCellDepth)); 5209: for (int w = 0; w < kCellWidth; w++) { 5209: std::int32_t sum = 0; 5209: for (int d = 0; d < kCellDepth; d++) { 5209: const std::uint8_t src_val = src_cell_map(w, d); 5209: const std::int16_t kernel_val_unwrapped = 5209: src_val - kZeroPointInputValue; 5209: const std::uint8_t kernel_val_uint8 = kernel_val_unwrapped; 5209: dst_ptr[OffsetIntoCell(w, d)] = kernel_val_uint8; 5209: sum += kernel_val_unwrapped; 5209: } 5209: cell_sums_of_each_slice_ptr[w] += sum; 5209: } 5209: dst_ptr += kCellSize; 5209: } 5209: } 5209: dst->seek_forward_n_cells(kCells * kRegisterSize / kCellDepth); 5209: } 5209: }; 5209: 5209: template 5209: class PackingRegisterBlock 5209: : public PackingRegisterBlockBase {}; 5209: 5209: 5209: template 5209: class PackSideBlockImpl { 5209: public: 5209: typedef typename PackedSideBlock::KernelSideFormat KernelSideFormat; 5209: typedef typename KernelSideFormat::Cell CellFormat; 5209: static const int kCells = KernelSideFormat::kCells; 5209: static const int kCellWidth = CellFormat::kWidth; 5209: static const int kKernelWidth = CellFormat::kWidth * kCells; 5209: static const int kCellDepth = CellFormat::kDepth; 5209: 5209: typedef PackingRegisterBlock 5209: PackingRegisterBlockType; 5209: 5209: PackSideBlockImpl(PackedSideBlock* packed_side_block, 5209: const SrcMapType& src_map) 5209: : packed_side_block_(packed_side_block), src_map_(src_map) {} 5209: 5209: PackedSideBlock* packed_side_block() const { return packed_side_block_; } 5209: 5209: const SrcMapType& src_map() const { return src_map_; } 5209: 5209: 5209: void PackL2() { 5209: memset(packed_side_block_->sums_of_each_slice(), 0, 5209: sizeof(std::int32_t) * packed_side_block_->params().l2_width); 5209: for (int d = 0; d < src_map_.depth(); 5209: d += packed_side_block_->params().l1_depth) { 5209: int ds = std::min(packed_side_block_->params().l1_depth, 5209: src_map_.depth() - d); 5209: 5209: for (int w = 0; w < src_map_.width(); 5209: w += packed_side_block_->params().l1_width) { 5209: int ws = std::min(packed_side_block_->params().l1_width, 5209: src_map_.width() - w); 5209: 5209: PrefetchL1(w, ws, d, ds); 5209: PackL1(w, ws, d, ds); 5209: } 5209: } 5209: } 5209: 5209: protected: 5209: 5209: void PackL1(int start_width, int width, int start_depth, int depth) { 5209: for (int w = 0; w < width; w += kKernelWidth) { 5209: int ws = std::min(+kKernelWidth, width - w); 5209: packed_side_block_->seek_run(start_width + w, start_depth); 5209: PackRun(start_width + w, ws, start_depth, depth); 5209: } 5209: } 5209: 5209: 5209: void PrefetchL1(int start_width, int width, int start_depth, int depth) { 5209: if (SrcMapType::kOrder == SideMapOrder::WidthMajor) { 5209: for (int d = 0; d < depth; d += kDefaultCacheLineSize) { 5209: for (int w = 0; w < width; w += 1) { 5209: Prefetch(src_map_.data(start_width + w, start_depth + d)); 5209: } 5209: } 5209: } else { 5209: for (int d = 0; d < depth; d++) { 5209: for (int w = 0; w < width; w += kDefaultCacheLineSize) { 5209: Prefetch(src_map_.data(start_width + w, start_depth + d)); 5209: } 5209: } 5209: } 5209: } 5209: 5209: 5209: void PackRun(int start_width, int width, int start_depth, int depth) { 5209: PackingRegisterBlockType b; 5209: if (width == kKernelWidth) { 5209: const int register_aligned_depth = RoundDown(depth); 5209: if (register_aligned_depth) { 5209: for (int d = 0; d < register_aligned_depth; d += kRegisterSize) { 5209: b.UseCompleteSrcInPlace(src_map_.block(start_width, start_depth + d, 5209: width, kRegisterSize)); 5209: b.Pack(packed_side_block_, start_width); 5209: } 5209: } 5209: if (register_aligned_depth < depth) { 5209: b.MakeCompleteSrc( 5209: src_map_.block(start_width, start_depth + register_aligned_depth, 5209: width, depth - register_aligned_depth)); 5209: b.Pack(packed_side_block_, start_width); 5209: } 5209: } else { 5209: 5209: # 387 "/<>/test/../public/../internal/pack.h" 3 4 5209: (static_cast ( 5209: # 387 "/<>/test/../public/../internal/pack.h" 5209: width < kKernelWidth 5209: # 387 "/<>/test/../public/../internal/pack.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 387 "/<>/test/../public/../internal/pack.h" 5209: "width < kKernelWidth" 5209: # 387 "/<>/test/../public/../internal/pack.h" 3 4 5209: , "/<>/test/../public/../internal/pack.h", 387, __extension__ __PRETTY_FUNCTION__)) 5209: # 387 "/<>/test/../public/../internal/pack.h" 5209: ; 5209: for (int d = 0; d < depth; d += kRegisterSize) { 5209: const int ds = std::min(+kRegisterSize, depth - d); 5209: b.MakeCompleteSrc( 5209: src_map_.block(start_width, start_depth + d, width, ds)); 5209: b.Pack(packed_side_block_, start_width); 5209: } 5209: } 5209: } 5209: 5209: 5209: PackedSideBlock* const packed_side_block_; 5209: 5209: 5209: 5209: const SrcMapType& src_map_; 5209: }; 5209: 5209: 5209: template 5209: void PackLhs(PackedSideBlock* dst, const MatrixMapType& src) { 5209: ScopedProfilingLabel label("pack LHS"); 5209: static const SideMapOrder kSideMapOrder = 5209: MatrixMapType::kOrder == MapOrder::RowMajor ? SideMapOrder::WidthMajor 5209: : SideMapOrder::DepthMajor; 5209: typedef typename MatrixMapType::Scalar Scalar; 5209: typedef SideMap SideMapType; 5209: SideMapType src_side_map(src.data(), src.rows(), src.cols(), src.stride()); 5209: typedef PackSideBlockImpl ImplType; 5209: ImplType impl(dst, src_side_map); 5209: impl.PackL2(); 5209: } 5209: 5209: 5209: template 5209: void PackRhs(PackedSideBlock* dst, const MatrixMapType& src) { 5209: ScopedProfilingLabel label("pack RHS"); 5209: static const SideMapOrder kSideMapOrder = 5209: MatrixMapType::kOrder == MapOrder::ColMajor ? SideMapOrder::WidthMajor 5209: : SideMapOrder::DepthMajor; 5209: typedef typename MatrixMapType::Scalar Scalar; 5209: typedef SideMap SideMapType; 5209: SideMapType src_side_map(src.data(), src.cols(), src.rows(), src.stride()); 5209: typedef PackSideBlockImpl ImplType; 5209: ImplType impl(dst, src_side_map); 5209: impl.PackL2(); 5209: } 5209: 5209: } 5209: 5209: 5209: # 1 "/<>/test/../public/../internal/pack_neon.h" 1 5209: # 20 "/<>/test/../public/../internal/pack_neon.h" 5209: # 1 "/<>/test/../public/../internal/pack.h" 1 5209: # 21 "/<>/test/../public/../internal/pack_neon.h" 2 5209: 5209: 5209: 5209: namespace gemmlowp { 5209: 5209: typedef SideMap 5209: WidthMajorUint8SideMap; 5209: 5209: typedef SideMap 5209: WidthMajorInt8SideMap; 5209: 5209: template 5209: using DepthMajorSideFormatNCells4x2 = KernelSideFormat, Cells>; 5209: 5209: template 5209: class PackingRegisterBlock< 5209: WidthMajorUint8SideMap, 5209: PackedSideBlock>> 5209: : public PackingRegisterBlockBase< 5209: WidthMajorUint8SideMap, 5209: PackedSideBlock>> { 5209: public: 5209: typedef DepthMajorSideFormatNCells4x2 KernelSideFormat; 5209: typedef typename KernelSideFormat::Cell CellFormat; 5209: static const int kCells = KernelSideFormat::kCells; 5209: static const int kCellWidth = CellFormat::kWidth; 5209: static const int kKernelWidth = CellFormat::kWidth * kCells; 5209: static const int kCellDepth = CellFormat::kDepth; 5209: static const int kCellSize = CellFormat::kSize; 5209: 5209: void Pack(PackedSideBlock* dst, int start_width) { 5209: std::uint8_t* dst_ptr = dst->current_data(); 5209: const std::uint8_t* const src_ptr = this->complete_src_.data(); 5209: const int stride = this->complete_src_.stride(); 5209: 5209: uint8x16_t src_lines[4 * kCells]; 5209: for (int i = 0; i < 4 * kCells; i++) { 5209: src_lines[i] = vld1q_u8(src_ptr + i * stride); 5209: } 5209: 5209: uint8x16x2_t src_lines_intertwined_2x[2 * kCells]; 5209: for (int i = 0; i < kCells; i++) { 5209: src_lines_intertwined_2x[2 * i] = 5209: vzipq_u8(src_lines[4 * i], src_lines[4 * i + 2]); 5209: src_lines_intertwined_2x[2 * i + 1] = 5209: vzipq_u8(src_lines[4 * i + 1], src_lines[4 * i + 3]); 5209: } 5209: uint8x16x2_t src_lines_intertwined_4x[2 * kCells]; 5209: for (int i = 0; i < kCells; i++) { 5209: src_lines_intertwined_4x[2 * i] = 5209: vzipq_u8(src_lines_intertwined_2x[2 * i].val[0], 5209: src_lines_intertwined_2x[2 * i + 1].val[0]); 5209: src_lines_intertwined_4x[2 * i + 1] = 5209: vzipq_u8(src_lines_intertwined_2x[2 * i].val[1], 5209: src_lines_intertwined_2x[2 * i + 1].val[1]); 5209: } 5209: 5209: for (int outer = 0; outer < 2; outer++) { 5209: for (int inner = 0; inner < 2; inner++) { 5209: for (int cell = 0; cell < kCells; cell++) { 5209: uint8x8_t value = vget_low_u8( 5209: src_lines_intertwined_4x[2 * cell + outer].val[inner]); 5209: vst1_u8(dst_ptr, value); 5209: dst_ptr += 8; 5209: } 5209: for (int cell = 0; cell < kCells; cell++) { 5209: uint8x8_t value = vget_high_u8( 5209: src_lines_intertwined_4x[2 * cell + outer].val[inner]); 5209: vst1_u8(dst_ptr, value); 5209: dst_ptr += 8; 5209: } 5209: } 5209: } 5209: 5209: uint16x8_t sums_of_2_cells[kCells][4]; 5209: for (int outer = 0; outer < 2; outer++) { 5209: for (int inner = 0; inner < 2; inner++) { 5209: int i = 2 * outer + inner; 5209: for (int cell = 0; cell < kCells; cell++) { 5209: sums_of_2_cells[cell][i] = vaddl_u8( 5209: vget_low_u8( 5209: src_lines_intertwined_4x[2 * cell + outer].val[inner]), 5209: vget_high_u8( 5209: src_lines_intertwined_4x[2 * cell + outer].val[inner])); 5209: } 5209: } 5209: } 5209: int32x4_t sums_of_4_cells[kCells][4]; 5209: for (int i = 0; i < 4; i++) { 5209: for (int cell = 0; cell < kCells; cell++) { 5209: sums_of_4_cells[cell][i] = vreinterpretq_s32_u32( 5209: vaddl_u16(vget_low_u16(sums_of_2_cells[cell][i]), 5209: vget_high_u16(sums_of_2_cells[cell][i]))); 5209: } 5209: } 5209: 5209: for (int cell = 0; cell < kCells; cell++) { 5209: int32x4_t s01 = 5209: vaddq_s32(sums_of_4_cells[cell][0], sums_of_4_cells[cell][1]); 5209: int32x4_t s23 = 5209: vaddq_s32(sums_of_4_cells[cell][2], sums_of_4_cells[cell][3]); 5209: int32x4_t s = vaddq_s32(s01, s23); 5209: std::int32_t* sums_of_each_slice_ptr = 5209: dst->sums_of_each_slice() + start_width + 4 * cell; 5209: vst1q_s32(sums_of_each_slice_ptr, 5209: vaddq_s32(s, vld1q_s32(sums_of_each_slice_ptr))); 5209: } 5209: dst->seek_forward_n_cells(kCells * kRegisterSize / kCellDepth); 5209: } 5209: }; 5209: 5209: template 5209: using WidthMajorSideFormatNCells4x2 = 5209: KernelSideFormat, Cells>; 5209: 5209: template 5209: class PackingRegisterBlock< 5209: WidthMajorUint8SideMap, 5209: PackedSideBlock>> 5209: : public PackingRegisterBlockBase< 5209: WidthMajorUint8SideMap, 5209: PackedSideBlock>> { 5209: public: 5209: typedef WidthMajorSideFormatNCells4x2 KernelSideFormat; 5209: typedef typename KernelSideFormat::Cell CellFormat; 5209: static const int kCells = KernelSideFormat::kCells; 5209: static const int kCellWidth = CellFormat::kWidth; 5209: static const int kKernelWidth = CellFormat::kWidth * kCells; 5209: static const int kCellDepth = CellFormat::kDepth; 5209: static const int kCellSize = CellFormat::kSize; 5209: 5209: void Pack(PackedSideBlock* dst, int start_width) { 5209: std::uint8_t* dst_ptr = dst->current_data(); 5209: const std::uint8_t* src_ptr = this->complete_src_.data(); 5209: const int stride = this->complete_src_.stride(); 5209: 5209: uint16x8_t src_lines[kCells * 4]; 5209: for (int i = 0; i < kCells; i++) { 5209: # 168 "/<>/test/../public/../internal/pack_neon.h" 5209: src_lines[4 * i + 0] = vreinterpretq_u16_u8(vld1q_u8(src_ptr)); src_ptr += stride; 5209: src_lines[4 * i + 1] = vreinterpretq_u16_u8(vld1q_u8(src_ptr)); src_ptr += stride; 5209: src_lines[4 * i + 2] = vreinterpretq_u16_u8(vld1q_u8(src_ptr)); src_ptr += stride; 5209: src_lines[4 * i + 3] = vreinterpretq_u16_u8(vld1q_u8(src_ptr)); src_ptr += stride; 5209: 5209: 5209: } 5209: 5209: uint16x8x2_t src_lines_intertwined_2x[2 * kCells]; 5209: for (int i = 0; i < kCells; i++) { 5209: src_lines_intertwined_2x[2 * i] = 5209: vzipq_u16(src_lines[4 * i], src_lines[4 * i + 2]); 5209: src_lines_intertwined_2x[2 * i + 1] = 5209: vzipq_u16(src_lines[4 * i + 1], src_lines[4 * i + 3]); 5209: } 5209: uint16x8x2_t src_lines_intertwined_4x[2 * kCells]; 5209: for (int i = 0; i < kCells; i++) { 5209: src_lines_intertwined_4x[2 * i] = 5209: vzipq_u16(src_lines_intertwined_2x[2 * i].val[0], 5209: src_lines_intertwined_2x[2 * i + 1].val[0]); 5209: src_lines_intertwined_4x[2 * i + 1] = 5209: vzipq_u16(src_lines_intertwined_2x[2 * i].val[1], 5209: src_lines_intertwined_2x[2 * i + 1].val[1]); 5209: } 5209: 5209: for (int outer = 0; outer < 2; outer++) { 5209: for (int inner = 0; inner < 2; inner++) { 5209: for (int cell = 0; cell < kCells; cell++) { 5209: uint8x8_t value = vreinterpret_u8_u16(vget_low_u16( 5209: src_lines_intertwined_4x[2 * cell + outer].val[inner])); 5209: vst1_u8(dst_ptr, value); 5209: dst_ptr += 8; 5209: } 5209: for (int cell = 0; cell < kCells; cell++) { 5209: uint8x8_t value = vreinterpret_u8_u16(vget_high_u16( 5209: src_lines_intertwined_4x[2 * cell + outer].val[inner])); 5209: vst1_u8(dst_ptr, value); 5209: dst_ptr += 8; 5209: } 5209: } 5209: } 5209: 5209: uint16x8_t sums_of_2[kCells][4]; 5209: for (int outer = 0; outer < 2; outer++) { 5209: for (int inner = 0; inner < 2; inner++) { 5209: int i = 2 * outer + inner; 5209: for (int cell = 0; cell < kCells; cell++) { 5209: sums_of_2[cell][i] = vpaddlq_u8(vreinterpretq_u8_u16( 5209: src_lines_intertwined_4x[2 * cell + outer].val[inner])); 5209: } 5209: } 5209: } 5209: uint16x8_t sums_of_4[kCells][2]; 5209: for (int i = 0; i < 2; i++) { 5209: for (int cell = 0; cell < kCells; cell++) { 5209: sums_of_4[cell][i] = 5209: vaddq_u16(sums_of_2[cell][2 * i], sums_of_2[cell][2 * i + 1]); 5209: } 5209: } 5209: uint16x8_t sums_of_8[kCells]; 5209: for (int cell = 0; cell < kCells; cell++) { 5209: sums_of_8[cell] = vaddq_u16(sums_of_4[cell][0], sums_of_4[cell][1]); 5209: } 5209: 5209: uint16x4_t sums_of_16[kCells]; 5209: for (int cell = 0; cell < kCells; cell++) { 5209: sums_of_16[cell] = vadd_u16(vget_low_u16(sums_of_8[cell]), 5209: vget_high_u16(sums_of_8[cell])); 5209: } 5209: 5209: for (int cell = 0; cell < kCells; cell++) { 5209: int32x4_t s = vreinterpretq_s32_u32(vmovl_u16(sums_of_16[cell])); 5209: std::int32_t* sums_of_each_slice_ptr = 5209: dst->sums_of_each_slice() + start_width + 4 * cell; 5209: vst1q_s32(sums_of_each_slice_ptr, 5209: vaddq_s32(s, vld1q_s32(sums_of_each_slice_ptr))); 5209: } 5209: dst->seek_forward_n_cells(kCells * kRegisterSize / kCellDepth); 5209: } 5209: }; 5209: # 257 "/<>/test/../public/../internal/pack_neon.h" 5209: template 5209: using Int8FastKernelFormat = 5209: KernelSideFormatInt8, 1>; 5209: 5209: template 5209: class PackingRegisterBlock>> 5209: : public PackingRegisterBlockBase< 5209: WidthMajorUint8SideMap, 5209: PackedSideBlock>> { 5209: public: 5209: static_assert(Width == 2 || Width == 4, ""); 5209: typedef Int8FastKernelFormat KernelSideFormat; 5209: typedef typename KernelSideFormat::Cell CellFormat; 5209: static const int kCells = KernelSideFormat::kCells; 5209: static const int kCellWidth = CellFormat::kWidth; 5209: static const int kKernelWidth = CellFormat::kWidth * kCells; 5209: static const int kCellDepth = CellFormat::kDepth; 5209: static const int kCellSize = CellFormat::kSize; 5209: 5209: void Pack(PackedSideBlock* dst, int start_width) { 5209: std::int32_t* sums_ptr = dst->sums_of_each_slice() + start_width; 5209: std::uint8_t* dst_ptr = dst->current_data(); 5209: const std::uint8_t* const src_ptr = this->complete_src_.data(); 5209: const int stride = this->complete_src_.stride(); 5209: 5209: uint8x16_t src_lines[Width]; 5209: for (int i = 0; i < Width; i++) { 5209: src_lines[i] = vld1q_u8(src_ptr + i * stride); 5209: } 5209: const uint8x16_t sign_bit_dup = vdupq_n_u8(0x80); 5209: for (int i = 0; i < Width; i++) { 5209: src_lines[i] = veorq_u8(src_lines[i], sign_bit_dup); 5209: } 5209: for (int i = 0; i < Width; i++) { 5209: vst1q_u8(dst_ptr + 16 * i, src_lines[i]); 5209: } 5209: int16x8_t sums2[Width]; 5209: for (int i = 0; i < Width; i++) { 5209: const int8x8_t lo = vreinterpret_s8_u8(vget_low_u8(src_lines[i])); 5209: const int8x8_t hi = vreinterpret_s8_u8(vget_high_u8(src_lines[i])); 5209: sums2[i] = vaddl_s8(lo, hi); 5209: } 5209: int16x8_t sums4[Width / 2]; 5209: for (int i = 0; i < Width / 2; i++) { 5209: sums4[i] = vpaddq_s16(sums2[2 * i], sums2[2 * i + 1]); 5209: } 5209: if (Width == 4) { 5209: int32x4_t sum = vld1q_s32(sums_ptr); 5209: int16x8_t sums8 = vpaddq_s16(sums4[0], sums4[1]); 5209: sum = vpadalq_s16(sum, sums8); 5209: vst1q_s32(sums_ptr, sum); 5209: } else { 5209: 5209: # 310 "/<>/test/../public/../internal/pack_neon.h" 3 4 5209: (static_cast ( 5209: # 310 "/<>/test/../public/../internal/pack_neon.h" 5209: Width == 2 5209: # 310 "/<>/test/../public/../internal/pack_neon.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 310 "/<>/test/../public/../internal/pack_neon.h" 5209: "Width == 2" 5209: # 310 "/<>/test/../public/../internal/pack_neon.h" 3 4 5209: , "/<>/test/../public/../internal/pack_neon.h", 310, __extension__ __PRETTY_FUNCTION__)) 5209: # 310 "/<>/test/../public/../internal/pack_neon.h" 5209: ; 5209: int32x2_t sum = vld1_s32(sums_ptr); 5209: int16x4_t sums8 = 5209: vpadd_s16(vget_low_s16(sums4[0]), vget_high_s16(sums4[0])); 5209: sum = vpadal_s16(sum, sums8); 5209: vst1_s32(sums_ptr, sum); 5209: } 5209: dst->seek_forward_n_cells(1); 5209: } 5209: }; 5209: 5209: template 5209: using Int8InputsFastKernelFormat = 5209: KernelSideFormatInt8Inputs, 1>; 5209: 5209: 5209: template 5209: class PackingRegisterBlock>> 5209: : public PackingRegisterBlockBase< 5209: WidthMajorInt8SideMap, 5209: PackedSideBlock>> { 5209: public: 5209: static_assert(Width == 2 || Width == 4, ""); 5209: typedef Int8InputsFastKernelFormat KernelSideFormat; 5209: typedef typename KernelSideFormat::Cell CellFormat; 5209: static const int kCells = KernelSideFormat::kCells; 5209: static const int kCellWidth = CellFormat::kWidth; 5209: static const int kKernelWidth = CellFormat::kWidth * kCells; 5209: static const int kCellDepth = CellFormat::kDepth; 5209: static const int kCellSize = CellFormat::kSize; 5209: 5209: void Pack(PackedSideBlock* dst, int start_width) { 5209: std::int32_t* sums_ptr = dst->sums_of_each_slice() + start_width; 5209: std::int8_t* dst_ptr = reinterpret_cast(dst->current_data()); 5209: const std::int8_t* const src_ptr = this->complete_src_.data(); 5209: const int stride = this->complete_src_.stride(); 5209: 5209: int8x16_t src_lines[Width]; 5209: for (int i = 0; i < Width; i++) { 5209: src_lines[i] = vld1q_s8(src_ptr + i * stride); 5209: } 5209: for (int i = 0; i < Width; i++) { 5209: vst1q_s8(dst_ptr + 16 * i, src_lines[i]); 5209: } 5209: int16x8_t sums2[Width]; 5209: for (int i = 0; i < Width; i++) { 5209: const int8x8_t lo = vget_low_s8(src_lines[i]); 5209: const int8x8_t hi = vget_high_s8(src_lines[i]); 5209: sums2[i] = vaddl_s8(lo, hi); 5209: } 5209: int16x8_t sums4[Width / 2]; 5209: for (int i = 0; i < Width / 2; i++) { 5209: sums4[i] = vpaddq_s16(sums2[2 * i], sums2[2 * i + 1]); 5209: } 5209: if (Width == 4) { 5209: int32x4_t sum = vld1q_s32(sums_ptr); 5209: int16x8_t sums8 = vpaddq_s16(sums4[0], sums4[1]); 5209: sum = vpadalq_s16(sum, sums8); 5209: vst1q_s32(sums_ptr, sum); 5209: } else { 5209: 5209: # 371 "/<>/test/../public/../internal/pack_neon.h" 3 4 5209: (static_cast ( 5209: # 371 "/<>/test/../public/../internal/pack_neon.h" 5209: Width == 2 5209: # 371 "/<>/test/../public/../internal/pack_neon.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 371 "/<>/test/../public/../internal/pack_neon.h" 5209: "Width == 2" 5209: # 371 "/<>/test/../public/../internal/pack_neon.h" 3 4 5209: , "/<>/test/../public/../internal/pack_neon.h", 371, __extension__ __PRETTY_FUNCTION__)) 5209: # 371 "/<>/test/../public/../internal/pack_neon.h" 5209: ; 5209: int32x2_t sum = vld1_s32(sums_ptr); 5209: int16x4_t sums8 = 5209: vpadd_s16(vget_low_s16(sums4[0]), vget_high_s16(sums4[0])); 5209: sum = vpadal_s16(sum, sums8); 5209: vst1_s32(sums_ptr, sum); 5209: } 5209: dst->seek_forward_n_cells(1); 5209: } 5209: }; 5209: 5209: } 5209: # 439 "/<>/test/../public/../internal/pack.h" 2 5209: # 25 "/<>/test/../public/../internal/compute.h" 2 5209: 5209: namespace gemmlowp { 5209: 5209: template 5209: class ComputeImpl { 5209: typedef typename PackedLhs::KernelSideFormat KernelLhsFormat; 5209: typedef typename PackedRhs::KernelSideFormat KernelRhsFormat; 5209: typedef KernelFormat Format; 5209: 5209: const KernelBase& kernel_; 5209: const BlockParams& block_params_; 5209: 5209: PackedResult* const packed_result_; 5209: const PackedLhs& packed_lhs_; 5209: const PackedRhs& packed_rhs_; 5209: 5209: public: 5209: ComputeImpl(const KernelBase& _kernel, const BlockParams& _block_params, 5209: PackedResult* _packed_result, const PackedLhs& _packed_lhs, 5209: const PackedRhs& _packed_rhs) 5209: : kernel_(_kernel), 5209: block_params_(_block_params), 5209: packed_result_(_packed_result), 5209: packed_lhs_(_packed_lhs), 5209: packed_rhs_(_packed_rhs) {} 5209: 5209: void Compute(int depth) { 5209: depth = RoundUp(depth); 5209: 5209: # 53 "/<>/test/../public/../internal/compute.h" 3 4 5209: (static_cast ( 5209: # 53 "/<>/test/../public/../internal/compute.h" 5209: depth <= block_params_.l2_depth 5209: # 53 "/<>/test/../public/../internal/compute.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 53 "/<>/test/../public/../internal/compute.h" 5209: "depth <= block_params_.l2_depth" 5209: # 53 "/<>/test/../public/../internal/compute.h" 3 4 5209: , "/<>/test/../public/../internal/compute.h", 53, __extension__ __PRETTY_FUNCTION__)) 5209: # 53 "/<>/test/../public/../internal/compute.h" 5209: ; 5209: for (int d = 0; d < depth; d += block_params_.l1_depth) { 5209: int ds = std::min(block_params_.l1_depth, depth - d); 5209: 5209: for (int r = 0; r < block_params_.l2_rows; r += block_params_.l1_rows) { 5209: int rs = std::min(block_params_.l1_rows, block_params_.l2_rows - r); 5209: 5209: ComputeL1(r, rs, 0, block_params_.l2_cols, d, ds); 5209: } 5209: } 5209: } 5209: 5209: private: 5209: static void MarkPackedResultBlockAsInitialized( 5209: const MatrixMap& packed_result_block) { 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: (void)packed_result_block; 5209: 5209: } 5209: 5209: void ComputeRun(int start_row, int start_col, int start_depth, 5209: int depth) __attribute__((noinline)) { 5209: packed_lhs_.seek_run(start_row, start_depth); 5209: packed_rhs_.seek_run(start_col, start_depth); 5209: auto packed_result_block = packed_result_->Map().block( 5209: start_row, start_col, Format::kRows, Format::kCols); 5209: kernel_.Run(packed_result_block.data(), packed_result_block.rows_stride(), 5209: packed_result_block.cols_stride(), packed_lhs_.current_data(), 5209: packed_rhs_.current_data(), start_depth, depth); 5209: MarkPackedResultBlockAsInitialized(packed_result_block); 5209: } 5209: 5209: void ComputeL1(int start_row, int rows, int start_col, int cols, 5209: int start_depth, int depth) { 5209: 5209: # 93 "/<>/test/../public/../internal/compute.h" 3 4 5209: (static_cast ( 5209: # 93 "/<>/test/../public/../internal/compute.h" 5209: rows % Format::kRows == 0 5209: # 93 "/<>/test/../public/../internal/compute.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 93 "/<>/test/../public/../internal/compute.h" 5209: "rows % Format::kRows == 0" 5209: # 93 "/<>/test/../public/../internal/compute.h" 3 4 5209: , "/<>/test/../public/../internal/compute.h", 93, __extension__ __PRETTY_FUNCTION__)) 5209: # 93 "/<>/test/../public/../internal/compute.h" 5209: ; 5209: 5209: # 94 "/<>/test/../public/../internal/compute.h" 3 4 5209: (static_cast ( 5209: # 94 "/<>/test/../public/../internal/compute.h" 5209: cols % Format::kCols == 0 5209: # 94 "/<>/test/../public/../internal/compute.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 94 "/<>/test/../public/../internal/compute.h" 5209: "cols % Format::kCols == 0" 5209: # 94 "/<>/test/../public/../internal/compute.h" 3 4 5209: , "/<>/test/../public/../internal/compute.h", 94, __extension__ __PRETTY_FUNCTION__)) 5209: # 94 "/<>/test/../public/../internal/compute.h" 5209: ; 5209: 5209: # 95 "/<>/test/../public/../internal/compute.h" 3 4 5209: (static_cast ( 5209: # 95 "/<>/test/../public/../internal/compute.h" 5209: depth % Format::kDepth == 0 5209: # 95 "/<>/test/../public/../internal/compute.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 95 "/<>/test/../public/../internal/compute.h" 5209: "depth % Format::kDepth == 0" 5209: # 95 "/<>/test/../public/../internal/compute.h" 3 4 5209: , "/<>/test/../public/../internal/compute.h", 95, __extension__ __PRETTY_FUNCTION__)) 5209: # 95 "/<>/test/../public/../internal/compute.h" 5209: ; 5209: 5209: for (int c = 0; c < cols; c += Format::kCols) { 5209: for (int r = 0; r < rows; r += Format::kRows) { 5209: ComputeRun(start_row + r, start_col + c, start_depth, depth); 5209: } 5209: } 5209: } 5209: }; 5209: 5209: template 5209: void Compute(const KernelBase& kernel, const BlockParams& block_params, 5209: PackedResult* packed_result, const PackedLhs& packed_lhs, 5209: const PackedRhs& packed_rhs, int depth) { 5209: ScopedProfilingLabel label("compute"); 5209: ComputeImpl impl( 5209: kernel, block_params, packed_result, packed_lhs, packed_rhs); 5209: 5209: impl.Compute(depth); 5209: } 5209: 5209: } 5209: # 27 "/<>/test/../public/../internal/single_thread_gemm.h" 2 5209: 5209: 5209: # 1 "/<>/test/../public/../internal/unpack.h" 1 5209: # 23 "/<>/test/../public/../internal/unpack.h" 5209: # 1 "/<>/test/../public/../internal/output.h" 1 5209: # 22 "/<>/test/../public/../internal/output.h" 5209: # 1 "/usr/include/c++/10/cmath" 1 3 5209: # 39 "/usr/include/c++/10/cmath" 3 5209: 5209: # 40 "/usr/include/c++/10/cmath" 3 5209: # 23 "/<>/test/../public/../internal/output.h" 2 5209: 5209: 5209: 5209: 5209: # 1 "/<>/test/../public/../internal/../fixedpoint/fixedpoint.h" 1 5209: # 22 "/<>/test/../public/../internal/../fixedpoint/fixedpoint.h" 5209: # 1 "/usr/include/c++/10/cassert" 1 3 5209: # 41 "/usr/include/c++/10/cassert" 3 5209: 5209: # 42 "/usr/include/c++/10/cassert" 3 5209: 5209: 5209: # 1 "/usr/include/assert.h" 1 3 4 5209: # 45 "/usr/include/c++/10/cassert" 2 3 5209: # 23 "/<>/test/../public/../internal/../fixedpoint/fixedpoint.h" 2 5209: # 1 "/usr/include/c++/10/cmath" 1 3 5209: # 39 "/usr/include/c++/10/cmath" 3 5209: 5209: # 40 "/usr/include/c++/10/cmath" 3 5209: # 24 "/<>/test/../public/../internal/../fixedpoint/fixedpoint.h" 2 5209: 5209: 5209: 5209: # 1 "/<>/test/../public/../internal/../fixedpoint/../internal/detect_platform.h" 1 5209: # 28 "/<>/test/../public/../internal/../fixedpoint/fixedpoint.h" 2 5209: 5209: namespace gemmlowp { 5209: # 47 "/<>/test/../public/../internal/../fixedpoint/fixedpoint.h" 5209: template 5209: struct FixedPointRawTypeTraits {}; 5209: 5209: template <> 5209: struct FixedPointRawTypeTraits { 5209: typedef std::int32_t ScalarRawType; 5209: static constexpr int kLanes = 1; 5209: }; 5209: 5209: template <> 5209: struct FixedPointRawTypeTraits { 5209: typedef std::int16_t ScalarRawType; 5209: static constexpr int kLanes = 1; 5209: }; 5209: 5209: 5209: template 5209: tRawType Dup(typename FixedPointRawTypeTraits::ScalarRawType x) { 5209: return x; 5209: } 5209: 5209: 5209: template 5209: tIntegerType BitAnd(tIntegerType a, tIntegerType b) { 5209: return a & b; 5209: } 5209: 5209: 5209: template 5209: tIntegerType BitOr(tIntegerType a, tIntegerType b) { 5209: return a | b; 5209: } 5209: 5209: 5209: template 5209: tIntegerType BitXor(tIntegerType a, tIntegerType b) { 5209: return a ^ b; 5209: } 5209: 5209: 5209: template 5209: tIntegerType BitNot(tIntegerType a) { 5209: return ~a; 5209: } 5209: 5209: 5209: template 5209: tIntegerType Add(tIntegerType a, tIntegerType b) { 5209: return a + b; 5209: } 5209: 5209: 5209: template 5209: tIntegerType Mul(tIntegerType a, tIntegerType b) { 5209: return a * b; 5209: } 5209: 5209: template 5209: tIntegerType Sub(tIntegerType a, tIntegerType b) { 5209: return a - b; 5209: } 5209: 5209: 5209: template 5209: tIntegerType Neg(tIntegerType a) { 5209: return -a; 5209: } 5209: # 124 "/<>/test/../public/../internal/../fixedpoint/fixedpoint.h" 5209: template 5209: tIntegerType ShiftLeft(tIntegerType a, OffsetType offset) { 5209: const std::int64_t wide_a = static_cast(a); 5209: const std::int64_t wide_shifted = wide_a * (1 << offset); 5209: const auto min = std::numeric_limits::min(); 5209: const auto max = std::numeric_limits::max(); 5209: return wide_shifted < min 5209: ? min 5209: : wide_shifted > max ? max 5209: : static_cast(wide_shifted); 5209: } 5209: 5209: 5209: 5209: 5209: template 5209: tIntegerType ShiftRight(tIntegerType a, int offset) { 5209: return a >> offset; 5209: } 5209: 5209: 5209: 5209: 5209: template 5209: tIntegerType SelectUsingMask(tIntegerType if_mask, tIntegerType then_val, 5209: tIntegerType else_val) { 5209: return BitXor(BitAnd(if_mask, then_val), BitAnd(BitNot(if_mask), else_val)); 5209: } 5209: 5209: 5209: 5209: template 5209: tIntegerType MaskIfNonZero(tIntegerType a) { 5209: static constexpr tIntegerType zero = 0; 5209: return a ? BitNot(zero) : zero; 5209: } 5209: 5209: 5209: 5209: template 5209: tIntegerType MaskIfZero(tIntegerType a) { 5209: return MaskIfNonZero(!a); 5209: } 5209: 5209: 5209: 5209: template 5209: tIntegerType MaskIfEqual(tIntegerType a, tIntegerType b) { 5209: return MaskIfNonZero(a == b); 5209: } 5209: 5209: 5209: 5209: template 5209: tIntegerType MaskIfNotEqual(tIntegerType a, tIntegerType b) { 5209: return MaskIfNonZero(a != b); 5209: } 5209: 5209: 5209: 5209: template 5209: tIntegerType MaskIfGreaterThan(tIntegerType a, tIntegerType b) { 5209: return MaskIfNonZero(a > b); 5209: } 5209: 5209: 5209: 5209: template 5209: tIntegerType MaskIfGreaterThanOrEqual(tIntegerType a, tIntegerType b) { 5209: return MaskIfNonZero(a >= b); 5209: } 5209: 5209: 5209: 5209: template 5209: tIntegerType MaskIfLessThan(tIntegerType a, tIntegerType b) { 5209: return MaskIfNonZero(a < b); 5209: } 5209: 5209: 5209: 5209: template 5209: tIntegerType MaskIfLessThanOrEqual(tIntegerType a, tIntegerType b) { 5209: return MaskIfNonZero(a <= b); 5209: } 5209: 5209: 5209: 5209: 5209: template 5209: bool All(tIntegerType a) { 5209: return a; 5209: } 5209: 5209: 5209: 5209: 5209: template 5209: bool Any(tIntegerType a) { 5209: return a; 5209: } 5209: 5209: 5209: 5209: template 5209: IntegerType RoundingHalfSum(IntegerType a, IntegerType b) { 5209: static_assert(std::is_same::value, "unimplemented"); 5209: (void)b; 5209: return a; 5209: } 5209: 5209: template <> 5209: inline std::int32_t RoundingHalfSum(std::int32_t a, std::int32_t b) { 5209: std::int64_t a64 = a; 5209: std::int64_t b64 = b; 5209: std::int64_t sum = a64 + b64; 5209: std::int64_t sign = sum >= 0 ? 1 : -1; 5209: return static_cast((sum + sign) / 2); 5209: } 5209: 5209: template <> 5209: inline std::int16_t RoundingHalfSum(std::int16_t a, std::int16_t b) { 5209: std::int32_t a32 = a; 5209: std::int32_t b32 = b; 5209: std::int32_t sum = a32 + b32; 5209: std::int32_t sign = sum >= 0 ? 1 : -1; 5209: return static_cast((sum + sign) / 2); 5209: } 5209: 5209: template 5209: IntegerType SaturatingAdd(IntegerType a, IntegerType b) { 5209: static_assert(std::is_same::value, "unimplemented"); 5209: (void)b; 5209: return a; 5209: } 5209: 5209: 5209: template <> 5209: inline std::int16_t SaturatingAdd(std::int16_t a, std::int16_t b) { 5209: std::int32_t a32 = a; 5209: std::int32_t b32 = b; 5209: std::int32_t sum = a32 + b32; 5209: return static_cast( 5209: std::min(static_cast(32767), 5209: std::max(static_cast(-32768), sum))); 5209: } 5209: 5209: 5209: 5209: template 5209: struct AddSaturatingIf16BitImpl { 5209: static IntegerType Run(IntegerType a, IntegerType b) { return Add(a, b); } 5209: }; 5209: template 5209: struct AddSaturatingIf16BitImpl { 5209: static IntegerType Run(IntegerType a, IntegerType b) { 5209: return SaturatingAdd(a, b); 5209: } 5209: }; 5209: template 5209: IntegerType AddSaturatingIf16Bit(IntegerType a, IntegerType b) { 5209: using ScalarType = 5209: typename FixedPointRawTypeTraits::ScalarRawType; 5209: return AddSaturatingIf16BitImpl::Run(a, 5209: b); 5209: } 5209: # 319 "/<>/test/../public/../internal/../fixedpoint/fixedpoint.h" 5209: template 5209: IntegerType SaturatingRoundingDoublingHighMul(IntegerType a, IntegerType b) { 5209: static_assert(std::is_same::value, "unimplemented"); 5209: (void)b; 5209: return a; 5209: } 5209: 5209: 5209: 5209: template <> 5209: inline std::int32_t SaturatingRoundingDoublingHighMul(std::int32_t a, 5209: std::int32_t b) { 5209: bool overflow = a == b && a == std::numeric_limits::min(); 5209: std::int64_t a_64(a); 5209: std::int64_t b_64(b); 5209: std::int64_t ab_64 = a_64 * b_64; 5209: std::int32_t nudge = ab_64 >= 0 ? (1 << 30) : (1 - (1 << 30)); 5209: std::int32_t ab_x2_high32 = 5209: static_cast((ab_64 + nudge) / (1ll << 31)); 5209: return overflow ? std::numeric_limits::max() : ab_x2_high32; 5209: } 5209: 5209: template <> 5209: inline std::int16_t SaturatingRoundingDoublingHighMul(std::int16_t a, 5209: std::int16_t b) { 5209: bool overflow = a == b && a == std::numeric_limits::min(); 5209: std::int32_t a_32(a); 5209: std::int32_t b_32(b); 5209: std::int32_t ab_32 = a_32 * b_32; 5209: std::int16_t nudge = ab_32 >= 0 ? (1 << 14) : (1 - (1 << 14)); 5209: std::int16_t ab_x2_high16 = 5209: static_cast((ab_32 + nudge) / (1 << 15)); 5209: return overflow ? std::numeric_limits::max() : ab_x2_high16; 5209: } 5209: 5209: 5209: 5209: template 5209: inline IntegerType RoundingDivideByPOT(IntegerType x, ExponentType exponent) { 5209: 5209: # 358 "/<>/test/../public/../internal/../fixedpoint/fixedpoint.h" 3 4 5209: (static_cast ( 5209: # 358 "/<>/test/../public/../internal/../fixedpoint/fixedpoint.h" 5209: exponent >= 0 5209: # 358 "/<>/test/../public/../internal/../fixedpoint/fixedpoint.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 358 "/<>/test/../public/../internal/../fixedpoint/fixedpoint.h" 5209: "exponent >= 0" 5209: # 358 "/<>/test/../public/../internal/../fixedpoint/fixedpoint.h" 3 4 5209: , "/<>/test/../public/../internal/../fixedpoint/fixedpoint.h", 358, __extension__ __PRETTY_FUNCTION__)) 5209: # 358 "/<>/test/../public/../internal/../fixedpoint/fixedpoint.h" 5209: ; 5209: 5209: # 359 "/<>/test/../public/../internal/../fixedpoint/fixedpoint.h" 3 4 5209: (static_cast ( 5209: # 359 "/<>/test/../public/../internal/../fixedpoint/fixedpoint.h" 5209: exponent <= 31 5209: # 359 "/<>/test/../public/../internal/../fixedpoint/fixedpoint.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 359 "/<>/test/../public/../internal/../fixedpoint/fixedpoint.h" 5209: "exponent <= 31" 5209: # 359 "/<>/test/../public/../internal/../fixedpoint/fixedpoint.h" 3 4 5209: , "/<>/test/../public/../internal/../fixedpoint/fixedpoint.h", 359, __extension__ __PRETTY_FUNCTION__)) 5209: # 359 "/<>/test/../public/../internal/../fixedpoint/fixedpoint.h" 5209: ; 5209: const IntegerType mask = Dup((1ll << exponent) - 1); 5209: const IntegerType zero = Dup(0); 5209: const IntegerType one = Dup(1); 5209: const IntegerType remainder = BitAnd(x, mask); 5209: const IntegerType threshold = 5209: Add(ShiftRight(mask, 1), BitAnd(MaskIfLessThan(x, zero), one)); 5209: return Add(ShiftRight(x, exponent), 5209: BitAnd(MaskIfGreaterThan(remainder, threshold), one)); 5209: } 5209: 5209: 5209: 5209: 5209: 5209: template 0 ? 1 : Exponent < 0 ? -1 : 0)> 5209: struct ImplSaturatingRoundingMultiplyByPOT {}; 5209: 5209: template 5209: struct ImplSaturatingRoundingMultiplyByPOT { 5209: static IntegerType eval(IntegerType x) { return x; } 5209: }; 5209: 5209: template 5209: struct ImplSaturatingRoundingMultiplyByPOT { 5209: static IntegerType eval(IntegerType x) { 5209: using ScalarIntegerType = 5209: typename FixedPointRawTypeTraits::ScalarRawType; 5209: const IntegerType min = 5209: Dup(std::numeric_limits::min()); 5209: const IntegerType max = 5209: Dup(std::numeric_limits::max()); 5209: const int ScalarIntegerTypeBits = 8 * sizeof(ScalarIntegerType); 5209: 5209: const std::int32_t threshold = 5209: ((1 << (ScalarIntegerTypeBits - 1 - Exponent)) - 1); 5209: const IntegerType positive_mask = 5209: MaskIfGreaterThan(x, Dup(threshold)); 5209: const IntegerType negative_mask = 5209: MaskIfLessThan(x, Dup(-threshold)); 5209: 5209: IntegerType result = ShiftLeft(x, Exponent); 5209: result = SelectUsingMask(positive_mask, max, result); 5209: result = SelectUsingMask(negative_mask, min, result); 5209: return result; 5209: } 5209: }; 5209: 5209: template 5209: struct ImplSaturatingRoundingMultiplyByPOT { 5209: static IntegerType eval(IntegerType x) { 5209: return RoundingDivideByPOT(x, -Exponent); 5209: } 5209: }; 5209: 5209: template 5209: IntegerType SaturatingRoundingMultiplyByPOT(IntegerType x) { 5209: return ImplSaturatingRoundingMultiplyByPOT::eval(x); 5209: } 5209: # 449 "/<>/test/../public/../internal/../fixedpoint/fixedpoint.h" 5209: template 5209: class FixedPoint { 5209: public: 5209: typedef tRawType RawType; 5209: 5209: typedef FixedPointRawTypeTraits RawTypeTraits; 5209: typedef typename RawTypeTraits::ScalarRawType ScalarRawType; 5209: 5209: static constexpr int kTotalBits = 8 * sizeof(ScalarRawType); 5209: static constexpr int kIntegerBits = tIntegerBits; 5209: static constexpr int kFractionalBits = kTotalBits - 1 - kIntegerBits; 5209: static_assert(kIntegerBits >= 0 && kIntegerBits < kTotalBits, 5209: "bad IntegerBits"); 5209: 5209: typedef FixedPoint ScalarFixedPointType; 5209: 5209: static const ScalarRawType ScalarRawMin() { 5209: return std::numeric_limits::min(); 5209: } 5209: 5209: static const ScalarRawType ScalarRawMax() { 5209: return std::numeric_limits::max(); 5209: } 5209: 5209: static const ScalarRawType RawMin() { 5209: return VectorFromScalar(ScalarRawMin()); 5209: } 5209: 5209: static const ScalarRawType RawMax() { 5209: return VectorFromScalar(ScalarRawMax()); 5209: } 5209: 5209: static FixedPoint FromRaw(RawType x) { 5209: FixedPoint retval; 5209: retval.raw() = x; 5209: return retval; 5209: } 5209: 5209: static FixedPoint FromScalarRaw(ScalarRawType x) { 5209: FixedPoint retval; 5209: retval.raw() = Dup(x); 5209: return retval; 5209: } 5209: 5209: static FixedPoint FromScalarFixedPoint(ScalarFixedPointType x) { 5209: return FromScalarRaw(x.raw()); 5209: } 5209: 5209: template 5209: static FixedPoint ConstantPOT() { 5209: static constexpr int kOffset = kFractionalBits + Exponent; 5209: static_assert( 5209: kOffset < 31, 5209: "Constant not exactly representable in this fixed-point format"); 5209: return FromScalarRaw(ScalarRawType(1) << kOffset); 5209: } 5209: 5209: static FixedPoint Zero() { return FromScalarRaw(0); } 5209: 5209: static FixedPoint One() { 5209: return FromScalarRaw( 5209: kIntegerBits == 0 5209: ? ScalarRawMax() 5209: : (ScalarRawType(1) << (kIntegerBits == 0 ? 0 : kFractionalBits))); 5209: } 5209: 5209: static FixedPoint FromDouble(double x) { 5209: const double min_bound = static_cast(ScalarRawMin()); 5209: const double max_bound = static_cast(ScalarRawMax()); 5209: return FromScalarRaw(static_cast(std::min( 5209: std::max(round(x * static_cast(1ll << kFractionalBits)), 5209: min_bound), 5209: max_bound))); 5209: } 5209: 5209: RawType raw() const { return i_; } 5209: RawType& raw() { return i_; } 5209: 5209: private: 5209: RawType i_; 5209: }; 5209: # 538 "/<>/test/../public/../internal/../fixedpoint/fixedpoint.h" 5209: template 5209: FixedPoint operator*( 5209: FixedPoint a, 5209: FixedPoint b) { 5209: FixedPoint c; 5209: c.raw() = SaturatingRoundingDoublingHighMul(a.raw(), b.raw()); 5209: return c; 5209: } 5209: 5209: 5209: template 5209: FixedPoint ExactMulByPot( 5209: FixedPoint a) { 5209: FixedPoint c; 5209: c.raw() = a.raw(); 5209: return c; 5209: } 5209: 5209: 5209: 5209: template 5209: FixedPoint SaturatingRoundingMultiplyByPOT( 5209: FixedPoint a) { 5209: return FixedPoint::FromRaw( 5209: SaturatingRoundingMultiplyByPOT(a.raw())); 5209: } 5209: # 583 "/<>/test/../public/../internal/../fixedpoint/fixedpoint.h" 5209: template FixedPoint operator-( FixedPoint a) { return FixedPoint::FromRaw(Neg(a.raw())); } 5209: template FixedPoint operator~( FixedPoint a) { return FixedPoint::FromRaw(BitNot(a.raw())); } 5209: template FixedPoint operator+( FixedPoint a, FixedPoint b) { return FixedPoint::FromRaw( Add(a.raw(), b.raw())); } 5209: template FixedPoint operator-( FixedPoint a, FixedPoint b) { return FixedPoint::FromRaw( Sub(a.raw(), b.raw())); } 5209: template FixedPoint operator&( FixedPoint a, FixedPoint b) { return FixedPoint::FromRaw( BitAnd(a.raw(), b.raw())); } 5209: template FixedPoint operator^( FixedPoint a, FixedPoint b) { return FixedPoint::FromRaw( BitXor(a.raw(), b.raw())); } 5209: template FixedPoint operator|( FixedPoint a, FixedPoint b) { return FixedPoint::FromRaw( BitOr(a.raw(), b.raw())); } 5209: template FixedPoint RoundingHalfSum( FixedPoint a, FixedPoint b) { return FixedPoint::FromRaw( RoundingHalfSum(a.raw(), b.raw())); } 5209: # 608 "/<>/test/../public/../internal/../fixedpoint/fixedpoint.h" 5209: template tRawType MaskIfZero(FixedPoint a) { return MaskIfZero(a.raw()); } 5209: template tRawType MaskIfNonZero(FixedPoint a) { return MaskIfNonZero(a.raw()); } 5209: template tRawType MaskIfEqual(FixedPoint a, FixedPoint b) { return MaskIfEqual(a.raw(), b.raw()); } 5209: template tRawType MaskIfNotEqual(FixedPoint a, FixedPoint b) { return MaskIfNotEqual(a.raw(), b.raw()); } 5209: template tRawType MaskIfGreaterThan(FixedPoint a, FixedPoint b) { return MaskIfGreaterThan(a.raw(), b.raw()); } 5209: template tRawType MaskIfGreaterThanOrEqual(FixedPoint a, FixedPoint b) { return MaskIfGreaterThanOrEqual(a.raw(), b.raw()); } 5209: template tRawType MaskIfLessThan(FixedPoint a, FixedPoint b) { return MaskIfLessThan(a.raw(), b.raw()); } 5209: template tRawType MaskIfLessThanOrEqual(FixedPoint a, FixedPoint b) { return MaskIfLessThanOrEqual(a.raw(), b.raw()); } 5209: 5209: 5209: 5209: 5209: template 5209: FixedPoint SelectUsingMask( 5209: tRawType if_mask, FixedPoint then_val, 5209: FixedPoint else_val) { 5209: return FixedPoint::FromRaw( 5209: SelectUsingMask(if_mask, then_val.raw(), else_val.raw())); 5209: } 5209: 5209: template 5209: bool operator==(FixedPoint a, 5209: FixedPoint b) { 5209: return All(MaskIfEqual(a.raw(), b.raw())); 5209: } 5209: 5209: template 5209: bool operator!=(FixedPoint a, 5209: FixedPoint b) { 5209: return !(a == b); 5209: } 5209: 5209: template 5209: FixedPoint SaturatingAdd( 5209: FixedPoint a, 5209: FixedPoint b) { 5209: return FixedPoint::FromRaw( 5209: SaturatingAdd(a.raw(), b.raw())); 5209: } 5209: 5209: template 5209: FixedPoint AddSaturatingIf16Bit( 5209: FixedPoint a, 5209: FixedPoint b) { 5209: return FixedPoint::FromRaw( 5209: AddSaturatingIf16Bit(a.raw(), b.raw())); 5209: } 5209: 5209: 5209: template 5209: double ToDouble(FixedPoint x) { 5209: static_assert(FixedPointRawTypeTraits::kLanes == 1, 5209: "not applicable to SIMD types"); 5209: typedef FixedPoint F; 5209: return x.raw() / static_cast(1ll << F::kFractionalBits); 5209: } 5209: 5209: 5209: 5209: template 5209: FixedPoint Rescale( 5209: FixedPoint x) { 5209: static constexpr int kExponent = tIntegerBitsSrc - tIntegerBitsDst; 5209: FixedPoint result; 5209: result.raw() = SaturatingRoundingMultiplyByPOT(x.raw()); 5209: return result; 5209: } 5209: # 686 "/<>/test/../public/../internal/../fixedpoint/fixedpoint.h" 5209: template 5209: inline typename FixedPointType::ScalarRawType RescaleConstantInitializer( 5209: std::int32_t int32_value) { 5209: typedef typename FixedPointType::ScalarRawType ScalarRawType; 5209: static constexpr int ScalarTypeBits = 8 * sizeof(ScalarRawType); 5209: return static_cast( 5209: RoundingDivideByPOT(int32_value, 32 - ScalarTypeBits)); 5209: } 5209: # 720 "/<>/test/../public/../internal/../fixedpoint/fixedpoint.h" 5209: template 5209: FixedPoint exp_on_interval_between_negative_one_quarter_and_0_excl( 5209: FixedPoint a) { 5209: typedef FixedPoint F; 5209: const F constant_term = 5209: (F::FromScalarRaw( gemmlowp::RescaleConstantInitializer( 1895147668))); 5209: const F constant_1_over_3 = 5209: (F::FromScalarRaw( gemmlowp::RescaleConstantInitializer( 715827883))); 5209: 5209: 5209: 5209: F x = a + F::template ConstantPOT<-3>(); 5209: F x2 = x * x; 5209: F x3 = x2 * x; 5209: F x4 = x2 * x2; 5209: F x4_over_4 = SaturatingRoundingMultiplyByPOT<-2>(x4); 5209: F x4_over_24_plus_x3_over_6_plus_x2_over_2 = 5209: SaturatingRoundingMultiplyByPOT<-1>( 5209: ((x4_over_4 + x3) * constant_1_over_3) + x2); 5209: return AddSaturatingIf16Bit( 5209: constant_term, 5209: constant_term * (x + x4_over_24_plus_x3_over_6_plus_x2_over_2)); 5209: } 5209: 5209: 5209: template 5209: FixedPoint exp_on_negative_values( 5209: FixedPoint a) { 5209: typedef FixedPoint InputF; 5209: typedef FixedPoint ResultF; 5209: static constexpr int kFractionalBits = InputF::kFractionalBits; 5209: static constexpr int kIntegerBits = InputF::kIntegerBits; 5209: const InputF kOneQuarter = InputF::template ConstantPOT<-2>(); 5209: InputF mask = kOneQuarter - InputF::FromScalarRaw(1); 5209: InputF a_mod_quarter_minus_one_quarter = (a & mask) - kOneQuarter; 5209: ResultF result = exp_on_interval_between_negative_one_quarter_and_0_excl( 5209: Rescale<0>(a_mod_quarter_minus_one_quarter)); 5209: tRawType remainder = (a_mod_quarter_minus_one_quarter - a).raw(); 5209: # 770 "/<>/test/../public/../internal/../fixedpoint/fixedpoint.h" 5209: if (kIntegerBits > -2) { const ResultF kMultiplier = (ResultF::FromScalarRaw( gemmlowp::RescaleConstantInitializer( 1672461947))); static constexpr int kShiftAmount = kIntegerBits > -2 ? kFractionalBits + -2 : 0; result = SelectUsingMask( MaskIfNonZero(BitAnd(remainder, Dup(1 << kShiftAmount))), result * kMultiplier, result); }; 5209: if (kIntegerBits > -1) { const ResultF kMultiplier = (ResultF::FromScalarRaw( gemmlowp::RescaleConstantInitializer( 1302514674))); static constexpr int kShiftAmount = kIntegerBits > -1 ? kFractionalBits + -1 : 0; result = SelectUsingMask( MaskIfNonZero(BitAnd(remainder, Dup(1 << kShiftAmount))), result * kMultiplier, result); }; 5209: if (kIntegerBits > +0) { const ResultF kMultiplier = (ResultF::FromScalarRaw( gemmlowp::RescaleConstantInitializer( 790015084))); static constexpr int kShiftAmount = kIntegerBits > +0 ? kFractionalBits + +0 : 0; result = SelectUsingMask( MaskIfNonZero(BitAnd(remainder, Dup(1 << kShiftAmount))), result * kMultiplier, result); }; 5209: if (kIntegerBits > +1) { const ResultF kMultiplier = (ResultF::FromScalarRaw( gemmlowp::RescaleConstantInitializer( 290630308))); static constexpr int kShiftAmount = kIntegerBits > +1 ? kFractionalBits + +1 : 0; result = SelectUsingMask( MaskIfNonZero(BitAnd(remainder, Dup(1 << kShiftAmount))), result * kMultiplier, result); }; 5209: if (kIntegerBits > +2) { const ResultF kMultiplier = (ResultF::FromScalarRaw( gemmlowp::RescaleConstantInitializer( 39332535))); static constexpr int kShiftAmount = kIntegerBits > +2 ? kFractionalBits + +2 : 0; result = SelectUsingMask( MaskIfNonZero(BitAnd(remainder, Dup(1 << kShiftAmount))), result * kMultiplier, result); }; 5209: if (kIntegerBits > +3) { const ResultF kMultiplier = (ResultF::FromScalarRaw( gemmlowp::RescaleConstantInitializer( 720401))); static constexpr int kShiftAmount = kIntegerBits > +3 ? kFractionalBits + +3 : 0; result = SelectUsingMask( MaskIfNonZero(BitAnd(remainder, Dup(1 << kShiftAmount))), result * kMultiplier, result); }; 5209: if (kIntegerBits > +4) { const ResultF kMultiplier = (ResultF::FromScalarRaw( gemmlowp::RescaleConstantInitializer( 242))); static constexpr int kShiftAmount = kIntegerBits > +4 ? kFractionalBits + +4 : 0; result = SelectUsingMask( MaskIfNonZero(BitAnd(remainder, Dup(1 << kShiftAmount))), result * kMultiplier, result); }; 5209: 5209: 5209: 5209: static constexpr int clampB = kIntegerBits > 5 ? 36 - kIntegerBits : 0; 5209: if (kIntegerBits > 5) { 5209: const InputF clamp = 5209: (InputF::FromScalarRaw( gemmlowp::RescaleConstantInitializer( -(1 << clampB)))); 5209: result = SelectUsingMask(MaskIfLessThan(a, clamp), ResultF::Zero(), result); 5209: } 5209: 5209: result = SelectUsingMask(MaskIfZero(a), ResultF::One(), result); 5209: return result; 5209: } 5209: 5209: 5209: 5209: 5209: template 5209: FixedPoint one_minus_x_over_one_plus_x_for_x_in_0_1( 5209: FixedPoint a) { 5209: typedef FixedPoint F0; 5209: typedef FixedPoint F2; 5209: F0 half_denominator = RoundingHalfSum(a, F0::One()); 5209: 5209: 5209: 5209: const F2 constant_48_over_17 = 5209: (F2::FromScalarRaw( gemmlowp::RescaleConstantInitializer( 1515870810))); 5209: const F2 constant_neg_32_over_17 = 5209: (F2::FromScalarRaw( gemmlowp::RescaleConstantInitializer( -1010580540))); 5209: F2 x = constant_48_over_17 + half_denominator * constant_neg_32_over_17; 5209: for (int i = 0; i < 3; i++) { 5209: F2 half_denominator_times_x = half_denominator * x; 5209: F2 one_minus_half_denominator_times_x = 5209: F2::One() - half_denominator_times_x; 5209: x = x + Rescale<2>(x * one_minus_half_denominator_times_x); 5209: } 5209: return Rescale<0>(x - F2::One()); 5209: } 5209: 5209: 5209: template 5209: FixedPoint neg_tanh_on_negative_values( 5209: FixedPoint a) { 5209: return one_minus_x_over_one_plus_x_for_x_in_0_1( 5209: exp_on_negative_values(ExactMulByPot<1>(a))); 5209: } 5209: 5209: 5209: template 5209: FixedPoint tanh(FixedPoint a) { 5209: typedef FixedPoint InputF; 5209: typedef FixedPoint ResultF; 5209: tRawType mask_if_negative = MaskIfLessThan(a, InputF::Zero()); 5209: tRawType mask_if_zero = MaskIfZero(a); 5209: InputF n = SelectUsingMask(mask_if_negative, a, -a); 5209: ResultF t = neg_tanh_on_negative_values(n); 5209: return SelectUsingMask(mask_if_zero, ResultF::Zero(), 5209: SelectUsingMask(mask_if_negative, -t, t)); 5209: } 5209: 5209: 5209: 5209: 5209: template 5209: FixedPoint one_over_one_plus_x_for_x_in_0_1( 5209: FixedPoint a) { 5209: typedef FixedPoint F0; 5209: typedef FixedPoint F2; 5209: F0 half_denominator = RoundingHalfSum(a, F0::One()); 5209: 5209: 5209: 5209: const F2 constant_48_over_17 = 5209: (F2::FromScalarRaw( gemmlowp::RescaleConstantInitializer( 1515870810))); 5209: const F2 constant_neg_32_over_17 = 5209: (F2::FromScalarRaw( gemmlowp::RescaleConstantInitializer( -1010580540))); 5209: F2 x = constant_48_over_17 + half_denominator * constant_neg_32_over_17; 5209: for (int i = 0; i < 3; i++) { 5209: F2 half_denominator_times_x = half_denominator * x; 5209: F2 one_minus_half_denominator_times_x = 5209: F2::One() - half_denominator_times_x; 5209: x = x + Rescale<2>(x * one_minus_half_denominator_times_x); 5209: } 5209: return Rescale<0>(ExactMulByPot<-1>(x)); 5209: } 5209: 5209: 5209: template 5209: FixedPoint logistic_on_positive_values( 5209: FixedPoint a) { 5209: return one_over_one_plus_x_for_x_in_0_1(exp_on_negative_values(-a)); 5209: } 5209: 5209: 5209: template 5209: FixedPoint logistic(FixedPoint a) { 5209: typedef FixedPoint InputF; 5209: typedef FixedPoint ResultF; 5209: tRawType mask_if_positive = MaskIfGreaterThan(a, InputF::Zero()); 5209: tRawType mask_if_zero = MaskIfZero(a); 5209: InputF abs_input = SelectUsingMask(mask_if_positive, a, -a); 5209: ResultF result_if_positive = logistic_on_positive_values(abs_input); 5209: ResultF result_if_negative = ResultF::One() - result_if_positive; 5209: const ResultF one_half = 5209: (ResultF::FromScalarRaw( gemmlowp::RescaleConstantInitializer( 1 << 30))); 5209: return SelectUsingMask(mask_if_zero, one_half, 5209: SelectUsingMask(mask_if_positive, result_if_positive, 5209: result_if_negative)); 5209: } 5209: 5209: } 5209: 5209: 5209: # 1 "/<>/test/../public/../internal/../fixedpoint/./fixedpoint_neon.h" 1 5209: # 23 "/<>/test/../public/../internal/../fixedpoint/./fixedpoint_neon.h" 5209: namespace gemmlowp { 5209: 5209: template <> 5209: struct FixedPointRawTypeTraits { 5209: typedef std::int32_t ScalarRawType; 5209: static constexpr int kLanes = 4; 5209: }; 5209: 5209: template <> 5209: struct FixedPointRawTypeTraits { 5209: typedef std::int16_t ScalarRawType; 5209: static constexpr int kLanes = 8; 5209: }; 5209: 5209: template <> 5209: inline int32x4_t BitAnd(int32x4_t a, int32x4_t b) { 5209: return vandq_s32(a, b); 5209: } 5209: 5209: template <> 5209: inline int16x8_t BitAnd(int16x8_t a, int16x8_t b) { 5209: return vandq_s16(a, b); 5209: } 5209: 5209: template <> 5209: inline int32x4_t BitOr(int32x4_t a, int32x4_t b) { 5209: return vorrq_s32(a, b); 5209: } 5209: 5209: template <> 5209: inline int16x8_t BitOr(int16x8_t a, int16x8_t b) { 5209: return vorrq_s16(a, b); 5209: } 5209: 5209: template <> 5209: inline int32x4_t BitXor(int32x4_t a, int32x4_t b) { 5209: return veorq_s32(a, b); 5209: } 5209: 5209: template <> 5209: inline int16x8_t BitXor(int16x8_t a, int16x8_t b) { 5209: return veorq_s16(a, b); 5209: } 5209: 5209: template <> 5209: inline int32x4_t BitNot(int32x4_t a) { 5209: return veorq_s32(a, vdupq_n_s32(-1)); 5209: } 5209: 5209: template <> 5209: inline int16x8_t BitNot(int16x8_t a) { 5209: return veorq_s16(a, vdupq_n_s16(-1)); 5209: } 5209: 5209: template <> 5209: inline int32x4_t Add(int32x4_t a, int32x4_t b) { 5209: return vaddq_s32(a, b); 5209: } 5209: 5209: template <> 5209: inline int16x8_t Add(int16x8_t a, int16x8_t b) { 5209: return vaddq_s16(a, b); 5209: } 5209: 5209: template <> 5209: inline int32x4_t Sub(int32x4_t a, int32x4_t b) { 5209: return vsubq_s32(a, b); 5209: } 5209: 5209: template <> 5209: inline int16x8_t Sub(int16x8_t a, int16x8_t b) { 5209: return vsubq_s16(a, b); 5209: } 5209: 5209: template <> 5209: inline int32x4_t Neg(int32x4_t a) { 5209: return vnegq_s32(a); 5209: } 5209: 5209: template <> 5209: inline int16x8_t Neg(int16x8_t a) { 5209: return vnegq_s16(a); 5209: } 5209: 5209: template <> 5209: inline int32x4_t ShiftLeft(int32x4_t a, int offset) { 5209: return vshlq_s32(a, vdupq_n_s32(offset)); 5209: } 5209: 5209: template <> 5209: inline int16x8_t ShiftLeft(int16x8_t a, int offset) { 5209: return vshlq_s16(a, vdupq_n_s16(offset)); 5209: } 5209: 5209: template <> 5209: inline int32x4_t ShiftLeft(int32x4_t a, int32x4_t offset) { 5209: return vshlq_s32(a, offset); 5209: } 5209: 5209: template <> 5209: inline int16x8_t ShiftLeft(int16x8_t a, int16x8_t offset) { 5209: return vshlq_s16(a, offset); 5209: } 5209: 5209: template <> 5209: inline int32x4_t ShiftRight(int32x4_t a, int offset) { 5209: return vshlq_s32(a, vdupq_n_s32(-offset)); 5209: } 5209: 5209: template <> 5209: inline int16x8_t ShiftRight(int16x8_t a, int offset) { 5209: return vshlq_s16(a, vdupq_n_s16(-offset)); 5209: } 5209: 5209: template <> 5209: inline int32x4_t SelectUsingMask(int32x4_t if_mask, int32x4_t then_val, 5209: int32x4_t else_val) { 5209: return vbslq_s32(vreinterpretq_u32_s32(if_mask), then_val, else_val); 5209: } 5209: 5209: template <> 5209: inline int16x8_t SelectUsingMask(int16x8_t if_mask, int16x8_t then_val, 5209: int16x8_t else_val) { 5209: return vbslq_s16(vreinterpretq_u16_s16(if_mask), then_val, else_val); 5209: } 5209: 5209: template <> 5209: inline int32x4_t MaskIfEqual(int32x4_t a, int32x4_t b) { 5209: return vreinterpretq_s32_u32(vceqq_s32(a, b)); 5209: } 5209: 5209: template <> 5209: inline int16x8_t MaskIfEqual(int16x8_t a, int16x8_t b) { 5209: return vreinterpretq_s16_u16(vceqq_s16(a, b)); 5209: } 5209: 5209: template <> 5209: inline int32x4_t MaskIfNotEqual(int32x4_t a, int32x4_t b) { 5209: return BitNot(MaskIfEqual(a, b)); 5209: } 5209: 5209: template <> 5209: inline int16x8_t MaskIfNotEqual(int16x8_t a, int16x8_t b) { 5209: return BitNot(MaskIfEqual(a, b)); 5209: } 5209: 5209: template <> 5209: inline int32x4_t MaskIfZero(int32x4_t a) { 5209: return MaskIfEqual(a, vdupq_n_s32(0)); 5209: } 5209: 5209: template <> 5209: inline int16x8_t MaskIfZero(int16x8_t a) { 5209: return MaskIfEqual(a, vdupq_n_s16(0)); 5209: } 5209: 5209: template <> 5209: inline int32x4_t MaskIfNonZero(int32x4_t a) { 5209: return vreinterpretq_s32_u32(vtstq_s32(a, a)); 5209: } 5209: 5209: template <> 5209: inline int16x8_t MaskIfNonZero(int16x8_t a) { 5209: return vreinterpretq_s16_u16(vtstq_s16(a, a)); 5209: } 5209: 5209: template <> 5209: inline int32x4_t MaskIfGreaterThan(int32x4_t a, int32x4_t b) { 5209: return vreinterpretq_s32_u32(vcgtq_s32(a, b)); 5209: } 5209: 5209: template <> 5209: inline int16x8_t MaskIfGreaterThan(int16x8_t a, int16x8_t b) { 5209: return vreinterpretq_s16_u16(vcgtq_s16(a, b)); 5209: } 5209: 5209: template <> 5209: inline int32x4_t MaskIfGreaterThanOrEqual(int32x4_t a, int32x4_t b) { 5209: return vreinterpretq_s32_u32(vcgeq_s32(a, b)); 5209: } 5209: 5209: template <> 5209: inline int16x8_t MaskIfGreaterThanOrEqual(int16x8_t a, int16x8_t b) { 5209: return vreinterpretq_s16_u16(vcgeq_s16(a, b)); 5209: } 5209: 5209: template <> 5209: inline int32x4_t MaskIfLessThan(int32x4_t a, int32x4_t b) { 5209: return vreinterpretq_s32_u32(vcltq_s32(a, b)); 5209: } 5209: 5209: template <> 5209: inline int16x8_t MaskIfLessThan(int16x8_t a, int16x8_t b) { 5209: return vreinterpretq_s16_u16(vcltq_s16(a, b)); 5209: } 5209: 5209: template <> 5209: inline int32x4_t MaskIfLessThanOrEqual(int32x4_t a, int32x4_t b) { 5209: return vreinterpretq_s32_u32(vcleq_s32(a, b)); 5209: } 5209: 5209: template <> 5209: inline int16x8_t MaskIfLessThanOrEqual(int16x8_t a, int16x8_t b) { 5209: return vreinterpretq_s16_u16(vcleq_s16(a, b)); 5209: } 5209: 5209: template <> 5209: inline bool All(int32x4_t a) { 5209: a = vandq_s32(a, vextq_s32(a, a, 1)); 5209: a = vandq_s32(a, vextq_s32(a, a, 2)); 5209: return vgetq_lane_s32(a, 0); 5209: } 5209: 5209: template <> 5209: inline bool All(int16x8_t a) { 5209: a = vandq_s16(a, vextq_s16(a, a, 1)); 5209: a = vandq_s16(a, vextq_s16(a, a, 2)); 5209: a = vandq_s16(a, vextq_s16(a, a, 4)); 5209: return vgetq_lane_s16(a, 0); 5209: } 5209: 5209: template <> 5209: inline bool Any(int32x4_t a) { 5209: a = vorrq_s32(a, vextq_s32(a, a, 1)); 5209: a = vorrq_s32(a, vextq_s32(a, a, 2)); 5209: return vgetq_lane_s32(a, 0); 5209: } 5209: 5209: template <> 5209: inline bool Any(int16x8_t a) { 5209: a = vorrq_s16(a, vextq_s16(a, a, 1)); 5209: a = vorrq_s16(a, vextq_s16(a, a, 2)); 5209: a = vorrq_s16(a, vextq_s16(a, a, 4)); 5209: return vgetq_lane_s16(a, 0); 5209: } 5209: 5209: template <> 5209: inline int32x4_t RoundingHalfSum(int32x4_t a, int32x4_t b) { 5209: return vrhaddq_s32(a, b); 5209: } 5209: 5209: template <> 5209: inline int16x8_t RoundingHalfSum(int16x8_t a, int16x8_t b) { 5209: return vrhaddq_s16(a, b); 5209: } 5209: 5209: template <> 5209: inline int32x4_t SaturatingRoundingDoublingHighMul(int32x4_t a, int32x4_t b) { 5209: return vqrdmulhq_s32(a, b); 5209: } 5209: 5209: template <> 5209: inline int16x8_t SaturatingRoundingDoublingHighMul(int16x8_t a, int16x8_t b) { 5209: return vqrdmulhq_s16(a, b); 5209: } 5209: 5209: template <> 5209: inline int32x4_t RoundingDivideByPOT(int32x4_t x, int exponent) { 5209: const int32x4_t shift_vec = vdupq_n_s32(-exponent); 5209: const int32x4_t fixup = vshrq_n_s32(vandq_s32(x, shift_vec), 31); 5209: const int32x4_t fixed_up_x = vqaddq_s32(x, fixup); 5209: return vrshlq_s32(fixed_up_x, shift_vec); 5209: } 5209: 5209: template <> 5209: inline int16x8_t RoundingDivideByPOT(int16x8_t x, int exponent) { 5209: const int16x8_t shift_vec = vdupq_n_s16(-exponent); 5209: const int16x8_t fixup = vshrq_n_s16(vandq_s16(x, shift_vec), 15); 5209: const int16x8_t fixed_up_x = vqaddq_s16(x, fixup); 5209: return vrshlq_s16(fixed_up_x, shift_vec); 5209: } 5209: 5209: template <> 5209: inline int32x4_t RoundingDivideByPOT(int32x4_t x, int32x4_t exponent) { 5209: const int32x4_t shift_vec = vnegq_s32(exponent); 5209: const int32x4_t fixup = vshrq_n_s32(vandq_s32(x, shift_vec), 31); 5209: const int32x4_t fixed_up_x = vqaddq_s32(x, fixup); 5209: return vrshlq_s32(fixed_up_x, shift_vec); 5209: } 5209: 5209: template <> 5209: inline int16x8_t RoundingDivideByPOT(int16x8_t x, int16x8_t exponent) { 5209: const int16x8_t shift_vec = vnegq_s16(exponent); 5209: const int16x8_t fixup = vshrq_n_s16(vandq_s16(x, shift_vec), 15); 5209: const int16x8_t fixed_up_x = vqaddq_s16(x, fixup); 5209: return vrshlq_s16(fixed_up_x, shift_vec); 5209: } 5209: 5209: template 5209: struct ImplSaturatingRoundingMultiplyByPOT { 5209: static int32x4_t eval(int32x4_t x) { return vqshlq_n_s32(x, Exponent); } 5209: }; 5209: 5209: template 5209: struct ImplSaturatingRoundingMultiplyByPOT { 5209: static int32x4_t eval(int32x4_t x) { 5209: const int32x4_t fixup = vshrq_n_s32(x, 31); 5209: const int32x4_t fixed_up_x = vqaddq_s32(x, fixup); 5209: return vrshrq_n_s32(fixed_up_x, -Exponent); 5209: } 5209: }; 5209: 5209: template 5209: struct ImplSaturatingRoundingMultiplyByPOT { 5209: static int16x8_t eval(int16x8_t x) { return vqshlq_n_s16(x, Exponent); } 5209: }; 5209: 5209: template 5209: struct ImplSaturatingRoundingMultiplyByPOT { 5209: static int16x8_t eval(int16x8_t x) { 5209: const int16x8_t fixup = vshrq_n_s16(x, 15); 5209: const int16x8_t fixed_up_x = vqaddq_s16(x, fixup); 5209: return vrshrq_n_s16(fixed_up_x, -Exponent); 5209: } 5209: }; 5209: 5209: template <> 5209: inline int32x4_t Dup(std::int32_t x) { 5209: return vdupq_n_s32(x); 5209: } 5209: 5209: template <> 5209: inline int16x8_t Dup(std::int16_t x) { 5209: return vdupq_n_s16(x); 5209: } 5209: 5209: 5209: template <> 5209: inline int16x8_t SaturatingAdd(int16x8_t a, int16x8_t b) { 5209: return vqaddq_s16(a, b); 5209: } 5209: 5209: } 5209: # 892 "/<>/test/../public/../internal/../fixedpoint/fixedpoint.h" 2 5209: # 28 "/<>/test/../public/../internal/output.h" 2 5209: 5209: # 1 "/<>/test/../public/../internal/simd_wrappers.h" 1 5209: # 25 "/<>/test/../public/../internal/simd_wrappers.h" 5209: namespace gemmlowp { 5209: 5209: template 5209: struct RegisterType { 5209: using Type = ScalarType; 5209: }; 5209: 5209: inline std::int32_t Min(std::int32_t a, std::int32_t b) { 5209: return std::min(a, b); 5209: } 5209: 5209: inline std::int32_t Max(std::int32_t a, std::int32_t b) { 5209: return std::max(a, b); 5209: } 5209: 5209: inline void MulAdd(std::int32_t lhs, std::int32_t rhs, std::int32_t* acc) { 5209: *acc += lhs * rhs; 5209: } 5209: 5209: template 5209: struct RegisterBuffer { 5209: using ScalarType = tScalarType; 5209: static constexpr int kScalarCount = tScalarCount; 5209: using RegisterType = typename RegisterType::Type; 5209: static_assert((kScalarCount & (kScalarCount - 1)) == 0, 5209: "kScalarCount must be a power of two"); 5209: static_assert(sizeof(RegisterType) % sizeof(ScalarType) == 0, ""); 5209: static constexpr int kRegisterLanes = 5209: sizeof(RegisterType) / sizeof(ScalarType); 5209: static constexpr int kRegisterCount = 5209: (kScalarCount * sizeof(ScalarType) + sizeof(RegisterType) - 1) / 5209: sizeof(RegisterType); 5209: 5209: RegisterType reg[kRegisterCount]; 5209: }; 5209: 5209: template 5209: struct RegisterBlock { 5209: using ScalarType = tScalarType; 5209: static constexpr int kRows = tRows; 5209: static constexpr int kCols = tCols; 5209: static constexpr int kScalarCount = kRows * kCols; 5209: using BufferType = RegisterBuffer; 5209: using RegisterType = typename BufferType::RegisterType; 5209: static constexpr int kRegisterCount = BufferType::kRegisterCount; 5209: static constexpr int kRegisterLanes = BufferType::kRegisterLanes; 5209: 5209: BufferType buf; 5209: }; 5209: 5209: template 5209: struct RegisterBlockAddImpl { 5209: static RegisterBlockType Run(const RegisterBlockType& lhs, 5209: const RegisterBlockType& rhs) { 5209: RegisterBlockType result; 5209: for (int i = 0; i < RegisterBlockType::kRegisterCount; i++) { 5209: result.buf.reg[i] = Add(lhs.buf.reg[i], rhs.buf.reg[i]); 5209: } 5209: return result; 5209: } 5209: }; 5209: 5209: template 5209: RegisterBlockType RegisterBlockAdd(const RegisterBlockType& lhs, 5209: const RegisterBlockType& rhs) { 5209: return RegisterBlockAddImpl::Run(lhs, rhs); 5209: } 5209: 5209: template 5209: struct ShouldFlipLhsRhs { 5209: static constexpr bool kValue = 5209: (LhsType::kScalarCount < RhsType::kScalarCount) || 5209: (LhsType::kScalarCount == RhsType::kScalarCount && 5209: (LhsType::kRows < RhsType::kRows)); 5209: }; 5209: 5209: template ::kValue> 5209: struct FlipLhsRhs { 5209: using FlippedLhsType = LhsType; 5209: using FlippedRhsType = RhsType; 5209: static const FlippedLhsType& FlippedLhs(const LhsType& lhs, 5209: const RhsType& rhs) { 5209: (void)rhs; 5209: return lhs; 5209: } 5209: static const FlippedRhsType& FlippedRhs(const LhsType& lhs, 5209: const RhsType& rhs) { 5209: (void)lhs; 5209: return rhs; 5209: } 5209: }; 5209: 5209: template 5209: struct FlipLhsRhs { 5209: using FlippedLhsType = RhsType; 5209: using FlippedRhsType = LhsType; 5209: static const FlippedLhsType& FlippedLhs(const LhsType& lhs, 5209: const RhsType& rhs) { 5209: (void)lhs; 5209: return rhs; 5209: } 5209: static const FlippedRhsType& FlippedRhs(const LhsType& lhs, 5209: const RhsType& rhs) { 5209: (void)rhs; 5209: return lhs; 5209: } 5209: }; 5209: 5209: template 5209: struct BroadcastBinaryOpShape { 5209: static constexpr int kRows = 5209: Lhs::kRows > Rhs::kRows ? Lhs::kRows : Rhs::kRows; 5209: static constexpr int kCols = 5209: Lhs::kCols > Rhs::kCols ? Lhs::kCols : Rhs::kCols; 5209: }; 5209: 5209: template 5209: struct BroadcastBinaryOpRegisterBlock { 5209: using Shape = BroadcastBinaryOpShape; 5209: using ScalarType = typename Lhs::ScalarType; 5209: using Type = RegisterBlock; 5209: }; 5209: 5209: template 5209: struct BroadcastAddImpl { 5209: using ResultBlockType = 5209: typename BroadcastBinaryOpRegisterBlock::Type; 5209: static ResultBlockType Run(const Lhs& lhs, const Rhs& rhs) { 5209: ResultBlockType result; 5209: static constexpr int Rows = ResultBlockType::kRows; 5209: static constexpr int Cols = ResultBlockType::kCols; 5209: static constexpr int LhsRows = Lhs::kRows; 5209: static constexpr int LhsCols = Lhs::kCols; 5209: static constexpr int RhsRows = Rhs::kRows; 5209: static constexpr int RhsCols = Rhs::kCols; 5209: 5209: static_assert(LhsRows == Rows || LhsRows == 1, ""); 5209: static_assert(RhsRows == Rows || RhsRows == 1, ""); 5209: static_assert(LhsCols == Cols || LhsCols == 1, ""); 5209: static_assert(RhsCols == Cols || RhsCols == 1, ""); 5209: static_assert(ResultBlockType::kRegisterLanes == 1, 5209: "This path is only for scalar values"); 5209: static_assert(Lhs::kRegisterLanes == 1, 5209: "This path is only for scalar values"); 5209: static_assert(Rhs::kRegisterLanes == 1, 5209: "This path is only for scalar values"); 5209: 5209: for (int c = 0; c < Cols; c++) { 5209: const int lhs_c = LhsCols == Cols ? c : 0; 5209: const int rhs_c = RhsCols == Cols ? c : 0; 5209: for (int r = 0; r < Rows; r++) { 5209: const int lhs_r = LhsRows == Rows ? r : 0; 5209: const int rhs_r = RhsRows == Rows ? r : 0; 5209: result.buf.reg[r + c * Rows] = 5209: Add(lhs.buf.reg[lhs_r + lhs_c * LhsRows], 5209: rhs.buf.reg[rhs_r + rhs_c * RhsRows]); 5209: } 5209: } 5209: return result; 5209: } 5209: }; 5209: 5209: template 5209: typename BroadcastBinaryOpRegisterBlock::Type BroadcastAdd( 5209: const Lhs& lhs, const Rhs& rhs) { 5209: using Flip = FlipLhsRhs; 5209: return BroadcastAddImpl< 5209: typename Flip::FlippedLhsType, 5209: typename Flip::FlippedRhsType>::Run(Flip::FlippedLhs(lhs, rhs), 5209: Flip::FlippedRhs(lhs, rhs)); 5209: } 5209: 5209: template 5209: struct BroadcastShiftLeftImpl { 5209: using ResultBlockType = 5209: typename BroadcastBinaryOpRegisterBlock::Type; 5209: static ResultBlockType Run(const Lhs& lhs, const Rhs& rhs) { 5209: ResultBlockType result; 5209: static constexpr int Rows = ResultBlockType::kRows; 5209: static constexpr int Cols = ResultBlockType::kCols; 5209: static constexpr int LhsRows = Lhs::kRows; 5209: static constexpr int LhsCols = Lhs::kCols; 5209: static constexpr int RhsRows = Rhs::kRows; 5209: static constexpr int RhsCols = Rhs::kCols; 5209: 5209: static_assert(LhsRows == Rows || LhsRows == 1, ""); 5209: static_assert(RhsRows == Rows || RhsRows == 1, ""); 5209: static_assert(LhsCols == Cols || LhsCols == 1, ""); 5209: static_assert(RhsCols == Cols || RhsCols == 1, ""); 5209: static_assert(ResultBlockType::kRegisterLanes == 1, 5209: "This path is only for scalar values"); 5209: static_assert(Lhs::kRegisterLanes == 1, 5209: "This path is only for scalar values"); 5209: static_assert(Rhs::kRegisterLanes == 1, 5209: "This path is only for scalar values"); 5209: 5209: for (int c = 0; c < Cols; c++) { 5209: const int lhs_c = LhsCols == Cols ? c : 0; 5209: const int rhs_c = RhsCols == Cols ? c : 0; 5209: for (int r = 0; r < Rows; r++) { 5209: const int lhs_r = LhsRows == Rows ? r : 0; 5209: const int rhs_r = RhsRows == Rows ? r : 0; 5209: result.buf.reg[r + c * Rows] = 5209: ShiftLeft(lhs.buf.reg[lhs_r + lhs_c * LhsRows], 5209: rhs.buf.reg[rhs_r + rhs_c * RhsRows]); 5209: } 5209: } 5209: return result; 5209: } 5209: }; 5209: 5209: template 5209: typename BroadcastBinaryOpRegisterBlock::Type BroadcastShiftLeft( 5209: const Lhs& lhs, const Rhs& rhs) { 5209: using Flip = FlipLhsRhs; 5209: return BroadcastShiftLeftImpl< 5209: typename Flip::FlippedLhsType, 5209: typename Flip::FlippedRhsType>::Run(Flip::FlippedLhs(lhs, rhs), 5209: Flip::FlippedRhs(lhs, rhs)); 5209: } 5209: 5209: template 5209: struct BroadcastSaturatingRoundingDoublingHighMulImpl { 5209: using ResultBlockType = 5209: typename BroadcastBinaryOpRegisterBlock::Type; 5209: static ResultBlockType Run(const Lhs& lhs, const Rhs& rhs) { 5209: ResultBlockType result; 5209: static constexpr int Rows = ResultBlockType::kRows; 5209: static constexpr int Cols = ResultBlockType::kCols; 5209: static constexpr int LhsRows = Lhs::kRows; 5209: static constexpr int LhsCols = Lhs::kCols; 5209: static constexpr int RhsRows = Rhs::kRows; 5209: static constexpr int RhsCols = Rhs::kCols; 5209: 5209: static_assert(LhsRows == Rows || LhsRows == 1, ""); 5209: static_assert(RhsRows == Rows || RhsRows == 1, ""); 5209: static_assert(LhsCols == Cols || LhsCols == 1, ""); 5209: static_assert(RhsCols == Cols || RhsCols == 1, ""); 5209: static_assert(ResultBlockType::kRegisterLanes == 1, 5209: "This path is only for scalar values"); 5209: static_assert(Lhs::kRegisterLanes == 1, 5209: "This path is only for scalar values"); 5209: static_assert(Rhs::kRegisterLanes == 1, 5209: "This path is only for scalar values"); 5209: 5209: for (int c = 0; c < Cols; c++) { 5209: const int lhs_c = LhsCols == Cols ? c : 0; 5209: const int rhs_c = RhsCols == Cols ? c : 0; 5209: for (int r = 0; r < Rows; r++) { 5209: const int lhs_r = LhsRows == Rows ? r : 0; 5209: const int rhs_r = RhsRows == Rows ? r : 0; 5209: result.buf.reg[r + c * Rows] = SaturatingRoundingDoublingHighMul( 5209: lhs.buf.reg[lhs_r + lhs_c * LhsRows], 5209: rhs.buf.reg[rhs_r + rhs_c * RhsRows]); 5209: } 5209: } 5209: return result; 5209: } 5209: }; 5209: 5209: template 5209: typename BroadcastBinaryOpRegisterBlock::Type 5209: BroadcastSaturatingRoundingDoublingHighMul(const Lhs& lhs, const Rhs& rhs) { 5209: using Flip = FlipLhsRhs; 5209: return BroadcastSaturatingRoundingDoublingHighMulImpl< 5209: typename Flip::FlippedLhsType, 5209: typename Flip::FlippedRhsType>::Run(Flip::FlippedLhs(lhs, rhs), 5209: Flip::FlippedRhs(lhs, rhs)); 5209: } 5209: 5209: template 5209: struct BroadcastRoundingDivideByPOTImpl { 5209: using ResultBlockType = 5209: typename BroadcastBinaryOpRegisterBlock::Type; 5209: static ResultBlockType Run(const Lhs& lhs, const Rhs& rhs) { 5209: ResultBlockType result; 5209: static constexpr int Rows = ResultBlockType::kRows; 5209: static constexpr int Cols = ResultBlockType::kCols; 5209: static constexpr int LhsRows = Lhs::kRows; 5209: static constexpr int LhsCols = Lhs::kCols; 5209: static constexpr int RhsRows = Rhs::kRows; 5209: static constexpr int RhsCols = Rhs::kCols; 5209: 5209: static_assert(LhsRows == Rows || LhsRows == 1, ""); 5209: static_assert(RhsRows == Rows || RhsRows == 1, ""); 5209: static_assert(LhsCols == Cols || LhsCols == 1, ""); 5209: static_assert(RhsCols == Cols || RhsCols == 1, ""); 5209: static_assert(ResultBlockType::kRegisterLanes == 1, 5209: "This path is only for scalar values"); 5209: static_assert(Lhs::kRegisterLanes == 1, 5209: "This path is only for scalar values"); 5209: static_assert(Rhs::kRegisterLanes == 1, 5209: "This path is only for scalar values"); 5209: 5209: for (int c = 0; c < Cols; c++) { 5209: const int lhs_c = LhsCols == Cols ? c : 0; 5209: const int rhs_c = RhsCols == Cols ? c : 0; 5209: for (int r = 0; r < Rows; r++) { 5209: const int lhs_r = LhsRows == Rows ? r : 0; 5209: const int rhs_r = RhsRows == Rows ? r : 0; 5209: result.buf.reg[r + c * Rows] = 5209: RoundingDivideByPOT(lhs.buf.reg[lhs_r + lhs_c * LhsRows], 5209: rhs.buf.reg[rhs_r + rhs_c * RhsRows]); 5209: } 5209: } 5209: return result; 5209: } 5209: }; 5209: 5209: template 5209: typename BroadcastBinaryOpRegisterBlock::Type 5209: BroadcastRoundingDivideByPOT(const Lhs& lhs, const Rhs& rhs) { 5209: using Flip = FlipLhsRhs; 5209: return BroadcastRoundingDivideByPOTImpl< 5209: typename Flip::FlippedLhsType, 5209: typename Flip::FlippedRhsType>::Run(Flip::FlippedLhs(lhs, rhs), 5209: Flip::FlippedRhs(lhs, rhs)); 5209: } 5209: 5209: template 5209: struct BroadcastMulImpl { 5209: using ResultBlockType = 5209: typename BroadcastBinaryOpRegisterBlock::Type; 5209: static ResultBlockType Run(const Lhs& lhs, const Rhs& rhs) { 5209: ResultBlockType result; 5209: static constexpr int Rows = ResultBlockType::kRows; 5209: static constexpr int Cols = ResultBlockType::kCols; 5209: static constexpr int LhsRows = Lhs::kRows; 5209: static constexpr int LhsCols = Lhs::kCols; 5209: static constexpr int RhsRows = Rhs::kRows; 5209: static constexpr int RhsCols = Rhs::kCols; 5209: static_assert(ResultBlockType::kRegisterLanes == 1, 5209: "This path is only for scalar values"); 5209: static_assert(Lhs::kRegisterLanes == 1, 5209: "This path is only for scalar values"); 5209: static_assert(Rhs::kRegisterLanes == 1, 5209: "This path is only for scalar values"); 5209: 5209: static_assert(LhsRows == Rows || LhsRows == 1, ""); 5209: static_assert(RhsRows == Rows || RhsRows == 1, ""); 5209: static_assert(LhsCols == Cols || LhsCols == 1, ""); 5209: static_assert(RhsCols == Cols || RhsCols == 1, ""); 5209: for (int c = 0; c < Cols; c++) { 5209: const int lhs_c = LhsCols == Cols ? c : 0; 5209: const int rhs_c = RhsCols == Cols ? c : 0; 5209: for (int r = 0; r < Rows; r++) { 5209: const int lhs_r = LhsRows == Rows ? r : 0; 5209: const int rhs_r = RhsRows == Rows ? r : 0; 5209: result.buf.reg[r + c * Rows] = 5209: Mul(lhs.buf.reg[lhs_r + lhs_c * LhsRows], 5209: rhs.buf.reg[rhs_r + rhs_c * RhsRows]); 5209: } 5209: } 5209: return result; 5209: } 5209: }; 5209: 5209: template 5209: typename BroadcastBinaryOpRegisterBlock::Type BroadcastMul( 5209: const Lhs& lhs, const Rhs& rhs) { 5209: using Flip = FlipLhsRhs; 5209: return BroadcastMulImpl< 5209: typename Flip::FlippedLhsType, 5209: typename Flip::FlippedRhsType>::Run(Flip::FlippedLhs(lhs, rhs), 5209: Flip::FlippedRhs(lhs, rhs)); 5209: } 5209: 5209: template 5209: struct BroadcastMulAddImpl { 5209: static void Run(const Lhs& lhs, const Rhs& rhs, Acc* acc) { 5209: static constexpr int Rows = Acc::kRows; 5209: static constexpr int Cols = Acc::kCols; 5209: static constexpr int LhsRows = Lhs::kRows; 5209: static constexpr int LhsCols = Lhs::kCols; 5209: static constexpr int RhsRows = Rhs::kRows; 5209: static constexpr int RhsCols = Rhs::kCols; 5209: static_assert(Acc::kRegisterLanes == 1, 5209: "This path is only for scalar values"); 5209: static_assert(Lhs::kRegisterLanes == 1, 5209: "This path is only for scalar values"); 5209: static_assert(Rhs::kRegisterLanes == 1, 5209: "This path is only for scalar values"); 5209: 5209: static_assert(LhsRows == Rows || LhsRows == 1, ""); 5209: static_assert(RhsRows == Rows || RhsRows == 1, ""); 5209: static_assert(LhsCols == Cols || LhsCols == 1, ""); 5209: static_assert(RhsCols == Cols || RhsCols == 1, ""); 5209: for (int c = 0; c < Cols; c++) { 5209: const int lhs_c = LhsCols == Cols ? c : 0; 5209: const int rhs_c = RhsCols == Cols ? c : 0; 5209: for (int r = 0; r < Rows; r++) { 5209: const int lhs_r = LhsRows == Rows ? r : 0; 5209: const int rhs_r = RhsRows == Rows ? r : 0; 5209: MulAdd(lhs.buf.reg[lhs_r + lhs_c * LhsRows], 5209: rhs.buf.reg[rhs_r + rhs_c * RhsRows], 5209: &acc->buf.reg[r + c * Rows]); 5209: } 5209: } 5209: } 5209: }; 5209: 5209: template 5209: void BroadcastMulAdd(const Lhs& lhs, const Rhs& rhs, Acc* acc) { 5209: using Flip = FlipLhsRhs; 5209: BroadcastMulAddImpl::Run(Flip::FlippedLhs(lhs, rhs), 5209: Flip::FlippedRhs(lhs, rhs), acc); 5209: } 5209: 5209: template 5209: struct LoadImpl { 5209: static_assert(std::is_same::value, 5209: "This generic impl should never be hit"); 5209: }; 5209: 5209: template 5209: struct LoadImpl, 5209: MatrixMap> { 5209: using RegisterBlockType = RegisterBlock; 5209: using SrcObjectType = MatrixMap; 5209: static RegisterBlockType Run(const SrcObjectType& src, int row, int col) { 5209: RegisterBlockType result; 5209: int i = 0; 5209: for (int c = 0; c < Cols; c++) { 5209: const ScalarType* src_ptr = src.data(row, col + c); 5209: for (int r = 0; r < Rows; r++) { 5209: result.buf.reg[i++] = *src_ptr++; 5209: } 5209: } 5209: return result; 5209: } 5209: }; 5209: 5209: template 5209: struct LoadImpl, 5209: VectorMap> { 5209: using RegisterBlockType = RegisterBlock; 5209: using SrcObjectType = VectorMap; 5209: static RegisterBlockType Run(const SrcObjectType& src, int pos) { 5209: static_assert(Shape == VectorShape::Col || Rows == 1, ""); 5209: static_assert(Shape == VectorShape::Row || Cols == 1, ""); 5209: RegisterBlockType result; 5209: for (int i = 0; i < Rows * Cols; i++) { 5209: result.buf.reg[i] = src(pos + i); 5209: } 5209: return result; 5209: } 5209: }; 5209: 5209: template 5209: struct LoadImpl, 5209: VectorDup> { 5209: using RegisterBlockType = RegisterBlock; 5209: using SrcObjectType = VectorDup; 5209: static RegisterBlockType Run(const SrcObjectType& src, int) { 5209: static_assert(Shape == VectorShape::Col || Rows == 1, ""); 5209: static_assert(Shape == VectorShape::Row || Cols == 1, ""); 5209: RegisterBlockType result; 5209: for (int i = 0; i < Rows * Cols; i++) { 5209: result.buf.reg[i] = src(0); 5209: } 5209: return result; 5209: } 5209: }; 5209: 5209: template 5209: RegisterBlockType Load(const SrcObjectType& src, int row, int col) { 5209: return LoadImpl::Run(src, row, col); 5209: } 5209: 5209: template 5209: RegisterBlockType Load(const SrcObjectType& src, int pos) { 5209: return LoadImpl::Run(src, pos); 5209: } 5209: 5209: template 5209: struct LoadContiguousImpl { 5209: using ScalarType = typename RegisterBlockType::ScalarType; 5209: static_assert(RegisterBlockType::kRegisterLanes == 1, 5209: "This path is only for scalar values"); 5209: static RegisterBlockType Run(const ScalarType* src) { 5209: RegisterBlockType result; 5209: for (int i = 0; i < RegisterBlockType::kScalarCount; i++) { 5209: result.buf.reg[i] = src[i]; 5209: } 5209: return result; 5209: } 5209: }; 5209: 5209: template 5209: RegisterBlockType LoadContiguous( 5209: const typename RegisterBlockType::ScalarType* src) { 5209: return LoadContiguousImpl::Run(src); 5209: } 5209: 5209: template 5209: struct LoadForBroadcastingShape {}; 5209: 5209: template 5209: struct LoadForBroadcastingShape> { 5209: static constexpr int kRows = Shape == VectorShape::Col ? BroadcastRows : 1; 5209: static constexpr int kCols = Shape == VectorShape::Row ? BroadcastCols : 1; 5209: }; 5209: 5209: template 5209: struct LoadForBroadcastingShape> { 5209: static constexpr int kRows = 1; 5209: static constexpr int kCols = 1; 5209: }; 5209: 5209: template 5209: struct LoadForBroadcastingRegisterBlock { 5209: using Shape = 5209: LoadForBroadcastingShape; 5209: using ScalarType = typename RegisterBlockType::ScalarType; 5209: using Type = RegisterBlock; 5209: }; 5209: 5209: template 5209: struct LoadForBroadcastingImpl { 5209: static_assert(std::is_same::value, 5209: "This generic impl should never be hit"); 5209: }; 5209: 5209: template 5209: struct LoadForBroadcastingImpl, 5209: VectorMap> { 5209: using RegisterBlockType = RegisterBlock; 5209: using SrcObjectType = VectorMap; 5209: using ResultBlockType = 5209: typename LoadForBroadcastingRegisterBlock::Type; 5209: static_assert(ResultBlockType::kRegisterLanes == 1, 5209: "This path is only for scalar values"); 5209: static ResultBlockType Run(const SrcObjectType& src, int pos) { 5209: ResultBlockType result; 5209: for (int c = 0; c < ResultBlockType::kCols; c++) { 5209: for (int r = 0; r < ResultBlockType::kRows; r++) { 5209: const int i = Shape == VectorShape::Col ? r : c; 5209: result.buf.reg[r + c * ResultBlockType::kRows] = src(pos + i); 5209: } 5209: } 5209: return result; 5209: } 5209: }; 5209: 5209: template 5209: struct LoadForBroadcastingImpl, 5209: VectorDup> { 5209: using RegisterBlockType = RegisterBlock; 5209: using SrcObjectType = VectorDup; 5209: using ResultBlockType = 5209: typename LoadForBroadcastingRegisterBlock::Type; 5209: static_assert(ResultBlockType::kRegisterLanes == 1, 5209: "This path is only for scalar values"); 5209: static ResultBlockType Run(const SrcObjectType& src, int) { 5209: ResultBlockType result; 5209: for (int c = 0; c < ResultBlockType::kCols; c++) { 5209: for (int r = 0; r < ResultBlockType::kRows; r++) { 5209: result.buf.reg[r + c * ResultBlockType::kRows] = src(0); 5209: } 5209: } 5209: return result; 5209: } 5209: }; 5209: 5209: template 5209: typename LoadForBroadcastingRegisterBlock::Type 5209: LoadForBroadcasting(const SrcObjectType& src, int row, int col) { 5209: return LoadForBroadcastingImpl::Run( 5209: src, row, col); 5209: } 5209: 5209: template 5209: typename LoadForBroadcastingRegisterBlock::Type 5209: LoadForBroadcasting(const SrcObjectType& src, int pos) { 5209: return LoadForBroadcastingImpl::Run(src, 5209: pos); 5209: } 5209: 5209: template 5209: struct AddConstantImpl { 5209: static void Run(RegisterBlockType* block) { 5209: using RegisterType = typename RegisterBlockType::RegisterType; 5209: const RegisterType dup = Dup(ConstantValue); 5209: for (int i = 0; i < RegisterBlockType::kRegisterCount; i++) { 5209: block->buf.reg[i] = Add(block->buf.reg[i], dup); 5209: } 5209: } 5209: }; 5209: 5209: template 5209: struct AddConstantImpl<0, RegisterBlockType> { 5209: static void Run(RegisterBlockType*) { 5209: 5209: } 5209: }; 5209: 5209: template 5209: void AddConstant(RegisterBlockType* block) { 5209: AddConstantImpl::Run(block); 5209: } 5209: 5209: template 5209: using RegBufferInt32 = RegisterBuffer; 5209: template 5209: using RegBufferInt16 = RegisterBuffer; 5209: template 5209: using RegBufferUint8 = RegisterBuffer; 5209: template 5209: using RegBufferInt8 = RegisterBuffer; 5209: template 5209: using RegBlockInt32 = RegisterBlock; 5209: template 5209: using RegBlockInt16 = RegisterBlock; 5209: template 5209: using RegBlockUint8 = RegisterBlock; 5209: template 5209: using RegBlockInt8 = RegisterBlock; 5209: 5209: } 5209: 5209: 5209: # 1 "/<>/test/../public/../internal/simd_wrappers_neon.h" 1 5209: # 22 "/<>/test/../public/../internal/simd_wrappers_neon.h" 5209: namespace gemmlowp { 5209: 5209: using Int32x4 = int32x4_t; 5209: using Int16x4 = int16x4_t; 5209: using Int16x8 = int16x8_t; 5209: using Uint8x8 = uint8x8_t; 5209: using Int8x8 = int8x8_t; 5209: 5209: template 5209: struct RegisterType { 5209: using Type = 5209: typename std::conditional= 4, Int32x4, std::int32_t>::type; 5209: }; 5209: 5209: template 5209: struct RegisterType { 5209: using Type = typename std::conditional< 5209: ScalarCount >= 8, Int16x8, 5209: typename std::conditional= 4, Int16x4, 5209: std::int16_t>::type>::type; 5209: }; 5209: 5209: template 5209: struct RegisterType { 5209: using Type = typename std::conditional< 5209: ScalarCount >= 8, Uint8x8, 5209: typename std::conditional= 4, std::uint32_t, 5209: std::uint8_t>::type>::type; 5209: }; 5209: 5209: template 5209: struct RegisterType { 5209: using Type = typename std::conditional< 5209: ScalarCount >= 8, Int8x8, 5209: typename std::conditional= 4, std::int32_t, 5209: std::int8_t>::type>::type; 5209: }; 5209: 5209: inline Int32x4 LoadInt32x4(const std::int32_t* src) { return vld1q_s32(src); } 5209: inline Int16x4 LoadInt16x4(const std::int16_t* src) { return vld1_s16(src); } 5209: inline Int16x8 LoadInt16x8(const std::int16_t* src) { return vld1q_s16(src); } 5209: 5209: inline void StoreInt32x4(std::int32_t* dst, Int32x4 value) { 5209: vst1q_s32(dst, value); 5209: } 5209: 5209: inline void StoreInt16x4(std::int16_t* dst, Int16x4 value) { 5209: vst1_s16(dst, value); 5209: } 5209: 5209: inline void StoreInt16x8(std::int16_t* dst, Int16x8 value) { 5209: vst1q_s16(dst, value); 5209: } 5209: 5209: template 5209: std::int32_t GetLane(Int32x4 value) { 5209: return vgetq_lane_s32(value, Lane); 5209: } 5209: 5209: template 5209: Int32x4 DupLane(Int32x4 value) { 5209: switch (Lane) { 5209: case 0: 5209: return vdupq_lane_s32(vget_low_s32(value), 0); 5209: case 1: 5209: return vdupq_lane_s32(vget_low_s32(value), 1); 5209: case 2: 5209: return vdupq_lane_s32(vget_high_s32(value), 0); 5209: case 3: 5209: return vdupq_lane_s32(vget_high_s32(value), 1); 5209: default: 5209: static_assert(Lane >= 0 && Lane <= 3, ""); 5209: return vdupq_n_s32(0); 5209: } 5209: } 5209: 5209: inline Int32x4 Mul(Int32x4 a, std::int32_t b) { return vmulq_n_s32(a, b); } 5209: 5209: inline Int32x4 Min(Int32x4 a, Int32x4 b) { return vminq_s32(a, b); } 5209: 5209: inline Int32x4 Max(Int32x4 a, Int32x4 b) { return vmaxq_s32(a, b); } 5209: 5209: inline Int32x4 Max(Int32x4 a, std::int32_t b) { 5209: return vmaxq_s32(a, vdupq_n_s32(b)); 5209: } 5209: 5209: inline Int32x4 SaturatingRoundingDoublingHighMul(Int32x4 a, std::int32_t b) { 5209: return vqrdmulhq_n_s32(a, b); 5209: } 5209: 5209: template 5209: Int32x4 MulByRhsLane(Int32x4 a, Int32x4 b) { 5209: switch (Lane) { 5209: case 0: 5209: return vmulq_lane_s32(a, vget_low_s32(b), 0); 5209: case 1: 5209: return vmulq_lane_s32(a, vget_low_s32(b), 1); 5209: case 2: 5209: return vmulq_lane_s32(a, vget_high_s32(b), 0); 5209: case 3: 5209: return vmulq_lane_s32(a, vget_high_s32(b), 1); 5209: default: 5209: static_assert(Lane >= 0 && Lane <= 3, ""); 5209: return vdupq_n_s32(0); 5209: } 5209: } 5209: 5209: inline void MulAdd(Int32x4 lhs, Int32x4 rhs, Int32x4* acc) { 5209: *acc = vmlaq_s32(*acc, lhs, rhs); 5209: } 5209: 5209: inline void MulAdd(Int32x4 lhs, std::int32_t rhs, Int32x4* acc) { 5209: *acc = vmlaq_n_s32(*acc, lhs, rhs); 5209: } 5209: 5209: template 5209: inline void MulAddByRhsLane(Int32x4 lhs, Int32x4 rhs, Int32x4* acc) { 5209: switch (Lane) { 5209: case 0: 5209: *acc = vmlaq_lane_s32(*acc, lhs, vget_low_s32(rhs), 0); 5209: break; 5209: case 1: 5209: *acc = vmlaq_lane_s32(*acc, lhs, vget_low_s32(rhs), 1); 5209: break; 5209: case 2: 5209: *acc = vmlaq_lane_s32(*acc, lhs, vget_high_s32(rhs), 0); 5209: break; 5209: case 3: 5209: *acc = vmlaq_lane_s32(*acc, lhs, vget_high_s32(rhs), 1); 5209: break; 5209: default: 5209: static_assert(Lane >= 0 && Lane <= 3, ""); 5209: } 5209: } 5209: 5209: template <> 5209: struct LoadContiguousImpl> { 5209: static RegBlockInt16<8, 8> Run(const std::int16_t* src) { 5209: RegBlockInt16<8, 8> result; 5209: for (int i = 0; i < 8; i++) { 5209: result.buf.reg[i] = vld1q_s16(src + 8 * i); 5209: } 5209: return result; 5209: } 5209: }; 5209: 5209: template <> 5209: struct LoadContiguousImpl> { 5209: static RegBlockUint8<8, 8> Run(const std::uint8_t* src) { 5209: RegBlockUint8<8, 8> result; 5209: for (int i = 0; i < 8; i++) { 5209: result.buf.reg[i] = vld1_u8(src + 8 * i); 5209: } 5209: return result; 5209: } 5209: }; 5209: 5209: template <> 5209: struct LoadContiguousImpl> { 5209: static RegBlockInt8<8, 8> Run(const std::int8_t* src) { 5209: RegBlockInt8<8, 8> result; 5209: for (int i = 0; i < 8; i++) { 5209: result.buf.reg[i] = vld1_s8(src + 8 * i); 5209: } 5209: return result; 5209: } 5209: }; 5209: 5209: template <> 5209: struct LoadContiguousImpl> { 5209: static RegBlockInt32<8, 8> Run(const std::int32_t* src) { 5209: RegBlockInt32<8, 8> result; 5209: for (int i = 0; i < 16; i++) { 5209: result.buf.reg[i] = vld1q_s32(src + 4 * i); 5209: } 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastShiftLeftImpl, RegBlockInt32<1, 1>> { 5209: static RegBlockInt32<4, 1> Run(const RegBlockInt32<4, 1>& lhs, 5209: const RegBlockInt32<1, 1>& rhs) { 5209: RegBlockInt32<4, 1> result; 5209: result.buf.reg[0] = ShiftLeft(lhs.buf.reg[0], Dup(rhs.buf.reg[0])); 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastShiftLeftImpl, RegBlockInt32<1, 1>> { 5209: static RegBlockInt32<1, 4> Run(const RegBlockInt32<1, 4>& lhs, 5209: const RegBlockInt32<1, 1>& rhs) { 5209: RegBlockInt32<1, 4> result; 5209: result.buf.reg[0] = ShiftLeft(lhs.buf.reg[0], Dup(rhs.buf.reg[0])); 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastShiftLeftImpl, RegBlockInt32<4, 1>> { 5209: static RegBlockInt32<4, 1> Run(const RegBlockInt32<4, 1>& lhs, 5209: const RegBlockInt32<4, 1>& rhs) { 5209: RegBlockInt32<4, 1> result; 5209: result.buf.reg[0] = ShiftLeft(lhs.buf.reg[0], rhs.buf.reg[0]); 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastShiftLeftImpl, RegBlockInt32<1, 4>> { 5209: static RegBlockInt32<1, 4> Run(const RegBlockInt32<1, 4>& lhs, 5209: const RegBlockInt32<1, 4>& rhs) { 5209: RegBlockInt32<1, 4> result; 5209: result.buf.reg[0] = ShiftLeft(lhs.buf.reg[0], rhs.buf.reg[0]); 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastShiftLeftImpl, RegBlockInt32<1, 4>> { 5209: static RegBlockInt32<4, 4> Run(const RegBlockInt32<4, 4>& lhs, 5209: const RegBlockInt32<1, 4>& rhs) { 5209: RegBlockInt32<4, 4> result; 5209: result.buf.reg[0] = ShiftLeft(lhs.buf.reg[0], DupLane<0>(rhs.buf.reg[0])); 5209: result.buf.reg[1] = ShiftLeft(lhs.buf.reg[1], DupLane<1>(rhs.buf.reg[0])); 5209: result.buf.reg[2] = ShiftLeft(lhs.buf.reg[2], DupLane<2>(rhs.buf.reg[0])); 5209: result.buf.reg[3] = ShiftLeft(lhs.buf.reg[3], DupLane<3>(rhs.buf.reg[0])); 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastShiftLeftImpl, RegBlockInt32<4, 1>> { 5209: static RegBlockInt32<4, 4> Run(const RegBlockInt32<4, 4>& lhs, 5209: const RegBlockInt32<4, 1>& rhs) { 5209: RegBlockInt32<4, 4> result; 5209: result.buf.reg[0] = ShiftLeft(lhs.buf.reg[0], rhs.buf.reg[0]); 5209: result.buf.reg[1] = ShiftLeft(lhs.buf.reg[1], rhs.buf.reg[0]); 5209: result.buf.reg[2] = ShiftLeft(lhs.buf.reg[2], rhs.buf.reg[0]); 5209: result.buf.reg[3] = ShiftLeft(lhs.buf.reg[3], rhs.buf.reg[0]); 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastShiftLeftImpl, RegBlockInt32<1, 1>> { 5209: static RegBlockInt32<8, 1> Run(const RegBlockInt32<8, 1>& lhs, 5209: const RegBlockInt32<1, 1>& rhs) { 5209: RegBlockInt32<8, 1> result; 5209: const Int32x4 p = Dup(rhs.buf.reg[0]); 5209: for (int i = 0; i < 2; i++) { 5209: result.buf.reg[i] = ShiftLeft(lhs.buf.reg[i], p); 5209: } 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastShiftLeftImpl, RegBlockInt32<8, 1>> { 5209: static RegBlockInt32<8, 1> Run(const RegBlockInt32<8, 1>& lhs, 5209: const RegBlockInt32<8, 1>& rhs) { 5209: RegBlockInt32<8, 1> result; 5209: for (int i = 0; i < 2; i++) { 5209: result.buf.reg[i] = ShiftLeft(lhs.buf.reg[i], rhs.buf.reg[i]); 5209: } 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastShiftLeftImpl, RegBlockInt32<1, 4>> { 5209: static RegBlockInt32<8, 4> Run(const RegBlockInt32<8, 4>& lhs, 5209: const RegBlockInt32<1, 4>& rhs) { 5209: RegBlockInt32<8, 4> result; 5209: result.buf.reg[0] = ShiftLeft(lhs.buf.reg[0], DupLane<0>(rhs.buf.reg[0])); 5209: result.buf.reg[1] = ShiftLeft(lhs.buf.reg[1], DupLane<0>(rhs.buf.reg[0])); 5209: result.buf.reg[2] = ShiftLeft(lhs.buf.reg[2], DupLane<1>(rhs.buf.reg[0])); 5209: result.buf.reg[3] = ShiftLeft(lhs.buf.reg[3], DupLane<1>(rhs.buf.reg[0])); 5209: result.buf.reg[4] = ShiftLeft(lhs.buf.reg[4], DupLane<2>(rhs.buf.reg[0])); 5209: result.buf.reg[5] = ShiftLeft(lhs.buf.reg[5], DupLane<2>(rhs.buf.reg[0])); 5209: result.buf.reg[6] = ShiftLeft(lhs.buf.reg[6], DupLane<3>(rhs.buf.reg[0])); 5209: result.buf.reg[7] = ShiftLeft(lhs.buf.reg[7], DupLane<3>(rhs.buf.reg[0])); 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastShiftLeftImpl, RegBlockInt32<8, 1>> { 5209: static RegBlockInt32<8, 4> Run(const RegBlockInt32<8, 4>& lhs, 5209: const RegBlockInt32<8, 1>& rhs) { 5209: RegBlockInt32<8, 4> result; 5209: result.buf.reg[0] = ShiftLeft(lhs.buf.reg[0], rhs.buf.reg[0]); 5209: result.buf.reg[1] = ShiftLeft(lhs.buf.reg[1], rhs.buf.reg[1]); 5209: result.buf.reg[2] = ShiftLeft(lhs.buf.reg[2], rhs.buf.reg[0]); 5209: result.buf.reg[3] = ShiftLeft(lhs.buf.reg[3], rhs.buf.reg[1]); 5209: result.buf.reg[4] = ShiftLeft(lhs.buf.reg[4], rhs.buf.reg[0]); 5209: result.buf.reg[5] = ShiftLeft(lhs.buf.reg[5], rhs.buf.reg[1]); 5209: result.buf.reg[6] = ShiftLeft(lhs.buf.reg[6], rhs.buf.reg[0]); 5209: result.buf.reg[7] = ShiftLeft(lhs.buf.reg[7], rhs.buf.reg[1]); 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastShiftLeftImpl, RegBlockInt32<1, 8>> { 5209: static RegBlockInt32<1, 8> Run(const RegBlockInt32<1, 8>& lhs, 5209: const RegBlockInt32<1, 8>& rhs) { 5209: RegBlockInt32<1, 8> result; 5209: result.buf.reg[0] = ShiftLeft(lhs.buf.reg[0], rhs.buf.reg[0]); 5209: result.buf.reg[1] = ShiftLeft(lhs.buf.reg[1], rhs.buf.reg[1]); 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastShiftLeftImpl, RegBlockInt32<1, 1>> { 5209: static RegBlockInt32<1, 8> Run(const RegBlockInt32<1, 8>& lhs, 5209: const RegBlockInt32<1, 1>& rhs) { 5209: RegBlockInt32<1, 8> result; 5209: result.buf.reg[0] = ShiftLeft(lhs.buf.reg[0], Dup(rhs.buf.reg[0])); 5209: result.buf.reg[1] = ShiftLeft(lhs.buf.reg[1], Dup(rhs.buf.reg[0])); 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastRoundingDivideByPOTImpl, 5209: RegBlockInt32<1, 1>> { 5209: static RegBlockInt32<4, 1> Run(const RegBlockInt32<4, 1>& lhs, 5209: const RegBlockInt32<1, 1>& rhs) { 5209: RegBlockInt32<4, 1> result; 5209: result.buf.reg[0] = 5209: RoundingDivideByPOT(lhs.buf.reg[0], Dup(rhs.buf.reg[0])); 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastRoundingDivideByPOTImpl, 5209: RegBlockInt32<1, 1>> { 5209: static RegBlockInt32<1, 4> Run(const RegBlockInt32<1, 4>& lhs, 5209: const RegBlockInt32<1, 1>& rhs) { 5209: RegBlockInt32<1, 4> result; 5209: result.buf.reg[0] = 5209: RoundingDivideByPOT(lhs.buf.reg[0], Dup(rhs.buf.reg[0])); 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastRoundingDivideByPOTImpl, 5209: RegBlockInt32<4, 1>> { 5209: static RegBlockInt32<4, 1> Run(const RegBlockInt32<4, 1>& lhs, 5209: const RegBlockInt32<4, 1>& rhs) { 5209: RegBlockInt32<4, 1> result; 5209: result.buf.reg[0] = RoundingDivideByPOT(lhs.buf.reg[0], rhs.buf.reg[0]); 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastRoundingDivideByPOTImpl, 5209: RegBlockInt32<1, 4>> { 5209: static RegBlockInt32<1, 4> Run(const RegBlockInt32<1, 4>& lhs, 5209: const RegBlockInt32<1, 4>& rhs) { 5209: RegBlockInt32<1, 4> result; 5209: result.buf.reg[0] = RoundingDivideByPOT(lhs.buf.reg[0], rhs.buf.reg[0]); 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastRoundingDivideByPOTImpl, 5209: RegBlockInt32<1, 4>> { 5209: static RegBlockInt32<4, 4> Run(const RegBlockInt32<4, 4>& lhs, 5209: const RegBlockInt32<1, 4>& rhs) { 5209: RegBlockInt32<4, 4> result; 5209: result.buf.reg[0] = 5209: RoundingDivideByPOT(lhs.buf.reg[0], DupLane<0>(rhs.buf.reg[0])); 5209: result.buf.reg[1] = 5209: RoundingDivideByPOT(lhs.buf.reg[1], DupLane<1>(rhs.buf.reg[0])); 5209: result.buf.reg[2] = 5209: RoundingDivideByPOT(lhs.buf.reg[2], DupLane<2>(rhs.buf.reg[0])); 5209: result.buf.reg[3] = 5209: RoundingDivideByPOT(lhs.buf.reg[3], DupLane<3>(rhs.buf.reg[0])); 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastRoundingDivideByPOTImpl, 5209: RegBlockInt32<4, 1>> { 5209: static RegBlockInt32<4, 4> Run(const RegBlockInt32<4, 4>& lhs, 5209: const RegBlockInt32<4, 1>& rhs) { 5209: RegBlockInt32<4, 4> result; 5209: result.buf.reg[0] = RoundingDivideByPOT(lhs.buf.reg[0], rhs.buf.reg[0]); 5209: result.buf.reg[1] = RoundingDivideByPOT(lhs.buf.reg[1], rhs.buf.reg[0]); 5209: result.buf.reg[2] = RoundingDivideByPOT(lhs.buf.reg[2], rhs.buf.reg[0]); 5209: result.buf.reg[3] = RoundingDivideByPOT(lhs.buf.reg[3], rhs.buf.reg[0]); 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastRoundingDivideByPOTImpl, 5209: RegBlockInt32<1, 1>> { 5209: static RegBlockInt32<8, 1> Run(const RegBlockInt32<8, 1>& lhs, 5209: const RegBlockInt32<1, 1>& rhs) { 5209: RegBlockInt32<8, 1> result; 5209: const Int32x4 p = Dup(rhs.buf.reg[0]); 5209: for (int i = 0; i < 2; i++) { 5209: result.buf.reg[i] = RoundingDivideByPOT(lhs.buf.reg[i], p); 5209: } 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastRoundingDivideByPOTImpl, 5209: RegBlockInt32<8, 1>> { 5209: static RegBlockInt32<8, 1> Run(const RegBlockInt32<8, 1>& lhs, 5209: const RegBlockInt32<8, 1>& rhs) { 5209: RegBlockInt32<8, 1> result; 5209: for (int i = 0; i < 2; i++) { 5209: result.buf.reg[i] = RoundingDivideByPOT(lhs.buf.reg[i], rhs.buf.reg[i]); 5209: } 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastRoundingDivideByPOTImpl, 5209: RegBlockInt32<1, 4>> { 5209: static RegBlockInt32<8, 4> Run(const RegBlockInt32<8, 4>& lhs, 5209: const RegBlockInt32<1, 4>& rhs) { 5209: RegBlockInt32<8, 4> result; 5209: result.buf.reg[0] = 5209: RoundingDivideByPOT(lhs.buf.reg[0], DupLane<0>(rhs.buf.reg[0])); 5209: result.buf.reg[1] = 5209: RoundingDivideByPOT(lhs.buf.reg[1], DupLane<0>(rhs.buf.reg[0])); 5209: result.buf.reg[2] = 5209: RoundingDivideByPOT(lhs.buf.reg[2], DupLane<1>(rhs.buf.reg[0])); 5209: result.buf.reg[3] = 5209: RoundingDivideByPOT(lhs.buf.reg[3], DupLane<1>(rhs.buf.reg[0])); 5209: result.buf.reg[4] = 5209: RoundingDivideByPOT(lhs.buf.reg[4], DupLane<2>(rhs.buf.reg[0])); 5209: result.buf.reg[5] = 5209: RoundingDivideByPOT(lhs.buf.reg[5], DupLane<2>(rhs.buf.reg[0])); 5209: result.buf.reg[6] = 5209: RoundingDivideByPOT(lhs.buf.reg[6], DupLane<3>(rhs.buf.reg[0])); 5209: result.buf.reg[7] = 5209: RoundingDivideByPOT(lhs.buf.reg[7], DupLane<3>(rhs.buf.reg[0])); 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastRoundingDivideByPOTImpl, 5209: RegBlockInt32<8, 1>> { 5209: static RegBlockInt32<8, 4> Run(const RegBlockInt32<8, 4>& lhs, 5209: const RegBlockInt32<8, 1>& rhs) { 5209: RegBlockInt32<8, 4> result; 5209: result.buf.reg[0] = RoundingDivideByPOT(lhs.buf.reg[0], rhs.buf.reg[0]); 5209: result.buf.reg[1] = RoundingDivideByPOT(lhs.buf.reg[1], rhs.buf.reg[1]); 5209: result.buf.reg[2] = RoundingDivideByPOT(lhs.buf.reg[2], rhs.buf.reg[0]); 5209: result.buf.reg[3] = RoundingDivideByPOT(lhs.buf.reg[3], rhs.buf.reg[1]); 5209: result.buf.reg[4] = RoundingDivideByPOT(lhs.buf.reg[4], rhs.buf.reg[0]); 5209: result.buf.reg[5] = RoundingDivideByPOT(lhs.buf.reg[5], rhs.buf.reg[1]); 5209: result.buf.reg[6] = RoundingDivideByPOT(lhs.buf.reg[6], rhs.buf.reg[0]); 5209: result.buf.reg[7] = RoundingDivideByPOT(lhs.buf.reg[7], rhs.buf.reg[1]); 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastRoundingDivideByPOTImpl, 5209: RegBlockInt32<1, 8>> { 5209: static RegBlockInt32<1, 8> Run(const RegBlockInt32<1, 8>& lhs, 5209: const RegBlockInt32<1, 8>& rhs) { 5209: RegBlockInt32<1, 8> result; 5209: result.buf.reg[0] = RoundingDivideByPOT(lhs.buf.reg[0], rhs.buf.reg[0]); 5209: result.buf.reg[1] = RoundingDivideByPOT(lhs.buf.reg[1], rhs.buf.reg[1]); 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastRoundingDivideByPOTImpl, 5209: RegBlockInt32<1, 1>> { 5209: static RegBlockInt32<1, 8> Run(const RegBlockInt32<1, 8>& lhs, 5209: const RegBlockInt32<1, 1>& rhs) { 5209: RegBlockInt32<1, 8> result; 5209: result.buf.reg[0] = 5209: RoundingDivideByPOT(lhs.buf.reg[0], Dup(rhs.buf.reg[0])); 5209: result.buf.reg[1] = 5209: RoundingDivideByPOT(lhs.buf.reg[1], Dup(rhs.buf.reg[0])); 5209: return result; 5209: } 5209: }; 5209: 5209: } 5209: 5209: # 1 "/<>/test/../public/../internal/simd_wrappers_common_neon_sse.h" 1 5209: # 20 "/<>/test/../public/../internal/simd_wrappers_common_neon_sse.h" 5209: # 1 "/<>/test/../public/../internal/simd_wrappers.h" 1 5209: # 21 "/<>/test/../public/../internal/simd_wrappers_common_neon_sse.h" 2 5209: 5209: namespace gemmlowp { 5209: 5209: template 5209: struct LoadImpl, 5209: MatrixMap> { 5209: static RegBlockInt32<4, N> Run( 5209: const MatrixMap& src, int row, 5209: int col) { 5209: RegBlockInt32<4, N> result; 5209: for (int i = 0; i < N; i++) { 5209: result.buf.reg[i] = LoadInt32x4(src.data(row, col + i)); 5209: } 5209: return result; 5209: } 5209: }; 5209: 5209: template 5209: struct LoadImpl, 5209: MatrixMap> { 5209: static RegBlockInt32<8, N> Run( 5209: const MatrixMap& src, int row, 5209: int col) { 5209: RegBlockInt32<8, N> result; 5209: for (int i = 0; i < N; i++) { 5209: result.buf.reg[2 * i + 0] = LoadInt32x4(src.data(row + 0, col + i)); 5209: result.buf.reg[2 * i + 1] = LoadInt32x4(src.data(row + 4, col + i)); 5209: } 5209: return result; 5209: } 5209: }; 5209: 5209: template 5209: struct LoadImpl, 5209: MatrixMap> { 5209: static RegBlockInt32<1, 4> Run( 5209: const MatrixMap& src, int row, 5209: int col) { 5209: RegBlockInt32<1, 4> result; 5209: std::int32_t buf[4]; 5209: for (int i = 0; i < 4; i++) { 5209: buf[i] = src(row, col + i); 5209: } 5209: result.buf.reg[0] = LoadInt32x4(buf); 5209: return result; 5209: } 5209: }; 5209: 5209: template 5209: struct LoadImpl, 5209: MatrixMap> { 5209: static RegBlockInt32<1, 8> Run( 5209: const MatrixMap& src, int row, 5209: int col) { 5209: RegBlockInt32<1, 8> result; 5209: std::int32_t buf[8]; 5209: for (int i = 0; i < 8; i++) { 5209: buf[i] = src(row, col + i); 5209: } 5209: result.buf.reg[0] = LoadInt32x4(buf); 5209: result.buf.reg[1] = LoadInt32x4(buf + 4); 5209: return result; 5209: } 5209: }; 5209: 5209: template 5209: struct LoadImpl, 5209: VectorMap> { 5209: static RegBlockInt32<4, 1> Run( 5209: const VectorMap& src, int pos) { 5209: RegBlockInt32<4, 1> result; 5209: result.buf.reg[0] = LoadInt32x4(src.data(pos)); 5209: return result; 5209: } 5209: }; 5209: 5209: template 5209: struct LoadImpl, 5209: VectorDup> { 5209: static RegBlockInt32<4, 1> Run( 5209: const VectorDup& src, int) { 5209: RegBlockInt32<4, 1> result; 5209: result.buf.reg[0] = LoadInt32x4(src(0)); 5209: return result; 5209: } 5209: }; 5209: 5209: template 5209: struct LoadForBroadcastingImpl, 5209: VectorMap> { 5209: using SrcObjectType = VectorMap; 5209: using RegisterBlockType = RegBlockInt32<4, N>; 5209: using ResultBlockType = 5209: typename LoadForBroadcastingRegisterBlock::Type; 5209: 5209: static ResultBlockType Run(const SrcObjectType& src, int pos) { 5209: ResultBlockType result; 5209: static_assert(ResultBlockType::kRegisterCount == 1, ""); 5209: result.buf.reg[0] = LoadInt32x4(src.data(pos)); 5209: return result; 5209: } 5209: }; 5209: 5209: template 5209: struct LoadForBroadcastingImpl, 5209: VectorMap> { 5209: using SrcObjectType = VectorMap; 5209: using RegisterBlockType = RegBlockInt32<8, N>; 5209: using ResultBlockType = 5209: typename LoadForBroadcastingRegisterBlock::Type; 5209: 5209: static ResultBlockType Run(const SrcObjectType& src, int pos) { 5209: ResultBlockType result; 5209: static_assert(ResultBlockType::kRegisterCount == 2, ""); 5209: result.buf.reg[0] = LoadInt32x4(src.data(pos)); 5209: result.buf.reg[1] = LoadInt32x4(src.data(pos + 4)); 5209: return result; 5209: } 5209: }; 5209: 5209: template 5209: struct LoadForBroadcastingImpl, 5209: VectorMap> { 5209: using SrcObjectType = VectorMap; 5209: using RegisterBlockType = RegBlockInt32<4, 1>; 5209: using ResultBlockType = 5209: typename LoadForBroadcastingRegisterBlock::Type; 5209: 5209: static ResultBlockType Run(const SrcObjectType& src, int pos) { 5209: ResultBlockType result; 5209: result.buf.reg[0] = src(pos); 5209: return result; 5209: } 5209: }; 5209: 5209: template 5209: struct LoadForBroadcastingImpl, 5209: VectorMap> { 5209: using SrcObjectType = VectorMap; 5209: using RegisterBlockType = RegBlockInt32; 5209: using ResultBlockType = 5209: typename LoadForBroadcastingRegisterBlock::Type; 5209: 5209: static ResultBlockType Run(const SrcObjectType& src, int pos) { 5209: ResultBlockType result; 5209: static_assert(ResultBlockType::kRegisterCount == 1, ""); 5209: result.buf.reg[0] = LoadInt32x4(src.data(pos)); 5209: return result; 5209: } 5209: }; 5209: 5209: template 5209: struct LoadForBroadcastingImpl, 5209: VectorMap> { 5209: using SrcObjectType = VectorMap; 5209: using RegisterBlockType = RegBlockInt32; 5209: using ResultBlockType = 5209: typename LoadForBroadcastingRegisterBlock::Type; 5209: 5209: static ResultBlockType Run(const SrcObjectType& src, int pos) { 5209: ResultBlockType result; 5209: static_assert(ResultBlockType::kRegisterCount == 2, ""); 5209: result.buf.reg[0] = LoadInt32x4(src.data(pos)); 5209: result.buf.reg[1] = LoadInt32x4(src.data(pos + 4)); 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastAddImpl, RegBlockInt32<1, 1>> { 5209: static RegBlockInt32<4, 1> Run(const RegBlockInt32<4, 1>& lhs, 5209: const RegBlockInt32<1, 1>& rhs) { 5209: RegBlockInt32<4, 1> result; 5209: result.buf.reg[0] = Add(lhs.buf.reg[0], Dup(rhs.buf.reg[0])); 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastAddImpl, RegBlockInt32<1, 1>> { 5209: static RegBlockInt32<1, 4> Run(const RegBlockInt32<1, 4>& lhs, 5209: const RegBlockInt32<1, 1>& rhs) { 5209: RegBlockInt32<1, 4> result; 5209: result.buf.reg[0] = Add(lhs.buf.reg[0], Dup(rhs.buf.reg[0])); 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastAddImpl, RegBlockInt32<4, 1>> { 5209: static RegBlockInt32<4, 1> Run(const RegBlockInt32<4, 1>& lhs, 5209: const RegBlockInt32<4, 1>& rhs) { 5209: RegBlockInt32<4, 1> result; 5209: result.buf.reg[0] = Add(lhs.buf.reg[0], rhs.buf.reg[0]); 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastAddImpl, RegBlockInt32<1, 4>> { 5209: static RegBlockInt32<1, 4> Run(const RegBlockInt32<1, 4>& lhs, 5209: const RegBlockInt32<1, 4>& rhs) { 5209: RegBlockInt32<1, 4> result; 5209: result.buf.reg[0] = Add(lhs.buf.reg[0], rhs.buf.reg[0]); 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastAddImpl, RegBlockInt32<1, 4>> { 5209: static RegBlockInt32<4, 4> Run(const RegBlockInt32<4, 4>& lhs, 5209: const RegBlockInt32<1, 4>& rhs) { 5209: RegBlockInt32<4, 4> result; 5209: result.buf.reg[0] = Add(lhs.buf.reg[0], DupLane<0>(rhs.buf.reg[0])); 5209: result.buf.reg[1] = Add(lhs.buf.reg[1], DupLane<1>(rhs.buf.reg[0])); 5209: result.buf.reg[2] = Add(lhs.buf.reg[2], DupLane<2>(rhs.buf.reg[0])); 5209: result.buf.reg[3] = Add(lhs.buf.reg[3], DupLane<3>(rhs.buf.reg[0])); 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastAddImpl, RegBlockInt32<4, 1>> { 5209: static RegBlockInt32<4, 4> Run(const RegBlockInt32<4, 4>& lhs, 5209: const RegBlockInt32<4, 1>& rhs) { 5209: RegBlockInt32<4, 4> result; 5209: result.buf.reg[0] = Add(lhs.buf.reg[0], rhs.buf.reg[0]); 5209: result.buf.reg[1] = Add(lhs.buf.reg[1], rhs.buf.reg[0]); 5209: result.buf.reg[2] = Add(lhs.buf.reg[2], rhs.buf.reg[0]); 5209: result.buf.reg[3] = Add(lhs.buf.reg[3], rhs.buf.reg[0]); 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastAddImpl, RegBlockInt32<1, 1>> { 5209: static RegBlockInt32<8, 1> Run(const RegBlockInt32<8, 1>& lhs, 5209: const RegBlockInt32<1, 1>& rhs) { 5209: RegBlockInt32<8, 1> result; 5209: const Int32x4 p = Dup(rhs.buf.reg[0]); 5209: for (int i = 0; i < 2; i++) { 5209: result.buf.reg[i] = Add(lhs.buf.reg[i], p); 5209: } 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastAddImpl, RegBlockInt32<8, 1>> { 5209: static RegBlockInt32<8, 1> Run(const RegBlockInt32<8, 1>& lhs, 5209: const RegBlockInt32<8, 1>& rhs) { 5209: RegBlockInt32<8, 1> result; 5209: for (int i = 0; i < 2; i++) { 5209: result.buf.reg[i] = Add(lhs.buf.reg[i], rhs.buf.reg[i]); 5209: } 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastAddImpl, RegBlockInt32<1, 4>> { 5209: static RegBlockInt32<8, 4> Run(const RegBlockInt32<8, 4>& lhs, 5209: const RegBlockInt32<1, 4>& rhs) { 5209: RegBlockInt32<8, 4> result; 5209: result.buf.reg[0] = Add(lhs.buf.reg[0], DupLane<0>(rhs.buf.reg[0])); 5209: result.buf.reg[1] = Add(lhs.buf.reg[1], DupLane<0>(rhs.buf.reg[0])); 5209: result.buf.reg[2] = Add(lhs.buf.reg[2], DupLane<1>(rhs.buf.reg[0])); 5209: result.buf.reg[3] = Add(lhs.buf.reg[3], DupLane<1>(rhs.buf.reg[0])); 5209: result.buf.reg[4] = Add(lhs.buf.reg[4], DupLane<2>(rhs.buf.reg[0])); 5209: result.buf.reg[5] = Add(lhs.buf.reg[5], DupLane<2>(rhs.buf.reg[0])); 5209: result.buf.reg[6] = Add(lhs.buf.reg[6], DupLane<3>(rhs.buf.reg[0])); 5209: result.buf.reg[7] = Add(lhs.buf.reg[7], DupLane<3>(rhs.buf.reg[0])); 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastAddImpl, RegBlockInt32<8, 1>> { 5209: static RegBlockInt32<8, 4> Run(const RegBlockInt32<8, 4>& lhs, 5209: const RegBlockInt32<8, 1>& rhs) { 5209: RegBlockInt32<8, 4> result; 5209: result.buf.reg[0] = Add(lhs.buf.reg[0], rhs.buf.reg[0]); 5209: result.buf.reg[1] = Add(lhs.buf.reg[1], rhs.buf.reg[1]); 5209: result.buf.reg[2] = Add(lhs.buf.reg[2], rhs.buf.reg[0]); 5209: result.buf.reg[3] = Add(lhs.buf.reg[3], rhs.buf.reg[1]); 5209: result.buf.reg[4] = Add(lhs.buf.reg[4], rhs.buf.reg[0]); 5209: result.buf.reg[5] = Add(lhs.buf.reg[5], rhs.buf.reg[1]); 5209: result.buf.reg[6] = Add(lhs.buf.reg[6], rhs.buf.reg[0]); 5209: result.buf.reg[7] = Add(lhs.buf.reg[7], rhs.buf.reg[1]); 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastAddImpl, RegBlockInt32<1, 8>> { 5209: static RegBlockInt32<1, 8> Run(const RegBlockInt32<1, 8>& lhs, 5209: const RegBlockInt32<1, 8>& rhs) { 5209: RegBlockInt32<1, 8> result; 5209: result.buf.reg[0] = Add(lhs.buf.reg[0], rhs.buf.reg[0]); 5209: result.buf.reg[1] = Add(lhs.buf.reg[1], rhs.buf.reg[1]); 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastAddImpl, RegBlockInt32<1, 1>> { 5209: static RegBlockInt32<1, 8> Run(const RegBlockInt32<1, 8>& lhs, 5209: const RegBlockInt32<1, 1>& rhs) { 5209: RegBlockInt32<1, 8> result; 5209: result.buf.reg[0] = Add(lhs.buf.reg[0], Dup(rhs.buf.reg[0])); 5209: result.buf.reg[1] = Add(lhs.buf.reg[1], Dup(rhs.buf.reg[0])); 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastSaturatingRoundingDoublingHighMulImpl, 5209: RegBlockInt32<1, 1>> { 5209: static RegBlockInt32<4, 1> Run(const RegBlockInt32<4, 1>& lhs, 5209: const RegBlockInt32<1, 1>& rhs) { 5209: RegBlockInt32<4, 1> result; 5209: result.buf.reg[0] = SaturatingRoundingDoublingHighMul( 5209: lhs.buf.reg[0], Dup(rhs.buf.reg[0])); 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastSaturatingRoundingDoublingHighMulImpl, 5209: RegBlockInt32<1, 1>> { 5209: static RegBlockInt32<1, 4> Run(const RegBlockInt32<1, 4>& lhs, 5209: const RegBlockInt32<1, 1>& rhs) { 5209: RegBlockInt32<1, 4> result; 5209: result.buf.reg[0] = SaturatingRoundingDoublingHighMul( 5209: lhs.buf.reg[0], Dup(rhs.buf.reg[0])); 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastSaturatingRoundingDoublingHighMulImpl, 5209: RegBlockInt32<4, 1>> { 5209: static RegBlockInt32<4, 1> Run(const RegBlockInt32<4, 1>& lhs, 5209: const RegBlockInt32<4, 1>& rhs) { 5209: RegBlockInt32<4, 1> result; 5209: result.buf.reg[0] = 5209: SaturatingRoundingDoublingHighMul(lhs.buf.reg[0], rhs.buf.reg[0]); 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastSaturatingRoundingDoublingHighMulImpl, 5209: RegBlockInt32<1, 4>> { 5209: static RegBlockInt32<1, 4> Run(const RegBlockInt32<1, 4>& lhs, 5209: const RegBlockInt32<1, 4>& rhs) { 5209: RegBlockInt32<1, 4> result; 5209: result.buf.reg[0] = 5209: SaturatingRoundingDoublingHighMul(lhs.buf.reg[0], rhs.buf.reg[0]); 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastSaturatingRoundingDoublingHighMulImpl, 5209: RegBlockInt32<1, 4>> { 5209: static RegBlockInt32<4, 4> Run(const RegBlockInt32<4, 4>& lhs, 5209: const RegBlockInt32<1, 4>& rhs) { 5209: RegBlockInt32<4, 4> result; 5209: result.buf.reg[0] = SaturatingRoundingDoublingHighMul( 5209: lhs.buf.reg[0], DupLane<0>(rhs.buf.reg[0])); 5209: result.buf.reg[1] = SaturatingRoundingDoublingHighMul( 5209: lhs.buf.reg[1], DupLane<1>(rhs.buf.reg[0])); 5209: result.buf.reg[2] = SaturatingRoundingDoublingHighMul( 5209: lhs.buf.reg[2], DupLane<2>(rhs.buf.reg[0])); 5209: result.buf.reg[3] = SaturatingRoundingDoublingHighMul( 5209: lhs.buf.reg[3], DupLane<3>(rhs.buf.reg[0])); 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastSaturatingRoundingDoublingHighMulImpl, 5209: RegBlockInt32<4, 1>> { 5209: static RegBlockInt32<4, 4> Run(const RegBlockInt32<4, 4>& lhs, 5209: const RegBlockInt32<4, 1>& rhs) { 5209: RegBlockInt32<4, 4> result; 5209: result.buf.reg[0] = 5209: SaturatingRoundingDoublingHighMul(lhs.buf.reg[0], rhs.buf.reg[0]); 5209: result.buf.reg[1] = 5209: SaturatingRoundingDoublingHighMul(lhs.buf.reg[1], rhs.buf.reg[0]); 5209: result.buf.reg[2] = 5209: SaturatingRoundingDoublingHighMul(lhs.buf.reg[2], rhs.buf.reg[0]); 5209: result.buf.reg[3] = 5209: SaturatingRoundingDoublingHighMul(lhs.buf.reg[3], rhs.buf.reg[0]); 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastSaturatingRoundingDoublingHighMulImpl, 5209: RegBlockInt32<1, 1>> { 5209: static RegBlockInt32<8, 1> Run(const RegBlockInt32<8, 1>& lhs, 5209: const RegBlockInt32<1, 1>& rhs) { 5209: RegBlockInt32<8, 1> result; 5209: const Int32x4 p = Dup(rhs.buf.reg[0]); 5209: for (int i = 0; i < 2; i++) { 5209: result.buf.reg[i] = SaturatingRoundingDoublingHighMul(lhs.buf.reg[i], p); 5209: } 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastSaturatingRoundingDoublingHighMulImpl, 5209: RegBlockInt32<8, 1>> { 5209: static RegBlockInt32<8, 1> Run(const RegBlockInt32<8, 1>& lhs, 5209: const RegBlockInt32<8, 1>& rhs) { 5209: RegBlockInt32<8, 1> result; 5209: for (int i = 0; i < 2; i++) { 5209: result.buf.reg[i] = 5209: SaturatingRoundingDoublingHighMul(lhs.buf.reg[i], rhs.buf.reg[i]); 5209: } 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastSaturatingRoundingDoublingHighMulImpl, 5209: RegBlockInt32<1, 4>> { 5209: static RegBlockInt32<8, 4> Run(const RegBlockInt32<8, 4>& lhs, 5209: const RegBlockInt32<1, 4>& rhs) { 5209: RegBlockInt32<8, 4> result; 5209: result.buf.reg[0] = SaturatingRoundingDoublingHighMul( 5209: lhs.buf.reg[0], DupLane<0>(rhs.buf.reg[0])); 5209: result.buf.reg[1] = SaturatingRoundingDoublingHighMul( 5209: lhs.buf.reg[1], DupLane<0>(rhs.buf.reg[0])); 5209: result.buf.reg[2] = SaturatingRoundingDoublingHighMul( 5209: lhs.buf.reg[2], DupLane<1>(rhs.buf.reg[0])); 5209: result.buf.reg[3] = SaturatingRoundingDoublingHighMul( 5209: lhs.buf.reg[3], DupLane<1>(rhs.buf.reg[0])); 5209: result.buf.reg[4] = SaturatingRoundingDoublingHighMul( 5209: lhs.buf.reg[4], DupLane<2>(rhs.buf.reg[0])); 5209: result.buf.reg[5] = SaturatingRoundingDoublingHighMul( 5209: lhs.buf.reg[5], DupLane<2>(rhs.buf.reg[0])); 5209: result.buf.reg[6] = SaturatingRoundingDoublingHighMul( 5209: lhs.buf.reg[6], DupLane<3>(rhs.buf.reg[0])); 5209: result.buf.reg[7] = SaturatingRoundingDoublingHighMul( 5209: lhs.buf.reg[7], DupLane<3>(rhs.buf.reg[0])); 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastSaturatingRoundingDoublingHighMulImpl, 5209: RegBlockInt32<8, 1>> { 5209: static RegBlockInt32<8, 4> Run(const RegBlockInt32<8, 4>& lhs, 5209: const RegBlockInt32<8, 1>& rhs) { 5209: RegBlockInt32<8, 4> result; 5209: result.buf.reg[0] = 5209: SaturatingRoundingDoublingHighMul(lhs.buf.reg[0], rhs.buf.reg[0]); 5209: result.buf.reg[1] = 5209: SaturatingRoundingDoublingHighMul(lhs.buf.reg[1], rhs.buf.reg[1]); 5209: result.buf.reg[2] = 5209: SaturatingRoundingDoublingHighMul(lhs.buf.reg[2], rhs.buf.reg[0]); 5209: result.buf.reg[3] = 5209: SaturatingRoundingDoublingHighMul(lhs.buf.reg[3], rhs.buf.reg[1]); 5209: result.buf.reg[4] = 5209: SaturatingRoundingDoublingHighMul(lhs.buf.reg[4], rhs.buf.reg[0]); 5209: result.buf.reg[5] = 5209: SaturatingRoundingDoublingHighMul(lhs.buf.reg[5], rhs.buf.reg[1]); 5209: result.buf.reg[6] = 5209: SaturatingRoundingDoublingHighMul(lhs.buf.reg[6], rhs.buf.reg[0]); 5209: result.buf.reg[7] = 5209: SaturatingRoundingDoublingHighMul(lhs.buf.reg[7], rhs.buf.reg[1]); 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastSaturatingRoundingDoublingHighMulImpl, 5209: RegBlockInt32<1, 8>> { 5209: static RegBlockInt32<1, 8> Run(const RegBlockInt32<1, 8>& lhs, 5209: const RegBlockInt32<1, 8>& rhs) { 5209: RegBlockInt32<1, 8> result; 5209: result.buf.reg[0] = 5209: SaturatingRoundingDoublingHighMul(lhs.buf.reg[0], rhs.buf.reg[0]); 5209: result.buf.reg[1] = 5209: SaturatingRoundingDoublingHighMul(lhs.buf.reg[1], rhs.buf.reg[1]); 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastSaturatingRoundingDoublingHighMulImpl, 5209: RegBlockInt32<1, 1>> { 5209: static RegBlockInt32<1, 8> Run(const RegBlockInt32<1, 8>& lhs, 5209: const RegBlockInt32<1, 1>& rhs) { 5209: RegBlockInt32<1, 8> result; 5209: result.buf.reg[0] = SaturatingRoundingDoublingHighMul( 5209: lhs.buf.reg[0], Dup(rhs.buf.reg[0])); 5209: result.buf.reg[1] = SaturatingRoundingDoublingHighMul( 5209: lhs.buf.reg[1], Dup(rhs.buf.reg[0])); 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastMulImpl, RegBlockInt32<1, 1>> { 5209: static RegBlockInt32<4, 1> Run(const RegBlockInt32<4, 1>& lhs, 5209: const RegBlockInt32<1, 1>& rhs) { 5209: RegBlockInt32<4, 1> result; 5209: result.buf.reg[0] = Mul(lhs.buf.reg[0], Dup(rhs.buf.reg[0])); 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastMulImpl, RegBlockInt32<4, 1>> { 5209: static RegBlockInt32<4, 1> Run(const RegBlockInt32<4, 1>& lhs, 5209: const RegBlockInt32<4, 1>& rhs) { 5209: RegBlockInt32<4, 1> result; 5209: result.buf.reg[0] = Mul(lhs.buf.reg[0], rhs.buf.reg[0]); 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastMulImpl, RegBlockInt32<1, 4>> { 5209: static RegBlockInt32<1, 4> Run(const RegBlockInt32<1, 4>& lhs, 5209: const RegBlockInt32<1, 4>& rhs) { 5209: RegBlockInt32<1, 4> result; 5209: result.buf.reg[0] = Mul(lhs.buf.reg[0], rhs.buf.reg[0]); 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastMulImpl, RegBlockInt32<1, 1>> { 5209: static RegBlockInt32<1, 4> Run(const RegBlockInt32<1, 4>& lhs, 5209: const RegBlockInt32<1, 1>& rhs) { 5209: RegBlockInt32<1, 4> result; 5209: result.buf.reg[0] = Mul(lhs.buf.reg[0], rhs.buf.reg[0]); 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastMulImpl, RegBlockInt32<1, 4>> { 5209: static RegBlockInt32<4, 4> Run(const RegBlockInt32<4, 4>& lhs, 5209: const RegBlockInt32<1, 4>& rhs) { 5209: RegBlockInt32<4, 4> result; 5209: const Int32x4 p = rhs.buf.reg[0]; 5209: result.buf.reg[0] = MulByRhsLane<0>(lhs.buf.reg[0], p); 5209: result.buf.reg[1] = MulByRhsLane<1>(lhs.buf.reg[1], p); 5209: result.buf.reg[2] = MulByRhsLane<2>(lhs.buf.reg[2], p); 5209: result.buf.reg[3] = MulByRhsLane<3>(lhs.buf.reg[3], p); 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastMulImpl, RegBlockInt32<4, 1>> { 5209: static RegBlockInt32<4, 4> Run(const RegBlockInt32<4, 4>& lhs, 5209: const RegBlockInt32<4, 1>& rhs) { 5209: RegBlockInt32<4, 4> result; 5209: const Int32x4 p = rhs.buf.reg[0]; 5209: result.buf.reg[0] = Mul(lhs.buf.reg[0], p); 5209: result.buf.reg[1] = Mul(lhs.buf.reg[1], p); 5209: result.buf.reg[2] = Mul(lhs.buf.reg[2], p); 5209: result.buf.reg[3] = Mul(lhs.buf.reg[3], p); 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastMulImpl, RegBlockInt32<1, 1>> { 5209: static RegBlockInt32<8, 1> Run(const RegBlockInt32<8, 1>& lhs, 5209: const RegBlockInt32<1, 1>& rhs) { 5209: RegBlockInt32<8, 1> result; 5209: const std::int32_t p = rhs.buf.reg[0]; 5209: for (int i = 0; i < 2; i++) { 5209: result.buf.reg[i] = Mul(lhs.buf.reg[i], p); 5209: } 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastMulImpl, RegBlockInt32<8, 1>> { 5209: static RegBlockInt32<8, 1> Run(const RegBlockInt32<8, 1>& lhs, 5209: const RegBlockInt32<8, 1>& rhs) { 5209: RegBlockInt32<8, 1> result; 5209: for (int i = 0; i < 2; i++) { 5209: result.buf.reg[i] = Mul(lhs.buf.reg[i], rhs.buf.reg[i]); 5209: } 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastMulImpl, RegBlockInt32<1, 4>> { 5209: static RegBlockInt32<8, 4> Run(const RegBlockInt32<8, 4>& lhs, 5209: const RegBlockInt32<1, 4>& rhs) { 5209: RegBlockInt32<8, 4> result; 5209: const Int32x4 p = rhs.buf.reg[0]; 5209: for (int i = 0; i < 2; i++) { 5209: result.buf.reg[i + 0] = MulByRhsLane<0>(lhs.buf.reg[i + 0], p); 5209: result.buf.reg[i + 2] = MulByRhsLane<1>(lhs.buf.reg[i + 2], p); 5209: result.buf.reg[i + 4] = MulByRhsLane<2>(lhs.buf.reg[i + 4], p); 5209: result.buf.reg[i + 6] = MulByRhsLane<3>(lhs.buf.reg[i + 6], p); 5209: } 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastMulImpl, RegBlockInt32<8, 1>> { 5209: static RegBlockInt32<8, 4> Run(const RegBlockInt32<8, 4>& lhs, 5209: const RegBlockInt32<8, 1>& rhs) { 5209: RegBlockInt32<8, 4> result; 5209: const Int32x4 p[2]{rhs.buf.reg[0], rhs.buf.reg[1]}; 5209: for (int i = 0; i < 4; i++) { 5209: for (int j = 0; j < 2; j++) { 5209: const int k = j + 2 * i; 5209: result.buf.reg[k] = Mul(lhs.buf.reg[k], p[j]); 5209: } 5209: } 5209: return result; 5209: } 5209: }; 5209: 5209: 5209: template 5209: struct BroadcastMulAddImpl, RegBlockInt32<1, 1>, 5209: RegBlockInt32> { 5209: static void Run(const RegBlockInt32& lhs, 5209: const RegBlockInt32<1, 1>& rhs, RegBlockInt32* acc) { 5209: const std::int32_t p = rhs.buf.reg[0]; 5209: for (int i = 0; i < RegBlockInt32::kRegisterCount; i++) { 5209: MulAdd(lhs.buf.reg[i], p, &acc->buf.reg[i]); 5209: } 5209: } 5209: }; 5209: 5209: 5209: template 5209: struct BroadcastMulAddImpl, RegBlockInt32<1, 1>, 5209: RegBlockInt32> { 5209: static void Run(const RegBlockInt32& lhs, 5209: const RegBlockInt32<1, 1>& rhs, 5209: RegBlockInt32* acc) { 5209: const std::int32_t p = rhs.buf.reg[0]; 5209: static constexpr int kRegsPerCol = RegBlockInt32::kRegisterCount; 5209: for (int i = 0; i < kRegsPerCol; i++) { 5209: const Int32x4 q = Mul(lhs.buf.reg[i], p); 5209: for (int j = 0; j < Cols; j++) { 5209: acc->buf.reg[i + j * kRegsPerCol] = 5209: Add(acc->buf.reg[i + j * kRegsPerCol], q); 5209: } 5209: } 5209: } 5209: }; 5209: 5209: 5209: template 5209: struct BroadcastMulAddImpl, RegBlockInt32<1, 1>, 5209: RegBlockInt32<1, Cols>> { 5209: static void Run(const RegBlockInt32<1, Cols>& lhs, 5209: const RegBlockInt32<1, 1>& rhs, RegBlockInt32<1, Cols>* acc) { 5209: const std::int32_t p = rhs.buf.reg[0]; 5209: for (int i = 0; i < RegBlockInt32<1, Cols>::kRegisterCount; i++) { 5209: MulAdd(lhs.buf.reg[i], p, &acc->buf.reg[i]); 5209: } 5209: } 5209: }; 5209: 5209: 5209: template 5209: struct BroadcastMulAddImpl, RegBlockInt32<1, 1>, 5209: RegBlockInt32> { 5209: static void Run(const RegBlockInt32<1, 1>& lhs, 5209: const RegBlockInt32<1, 1>& rhs, 5209: RegBlockInt32* acc) { 5209: const Int32x4 p = Dup(Mul(lhs.buf.reg[0], rhs.buf.reg[0])); 5209: for (int i = 0; i < RegBlockInt32::kRegisterCount; i++) { 5209: acc->buf.reg[i] = Add(acc->buf.reg[i], p); 5209: } 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastMulAddImpl, RegBlockInt32<1, 1>, 5209: RegBlockInt32<1, 1>> { 5209: static void Run(const RegBlockInt32<1, 1>& lhs, 5209: const RegBlockInt32<1, 1>& rhs, RegBlockInt32<1, 1>* acc) { 5209: MulAdd(lhs.buf.reg[0], rhs.buf.reg[0], &acc->buf.reg[0]); 5209: } 5209: }; 5209: 5209: 5209: template 5209: struct BroadcastMulAddImpl, RegBlockInt32<1, 4>, 5209: RegBlockInt32> { 5209: static void Run(const RegBlockInt32& lhs, 5209: const RegBlockInt32<1, 4>& rhs, RegBlockInt32* acc) { 5209: const Int32x4 p = rhs.buf.reg[0]; 5209: static constexpr int kRegsPerCol = RegBlockInt32::kRegisterCount; 5209: for (int i = 0; i < kRegsPerCol; i++) { 5209: MulAddByRhsLane<0>(lhs.buf.reg[i], p, &acc->buf.reg[i + 0 * kRegsPerCol]); 5209: MulAddByRhsLane<1>(lhs.buf.reg[i], p, &acc->buf.reg[i + 1 * kRegsPerCol]); 5209: MulAddByRhsLane<2>(lhs.buf.reg[i], p, &acc->buf.reg[i + 2 * kRegsPerCol]); 5209: MulAddByRhsLane<3>(lhs.buf.reg[i], p, &acc->buf.reg[i + 3 * kRegsPerCol]); 5209: } 5209: } 5209: }; 5209: 5209: 5209: template 5209: struct BroadcastMulAddImpl, RegBlockInt32<1, 1>, 5209: RegBlockInt32> { 5209: static void Run(const RegBlockInt32<1, 4>& lhs, 5209: const RegBlockInt32<1, 1>& rhs, RegBlockInt32* acc) { 5209: const Int32x4 p = Mul(lhs.buf.reg[0], rhs.buf.reg[0]); 5209: Int32x4 q[4]; 5209: q[0] = DupLane<0>(p); 5209: q[1] = DupLane<1>(p); 5209: q[2] = DupLane<2>(p); 5209: q[3] = DupLane<3>(p); 5209: static constexpr int kRegsPerCol = RegBlockInt32::kRegisterCount; 5209: for (int i = 0; i < kRegsPerCol; i++) { 5209: for (int j = 0; j < 4; j++) { 5209: acc->buf.reg[i + j * kRegsPerCol] = 5209: Add(q[j], acc->buf.reg[i + j * kRegsPerCol]); 5209: } 5209: } 5209: } 5209: }; 5209: 5209: 5209: template 5209: struct BroadcastMulAddImpl, RegBlockInt32<1, 1>, 5209: RegBlockInt32<1, Cols>> { 5209: static void Run(const RegBlockInt32<1, 1>& lhs, 5209: const RegBlockInt32<1, 1>& rhs, RegBlockInt32<1, Cols>* acc) { 5209: const Int32x4 p = Dup(Mul(lhs.buf.reg[0], rhs.buf.reg[0])); 5209: for (int i = 0; i < RegBlockInt32<1, Cols>::kRegisterCount; i++) { 5209: acc->buf.reg[i] = Add(acc->buf.reg[i], p); 5209: } 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastMulAddImpl, RegBlockInt32<1, 1>, 5209: RegBlockInt32<1, 4>> { 5209: static void Run(const RegBlockInt32<1, 4>& lhs, 5209: const RegBlockInt32<1, 1>& rhs, RegBlockInt32<1, 4>* acc) { 5209: const std::int32_t p = rhs.buf.reg[0]; 5209: MulAdd(lhs.buf.reg[0], p, &acc->buf.reg[0]); 5209: } 5209: }; 5209: 5209: 5209: template 5209: struct BroadcastMulAddImpl, RegBlockInt32<1, 1>, 5209: RegBlockInt32<4, Cols>> { 5209: static void Run(const RegBlockInt32<4, 1>& lhs, 5209: const RegBlockInt32<1, 1>& rhs, RegBlockInt32<4, Cols>* acc) { 5209: const Int32x4 p = Mul(lhs.buf.reg[0], rhs.buf.reg[0]); 5209: for (int i = 0; i < Cols; i++) { 5209: acc->buf.reg[i] = Add(p, acc->buf.reg[i]); 5209: } 5209: } 5209: }; 5209: 5209: 5209: template <> 5209: struct BroadcastMulAddImpl, RegBlockInt32<1, 1>, 5209: RegBlockInt32<4, 1>> { 5209: static void Run(const RegBlockInt32<4, 1>& lhs, 5209: const RegBlockInt32<1, 1>& rhs, RegBlockInt32<4, 1>* acc) { 5209: const std::int32_t p = rhs.buf.reg[0]; 5209: MulAdd(lhs.buf.reg[0], p, &acc->buf.reg[0]); 5209: } 5209: }; 5209: 5209: } 5209: # 550 "/<>/test/../public/../internal/simd_wrappers_neon.h" 2 5209: # 663 "/<>/test/../public/../internal/simd_wrappers.h" 2 5209: # 30 "/<>/test/../public/../internal/output.h" 2 5209: 5209: namespace gemmlowp { 5209: 5209: template 5209: struct OutputStageEvalBufferImpl { 5209: 5209: static_assert( 5209: std::is_same::value, 5209: "Unimplemented: missing implementation of this output pipeline stage " 5209: "for this data type. This would happen if some architecture-specific " 5209: "SIMD back-end (output_$arch.h) were incomplete."); 5209: }; 5209: 5209: template 5209: struct OutputStageEvalImpl { 5209: static constexpr int kRows = InputType::kRows; 5209: static constexpr int kCols = InputType::kCols; 5209: using InputBufferType = typename InputType::BufferType; 5209: using BufferEvalImplType = 5209: OutputStageEvalBufferImpl; 5209: using OutputBufferType = typename BufferEvalImplType::OutputType; 5209: using OutputScalarType = typename OutputBufferType::ScalarType; 5209: using OutputType = RegisterBlock; 5209: 5209: OutputStageEvalImpl(const OutputStage& s) : buffer_eval_impl(s) {} 5209: 5209: OutputType Eval(InputType input, int, int) const { 5209: OutputType output; 5209: output.buf = buffer_eval_impl.Eval(input.buf); 5209: return output; 5209: } 5209: 5209: const BufferEvalImplType buffer_eval_impl; 5209: }; 5209: 5209: template 5209: struct OutputStageEvalBufferImpl> { 5209: using InputType = RegisterBuffer; 5209: using OutputType = RegisterBuffer; 5209: 5209: typedef OutputStageQuantizeDownInt32ToUint8Scale OutputStage; 5209: 5209: OutputStageEvalBufferImpl(const OutputStage& s) : output_stage(s) {} 5209: 5209: OutputType Eval(InputType input) const { 5209: const int result_shift = output_stage.result_shift; 5209: const std::int32_t result_mult_int = output_stage.result_mult_int; 5209: using RegisterType = typename InputType::RegisterType; 5209: const RegisterType result_offset = 5209: Dup(output_stage.result_offset); 5209: OutputType output; 5209: for (int i = 0; i < InputType::kRegisterCount; i++) { 5209: output.reg[i] = RoundingDivideByPOT( 5209: Mul(Add(input.reg[i], result_offset), result_mult_int), result_shift); 5209: } 5209: return output; 5209: } 5209: 5209: const OutputStage& output_stage; 5209: }; 5209: 5209: template 5209: struct OutputStageEvalImpl, 5209: RegisterBlock> { 5209: typedef RegisterBlock InputType; 5209: typedef RegisterBlock OutputType; 5209: typedef OutputStageQuantizeDownInt32ToUint8ScalePC OutputStage; 5209: 5209: OutputStageEvalImpl(const OutputStage& s) : output_stage(s) {} 5209: 5209: OutputType Eval(InputType input, int row, int col) const { 5209: OutputType output; 5209: const int result_shift = output_stage.result_shift; 5209: const int pos = Shape == VectorShape::Col ? row : col; 5209: const auto result_mult_int = 5209: LoadForBroadcasting(output_stage.result_mult_int, pos); 5209: const auto result_offset = 5209: LoadForBroadcasting(output_stage.result_offset, pos); 5209: const auto dividend = BroadcastMul( 5209: BroadcastAdd(input, result_offset), result_mult_int); 5209: for (int i = 0; i < InputType::kRegisterCount; i++) { 5209: output.buf.reg[i] = 5209: RoundingDivideByPOT(dividend.buf.reg[i], result_shift); 5209: } 5209: return output; 5209: } 5209: 5209: const OutputStage& output_stage; 5209: }; 5209: 5209: template 5209: struct OutputStageEvalBufferImpl< 5209: OutputStageQuantizeDownInt32ByFixedPoint, 5209: RegisterBuffer> { 5209: typedef RegisterBuffer InputType; 5209: typedef RegisterBuffer OutputType; 5209: 5209: typedef OutputStageQuantizeDownInt32ByFixedPoint OutputStage; 5209: 5209: OutputStageEvalBufferImpl(const OutputStage& s) : output_stage(s) {} 5209: 5209: OutputType Eval(InputType input) const { 5209: OutputType output; 5209: using RegisterType = typename InputType::RegisterType; 5209: const RegisterType result_offset_after_shift = 5209: Dup(output_stage.result_offset_after_shift); 5209: for (int i = 0; i < InputType::kRegisterCount; i++) { 5209: const RegisterType mulhigh_val = SaturatingRoundingDoublingHighMul( 5209: input.reg[i], output_stage.result_fixedpoint_multiplier); 5209: output.reg[i] = 5209: Add(RoundingDivideByPOT(mulhigh_val, output_stage.result_shift), 5209: result_offset_after_shift); 5209: } 5209: return output; 5209: } 5209: 5209: const OutputStage& output_stage; 5209: }; 5209: 5209: template 5209: struct OutputStageEvalBufferImpl> { 5209: typedef RegisterBuffer InputType; 5209: typedef RegisterBuffer OutputType; 5209: 5209: typedef OutputStageScaleInt32ByFixedPointAndExponent OutputStage; 5209: 5209: OutputStageEvalBufferImpl(const OutputStage& s) : output_stage(s) { 5209: left_shift = std::max(0, output_stage.result_exponent); 5209: right_shift = std::max(0, -output_stage.result_exponent); 5209: } 5209: 5209: OutputType Eval(InputType input) const { 5209: OutputType output; 5209: using RegisterType = typename InputType::RegisterType; 5209: const RegisterType result_offset_after_shift = 5209: Dup(output_stage.result_offset_after_shift); 5209: for (int i = 0; i < InputType::kRegisterCount; i++) { 5209: const RegisterType mulhigh_val = SaturatingRoundingDoublingHighMul( 5209: ShiftLeft(input.reg[i], left_shift), 5209: output_stage.result_fixedpoint_multiplier); 5209: output.reg[i] = Add(RoundingDivideByPOT(mulhigh_val, right_shift), 5209: result_offset_after_shift); 5209: } 5209: return output; 5209: } 5209: 5209: const OutputStage& output_stage; 5209: int left_shift; 5209: int right_shift; 5209: }; 5209: 5209: template 5209: struct OutputStageEvalImpl< 5209: OutputStageScaleInt32ByFixedPointAndExponentPC, 5209: RegisterBlock> { 5209: typedef RegisterBlock InputType; 5209: typedef RegisterBlock OutputType; 5209: 5209: typedef OutputStageScaleInt32ByFixedPointAndExponentPC OutputStage; 5209: 5209: OutputStageEvalImpl(const OutputStage& s) : output_stage(s) {} 5209: 5209: OutputType Eval(InputType input, int row, int col) const { 5209: OutputType output; 5209: const int pos = Shape == VectorShape::Row ? col : row; 5209: using RegisterType = typename InputType::RegisterType; 5209: const RegisterType result_offset_after_shift = 5209: Dup(output_stage.result_offset_after_shift); 5209: auto left_shift = 5209: LoadForBroadcasting(output_stage.result_exponent, pos); 5209: auto right_shift = 5209: LoadForBroadcasting(output_stage.result_exponent, pos); 5209: const auto result_fixedpoint_multiplier = LoadForBroadcasting( 5209: output_stage.result_fixedpoint_multiplier, pos); 5209: for (int i = 0; i < decltype(left_shift)::kRegisterCount; i++) { 5209: left_shift.buf.reg[i] = Max(left_shift.buf.reg[i], 0); 5209: right_shift.buf.reg[i] = Max(-right_shift.buf.reg[i], 0); 5209: } 5209: const auto mulhigh_val = BroadcastSaturatingRoundingDoublingHighMul( 5209: BroadcastShiftLeft(input, left_shift), result_fixedpoint_multiplier); 5209: const auto rdpot_val = 5209: BroadcastRoundingDivideByPOT(mulhigh_val, right_shift); 5209: for (int i = 0; i < InputType::kRegisterCount; i++) { 5209: output.buf.reg[i] = Add(rdpot_val.buf.reg[i], result_offset_after_shift); 5209: } 5209: return output; 5209: } 5209: 5209: const OutputStage& output_stage; 5209: }; 5209: 5209: 5209: template 5209: struct OutputStageEvalBufferImpl> { 5209: typedef RegisterBuffer InputType; 5209: typedef RegisterBuffer OutputType; 5209: static_assert(InputType::kRegisterLanes == 1, 5209: "This path is only for scalar values"); 5209: 5209: typedef OutputStageSaturatingCastToUint8 OutputStage; 5209: 5209: OutputStageEvalBufferImpl(const OutputStage&) {} 5209: 5209: OutputType Eval(InputType input) const { 5209: OutputType output; 5209: for (int i = 0; i < InputType::kRegisterCount; i++) { 5209: std::int32_t data = input.reg[i]; 5209: output.reg[i] = data > 255 ? 255 : data < 0 ? 0 : data; 5209: } 5209: return output; 5209: } 5209: }; 5209: 5209: 5209: template 5209: struct OutputStageEvalBufferImpl> { 5209: typedef RegisterBuffer InputType; 5209: typedef RegisterBuffer OutputType; 5209: static_assert(InputType::kRegisterLanes == 1, 5209: "This path is only for scalar values"); 5209: 5209: typedef OutputStageSaturatingCastToInt8 OutputStage; 5209: 5209: OutputStageEvalBufferImpl(const OutputStage&) {} 5209: 5209: OutputType Eval(InputType input) const { 5209: OutputType output; 5209: for (int i = 0; i < InputType::kRegisterCount; i++) { 5209: std::int32_t data = input.reg[i]; 5209: output.reg[i] = data > 127 ? 127 : data < -128 ? -128 : data; 5209: } 5209: return output; 5209: } 5209: }; 5209: 5209: 5209: template 5209: struct OutputStageEvalBufferImpl> { 5209: typedef RegisterBuffer InputType; 5209: typedef RegisterBuffer OutputType; 5209: static_assert(InputType::kRegisterLanes == 1, 5209: "This path is only for scalar values"); 5209: 5209: typedef OutputStageSaturatingCastToInt16 OutputStage; 5209: 5209: OutputStageEvalBufferImpl(const OutputStage&) {} 5209: 5209: OutputType Eval(InputType input) const { 5209: OutputType output; 5209: for (int i = 0; i < InputType::kRegisterCount; i++) { 5209: std::int32_t data = input.reg[i]; 5209: output.reg[i] = data > 32767 ? 32767 : data < -32768 ? -32768 : data; 5209: } 5209: return output; 5209: } 5209: }; 5209: 5209: 5209: template 5209: struct OutputStageEvalBufferImpl> { 5209: typedef RegisterBuffer InputType; 5209: typedef RegisterBuffer OutputType; 5209: static_assert(InputType::kRegisterLanes == 1, 5209: "This path is only for scalar values"); 5209: 5209: typedef OutputStageTruncatingCastToUint8 OutputStage; 5209: 5209: OutputStageEvalBufferImpl(const OutputStage&) {} 5209: 5209: OutputType Eval(InputType input) const { 5209: OutputType output; 5209: for (int i = 0; i < InputType::kRegisterCount; i++) { 5209: output.reg[i] = input.reg[i]; 5209: } 5209: return output; 5209: } 5209: }; 5209: 5209: template 5209: struct OutputStageEvalImpl, 5209: RegisterBlock> { 5209: typedef RegisterBlock InputType; 5209: typedef RegisterBlock OutputType; 5209: typedef OutputStageBiasAddition OutputStage; 5209: 5209: OutputStageEvalImpl(const OutputStage& s) : output_stage(s) {} 5209: 5209: OutputType Eval(InputType input, int row, int col) const { 5209: const int pos = VectorType::kShape == VectorShape::Row ? col : row; 5209: return BroadcastAdd( 5209: input, LoadForBroadcasting(output_stage.bias_vector, pos)); 5209: } 5209: 5209: const OutputStage& output_stage; 5209: }; 5209: 5209: template 5209: struct OutputStageEvalBufferImpl> { 5209: typedef RegisterBuffer InputType; 5209: typedef RegisterBuffer OutputType; 5209: 5209: typedef OutputStageClamp OutputStage; 5209: 5209: OutputStageEvalBufferImpl(const OutputStage& s) : output_stage(s) {} 5209: 5209: OutputType Eval(InputType input) const { 5209: using RegisterType = typename InputType::RegisterType; 5209: const RegisterType min = Dup(output_stage.min); 5209: const RegisterType max = Dup(output_stage.max); 5209: OutputType output; 5209: for (int i = 0; i < InputType::kRegisterCount; i++) { 5209: output.reg[i] = Min(Max(input.reg[i], min), max); 5209: } 5209: return output; 5209: } 5209: 5209: const OutputStage& output_stage; 5209: }; 5209: 5209: template 5209: struct OutputStageEvalBufferImpl> { 5209: typedef RegisterBuffer InputType; 5209: typedef RegisterBuffer OutputType; 5209: using RegisterType = typename InputType::RegisterType; 5209: typedef RegisterType DataType; 5209: typedef OutputStageTanh OutputStage; 5209: 5209: OutputStageEvalBufferImpl(const OutputStage& s) : output_stage(s) { 5209: const std::int32_t real_zero_as_int32 = output_stage.real_zero_as_int32; 5209: const std::int32_t real_amplitude_as_int32 = 5209: output_stage.real_amplitude_as_int32; 5209: 5209: input_cutoff_min = real_zero_as_int32 - 8 * real_amplitude_as_int32; 5209: input_cutoff_max = real_zero_as_int32 + 8 * real_amplitude_as_int32; 5209: output_min = real_zero_as_int32 - real_amplitude_as_int32; 5209: output_max = real_zero_as_int32 + real_amplitude_as_int32; 5209: 5209: double inverse_amplitude_normalized_double = 1.0 / real_amplitude_as_int32; 5209: inverse_amplitude_neg_exponent = 0; 5209: while (inverse_amplitude_normalized_double < 0.5) { 5209: inverse_amplitude_normalized_double *= 2; 5209: inverse_amplitude_neg_exponent++; 5209: } 5209: inverse_amplitude_normalized = FixedPoint::FromDouble( 5209: inverse_amplitude_normalized_double); 5209: 5209: double amplitude_normalized_double = real_amplitude_as_int32; 5209: amplitude_exponent = 0; 5209: while (amplitude_normalized_double >= 1.0) { 5209: amplitude_normalized_double *= 0.5; 5209: amplitude_exponent++; 5209: } 5209: amplitude_normalized = 5209: FixedPoint::FromDouble(amplitude_normalized_double); 5209: } 5209: 5209: OutputType Eval(InputType input) const { 5209: const std::int32_t real_zero_as_int32 = output_stage.real_zero_as_int32; 5209: 5209: typedef FixedPoint F3; 5209: typedef FixedPoint F0; 5209: 5209: OutputType output; 5209: 5209: for (int i = 0; i < OutputType::kRegisterCount; i++) { 5209: 5209: DataType input_centered = 5209: Sub(input.reg[i], Dup(real_zero_as_int32)); 5209: F3 fixedpoint_input = 5209: F3::FromRaw(input_centered) * inverse_amplitude_normalized; 5209: 5209: fixedpoint_input.raw() = ShiftLeft(fixedpoint_input.raw(), 5209: 28 - inverse_amplitude_neg_exponent); 5209: 5209: F0 fixedpoint_output = tanh(fixedpoint_input) * amplitude_normalized; 5209: 5209: DataType int32_output = 5209: Add(Dup(real_zero_as_int32), 5209: ShiftRight(fixedpoint_output.raw(), 31 - amplitude_exponent)); 5209: 5209: DataType mask_if_below_cutoff_min = 5209: MaskIfLessThanOrEqual(input.reg[i], Dup(input_cutoff_min)); 5209: DataType mask_if_above_cutoff_max = MaskIfGreaterThanOrEqual( 5209: input.reg[i], Dup(input_cutoff_max)); 5209: 5209: output.reg[i] = SelectUsingMask( 5209: mask_if_below_cutoff_min, Dup(output_min), 5209: SelectUsingMask(mask_if_above_cutoff_max, Dup(output_max), 5209: int32_output)); 5209: } 5209: return output; 5209: } 5209: 5209: const OutputStage& output_stage; 5209: std::int32_t input_cutoff_min, input_cutoff_max; 5209: std::int32_t output_min, output_max; 5209: FixedPoint inverse_amplitude_normalized; 5209: int inverse_amplitude_neg_exponent; 5209: FixedPoint amplitude_normalized; 5209: int amplitude_exponent; 5209: }; 5209: 5209: 5209: 5209: 5209: 5209: template ::value> 5209: struct OutputPipelineOutputType { 5209: typedef typename std::tuple_element::type 5209: FirstStageType; 5209: typedef typename OutputStageEvalImpl::OutputType 5209: FirstStageOutputType; 5209: typedef typename OutputPipelineOutputType::Type Type; 5209: }; 5209: 5209: template 5209: struct OutputPipelineOutputType { 5209: typedef InputType Type; 5209: }; 5209: # 469 "/<>/test/../public/../internal/output.h" 5209: template ::value> 5209: struct OutputPipelineEvalImpl { 5209: typedef typename std::tuple_element::type 5209: FirstStageType; 5209: typedef typename OutputStageEvalImpl::OutputType 5209: FirstStageOutputType; 5209: typedef typename OutputPipelineOutputType::Type OutputType; 5209: 5209: OutputPipelineEvalImpl(const OutputPipelineType& output_pipeline) 5209: : head_impl(std::get(output_pipeline)), 5209: tail_impl(output_pipeline) {} 5209: 5209: OutputType Eval(InputType input, int row, int col) const { 5209: 5209: FirstStageOutputType first_stage_output = head_impl.Eval(input, row, col); 5209: 5209: return tail_impl.Eval(first_stage_output, row, col); 5209: } 5209: 5209: const OutputStageEvalImpl head_impl; 5209: const OutputPipelineEvalImpl 5209: tail_impl; 5209: }; 5209: 5209: 5209: template 5209: struct OutputPipelineEvalImpl { 5209: OutputPipelineEvalImpl(const OutputPipelineType&) {} 5209: 5209: InputType Eval(InputType input, int, int) const { 5209: 5209: return input; 5209: } 5209: }; 5209: 5209: template 5209: struct StoreFinalOutputImpl { 5209: static_assert(std::is_same::value, 5209: "This generic impl should never be hit"); 5209: }; 5209: 5209: template 5209: struct StoreFinalOutputImpl, DstType> { 5209: using RegisterBlockType = RegisterBlock; 5209: static void Run(const RegisterBlockType& src, DstType* dst, int row, 5209: int col) { 5209: for (int r = 0; r < Rows; r++) { 5209: for (int c = 0; c < Cols; c++) { 5209: *dst->data(row + r, col + c) = src.buf.reg[r + c * Rows]; 5209: } 5209: } 5209: } 5209: }; 5209: 5209: 5209: 5209: 5209: 5209: template 5209: void StoreFinalOutput(RegisterBlockType src, DstType* dst, int row, int col) { 5209: StoreFinalOutputImpl::Run(src, dst, row, col); 5209: } 5209: 5209: template 5209: struct OutputPipelineExecutor { 5209: OutputPipelineExecutor(const OutputPipelineType& output_pipeline) 5209: : output_pipeline_eval_impl_(output_pipeline) {} 5209: 5209: 5209: 5209: 5209: 5209: template 5209: void Execute(InputType input, DstType* dst, int src_global_row, 5209: int src_global_col, int dst_row, int dst_col) const { 5209: 5209: 5209: typedef typename OutputPipelineOutputType< 5209: OutputPipelineType, 0, InputType>::Type::BufferType::ScalarType 5209: 5209: ScalarOutputType; 5209: typedef typename DstType::Scalar ScalarDstType; 5209: static_assert(std::is_same::value, 5209: "mismatched destination scalar type and output pipeline"); 5209: 5209: 5209: auto output = 5209: output_pipeline_eval_impl_.Eval(input, src_global_row, src_global_col); 5209: 5209: StoreFinalOutput(output, dst, dst_row, dst_col); 5209: } 5209: 5209: const OutputPipelineEvalImpl 5209: output_pipeline_eval_impl_; 5209: }; 5209: 5209: } 5209: 5209: 5209: # 1 "/<>/test/../public/../internal/output_neon.h" 1 5209: # 20 "/<>/test/../public/../internal/output_neon.h" 5209: # 1 "/<>/test/../public/../internal/output.h" 1 5209: # 21 "/<>/test/../public/../internal/output_neon.h" 2 5209: 5209: 5209: 5209: namespace gemmlowp { 5209: 5209: template <> 5209: struct OutputStageEvalBufferImpl> { 5209: typedef RegBufferInt32<4> InputType; 5209: typedef RegBufferUint8<4> OutputType; 5209: 5209: typedef OutputStageSaturatingCastToUint8 OutputStage; 5209: 5209: OutputStageEvalBufferImpl(const OutputStage&) {} 5209: 5209: OutputType Eval(InputType input) const { 5209: OutputType output; 5209: int16x4_t res_16 = vqmovn_s32(input.reg[0]); 5209: uint8x8_t res_8 = vqmovun_s16(vcombine_s16(res_16, res_16)); 5209: output.reg[0] = vget_lane_u32(vreinterpret_u32_u8(res_8), 0); 5209: return output; 5209: } 5209: }; 5209: 5209: template <> 5209: struct OutputStageEvalBufferImpl> { 5209: typedef RegBufferInt32<8> InputType; 5209: typedef RegBufferUint8<8> OutputType; 5209: 5209: typedef OutputStageSaturatingCastToUint8 OutputStage; 5209: 5209: OutputStageEvalBufferImpl(const OutputStage&) {} 5209: 5209: OutputType Eval(InputType input) const { 5209: OutputType output; 5209: int16x8_t res_16 = 5209: vcombine_s16(vqmovn_s32(input.reg[0]), vqmovn_s32(input.reg[1])); 5209: output.reg[0] = vqmovun_s16(res_16); 5209: return output; 5209: } 5209: }; 5209: 5209: template <> 5209: struct OutputStageEvalBufferImpl> { 5209: typedef RegBufferInt32<16> InputType; 5209: typedef RegBufferUint8<16> OutputType; 5209: 5209: typedef OutputStageSaturatingCastToUint8 OutputStage; 5209: 5209: OutputStageEvalBufferImpl(const OutputStage&) {} 5209: 5209: OutputType Eval(InputType input) const { 5209: OutputType output; 5209: int16x8_t res_16_0 = 5209: vcombine_s16(vqmovn_s32(input.reg[0]), vqmovn_s32(input.reg[1])); 5209: int16x8_t res_16_1 = 5209: vcombine_s16(vqmovn_s32(input.reg[2]), vqmovn_s32(input.reg[3])); 5209: output.reg[0] = vqmovun_s16(res_16_0); 5209: output.reg[1] = vqmovun_s16(res_16_1); 5209: return output; 5209: } 5209: }; 5209: 5209: template <> 5209: struct OutputStageEvalBufferImpl> { 5209: typedef RegBufferInt32<32> InputType; 5209: typedef RegBufferUint8<32> OutputType; 5209: 5209: typedef OutputStageSaturatingCastToUint8 OutputStage; 5209: 5209: OutputStageEvalBufferImpl(const OutputStage&) {} 5209: 5209: OutputType Eval(InputType input) const { 5209: OutputType output; 5209: int16x8_t res_16[4]; 5209: for (int i = 0; i < 4; i++) { 5209: res_16[i] = vcombine_s16(vqmovn_s32(input.reg[2 * i]), 5209: vqmovn_s32(input.reg[2 * i + 1])); 5209: } 5209: for (int i = 0; i < 4; i++) { 5209: output.reg[i] = vqmovun_s16(res_16[i]); 5209: } 5209: return output; 5209: } 5209: }; 5209: 5209: template <> 5209: struct OutputStageEvalBufferImpl> { 5209: typedef RegBufferInt32<4> InputType; 5209: typedef RegBufferInt8<4> OutputType; 5209: 5209: typedef OutputStageSaturatingCastToInt8 OutputStage; 5209: 5209: OutputStageEvalBufferImpl(const OutputStage&) {} 5209: 5209: OutputType Eval(InputType input) const { 5209: OutputType output; 5209: int16x4_t res_16 = vqmovn_s32(input.reg[0]); 5209: int8x8_t res_8 = vqmovn_s16(vcombine_s16(res_16, res_16)); 5209: output.reg[0] = vget_lane_s32(vreinterpret_s32_s8(res_8), 0); 5209: return output; 5209: } 5209: }; 5209: 5209: template <> 5209: struct OutputStageEvalBufferImpl> { 5209: typedef RegBufferInt32<8> InputType; 5209: typedef RegBufferInt8<8> OutputType; 5209: 5209: typedef OutputStageSaturatingCastToInt8 OutputStage; 5209: 5209: OutputStageEvalBufferImpl(const OutputStage&) {} 5209: 5209: OutputType Eval(InputType input) const { 5209: OutputType output; 5209: int16x8_t res_16 = 5209: vcombine_s16(vqmovn_s32(input.reg[0]), vqmovn_s32(input.reg[1])); 5209: output.reg[0] = vqmovn_s16(res_16); 5209: return output; 5209: } 5209: }; 5209: 5209: template <> 5209: struct OutputStageEvalBufferImpl> { 5209: typedef RegBufferInt32<16> InputType; 5209: typedef RegBufferInt8<16> OutputType; 5209: 5209: typedef OutputStageSaturatingCastToInt8 OutputStage; 5209: 5209: OutputStageEvalBufferImpl(const OutputStage&) {} 5209: 5209: OutputType Eval(InputType input) const { 5209: OutputType output; 5209: int16x8_t res_16_0 = 5209: vcombine_s16(vqmovn_s32(input.reg[0]), vqmovn_s32(input.reg[1])); 5209: int16x8_t res_16_1 = 5209: vcombine_s16(vqmovn_s32(input.reg[2]), vqmovn_s32(input.reg[3])); 5209: output.reg[0] = vqmovn_s16(res_16_0); 5209: output.reg[1] = vqmovn_s16(res_16_1); 5209: return output; 5209: } 5209: }; 5209: 5209: template <> 5209: struct OutputStageEvalBufferImpl> { 5209: typedef RegBufferInt32<32> InputType; 5209: typedef RegBufferInt8<32> OutputType; 5209: 5209: typedef OutputStageSaturatingCastToInt8 OutputStage; 5209: 5209: OutputStageEvalBufferImpl(const OutputStage&) {} 5209: 5209: OutputType Eval(InputType input) const { 5209: OutputType output; 5209: int16x8_t res_16[4]; 5209: for (int i = 0; i < 4; i++) { 5209: res_16[i] = vcombine_s16(vqmovn_s32(input.reg[2 * i]), 5209: vqmovn_s32(input.reg[2 * i + 1])); 5209: } 5209: for (int i = 0; i < 4; i++) { 5209: output.reg[i] = vqmovn_s16(res_16[i]); 5209: } 5209: return output; 5209: } 5209: }; 5209: 5209: template <> 5209: struct OutputStageEvalBufferImpl> { 5209: typedef RegBufferInt32<4> InputType; 5209: typedef RegBufferInt16<4> OutputType; 5209: 5209: typedef OutputStageSaturatingCastToInt16 OutputStage; 5209: 5209: OutputStageEvalBufferImpl(const OutputStage&) {} 5209: 5209: OutputType Eval(InputType input) const { 5209: OutputType output; 5209: output.reg[0] = vqmovn_s32(input.reg[0]); 5209: return output; 5209: } 5209: }; 5209: 5209: template <> 5209: struct OutputStageEvalBufferImpl> { 5209: typedef RegBufferInt32<8> InputType; 5209: typedef RegBufferInt16<8> OutputType; 5209: 5209: typedef OutputStageSaturatingCastToInt16 OutputStage; 5209: 5209: OutputStageEvalBufferImpl(const OutputStage&) {} 5209: 5209: OutputType Eval(InputType input) const { 5209: OutputType output; 5209: output.reg[0] = 5209: vcombine_s16(vqmovn_s32(input.reg[0]), vqmovn_s32(input.reg[1])); 5209: return output; 5209: } 5209: }; 5209: 5209: template <> 5209: struct OutputStageEvalBufferImpl> { 5209: typedef RegBufferInt32<16> InputType; 5209: typedef RegBufferInt16<16> OutputType; 5209: 5209: typedef OutputStageSaturatingCastToInt16 OutputStage; 5209: 5209: OutputStageEvalBufferImpl(const OutputStage&) {} 5209: 5209: OutputType Eval(InputType input) const { 5209: OutputType output; 5209: output.reg[0] = 5209: vcombine_s16(vqmovn_s32(input.reg[0]), vqmovn_s32(input.reg[1])); 5209: output.reg[1] = 5209: vcombine_s16(vqmovn_s32(input.reg[2]), vqmovn_s32(input.reg[3])); 5209: return output; 5209: } 5209: }; 5209: 5209: template <> 5209: struct OutputStageEvalBufferImpl> { 5209: typedef RegBufferInt32<32> InputType; 5209: typedef RegBufferInt16<32> OutputType; 5209: 5209: typedef OutputStageSaturatingCastToInt16 OutputStage; 5209: 5209: OutputStageEvalBufferImpl(const OutputStage&) {} 5209: 5209: OutputType Eval(InputType input) const { 5209: OutputType output; 5209: output.reg[0] = 5209: vcombine_s16(vqmovn_s32(input.reg[0]), vqmovn_s32(input.reg[1])); 5209: output.reg[1] = 5209: vcombine_s16(vqmovn_s32(input.reg[2]), vqmovn_s32(input.reg[3])); 5209: output.reg[2] = 5209: vcombine_s16(vqmovn_s32(input.reg[4]), vqmovn_s32(input.reg[5])); 5209: output.reg[3] = 5209: vcombine_s16(vqmovn_s32(input.reg[6]), vqmovn_s32(input.reg[7])); 5209: return output; 5209: } 5209: }; 5209: 5209: template 5209: struct StoreFinalOutputImpl, DstType> { 5209: static void Run(const RegBlockInt32<8, 1>& src, DstType* dst, int row, 5209: int col) { 5209: if (DstType::kOrder == MapOrder::ColMajor) { 5209: StoreInt32x4(dst->data(row, col), src.buf.reg[0]); 5209: StoreInt32x4(dst->data(row + 4, col), src.buf.reg[1]); 5209: } else { 5209: vst1q_lane_s32(dst->data(row + 0, col), src.buf.reg[0], 0); 5209: vst1q_lane_s32(dst->data(row + 1, col), src.buf.reg[0], 1); 5209: vst1q_lane_s32(dst->data(row + 2, col), src.buf.reg[0], 2); 5209: vst1q_lane_s32(dst->data(row + 3, col), src.buf.reg[0], 3); 5209: vst1q_lane_s32(dst->data(row + 4, col), src.buf.reg[1], 0); 5209: vst1q_lane_s32(dst->data(row + 5, col), src.buf.reg[1], 1); 5209: vst1q_lane_s32(dst->data(row + 6, col), src.buf.reg[1], 2); 5209: vst1q_lane_s32(dst->data(row + 7, col), src.buf.reg[1], 3); 5209: } 5209: } 5209: }; 5209: 5209: template 5209: struct StoreFinalOutputImpl, DstType> { 5209: static void Run(const RegBlockInt16<4, 1>& src, DstType* dst, int row, 5209: int col) { 5209: if (DstType::kOrder == MapOrder::ColMajor) { 5209: StoreInt16x4(dst->data(row, col), src.buf.reg[0]); 5209: } else { 5209: vst1_lane_s16(dst->data(row + 0, col), src.buf.reg[0], 0); 5209: vst1_lane_s16(dst->data(row + 1, col), src.buf.reg[0], 1); 5209: vst1_lane_s16(dst->data(row + 2, col), src.buf.reg[0], 2); 5209: vst1_lane_s16(dst->data(row + 3, col), src.buf.reg[0], 3); 5209: } 5209: } 5209: }; 5209: 5209: template 5209: struct StoreFinalOutputImpl, DstType> { 5209: static void Run(const RegBlockInt16<8, 1>& src, DstType* dst, int row, 5209: int col) { 5209: if (DstType::kOrder == MapOrder::ColMajor) { 5209: StoreInt16x8(dst->data(row, col), src.buf.reg[0]); 5209: } else { 5209: vst1q_lane_s16(dst->data(row + 0, col), src.buf.reg[0], 0); 5209: vst1q_lane_s16(dst->data(row + 1, col), src.buf.reg[0], 1); 5209: vst1q_lane_s16(dst->data(row + 2, col), src.buf.reg[0], 2); 5209: vst1q_lane_s16(dst->data(row + 3, col), src.buf.reg[0], 3); 5209: vst1q_lane_s16(dst->data(row + 4, col), src.buf.reg[0], 4); 5209: vst1q_lane_s16(dst->data(row + 5, col), src.buf.reg[0], 5); 5209: vst1q_lane_s16(dst->data(row + 6, col), src.buf.reg[0], 6); 5209: vst1q_lane_s16(dst->data(row + 7, col), src.buf.reg[0], 7); 5209: } 5209: } 5209: }; 5209: 5209: inline RegBlockInt32<4, 4> Transpose(const RegBlockInt32<4, 4>& src) { 5209: const int32x4x2_t t0 = vtrnq_s32(src.buf.reg[0], src.buf.reg[1]); 5209: const int32x4x2_t t1 = vtrnq_s32(src.buf.reg[2], src.buf.reg[3]); 5209: RegBlockInt32<4, 4> result; 5209: result.buf.reg[0] = 5209: vcombine_s32(vget_low_s32(t0.val[0]), vget_low_s32(t1.val[0])); 5209: result.buf.reg[1] = 5209: vcombine_s32(vget_low_s32(t0.val[1]), vget_low_s32(t1.val[1])); 5209: result.buf.reg[2] = 5209: vcombine_s32(vget_high_s32(t0.val[0]), vget_high_s32(t1.val[0])); 5209: result.buf.reg[3] = 5209: vcombine_s32(vget_high_s32(t0.val[1]), vget_high_s32(t1.val[1])); 5209: return result; 5209: } 5209: 5209: template 5209: struct StoreFinalOutputImpl, DstType> { 5209: static void Run(const RegBlockInt32<4, 4>& src, DstType* dst, int row, 5209: int col) { 5209: const auto& block = 5209: DstType::kOrder == MapOrder::ColMajor ? src : Transpose(src); 5209: std::int32_t* dst_ptr = dst->data(row, col); 5209: int stride = dst->stride(); 5209: for (int i = 0; i < 4; i++) { 5209: vst1q_s32(dst_ptr + i * stride, block.buf.reg[i]); 5209: } 5209: } 5209: }; 5209: 5209: template 5209: struct StoreFinalOutputImpl, DstType> { 5209: static void Run(const RegBlockInt16<4, 4>& src, DstType* dst, int row, 5209: int col) { 5209: if (DstType::kOrder == MapOrder::ColMajor) { 5209: vst1_s16(dst->data(row, col + 0), vget_low_s16(src.buf.reg[0])); 5209: vst1_s16(dst->data(row, col + 1), vget_high_s16(src.buf.reg[0])); 5209: vst1_s16(dst->data(row, col + 2), vget_low_s16(src.buf.reg[1])); 5209: vst1_s16(dst->data(row, col + 3), vget_high_s16(src.buf.reg[1])); 5209: } else { 5209: const int16x4x2_t t0 = 5209: vtrn_s16(vget_low_s16(src.buf.reg[0]), vget_high_s16(src.buf.reg[0])); 5209: const int16x4x2_t t1 = 5209: vtrn_s16(vget_low_s16(src.buf.reg[1]), vget_high_s16(src.buf.reg[1])); 5209: const int32x4x2_t t = 5209: vtrnq_s32(vreinterpretq_s32_s16(vcombine_s16(t0.val[0], t0.val[1])), 5209: vreinterpretq_s32_s16(vcombine_s16(t1.val[0], t1.val[1]))); 5209: vst1_s16(dst->data(row + 0, col), 5209: vget_low_s16(vreinterpretq_s16_s32(t.val[0]))); 5209: vst1_s16(dst->data(row + 1, col), 5209: vget_high_s16(vreinterpretq_s16_s32(t.val[0]))); 5209: vst1_s16(dst->data(row + 2, col), 5209: vget_low_s16(vreinterpretq_s16_s32(t.val[1]))); 5209: vst1_s16(dst->data(row + 3, col), 5209: vget_high_s16(vreinterpretq_s16_s32(t.val[1]))); 5209: } 5209: } 5209: }; 5209: 5209: template 5209: struct StoreFinalOutputImpl, DstType> { 5209: static void Run(const RegBlockInt32<8, 4>& src, DstType* dst, int row, 5209: int col) { 5209: std::int32_t* dst_ptr = dst->data(row, col); 5209: if (DstType::kOrder == MapOrder::ColMajor) { 5209: int col_stride = dst->cols_stride(); 5209: for (int i = 0; i < 4; i++) { 5209: vst1q_s32(dst_ptr + i * col_stride + 0, src.buf.reg[2 * i + 0]); 5209: vst1q_s32(dst_ptr + i * col_stride + 4, src.buf.reg[2 * i + 1]); 5209: } 5209: } else { 5209: int row_stride = dst->rows_stride(); 5209: RegBlockInt32<4, 4> top; 5209: top.buf.reg[0] = src.buf.reg[0]; 5209: top.buf.reg[1] = src.buf.reg[2]; 5209: top.buf.reg[2] = src.buf.reg[4]; 5209: top.buf.reg[3] = src.buf.reg[6]; 5209: const auto transpose_top = Transpose(top); 5209: for (int i = 0; i < 4; i++) { 5209: vst1q_s32(dst_ptr + i * row_stride, transpose_top.buf.reg[i]); 5209: } 5209: RegBlockInt32<4, 4> bottom; 5209: bottom.buf.reg[0] = src.buf.reg[1]; 5209: bottom.buf.reg[1] = src.buf.reg[3]; 5209: bottom.buf.reg[2] = src.buf.reg[5]; 5209: bottom.buf.reg[3] = src.buf.reg[7]; 5209: const auto transpose_bottom = Transpose(bottom); 5209: for (int i = 0; i < 4; i++) { 5209: vst1q_s32(dst_ptr + (i + 4) * row_stride, transpose_bottom.buf.reg[i]); 5209: } 5209: } 5209: } 5209: }; 5209: 5209: template 5209: struct StoreFinalOutputImpl, DstType> { 5209: static void Run(const RegBlockInt16<8, 4>& src, DstType* dst, int row, 5209: int col) { 5209: if (DstType::kOrder == MapOrder::ColMajor) { 5209: vst1q_s16(dst->data(row, col + 0), src.buf.reg[0]); 5209: vst1q_s16(dst->data(row, col + 1), src.buf.reg[1]); 5209: vst1q_s16(dst->data(row, col + 2), src.buf.reg[2]); 5209: vst1q_s16(dst->data(row, col + 3), src.buf.reg[3]); 5209: } else { 5209: const int16x8x2_t t0 = vtrnq_s16(src.buf.reg[0], src.buf.reg[1]); 5209: const int16x8x2_t t1 = vtrnq_s16(src.buf.reg[2], src.buf.reg[3]); 5209: const int32x4x2_t u0 = vtrnq_s32(vreinterpretq_s32_s16(t0.val[0]), 5209: vreinterpretq_s32_s16(t1.val[0])); 5209: const int32x4x2_t u1 = vtrnq_s32(vreinterpretq_s32_s16(t0.val[1]), 5209: vreinterpretq_s32_s16(t1.val[1])); 5209: vst1_s16(dst->data(row + 0, col), 5209: vget_low_s16(vreinterpretq_s16_s32(u0.val[0]))); 5209: vst1_s16(dst->data(row + 1, col), 5209: vget_low_s16(vreinterpretq_s16_s32(u1.val[0]))); 5209: vst1_s16(dst->data(row + 2, col), 5209: vget_low_s16(vreinterpretq_s16_s32(u0.val[1]))); 5209: vst1_s16(dst->data(row + 3, col), 5209: vget_low_s16(vreinterpretq_s16_s32(u1.val[1]))); 5209: vst1_s16(dst->data(row + 4, col), 5209: vget_high_s16(vreinterpretq_s16_s32(u0.val[0]))); 5209: vst1_s16(dst->data(row + 5, col), 5209: vget_high_s16(vreinterpretq_s16_s32(u1.val[0]))); 5209: vst1_s16(dst->data(row + 6, col), 5209: vget_high_s16(vreinterpretq_s16_s32(u0.val[1]))); 5209: vst1_s16(dst->data(row + 7, col), 5209: vget_high_s16(vreinterpretq_s16_s32(u1.val[1]))); 5209: } 5209: } 5209: }; 5209: 5209: template 5209: struct StoreFinalOutputImpl, DstType> { 5209: static void Run(const RegBlockInt32<8, 8>& src, DstType* dst, int row, 5209: int col) { 5209: std::int32_t* dst_ptr = dst->data(row, col); 5209: if (DstType::kOrder == MapOrder::ColMajor) { 5209: int col_stride = dst->cols_stride(); 5209: for (int i = 0; i < 8; i++) { 5209: vst1q_s32(dst_ptr + i * col_stride, src.buf.reg[2 * i]); 5209: vst1q_s32(dst_ptr + i * col_stride + 4, src.buf.reg[2 * i + 1]); 5209: } 5209: } else { 5209: int row_stride = dst->rows_stride(); 5209: RegBlockInt32<4, 4> top_left; 5209: top_left.buf.reg[0] = src.buf.reg[0]; 5209: top_left.buf.reg[1] = src.buf.reg[2]; 5209: top_left.buf.reg[2] = src.buf.reg[4]; 5209: top_left.buf.reg[3] = src.buf.reg[6]; 5209: const auto transpose_top_left = Transpose(top_left); 5209: for (int i = 0; i < 4; i++) { 5209: vst1q_s32(dst_ptr + i * row_stride, transpose_top_left.buf.reg[i]); 5209: } 5209: RegBlockInt32<4, 4> bottom_left; 5209: bottom_left.buf.reg[0] = src.buf.reg[1]; 5209: bottom_left.buf.reg[1] = src.buf.reg[3]; 5209: bottom_left.buf.reg[2] = src.buf.reg[5]; 5209: bottom_left.buf.reg[3] = src.buf.reg[7]; 5209: const auto transpose_bottom_left = Transpose(bottom_left); 5209: for (int i = 0; i < 4; i++) { 5209: vst1q_s32(dst_ptr + (i + 4) * row_stride, 5209: transpose_bottom_left.buf.reg[i]); 5209: } 5209: RegBlockInt32<4, 4> top_right; 5209: top_right.buf.reg[0] = src.buf.reg[8]; 5209: top_right.buf.reg[1] = src.buf.reg[10]; 5209: top_right.buf.reg[2] = src.buf.reg[12]; 5209: top_right.buf.reg[3] = src.buf.reg[14]; 5209: const auto transpose_top_right = Transpose(top_right); 5209: for (int i = 0; i < 4; i++) { 5209: vst1q_s32(dst_ptr + i * row_stride + 4, transpose_top_right.buf.reg[i]); 5209: } 5209: RegBlockInt32<4, 4> bottom_right; 5209: bottom_right.buf.reg[0] = src.buf.reg[9]; 5209: bottom_right.buf.reg[1] = src.buf.reg[11]; 5209: bottom_right.buf.reg[2] = src.buf.reg[13]; 5209: bottom_right.buf.reg[3] = src.buf.reg[15]; 5209: const auto transpose_bottom_right = Transpose(bottom_right); 5209: for (int i = 0; i < 4; i++) { 5209: vst1q_s32(dst_ptr + (i + 4) * row_stride + 4, 5209: transpose_bottom_right.buf.reg[i]); 5209: } 5209: } 5209: } 5209: }; 5209: 5209: template 5209: struct StoreFinalOutputImpl, DstType> { 5209: static void Run(const RegBlockInt32<4, 1>& src, DstType* dst, int row, 5209: int col) { 5209: std::int32_t* dst_ptr = dst->data(row, col); 5209: if (DstType::kOrder == MapOrder::ColMajor) { 5209: vst1q_s32(dst_ptr, src.buf.reg[0]); 5209: } else { 5209: int row_stride = dst->rows_stride(); 5209: vst1q_lane_s32(dst_ptr + 0 * row_stride, src.buf.reg[0], 0); 5209: vst1q_lane_s32(dst_ptr + 1 * row_stride, src.buf.reg[0], 1); 5209: vst1q_lane_s32(dst_ptr + 2 * row_stride, src.buf.reg[0], 2); 5209: vst1q_lane_s32(dst_ptr + 3 * row_stride, src.buf.reg[0], 3); 5209: } 5209: } 5209: }; 5209: 5209: template 5209: struct StoreFinalOutputImpl, DstType> { 5209: static void Run(const RegBlockInt32<1, 4>& src, DstType* dst, int row, 5209: int col) { 5209: std::int32_t* dst_ptr = dst->data(row, col); 5209: if (DstType::kOrder == MapOrder::RowMajor) { 5209: vst1q_s32(dst_ptr, src.buf.reg[0]); 5209: } else { 5209: int col_stride = dst->cols_stride(); 5209: vst1q_lane_s32(dst_ptr + 0 * col_stride, src.buf.reg[0], 0); 5209: vst1q_lane_s32(dst_ptr + 1 * col_stride, src.buf.reg[0], 1); 5209: vst1q_lane_s32(dst_ptr + 2 * col_stride, src.buf.reg[0], 2); 5209: vst1q_lane_s32(dst_ptr + 3 * col_stride, src.buf.reg[0], 3); 5209: } 5209: } 5209: }; 5209: 5209: template 5209: struct StoreFinalOutputImpl, DstType> { 5209: static void Run(const RegBlockInt16<1, 4>& src, DstType* dst, int row, 5209: int col) { 5209: std::int16_t* dst_ptr = dst->data(row, col); 5209: if (DstType::kOrder == MapOrder::RowMajor) { 5209: vst1_s16(dst_ptr, src.buf.reg[0]); 5209: } else { 5209: int col_stride = dst->cols_stride(); 5209: vst1_lane_s16(dst_ptr + 0 * col_stride, src.buf.reg[0], 0); 5209: vst1_lane_s16(dst_ptr + 1 * col_stride, src.buf.reg[0], 1); 5209: vst1_lane_s16(dst_ptr + 2 * col_stride, src.buf.reg[0], 2); 5209: vst1_lane_s16(dst_ptr + 3 * col_stride, src.buf.reg[0], 3); 5209: } 5209: } 5209: }; 5209: 5209: template 5209: struct StoreFinalOutputImpl, DstType> { 5209: static void Run(const RegBlockUint8<4, 1>& src, DstType* dst, int row, 5209: int col) { 5209: const std::uint32_t src_reg = src.buf.reg[0]; 5209: for (int i = 0; i < 4; i++) { 5209: *dst->data(row + i, col) = (src_reg >> (8 * i)); 5209: } 5209: } 5209: }; 5209: 5209: template 5209: struct StoreFinalOutputImpl, DstType> { 5209: static void Run(const RegBlockUint8<1, 4>& src, DstType* dst, int row, 5209: int col) { 5209: for (int i = 0; i < 4; i++) { 5209: *dst->data(row, col + i) = (src.buf.reg[0] >> (8 * i)); 5209: } 5209: } 5209: }; 5209: 5209: template 5209: struct StoreFinalOutputImpl, DstType> { 5209: static void Run(const RegBlockUint8<8, 1>& src, DstType* dst, int row, 5209: int col) { 5209: std::uint8_t* dst_ptr = dst->data(row, col); 5209: if (DstType::kOrder == MapOrder::ColMajor) { 5209: vst1_u8(dst_ptr, src.buf.reg[0]); 5209: } else { 5209: const int row_stride = dst->rows_stride(); 5209: vst1_lane_u8(dst_ptr + 0 * row_stride, src.buf.reg[0], 0); 5209: vst1_lane_u8(dst_ptr + 1 * row_stride, src.buf.reg[0], 1); 5209: vst1_lane_u8(dst_ptr + 2 * row_stride, src.buf.reg[0], 2); 5209: vst1_lane_u8(dst_ptr + 3 * row_stride, src.buf.reg[0], 3); 5209: vst1_lane_u8(dst_ptr + 4 * row_stride, src.buf.reg[0], 4); 5209: vst1_lane_u8(dst_ptr + 5 * row_stride, src.buf.reg[0], 5); 5209: vst1_lane_u8(dst_ptr + 6 * row_stride, src.buf.reg[0], 6); 5209: vst1_lane_u8(dst_ptr + 7 * row_stride, src.buf.reg[0], 7); 5209: } 5209: } 5209: }; 5209: 5209: template 5209: struct StoreFinalOutputImpl, DstType> { 5209: static void Run(const RegBlockUint8<4, 4>& src, DstType* dst, int row, 5209: int col) { 5209: std::uint8_t* dst_ptr = dst->data(row, col); 5209: const int row_stride = dst->rows_stride(); 5209: const int col_stride = dst->cols_stride(); 5209: for (int i = 0; i < 2; i++) { 5209: vst1_lane_u8(dst_ptr + 0 * row_stride + (2 * i + 0) * col_stride, 5209: src.buf.reg[i], 0); 5209: vst1_lane_u8(dst_ptr + 1 * row_stride + (2 * i + 0) * col_stride, 5209: src.buf.reg[i], 1); 5209: vst1_lane_u8(dst_ptr + 2 * row_stride + (2 * i + 0) * col_stride, 5209: src.buf.reg[i], 2); 5209: vst1_lane_u8(dst_ptr + 3 * row_stride + (2 * i + 0) * col_stride, 5209: src.buf.reg[i], 3); 5209: vst1_lane_u8(dst_ptr + 0 * row_stride + (2 * i + 1) * col_stride, 5209: src.buf.reg[i], 4); 5209: vst1_lane_u8(dst_ptr + 1 * row_stride + (2 * i + 1) * col_stride, 5209: src.buf.reg[i], 5); 5209: vst1_lane_u8(dst_ptr + 2 * row_stride + (2 * i + 1) * col_stride, 5209: src.buf.reg[i], 6); 5209: vst1_lane_u8(dst_ptr + 3 * row_stride + (2 * i + 1) * col_stride, 5209: src.buf.reg[i], 7); 5209: } 5209: } 5209: }; 5209: 5209: template 5209: struct StoreFinalOutputImpl, DstType> { 5209: static void Run(const RegBlockUint8<8, 4>& src, DstType* dst, int row, 5209: int col) { 5209: std::uint8_t* dst_ptr = dst->data(row, col); 5209: if (DstType::kOrder == MapOrder::ColMajor) { 5209: int col_stride = dst->cols_stride(); 5209: for (int i = 0; i < 4; i++) { 5209: vst1_u8(dst_ptr + i * col_stride, src.buf.reg[i]); 5209: } 5209: } else { 5209: int row_stride = dst->rows_stride(); 5209: for (int i = 0; i < 4; i++) { 5209: std::uint8_t* col_ptr = dst_ptr + i; 5209: vst1_lane_u8(col_ptr + 0 * row_stride, src.buf.reg[i], 0); 5209: vst1_lane_u8(col_ptr + 1 * row_stride, src.buf.reg[i], 1); 5209: vst1_lane_u8(col_ptr + 2 * row_stride, src.buf.reg[i], 2); 5209: vst1_lane_u8(col_ptr + 3 * row_stride, src.buf.reg[i], 3); 5209: vst1_lane_u8(col_ptr + 4 * row_stride, src.buf.reg[i], 4); 5209: vst1_lane_u8(col_ptr + 5 * row_stride, src.buf.reg[i], 5); 5209: vst1_lane_u8(col_ptr + 6 * row_stride, src.buf.reg[i], 6); 5209: vst1_lane_u8(col_ptr + 7 * row_stride, src.buf.reg[i], 7); 5209: } 5209: } 5209: } 5209: }; 5209: 5209: inline RegBlockUint8<8, 8> Transpose(const RegBlockUint8<8, 8>& src) { 5209: uint8x8x2_t a[4]; 5209: a[0] = vtrn_u8(src.buf.reg[0], src.buf.reg[1]); 5209: a[1] = vtrn_u8(src.buf.reg[2], src.buf.reg[3]); 5209: a[2] = vtrn_u8(src.buf.reg[4], src.buf.reg[5]); 5209: a[3] = vtrn_u8(src.buf.reg[6], src.buf.reg[7]); 5209: uint16x4x2_t b[4]; 5209: b[0] = vtrn_u16(vreinterpret_u16_u8(a[0].val[0]), 5209: vreinterpret_u16_u8(a[1].val[0])); 5209: b[1] = vtrn_u16(vreinterpret_u16_u8(a[0].val[1]), 5209: vreinterpret_u16_u8(a[1].val[1])); 5209: b[2] = vtrn_u16(vreinterpret_u16_u8(a[2].val[0]), 5209: vreinterpret_u16_u8(a[3].val[0])); 5209: b[3] = vtrn_u16(vreinterpret_u16_u8(a[2].val[1]), 5209: vreinterpret_u16_u8(a[3].val[1])); 5209: uint32x2x2_t c[4]; 5209: c[0] = vtrn_u32(vreinterpret_u32_u16(b[0].val[0]), 5209: vreinterpret_u32_u16(b[2].val[0])); 5209: c[1] = vtrn_u32(vreinterpret_u32_u16(b[1].val[0]), 5209: vreinterpret_u32_u16(b[3].val[0])); 5209: c[2] = vtrn_u32(vreinterpret_u32_u16(b[0].val[1]), 5209: vreinterpret_u32_u16(b[2].val[1])); 5209: c[3] = vtrn_u32(vreinterpret_u32_u16(b[1].val[1]), 5209: vreinterpret_u32_u16(b[3].val[1])); 5209: RegBlockUint8<8, 8> result; 5209: result.buf.reg[0] = vreinterpret_u8_u32(c[0].val[0]); 5209: result.buf.reg[1] = vreinterpret_u8_u32(c[1].val[0]); 5209: result.buf.reg[2] = vreinterpret_u8_u32(c[2].val[0]); 5209: result.buf.reg[3] = vreinterpret_u8_u32(c[3].val[0]); 5209: result.buf.reg[4] = vreinterpret_u8_u32(c[0].val[1]); 5209: result.buf.reg[5] = vreinterpret_u8_u32(c[1].val[1]); 5209: result.buf.reg[6] = vreinterpret_u8_u32(c[2].val[1]); 5209: result.buf.reg[7] = vreinterpret_u8_u32(c[3].val[1]); 5209: return result; 5209: } 5209: 5209: template 5209: struct StoreFinalOutputImpl, DstType> { 5209: static void Run(const RegBlockUint8<8, 8>& src, DstType* dst, int row, 5209: int col) { 5209: const auto& block = 5209: DstType::kOrder == MapOrder::ColMajor ? src : Transpose(src); 5209: std::uint8_t* dst_ptr = dst->data(row, col); 5209: int stride = dst->stride(); 5209: for (int i = 0; i < 8; i++) { 5209: vst1_u8(dst_ptr + i * stride, block.buf.reg[i]); 5209: } 5209: } 5209: }; 5209: 5209: template 5209: struct StoreFinalOutputImpl, DstType> { 5209: static void Run(const RegBlockInt8<4, 1>& src, DstType* dst, int row, 5209: int col) { 5209: const std::int32_t src_reg = src.buf.reg[0]; 5209: for (int i = 0; i < 4; i++) { 5209: *dst->data(row + i, col) = (src_reg >> (8 * i)); 5209: } 5209: } 5209: }; 5209: 5209: template 5209: struct StoreFinalOutputImpl, DstType> { 5209: static void Run(const RegBlockInt8<1, 4>& src, DstType* dst, int row, 5209: int col) { 5209: for (int i = 0; i < 4; i++) { 5209: *dst->data(row, col + i) = (src.buf.reg[0] >> (8 * i)); 5209: } 5209: } 5209: }; 5209: 5209: template 5209: struct StoreFinalOutputImpl, DstType> { 5209: static void Run(const RegBlockInt8<8, 1>& src, DstType* dst, int row, 5209: int col) { 5209: std::int8_t* dst_ptr = dst->data(row, col); 5209: if (DstType::kOrder == MapOrder::ColMajor) { 5209: vst1_s8(dst_ptr, src.buf.reg[0]); 5209: } else { 5209: const int row_stride = dst->rows_stride(); 5209: vst1_lane_s8(dst_ptr + 0 * row_stride, src.buf.reg[0], 0); 5209: vst1_lane_s8(dst_ptr + 1 * row_stride, src.buf.reg[0], 1); 5209: vst1_lane_s8(dst_ptr + 2 * row_stride, src.buf.reg[0], 2); 5209: vst1_lane_s8(dst_ptr + 3 * row_stride, src.buf.reg[0], 3); 5209: vst1_lane_s8(dst_ptr + 4 * row_stride, src.buf.reg[0], 4); 5209: vst1_lane_s8(dst_ptr + 5 * row_stride, src.buf.reg[0], 5); 5209: vst1_lane_s8(dst_ptr + 6 * row_stride, src.buf.reg[0], 6); 5209: vst1_lane_s8(dst_ptr + 7 * row_stride, src.buf.reg[0], 7); 5209: } 5209: } 5209: }; 5209: 5209: template 5209: struct StoreFinalOutputImpl, DstType> { 5209: static void Run(const RegBlockInt8<4, 4>& src, DstType* dst, int row, 5209: int col) { 5209: std::int8_t* dst_ptr = dst->data(row, col); 5209: const int row_stride = dst->rows_stride(); 5209: const int col_stride = dst->cols_stride(); 5209: for (int i = 0; i < 2; i++) { 5209: vst1_lane_s8(dst_ptr + 0 * row_stride + (2 * i + 0) * col_stride, 5209: src.buf.reg[i], 0); 5209: vst1_lane_s8(dst_ptr + 1 * row_stride + (2 * i + 0) * col_stride, 5209: src.buf.reg[i], 1); 5209: vst1_lane_s8(dst_ptr + 2 * row_stride + (2 * i + 0) * col_stride, 5209: src.buf.reg[i], 2); 5209: vst1_lane_s8(dst_ptr + 3 * row_stride + (2 * i + 0) * col_stride, 5209: src.buf.reg[i], 3); 5209: vst1_lane_s8(dst_ptr + 0 * row_stride + (2 * i + 1) * col_stride, 5209: src.buf.reg[i], 4); 5209: vst1_lane_s8(dst_ptr + 1 * row_stride + (2 * i + 1) * col_stride, 5209: src.buf.reg[i], 5); 5209: vst1_lane_s8(dst_ptr + 2 * row_stride + (2 * i + 1) * col_stride, 5209: src.buf.reg[i], 6); 5209: vst1_lane_s8(dst_ptr + 3 * row_stride + (2 * i + 1) * col_stride, 5209: src.buf.reg[i], 7); 5209: } 5209: } 5209: }; 5209: 5209: template 5209: struct StoreFinalOutputImpl, DstType> { 5209: static void Run(const RegBlockInt8<8, 4>& src, DstType* dst, int row, 5209: int col) { 5209: std::int8_t* dst_ptr = dst->data(row, col); 5209: if (DstType::kOrder == MapOrder::ColMajor) { 5209: int col_stride = dst->cols_stride(); 5209: for (int i = 0; i < 4; i++) { 5209: vst1_s8(dst_ptr + i * col_stride, src.buf.reg[i]); 5209: } 5209: } else { 5209: int row_stride = dst->rows_stride(); 5209: for (int i = 0; i < 4; i++) { 5209: std::int8_t* col_ptr = dst_ptr + i; 5209: vst1_lane_s8(col_ptr + 0 * row_stride, src.buf.reg[i], 0); 5209: vst1_lane_s8(col_ptr + 1 * row_stride, src.buf.reg[i], 1); 5209: vst1_lane_s8(col_ptr + 2 * row_stride, src.buf.reg[i], 2); 5209: vst1_lane_s8(col_ptr + 3 * row_stride, src.buf.reg[i], 3); 5209: vst1_lane_s8(col_ptr + 4 * row_stride, src.buf.reg[i], 4); 5209: vst1_lane_s8(col_ptr + 5 * row_stride, src.buf.reg[i], 5); 5209: vst1_lane_s8(col_ptr + 6 * row_stride, src.buf.reg[i], 6); 5209: vst1_lane_s8(col_ptr + 7 * row_stride, src.buf.reg[i], 7); 5209: } 5209: } 5209: } 5209: }; 5209: 5209: inline RegBlockInt8<8, 8> Transpose(const RegBlockInt8<8, 8>& src) { 5209: int8x8x2_t a[4]; 5209: a[0] = vtrn_s8(src.buf.reg[0], src.buf.reg[1]); 5209: a[1] = vtrn_s8(src.buf.reg[2], src.buf.reg[3]); 5209: a[2] = vtrn_s8(src.buf.reg[4], src.buf.reg[5]); 5209: a[3] = vtrn_s8(src.buf.reg[6], src.buf.reg[7]); 5209: int16x4x2_t b[4]; 5209: b[0] = vtrn_s16(vreinterpret_s16_s8(a[0].val[0]), 5209: vreinterpret_s16_s8(a[1].val[0])); 5209: b[1] = vtrn_s16(vreinterpret_s16_s8(a[0].val[1]), 5209: vreinterpret_s16_s8(a[1].val[1])); 5209: b[2] = vtrn_s16(vreinterpret_s16_s8(a[2].val[0]), 5209: vreinterpret_s16_s8(a[3].val[0])); 5209: b[3] = vtrn_s16(vreinterpret_s16_s8(a[2].val[1]), 5209: vreinterpret_s16_s8(a[3].val[1])); 5209: int32x2x2_t c[4]; 5209: c[0] = vtrn_s32(vreinterpret_s32_s16(b[0].val[0]), 5209: vreinterpret_s32_s16(b[2].val[0])); 5209: c[1] = vtrn_s32(vreinterpret_s32_s16(b[1].val[0]), 5209: vreinterpret_s32_s16(b[3].val[0])); 5209: c[2] = vtrn_s32(vreinterpret_s32_s16(b[0].val[1]), 5209: vreinterpret_s32_s16(b[2].val[1])); 5209: c[3] = vtrn_s32(vreinterpret_s32_s16(b[1].val[1]), 5209: vreinterpret_s32_s16(b[3].val[1])); 5209: RegBlockInt8<8, 8> result; 5209: result.buf.reg[0] = vreinterpret_s8_s32(c[0].val[0]); 5209: result.buf.reg[1] = vreinterpret_s8_s32(c[1].val[0]); 5209: result.buf.reg[2] = vreinterpret_s8_s32(c[2].val[0]); 5209: result.buf.reg[3] = vreinterpret_s8_s32(c[3].val[0]); 5209: result.buf.reg[4] = vreinterpret_s8_s32(c[0].val[1]); 5209: result.buf.reg[5] = vreinterpret_s8_s32(c[1].val[1]); 5209: result.buf.reg[6] = vreinterpret_s8_s32(c[2].val[1]); 5209: result.buf.reg[7] = vreinterpret_s8_s32(c[3].val[1]); 5209: return result; 5209: } 5209: 5209: template 5209: struct StoreFinalOutputImpl, DstType> { 5209: static void Run(const RegBlockInt8<8, 8>& src, DstType* dst, int row, 5209: int col) { 5209: const auto& block = 5209: DstType::kOrder == MapOrder::ColMajor ? src : Transpose(src); 5209: std::int8_t* dst_ptr = dst->data(row, col); 5209: int stride = dst->stride(); 5209: for (int i = 0; i < 8; i++) { 5209: vst1_s8(dst_ptr + i * stride, block.buf.reg[i]); 5209: } 5209: } 5209: }; 5209: 5209: template 5209: struct StoreFinalOutputImpl, DstType> { 5209: static void Run(const RegBlockInt16<8, 8>& src, DstType* dst, int row, 5209: int col) { 5209: if (DstType::kOrder == MapOrder::ColMajor) { 5209: vst1q_s16(dst->data(row, col + 0), src.buf.reg[0]); 5209: vst1q_s16(dst->data(row, col + 1), src.buf.reg[1]); 5209: vst1q_s16(dst->data(row, col + 2), src.buf.reg[2]); 5209: vst1q_s16(dst->data(row, col + 3), src.buf.reg[3]); 5209: vst1q_s16(dst->data(row, col + 4), src.buf.reg[4]); 5209: vst1q_s16(dst->data(row, col + 5), src.buf.reg[5]); 5209: vst1q_s16(dst->data(row, col + 6), src.buf.reg[6]); 5209: vst1q_s16(dst->data(row, col + 7), src.buf.reg[7]); 5209: } else { 5209: int16x8x2_t a[4]; 5209: a[0] = vtrnq_s16(src.buf.reg[0], src.buf.reg[1]); 5209: a[1] = vtrnq_s16(src.buf.reg[2], src.buf.reg[3]); 5209: a[2] = vtrnq_s16(src.buf.reg[4], src.buf.reg[5]); 5209: a[3] = vtrnq_s16(src.buf.reg[6], src.buf.reg[7]); 5209: int32x4x2_t b[4]; 5209: b[0] = vtrnq_s32(vreinterpretq_s32_s16(a[0].val[0]), 5209: vreinterpretq_s32_s16(a[1].val[0])); 5209: b[1] = vtrnq_s32(vreinterpretq_s32_s16(a[0].val[1]), 5209: vreinterpretq_s32_s16(a[1].val[1])); 5209: b[2] = vtrnq_s32(vreinterpretq_s32_s16(a[2].val[0]), 5209: vreinterpretq_s32_s16(a[3].val[0])); 5209: b[3] = vtrnq_s32(vreinterpretq_s32_s16(a[2].val[1]), 5209: vreinterpretq_s32_s16(a[3].val[1])); 5209: vst1_s16(dst->data(row + 0, col + 0), 5209: vget_low_s16(vreinterpretq_s16_s32(b[0].val[0]))); 5209: vst1_s16(dst->data(row + 0, col + 4), 5209: vget_low_s16(vreinterpretq_s16_s32(b[2].val[0]))); 5209: vst1_s16(dst->data(row + 1, col + 0), 5209: vget_low_s16(vreinterpretq_s16_s32(b[1].val[0]))); 5209: vst1_s16(dst->data(row + 1, col + 4), 5209: vget_low_s16(vreinterpretq_s16_s32(b[3].val[0]))); 5209: vst1_s16(dst->data(row + 2, col + 0), 5209: vget_low_s16(vreinterpretq_s16_s32(b[0].val[1]))); 5209: vst1_s16(dst->data(row + 2, col + 4), 5209: vget_low_s16(vreinterpretq_s16_s32(b[2].val[1]))); 5209: vst1_s16(dst->data(row + 3, col + 0), 5209: vget_low_s16(vreinterpretq_s16_s32(b[1].val[1]))); 5209: vst1_s16(dst->data(row + 3, col + 4), 5209: vget_low_s16(vreinterpretq_s16_s32(b[3].val[1]))); 5209: vst1_s16(dst->data(row + 4, col + 0), 5209: vget_high_s16(vreinterpretq_s16_s32(b[0].val[0]))); 5209: vst1_s16(dst->data(row + 4, col + 4), 5209: vget_high_s16(vreinterpretq_s16_s32(b[2].val[0]))); 5209: vst1_s16(dst->data(row + 5, col + 0), 5209: vget_high_s16(vreinterpretq_s16_s32(b[1].val[0]))); 5209: vst1_s16(dst->data(row + 5, col + 4), 5209: vget_high_s16(vreinterpretq_s16_s32(b[3].val[0]))); 5209: vst1_s16(dst->data(row + 6, col + 0), 5209: vget_high_s16(vreinterpretq_s16_s32(b[0].val[1]))); 5209: vst1_s16(dst->data(row + 6, col + 4), 5209: vget_high_s16(vreinterpretq_s16_s32(b[2].val[1]))); 5209: vst1_s16(dst->data(row + 7, col + 0), 5209: vget_high_s16(vreinterpretq_s16_s32(b[1].val[1]))); 5209: vst1_s16(dst->data(row + 7, col + 4), 5209: vget_high_s16(vreinterpretq_s16_s32(b[3].val[1]))); 5209: } 5209: } 5209: }; 5209: 5209: } 5209: # 573 "/<>/test/../public/../internal/output.h" 2 5209: # 24 "/<>/test/../public/../internal/unpack.h" 2 5209: 5209: 5209: # 1 "/usr/include/c++/10/cmath" 1 3 5209: # 39 "/usr/include/c++/10/cmath" 3 5209: 5209: # 40 "/usr/include/c++/10/cmath" 3 5209: # 27 "/<>/test/../public/../internal/unpack.h" 2 5209: 5209: namespace gemmlowp { 5209: 5209: class PackedResult { 5209: public: 5209: PackedResult(Allocator* _allocator, const BlockParams& _block_params) 5209: : allocator_(_allocator), block_params_(_block_params) { 5209: matrix_handle_ = allocator_->Reserve(block_params_.l2_rows * 5209: block_params_.l2_cols); 5209: } 5209: 5209: ~PackedResult() {} 5209: 5209: MatrixMap Map() { 5209: return MatrixMap( 5209: allocator_->GetPointer(matrix_handle_), 5209: block_params_.l2_rows, block_params_.l2_cols, block_params_.l2_rows); 5209: } 5209: 5209: MatrixMap Map() const { 5209: return MatrixMap( 5209: allocator_->GetPointer(matrix_handle_), 5209: block_params_.l2_rows, block_params_.l2_cols, block_params_.l2_rows); 5209: } 5209: 5209: private: 5209: Allocator* allocator_; 5209: Allocator::Handle matrix_handle_; 5209: const BlockParams& block_params_; 5209: }; 5209: 5209: struct MatrixBlockBounds { 5209: int start_row; 5209: int start_col; 5209: int rows; 5209: int cols; 5209: 5209: MatrixBlockBounds(int start_row_, int start_col_, int rows_, int cols_) 5209: : start_row(start_row_), 5209: start_col(start_col_), 5209: rows(rows_), 5209: cols(cols_) {} 5209: }; 5209: 5209: template 5209: void PrefetchResultBlock(const SrcMapType& src, 5209: const VectorMap& 5209: lhs_sums_of_each_slice, 5209: int src_row, int src_col) { 5209: const std::int32_t* src_data = src.data(src_row, src_col); 5209: const int src_stride = src.stride(); 5209: const std::int32_t* lhs_sums_data = lhs_sums_of_each_slice.data(src_row); 5209: for (int r = 0; r < Rows; r += 4) { 5209: Prefetch(lhs_sums_data + r); 5209: } 5209: for (int c = 0; c < Cols; c++) { 5209: for (int r = 0; r < Rows; r += 4) { 5209: Prefetch(src_data + r + c * src_stride); 5209: } 5209: } 5209: } 5209: 5209: template 5209: void UnpackResultBlock(const SrcMapType& src, 5209: const OutputPipelineExecutorType& executor, DstType* dst, 5209: const VectorMap& 5209: lhs_sums_of_each_slice, 5209: const VectorMap& 5209: rhs_sums_of_each_slice, 5209: const LhsOffset& lhs_offset, const RhsOffset& rhs_offset, 5209: int depth, int src_row, int src_col, int src_global_row, 5209: int src_global_col, int dst_row, int dst_col) { 5209: using KernelLhsInputScalar = typename KernelFormat::Lhs::InputScalar; 5209: using KernelLhsScalar = typename KernelFormat::Lhs::Scalar; 5209: using KernelRhsInputScalar = typename KernelFormat::Rhs::InputScalar; 5209: using KernelRhsScalar = typename KernelFormat::Rhs::Scalar; 5209: static constexpr int KernelLhsZeroPointInput = 5209: ZeroPointInputValue::kValue; 5209: static constexpr int KernelRhsZeroPointInput = 5209: ZeroPointInputValue::kValue; 5209: auto acc = Load(src, src_row, src_col); 5209: const auto& lhs_sums_of_each_slice_block = 5209: LoadForBroadcasting(lhs_sums_of_each_slice, src_row); 5209: const auto& rhs_sums_of_each_slice_block = 5209: LoadForBroadcasting(rhs_sums_of_each_slice, src_col); 5209: auto lhs_offset_block = 5209: LoadForBroadcasting(lhs_offset, src_row); 5209: auto rhs_offset_block = 5209: LoadForBroadcasting(rhs_offset, src_col); 5209: AddConstant(&lhs_offset_block); 5209: AddConstant(&rhs_offset_block); 5209: BroadcastMulAdd(lhs_sums_of_each_slice_block, rhs_offset_block, &acc); 5209: for (int i = 0; i < decltype(rhs_offset_block)::kRegisterCount; i++) { 5209: rhs_offset_block.buf.reg[i] = Mul(rhs_offset_block.buf.reg[i], depth); 5209: } 5209: BroadcastMulAdd(BroadcastAdd(rhs_sums_of_each_slice_block, rhs_offset_block), 5209: lhs_offset_block, &acc); 5209: executor.Execute(acc, dst, src_global_row, src_global_col, dst_row, dst_col); 5209: } 5209: 5209: template 5209: void UnpackResult(ResultBlockType* dst, const MatrixBlockBounds& dst_block, 5209: const PackedResultType& src, int depth, 5209: const std::int32_t* lhs_sums_of_each_slice_ptr, 5209: const std::int32_t* rhs_sums_of_each_slice_ptr, 5209: const LhsOffset& lhs_offset, const RhsOffset& rhs_offset, 5209: const OutputPipelineType& output_pipeline) { 5209: ScopedProfilingLabel label(ResultBlockType::kOrder == MapOrder::ColMajor 5209: ? "unpack to column-major" 5209: : "unpack to row-major"); 5209: 5209: # 141 "/<>/test/../public/../internal/unpack.h" 3 4 5209: (static_cast ( 5209: # 141 "/<>/test/../public/../internal/unpack.h" 5209: dst_block.start_row >= 0 5209: # 141 "/<>/test/../public/../internal/unpack.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 141 "/<>/test/../public/../internal/unpack.h" 5209: "dst_block.start_row >= 0" 5209: # 141 "/<>/test/../public/../internal/unpack.h" 3 4 5209: , "/<>/test/../public/../internal/unpack.h", 141, __extension__ __PRETTY_FUNCTION__)) 5209: # 141 "/<>/test/../public/../internal/unpack.h" 5209: ; 5209: 5209: # 142 "/<>/test/../public/../internal/unpack.h" 3 4 5209: (static_cast ( 5209: # 142 "/<>/test/../public/../internal/unpack.h" 5209: dst_block.start_row + dst_block.rows <= dst->rows() 5209: # 142 "/<>/test/../public/../internal/unpack.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 142 "/<>/test/../public/../internal/unpack.h" 5209: "dst_block.start_row + dst_block.rows <= dst->rows()" 5209: # 142 "/<>/test/../public/../internal/unpack.h" 3 4 5209: , "/<>/test/../public/../internal/unpack.h", 142, __extension__ __PRETTY_FUNCTION__)) 5209: # 142 "/<>/test/../public/../internal/unpack.h" 5209: ; 5209: 5209: # 143 "/<>/test/../public/../internal/unpack.h" 3 4 5209: (static_cast ( 5209: # 143 "/<>/test/../public/../internal/unpack.h" 5209: dst_block.start_col >= 0 5209: # 143 "/<>/test/../public/../internal/unpack.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 143 "/<>/test/../public/../internal/unpack.h" 5209: "dst_block.start_col >= 0" 5209: # 143 "/<>/test/../public/../internal/unpack.h" 3 4 5209: , "/<>/test/../public/../internal/unpack.h", 143, __extension__ __PRETTY_FUNCTION__)) 5209: # 143 "/<>/test/../public/../internal/unpack.h" 5209: ; 5209: 5209: # 144 "/<>/test/../public/../internal/unpack.h" 3 4 5209: (static_cast ( 5209: # 144 "/<>/test/../public/../internal/unpack.h" 5209: dst_block.start_col + dst_block.cols <= dst->cols() 5209: # 144 "/<>/test/../public/../internal/unpack.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 144 "/<>/test/../public/../internal/unpack.h" 5209: "dst_block.start_col + dst_block.cols <= dst->cols()" 5209: # 144 "/<>/test/../public/../internal/unpack.h" 3 4 5209: , "/<>/test/../public/../internal/unpack.h", 144, __extension__ __PRETTY_FUNCTION__)) 5209: # 144 "/<>/test/../public/../internal/unpack.h" 5209: ; 5209: const auto src_map = src.Map(); 5209: const VectorMap lhs_sums_of_each_slice( 5209: lhs_sums_of_each_slice_ptr, dst_block.rows); 5209: const VectorMap rhs_sums_of_each_slice( 5209: rhs_sums_of_each_slice_ptr, dst_block.cols); 5209: using Int32x1x1 = RegisterBlock; 5209: using Int32x4x1 = RegisterBlock; 5209: using Int32x8x1 = RegisterBlock; 5209: using Int32x1x4 = RegisterBlock; 5209: using Int32x4x4 = RegisterBlock; 5209: using Int32x8x4 = RegisterBlock; 5209: 5209: using DstScalarType = typename ResultBlockType::Scalar; 5209: using DstScalarx8x8 = RegisterBlock; 5209: 5209: OutputPipelineExecutor 5209: output_pipeline_executor_1x1(output_pipeline); 5209: OutputPipelineExecutor 5209: output_pipeline_executor_4x1(output_pipeline); 5209: OutputPipelineExecutor 5209: output_pipeline_executor_8x1(output_pipeline); 5209: OutputPipelineExecutor 5209: output_pipeline_executor_1x4(output_pipeline); 5209: OutputPipelineExecutor 5209: output_pipeline_executor_4x4(output_pipeline); 5209: OutputPipelineExecutor 5209: output_pipeline_executor_8x4(output_pipeline); 5209: 5209: int c8 = 0; 5209: if (ResultBlockType::kOrder == MapOrder::RowMajor) { 5209: for (; c8 <= dst_block.cols - 8; c8 += 8) { 5209: PrefetchResultBlock<8, 8>(src_map, lhs_sums_of_each_slice, 0, c8); 5209: int r = 0; 5209: for (; r <= dst_block.rows - 8; r += 8) { 5209: const int global_row = r + dst_block.start_row; 5209: PrefetchResultBlock<8, 8>(src_map, lhs_sums_of_each_slice, r + 8, c8); 5209: DstScalarType dst_colmajor_buf[64]; 5209: MatrixMap dst_colmajor_map( 5209: dst_colmajor_buf, 8, 8); 5209: for (int cx = 0; cx < 8; cx += 4) { 5209: const int c = c8 + cx; 5209: const int global_col = c + dst_block.start_col; 5209: UnpackResultBlock( 5209: src_map, output_pipeline_executor_8x4, &dst_colmajor_map, 5209: lhs_sums_of_each_slice, rhs_sums_of_each_slice, lhs_offset, 5209: rhs_offset, depth, r, c, global_row, global_col, 0, cx); 5209: } 5209: StoreFinalOutput(LoadContiguous(dst_colmajor_buf), dst, 5209: r + dst_block.start_row, c8 + dst_block.start_col); 5209: } 5209: for (; r <= dst_block.rows - 4; r += 4) { 5209: const int global_row = r + dst_block.start_row; 5209: for (int cx = 0; cx < 8; cx += 4) { 5209: const int c = c8 + cx; 5209: const int global_col = c + dst_block.start_col; 5209: UnpackResultBlock( 5209: src_map, output_pipeline_executor_4x4, dst, 5209: lhs_sums_of_each_slice, rhs_sums_of_each_slice, lhs_offset, 5209: rhs_offset, depth, r, c, global_row, global_col, global_row, 5209: global_col); 5209: } 5209: } 5209: for (; r < dst_block.rows; r++) { 5209: const int global_row = r + dst_block.start_row; 5209: for (int cx = 0; cx < 8; cx += 4) { 5209: const int c = c8 + cx; 5209: const int global_col = c + dst_block.start_col; 5209: UnpackResultBlock( 5209: src_map, output_pipeline_executor_1x4, dst, 5209: lhs_sums_of_each_slice, rhs_sums_of_each_slice, lhs_offset, 5209: rhs_offset, depth, r, c, global_row, global_col, global_row, 5209: global_col); 5209: } 5209: } 5209: } 5209: } 5209: int c = c8; 5209: for (; c <= dst_block.cols - 4; c += 4) { 5209: const int global_col = c + dst_block.start_col; 5209: PrefetchResultBlock<8, 4>(src_map, lhs_sums_of_each_slice, 0, c); 5209: int r = 0; 5209: for (; r <= dst_block.rows - 8; r += 8) { 5209: const int global_row = r + dst_block.start_row; 5209: PrefetchResultBlock<8, 4>(src_map, lhs_sums_of_each_slice, r + 8, c); 5209: UnpackResultBlock( 5209: src_map, output_pipeline_executor_8x4, dst, lhs_sums_of_each_slice, 5209: rhs_sums_of_each_slice, lhs_offset, rhs_offset, depth, r, c, 5209: global_row, global_col, global_row, global_col); 5209: } 5209: for (; r <= dst_block.rows - 4; r += 4) { 5209: const int global_row = r + dst_block.start_row; 5209: UnpackResultBlock( 5209: src_map, output_pipeline_executor_4x4, dst, lhs_sums_of_each_slice, 5209: rhs_sums_of_each_slice, lhs_offset, rhs_offset, depth, r, c, 5209: global_row, global_col, global_row, global_col); 5209: } 5209: for (; r < dst_block.rows; r++) { 5209: const int global_row = r + dst_block.start_row; 5209: UnpackResultBlock( 5209: src_map, output_pipeline_executor_1x4, dst, lhs_sums_of_each_slice, 5209: rhs_sums_of_each_slice, lhs_offset, rhs_offset, depth, r, c, 5209: global_row, global_col, global_row, global_col); 5209: } 5209: } 5209: for (; c < dst_block.cols; c++) { 5209: const int global_col = c + dst_block.start_col; 5209: PrefetchResultBlock<8, 1>(src_map, lhs_sums_of_each_slice, 0, c); 5209: int r = 0; 5209: for (; r <= dst_block.rows - 8; r += 8) { 5209: const int global_row = r + dst_block.start_row; 5209: PrefetchResultBlock<8, 1>(src_map, lhs_sums_of_each_slice, r + 8, c); 5209: UnpackResultBlock( 5209: src_map, output_pipeline_executor_8x1, dst, lhs_sums_of_each_slice, 5209: rhs_sums_of_each_slice, lhs_offset, rhs_offset, depth, r, c, 5209: global_row, global_col, global_row, global_col); 5209: } 5209: for (; r <= dst_block.rows - 4; r += 4) { 5209: const int global_row = r + dst_block.start_row; 5209: UnpackResultBlock( 5209: src_map, output_pipeline_executor_4x1, dst, lhs_sums_of_each_slice, 5209: rhs_sums_of_each_slice, lhs_offset, rhs_offset, depth, r, c, 5209: global_row, global_col, global_row, global_col); 5209: } 5209: for (; r < dst_block.rows; r++) { 5209: const int global_row = r + dst_block.start_row; 5209: UnpackResultBlock( 5209: src_map, output_pipeline_executor_1x1, dst, lhs_sums_of_each_slice, 5209: rhs_sums_of_each_slice, lhs_offset, rhs_offset, depth, r, c, 5209: global_row, global_col, global_row, global_col); 5209: } 5209: } 5209: } 5209: 5209: } 5209: # 30 "/<>/test/../public/../internal/single_thread_gemm.h" 2 5209: # 39 "/<>/test/../public/../internal/single_thread_gemm.h" 5209: namespace gemmlowp { 5209: 5209: class SingleThreadGemmContext { 5209: public: 5209: Allocator* allocator() { return &allocator_; } 5209: 5209: void set_l1_bytes_to_use(int n) { l1_bytes_to_use_ = n; } 5209: void set_l2_bytes_to_use(int n) { l2_bytes_to_use_ = n; } 5209: void set_l2_rhs_factor(float n) { l2_rhs_factor_ = n; } 5209: 5209: int l1_bytes_to_use() const { return l1_bytes_to_use_; } 5209: int l2_bytes_to_use() const { return l2_bytes_to_use_; } 5209: float l2_rhs_factor() const { return l2_rhs_factor_; } 5209: 5209: protected: 5209: Allocator allocator_; 5209: 5209: 5209: int l1_bytes_to_use_ = kDefaultL1CacheSize; 5209: int l2_bytes_to_use_ = kDefaultL2CacheSize; 5209: float l2_rhs_factor_ = kDefaultL2RhsFactor; 5209: }; 5209: 5209: template 5209: void SingleThreadGemm(SingleThreadGemmContext* context, 5209: const KernelBase& kernel, 5209: const MatrixMap& lhs, 5209: const MatrixMap& rhs, 5209: MatrixMap* result, 5209: const LhsOffset& lhs_offset, const RhsOffset& rhs_offset, 5209: const OutputPipelineType& output_pipeline) { 5209: ScopedProfilingLabel label("gemmlowp::SingleThreadGemm"); 5209: 5209: 5209: # 75 "/<>/test/../public/../internal/single_thread_gemm.h" 3 4 5209: (static_cast ( 5209: # 75 "/<>/test/../public/../internal/single_thread_gemm.h" 5209: lhs.cols() == rhs.rows() 5209: # 75 "/<>/test/../public/../internal/single_thread_gemm.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 75 "/<>/test/../public/../internal/single_thread_gemm.h" 5209: "lhs.cols() == rhs.rows()" 5209: # 75 "/<>/test/../public/../internal/single_thread_gemm.h" 3 4 5209: , "/<>/test/../public/../internal/single_thread_gemm.h", 75, __extension__ __PRETTY_FUNCTION__)) 5209: # 75 "/<>/test/../public/../internal/single_thread_gemm.h" 5209: ; 5209: 5209: int rows = result->rows(); 5209: int cols = result->cols(); 5209: int depth = lhs.cols(); 5209: 5209: 5209: 5209: # 82 "/<>/test/../public/../internal/single_thread_gemm.h" 3 4 5209: (static_cast ( 5209: # 82 "/<>/test/../public/../internal/single_thread_gemm.h" 5209: rows > 0 5209: # 82 "/<>/test/../public/../internal/single_thread_gemm.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 82 "/<>/test/../public/../internal/single_thread_gemm.h" 5209: "rows > 0" 5209: # 82 "/<>/test/../public/../internal/single_thread_gemm.h" 3 4 5209: , "/<>/test/../public/../internal/single_thread_gemm.h", 82, __extension__ __PRETTY_FUNCTION__)) 5209: # 82 "/<>/test/../public/../internal/single_thread_gemm.h" 5209: ; 5209: 5209: # 83 "/<>/test/../public/../internal/single_thread_gemm.h" 3 4 5209: (static_cast ( 5209: # 83 "/<>/test/../public/../internal/single_thread_gemm.h" 5209: cols > 0 5209: # 83 "/<>/test/../public/../internal/single_thread_gemm.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 83 "/<>/test/../public/../internal/single_thread_gemm.h" 5209: "cols > 0" 5209: # 83 "/<>/test/../public/../internal/single_thread_gemm.h" 3 4 5209: , "/<>/test/../public/../internal/single_thread_gemm.h", 83, __extension__ __PRETTY_FUNCTION__)) 5209: # 83 "/<>/test/../public/../internal/single_thread_gemm.h" 5209: ; 5209: 5209: # 84 "/<>/test/../public/../internal/single_thread_gemm.h" 3 4 5209: (static_cast ( 5209: # 84 "/<>/test/../public/../internal/single_thread_gemm.h" 5209: depth > 0 5209: # 84 "/<>/test/../public/../internal/single_thread_gemm.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 84 "/<>/test/../public/../internal/single_thread_gemm.h" 5209: "depth > 0" 5209: # 84 "/<>/test/../public/../internal/single_thread_gemm.h" 3 4 5209: , "/<>/test/../public/../internal/single_thread_gemm.h", 84, __extension__ __PRETTY_FUNCTION__)) 5209: # 84 "/<>/test/../public/../internal/single_thread_gemm.h" 5209: ; 5209: 5209: 5209: 5209: # 87 "/<>/test/../public/../internal/single_thread_gemm.h" 3 4 5209: (static_cast ( 5209: # 87 "/<>/test/../public/../internal/single_thread_gemm.h" 5209: rows >= cols 5209: # 87 "/<>/test/../public/../internal/single_thread_gemm.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 87 "/<>/test/../public/../internal/single_thread_gemm.h" 5209: "rows >= cols" 5209: # 87 "/<>/test/../public/../internal/single_thread_gemm.h" 3 4 5209: , "/<>/test/../public/../internal/single_thread_gemm.h", 87, __extension__ __PRETTY_FUNCTION__)) 5209: # 87 "/<>/test/../public/../internal/single_thread_gemm.h" 5209: ; 5209: 5209: Allocator* allocator = context->allocator(); 5209: 5209: BlockParams block_params; 5209: block_params.Init( 5209: rows, cols, depth, 1, context->l1_bytes_to_use(), 5209: context->l2_bytes_to_use(), context->l2_rhs_factor()); 5209: # 115 "/<>/test/../public/../internal/single_thread_gemm.h" 5209: PackedSideBlock packed_lhs(Side::Lhs, allocator, 5209: block_params); 5209: PackedSideBlock packed_rhs(Side::Rhs, allocator, 5209: block_params); 5209: 5209: PackedResult packed_result(allocator, block_params); 5209: 5209: allocator->Commit(); 5209: 5209: const bool pack_rhs_once = block_params.l2_cols >= cols; 5209: 5209: if (pack_rhs_once) { 5209: PackRhs(&packed_rhs, rhs); 5209: } 5209: 5209: for (int r = 0; r < rows; r += block_params.l2_rows) { 5209: int rs = std::min(block_params.l2_rows, rows - r); 5209: 5209: PackLhs(&packed_lhs, lhs.block(r, 0, rs, depth)); 5209: 5209: for (int c = 0; c < cols; c += block_params.l2_cols) { 5209: int cs = std::min(block_params.l2_cols, cols - c); 5209: 5209: if (!pack_rhs_once) { 5209: PackRhs(&packed_rhs, rhs.block(0, c, depth, cs)); 5209: } 5209: 5209: Compute(kernel, block_params, &packed_result, packed_lhs, packed_rhs, 5209: depth); 5209: 5209: UnpackResult( 5209: result, MatrixBlockBounds(r, c, rs, cs), packed_result, depth, 5209: packed_lhs.sums_of_each_slice(), packed_rhs.sums_of_each_slice(), 5209: lhs_offset.block(r, rs), rhs_offset.block(c, cs), output_pipeline); 5209: } 5209: } 5209: 5209: allocator->Decommit(); 5209: } 5209: 5209: } 5209: # 28 "/<>/test/../public/../internal/multi_thread_gemm.h" 2 5209: 5209: namespace gemmlowp { 5209: # 51 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: const int kMaxBusyWaitNOPs = 4 * 1000 * 1000; 5209: # 66 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: inline int DoSomeNOPs() { 5209: asm volatile("nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n"); 5209: return 64; 5209: } 5209: # 110 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: template 5209: T WaitForVariableChange(std::atomic* var, T initial_value, 5209: pthread_cond_t* cond, pthread_mutex_t* mutex) { 5209: 5209: T new_value = var->load(std::memory_order_acquire); 5209: if (new_value != initial_value) { 5209: return new_value; 5209: } 5209: 5209: int nops = 0; 5209: while (nops < kMaxBusyWaitNOPs) { 5209: nops += DoSomeNOPs(); 5209: new_value = var->load(std::memory_order_acquire); 5209: if (new_value != initial_value) { 5209: return new_value; 5209: } 5209: } 5209: 5209: 5209: pthread_mutex_lock(mutex); 5209: new_value = var->load(std::memory_order_acquire); 5209: while (new_value == initial_value) { 5209: pthread_cond_wait(cond, mutex); 5209: new_value = var->load(std::memory_order_acquire); 5209: } 5209: pthread_mutex_unlock(mutex); 5209: return new_value; 5209: } 5209: # 147 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: class BlockingCounter { 5209: public: 5209: BlockingCounter() : count_(0) {} 5209: 5209: 5209: 5209: void Reset(std::size_t initial_count) { 5209: std::size_t old_count_value = count_.load(std::memory_order_relaxed); 5209: 5209: # 155 "/<>/test/../public/../internal/multi_thread_gemm.h" 3 4 5209: (static_cast ( 5209: # 155 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: old_count_value == 0 5209: # 155 "/<>/test/../public/../internal/multi_thread_gemm.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 155 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: "old_count_value == 0" 5209: # 155 "/<>/test/../public/../internal/multi_thread_gemm.h" 3 4 5209: , "/<>/test/../public/../internal/multi_thread_gemm.h", 155, __extension__ __PRETTY_FUNCTION__)) 5209: # 155 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: ; 5209: (void)old_count_value; 5209: count_.store(initial_count, std::memory_order_release); 5209: } 5209: 5209: 5209: 5209: 5209: 5209: bool DecrementCount() { 5209: std::size_t old_count_value = 5209: count_.fetch_sub(1, std::memory_order_acq_rel); 5209: 5209: # 167 "/<>/test/../public/../internal/multi_thread_gemm.h" 3 4 5209: (static_cast ( 5209: # 167 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: old_count_value > 0 5209: # 167 "/<>/test/../public/../internal/multi_thread_gemm.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 167 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: "old_count_value > 0" 5209: # 167 "/<>/test/../public/../internal/multi_thread_gemm.h" 3 4 5209: , "/<>/test/../public/../internal/multi_thread_gemm.h", 167, __extension__ __PRETTY_FUNCTION__)) 5209: # 167 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: ; 5209: std::size_t count_value = old_count_value - 1; 5209: return count_value == 0; 5209: } 5209: 5209: 5209: 5209: void Wait() { 5209: ScopedProfilingLabel label("BlockingCounter::Wait"); 5209: 5209: int nops = 0; 5209: while (count_.load(std::memory_order_acquire)) { 5209: nops += DoSomeNOPs(); 5209: if (nops > kMaxBusyWaitNOPs) { 5209: nops = 0; 5209: # 203 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: std::this_thread::sleep_for(std::chrono::milliseconds(1)); 5209: } 5209: } 5209: } 5209: 5209: private: 5209: std::atomic count_; 5209: }; 5209: 5209: 5209: struct Task { 5209: Task() : local_allocator(nullptr) {} 5209: virtual ~Task() {} 5209: virtual void Run() = 0; 5209: Allocator* local_allocator; 5209: }; 5209: 5209: 5209: class Worker { 5209: public: 5209: enum class State { 5209: ThreadStartup, 5209: Ready, 5209: HasWork, 5209: ExitAsSoonAsPossible 5209: }; 5209: 5209: explicit Worker(BlockingCounter* counter_to_decrement_when_ready) 5209: : task_(nullptr), 5209: state_(State::ThreadStartup), 5209: counter_to_decrement_when_ready_(counter_to_decrement_when_ready) { 5209: pthread_cond_init(&state_cond_, nullptr); 5209: pthread_mutex_init(&state_mutex_, nullptr); 5209: pthread_create(&thread_, nullptr, ThreadFunc, this); 5209: } 5209: 5209: ~Worker() { 5209: ChangeState(State::ExitAsSoonAsPossible); 5209: pthread_join(thread_, nullptr); 5209: pthread_cond_destroy(&state_cond_); 5209: pthread_mutex_destroy(&state_mutex_); 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: void ChangeState(State new_state, Task* task = nullptr) { 5209: ScopedProfilingLabel label("Worker::ChangeState"); 5209: pthread_mutex_lock(&state_mutex_); 5209: State old_state = state_.load(std::memory_order_relaxed); 5209: 5209: # 256 "/<>/test/../public/../internal/multi_thread_gemm.h" 3 4 5209: (static_cast ( 5209: # 256 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: old_state != new_state 5209: # 256 "/<>/test/../public/../internal/multi_thread_gemm.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 256 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: "old_state != new_state" 5209: # 256 "/<>/test/../public/../internal/multi_thread_gemm.h" 3 4 5209: , "/<>/test/../public/../internal/multi_thread_gemm.h", 256, __extension__ __PRETTY_FUNCTION__)) 5209: # 256 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: ; 5209: switch (old_state) { 5209: case State::ThreadStartup: 5209: 5209: # 259 "/<>/test/../public/../internal/multi_thread_gemm.h" 3 4 5209: (static_cast ( 5209: # 259 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: new_state == State::Ready 5209: # 259 "/<>/test/../public/../internal/multi_thread_gemm.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 259 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: "new_state == State::Ready" 5209: # 259 "/<>/test/../public/../internal/multi_thread_gemm.h" 3 4 5209: , "/<>/test/../public/../internal/multi_thread_gemm.h", 259, __extension__ __PRETTY_FUNCTION__)) 5209: # 259 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: ; 5209: break; 5209: case State::Ready: 5209: 5209: # 262 "/<>/test/../public/../internal/multi_thread_gemm.h" 3 4 5209: (static_cast ( 5209: # 262 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: new_state == State::HasWork || new_state == State::ExitAsSoonAsPossible 5209: # 262 "/<>/test/../public/../internal/multi_thread_gemm.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 262 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: "new_state == State::HasWork || new_state == State::ExitAsSoonAsPossible" 5209: # 262 "/<>/test/../public/../internal/multi_thread_gemm.h" 3 4 5209: , "/<>/test/../public/../internal/multi_thread_gemm.h", 262, __extension__ __PRETTY_FUNCTION__)) 5209: 5209: # 263 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: ; 5209: break; 5209: case State::HasWork: 5209: 5209: # 266 "/<>/test/../public/../internal/multi_thread_gemm.h" 3 4 5209: (static_cast ( 5209: # 266 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: new_state == State::Ready || new_state == State::ExitAsSoonAsPossible 5209: # 266 "/<>/test/../public/../internal/multi_thread_gemm.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 266 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: "new_state == State::Ready || new_state == State::ExitAsSoonAsPossible" 5209: # 266 "/<>/test/../public/../internal/multi_thread_gemm.h" 3 4 5209: , "/<>/test/../public/../internal/multi_thread_gemm.h", 266, __extension__ __PRETTY_FUNCTION__)) 5209: 5209: # 267 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: ; 5209: break; 5209: default: 5209: abort(); 5209: } 5209: switch (new_state) { 5209: case State::Ready: 5209: if (task_) { 5209: 5209: task_->Run(); 5209: task_ = nullptr; 5209: } 5209: break; 5209: case State::HasWork: 5209: 5209: # 281 "/<>/test/../public/../internal/multi_thread_gemm.h" 3 4 5209: (static_cast ( 5209: # 281 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: !task_ 5209: # 281 "/<>/test/../public/../internal/multi_thread_gemm.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 281 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: "!task_" 5209: # 281 "/<>/test/../public/../internal/multi_thread_gemm.h" 3 4 5209: , "/<>/test/../public/../internal/multi_thread_gemm.h", 281, __extension__ __PRETTY_FUNCTION__)) 5209: # 281 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: ; 5209: task->local_allocator = &local_allocator_; 5209: task_ = task; 5209: break; 5209: default: 5209: break; 5209: } 5209: state_.store(new_state, std::memory_order_relaxed); 5209: pthread_cond_broadcast(&state_cond_); 5209: pthread_mutex_unlock(&state_mutex_); 5209: if (new_state == State::Ready) { 5209: counter_to_decrement_when_ready_->DecrementCount(); 5209: } 5209: } 5209: 5209: 5209: void ThreadFunc() { 5209: ScopedProfilingLabel label("Worker::ThreadFunc"); 5209: 5209: ChangeState(State::Ready); 5209: 5209: 5209: while (true) { 5209: 5209: 5209: 5209: State state_to_act_upon = WaitForVariableChange( 5209: &state_, State::Ready, &state_cond_, &state_mutex_); 5209: 5209: 5209: switch (state_to_act_upon) { 5209: case State::HasWork: 5209: 5209: ChangeState(State::Ready); 5209: break; 5209: case State::ExitAsSoonAsPossible: 5209: return; 5209: default: 5209: abort(); 5209: } 5209: } 5209: } 5209: 5209: static void* ThreadFunc(void* arg) { 5209: static_cast(arg)->ThreadFunc(); 5209: return nullptr; 5209: } 5209: 5209: 5209: void StartWork(Task* task) { ChangeState(State::HasWork, task); } 5209: 5209: private: 5209: 5209: pthread_t thread_; 5209: 5209: 5209: Task* task_; 5209: 5209: 5209: pthread_cond_t state_cond_; 5209: pthread_mutex_t state_mutex_; 5209: 5209: 5209: 5209: 5209: 5209: std::atomic state_; 5209: 5209: 5209: 5209: Allocator local_allocator_; 5209: 5209: 5209: 5209: BlockingCounter* const counter_to_decrement_when_ready_; 5209: }; 5209: # 365 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: class WorkersPool { 5209: public: 5209: WorkersPool() {} 5209: 5209: ~WorkersPool() { 5209: for (auto w : workers_) { 5209: delete w; 5209: } 5209: } 5209: 5209: 5209: 5209: template 5209: void Execute(int tasks_count, TaskType* tasks) { 5209: 5209: # 379 "/<>/test/../public/../internal/multi_thread_gemm.h" 3 4 5209: (static_cast ( 5209: # 379 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: tasks_count >= 1 5209: # 379 "/<>/test/../public/../internal/multi_thread_gemm.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 379 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: "tasks_count >= 1" 5209: # 379 "/<>/test/../public/../internal/multi_thread_gemm.h" 3 4 5209: , "/<>/test/../public/../internal/multi_thread_gemm.h", 379, __extension__ __PRETTY_FUNCTION__)) 5209: # 379 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: ; 5209: 5209: std::size_t workers_count = tasks_count - 1; 5209: CreateWorkers(workers_count); 5209: 5209: # 383 "/<>/test/../public/../internal/multi_thread_gemm.h" 3 4 5209: (static_cast ( 5209: # 383 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: workers_count <= workers_.size() 5209: # 383 "/<>/test/../public/../internal/multi_thread_gemm.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 383 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: "workers_count <= workers_.size()" 5209: # 383 "/<>/test/../public/../internal/multi_thread_gemm.h" 3 4 5209: , "/<>/test/../public/../internal/multi_thread_gemm.h", 383, __extension__ __PRETTY_FUNCTION__)) 5209: # 383 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: ; 5209: counter_to_decrement_when_ready_.Reset(workers_count); 5209: for (std::size_t i = 0; i < tasks_count - 1; i++) { 5209: workers_[i]->StartWork(&tasks[i]); 5209: } 5209: 5209: Task* task = &tasks[tasks_count - 1]; 5209: task->local_allocator = &main_thread_task_allocator_; 5209: task->Run(); 5209: 5209: counter_to_decrement_when_ready_.Wait(); 5209: } 5209: 5209: 5209: void LegacyExecuteAndDestroyTasks(const std::vector& tasks) { 5209: std::size_t tasks_count = tasks.size(); 5209: 5209: # 399 "/<>/test/../public/../internal/multi_thread_gemm.h" 3 4 5209: (static_cast ( 5209: # 399 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: tasks_count >= 1 5209: # 399 "/<>/test/../public/../internal/multi_thread_gemm.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 399 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: "tasks_count >= 1" 5209: # 399 "/<>/test/../public/../internal/multi_thread_gemm.h" 3 4 5209: , "/<>/test/../public/../internal/multi_thread_gemm.h", 399, __extension__ __PRETTY_FUNCTION__)) 5209: # 399 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: ; 5209: 5209: std::size_t workers_count = tasks_count - 1; 5209: CreateWorkers(workers_count); 5209: 5209: # 403 "/<>/test/../public/../internal/multi_thread_gemm.h" 3 4 5209: (static_cast ( 5209: # 403 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: workers_count <= workers_.size() 5209: # 403 "/<>/test/../public/../internal/multi_thread_gemm.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 403 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: "workers_count <= workers_.size()" 5209: # 403 "/<>/test/../public/../internal/multi_thread_gemm.h" 3 4 5209: , "/<>/test/../public/../internal/multi_thread_gemm.h", 403, __extension__ __PRETTY_FUNCTION__)) 5209: # 403 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: ; 5209: counter_to_decrement_when_ready_.Reset(workers_count); 5209: for (int i = 0; i < tasks_count - 1; i++) { 5209: workers_[i]->StartWork(tasks[i]); 5209: } 5209: 5209: Task* task = tasks[tasks_count - 1]; 5209: task->local_allocator = &main_thread_task_allocator_; 5209: task->Run(); 5209: 5209: counter_to_decrement_when_ready_.Wait(); 5209: 5209: 5209: std::for_each(tasks.begin(), tasks.end(), [](Task* task) { delete task; }); 5209: } 5209: 5209: 5209: void Execute(const std::vector& tasks) { 5209: LegacyExecuteAndDestroyTasks(tasks); 5209: } 5209: 5209: private: 5209: 5209: 5209: 5209: void CreateWorkers(std::size_t workers_count) { 5209: if (workers_.size() >= workers_count) { 5209: return; 5209: } 5209: counter_to_decrement_when_ready_.Reset(workers_count - workers_.size()); 5209: while (workers_.size() < workers_count) { 5209: workers_.push_back(new Worker(&counter_to_decrement_when_ready_)); 5209: } 5209: counter_to_decrement_when_ready_.Wait(); 5209: } 5209: 5209: 5209: WorkersPool(const WorkersPool&) = delete; 5209: 5209: 5209: 5209: std::vector workers_; 5209: 5209: 5209: BlockingCounter counter_to_decrement_when_ready_; 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: Allocator main_thread_task_allocator_; 5209: }; 5209: 5209: 5209: 5209: 5209: 5209: template 5209: struct GemmWithPackedRhsTask : Task { 5209: typedef PackedSideBlock PackedLhs; 5209: typedef PackedSideBlock PackedRhs; 5209: GemmWithPackedRhsTask(GemmContextType* _context, const KernelBase& _kernel, 5209: const MatrixMap& _lhs, 5209: const PackedRhs& _packed_rhs, 5209: MatrixMap* _result, 5209: const MatrixBlockBounds& _result_block, 5209: const LhsOffset& _lhs_offset, 5209: const RhsOffset& _rhs_offset, 5209: const BlockParams& _block_params, 5209: const OutputPipelineType& _output_pipeline) 5209: : context(_context), 5209: kernel(_kernel), 5209: lhs(_lhs), 5209: packed_rhs(_packed_rhs), 5209: result(*_result), 5209: result_block(_result_block), 5209: lhs_offset(_lhs_offset), 5209: rhs_offset(_rhs_offset), 5209: block_params(_block_params), 5209: output_pipeline(_output_pipeline) {} 5209: 5209: void Run() override { 5209: ScopedProfilingLabel label("GemmWithPackedRhsTask"); 5209: 5209: const int rows = result_block.rows; 5209: const int cols = result_block.cols; 5209: const int depth = lhs.cols(); 5209: 5209: PackedLhs packed_lhs(Side::Lhs, local_allocator, block_params); 5209: 5209: PackedResult packed_result(local_allocator, block_params); 5209: 5209: local_allocator->Commit(); 5209: 5209: for (int c = 0; c < cols; c += block_params.l2_cols) { 5209: int cs = std::min(block_params.l2_cols, cols - c); 5209: 5209: for (int r = 0; r < rows; r += block_params.l2_rows) { 5209: int rs = std::min(block_params.l2_rows, rows - r); 5209: 5209: PackLhs(&packed_lhs, lhs.block(r, 0, rs, depth)); 5209: 5209: Compute(kernel, block_params, &packed_result, packed_lhs, packed_rhs, 5209: depth); 5209: 5209: auto curr_result_block = MatrixBlockBounds( 5209: result_block.start_row + r, result_block.start_col + c, rs, cs); 5209: UnpackResult( 5209: &result, curr_result_block, packed_result, depth, 5209: packed_lhs.sums_of_each_slice(), packed_rhs.sums_of_each_slice(), 5209: lhs_offset.block(curr_result_block.start_row, rs), 5209: rhs_offset.block(curr_result_block.start_col, cs), output_pipeline); 5209: } 5209: } 5209: 5209: local_allocator->Decommit(); 5209: } 5209: 5209: const GemmContextType* context; 5209: const KernelBase& kernel; 5209: const MatrixMap lhs; 5209: const PackedRhs packed_rhs; 5209: MatrixMap result; 5209: const MatrixBlockBounds result_block; 5209: const LhsOffset& lhs_offset; 5209: const RhsOffset& rhs_offset; 5209: const BlockParams& block_params; 5209: const OutputPipelineType& output_pipeline; 5209: }; 5209: 5209: 5209: 5209: 5209: 5209: class MultiThreadGemmContextBase : public SingleThreadGemmContext { 5209: public: 5209: void set_max_num_threads(int n) { max_num_threads_ = n; } 5209: 5209: int max_num_threads() const { return max_num_threads_; } 5209: 5209: protected: 5209: # 563 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: int max_num_threads_ = 1; 5209: }; 5209: 5209: class MultiThreadGemmContext : public MultiThreadGemmContextBase { 5209: public: 5209: WorkersPool* workers_pool() { return &workers_pool_; } 5209: 5209: private: 5209: 5209: 5209: 5209: WorkersPool workers_pool_; 5209: }; 5209: 5209: 5209: 5209: template 5209: inline int HowManyThreads(int max_num_threads, int rows, int cols, int depth) { 5209: 5209: if (max_num_threads == 1) { 5209: return 1; 5209: } 5209: 5209: 5209: int max_count = GetHardwareConcurrency(max_num_threads); 5209: # 597 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: static const int AbsoluteMinRowsPerThread = 16; 5209: static const int MinRowsPerThread = KernelRows > AbsoluteMinRowsPerThread 5209: ? KernelRows 5209: : AbsoluteMinRowsPerThread; 5209: int thread_count = std::min(max_count, CeilQuotient(rows, MinRowsPerThread)); 5209: 5209: 5209: 5209: 5209: 5209: if (thread_count > 1) { 5209: 5209: static const std::uint64_t min_cubic_size_per_thread = 64 * 1024; 5209: 5209: 5209: const std::uint64_t cubic_size = 5209: std::uint64_t(rows) * std::uint64_t(cols) * std::uint64_t(depth); 5209: 5209: thread_count = 5209: std::min(thread_count, int(cubic_size / min_cubic_size_per_thread)); 5209: 5209: if (thread_count < 1) { 5209: thread_count = 1; 5209: } 5209: } 5209: 5209: 5209: # 623 "/<>/test/../public/../internal/multi_thread_gemm.h" 3 4 5209: (static_cast ( 5209: # 623 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: thread_count > 0 && thread_count <= max_count 5209: # 623 "/<>/test/../public/../internal/multi_thread_gemm.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 623 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: "thread_count > 0 && thread_count <= max_count" 5209: # 623 "/<>/test/../public/../internal/multi_thread_gemm.h" 3 4 5209: , "/<>/test/../public/../internal/multi_thread_gemm.h", 623, __extension__ __PRETTY_FUNCTION__)) 5209: # 623 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: ; 5209: return thread_count; 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: void MultiThreadGemm(GemmContextType* context, const KernelBase& kernel, 5209: const MatrixMap& lhs, 5209: const MatrixMap& rhs, 5209: MatrixMap* result, 5209: const LhsOffset& lhs_offset, const RhsOffset& rhs_offset, 5209: const OutputPipelineType& output_pipeline) { 5209: ScopedProfilingLabel label("gemmlowp::MultiThreadGemm"); 5209: 5209: 5209: # 644 "/<>/test/../public/../internal/multi_thread_gemm.h" 3 4 5209: (static_cast ( 5209: # 644 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: lhs.cols() == rhs.rows() 5209: # 644 "/<>/test/../public/../internal/multi_thread_gemm.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 644 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: "lhs.cols() == rhs.rows()" 5209: # 644 "/<>/test/../public/../internal/multi_thread_gemm.h" 3 4 5209: , "/<>/test/../public/../internal/multi_thread_gemm.h", 644, __extension__ __PRETTY_FUNCTION__)) 5209: # 644 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: ; 5209: 5209: int rows = result->rows(); 5209: int cols = result->cols(); 5209: int depth = lhs.cols(); 5209: 5209: 5209: 5209: # 651 "/<>/test/../public/../internal/multi_thread_gemm.h" 3 4 5209: (static_cast ( 5209: # 651 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: rows > 0 5209: # 651 "/<>/test/../public/../internal/multi_thread_gemm.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 651 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: "rows > 0" 5209: # 651 "/<>/test/../public/../internal/multi_thread_gemm.h" 3 4 5209: , "/<>/test/../public/../internal/multi_thread_gemm.h", 651, __extension__ __PRETTY_FUNCTION__)) 5209: # 651 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: ; 5209: 5209: # 652 "/<>/test/../public/../internal/multi_thread_gemm.h" 3 4 5209: (static_cast ( 5209: # 652 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: cols > 0 5209: # 652 "/<>/test/../public/../internal/multi_thread_gemm.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 652 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: "cols > 0" 5209: # 652 "/<>/test/../public/../internal/multi_thread_gemm.h" 3 4 5209: , "/<>/test/../public/../internal/multi_thread_gemm.h", 652, __extension__ __PRETTY_FUNCTION__)) 5209: # 652 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: ; 5209: 5209: # 653 "/<>/test/../public/../internal/multi_thread_gemm.h" 3 4 5209: (static_cast ( 5209: # 653 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: depth > 0 5209: # 653 "/<>/test/../public/../internal/multi_thread_gemm.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 653 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: "depth > 0" 5209: # 653 "/<>/test/../public/../internal/multi_thread_gemm.h" 3 4 5209: , "/<>/test/../public/../internal/multi_thread_gemm.h", 653, __extension__ __PRETTY_FUNCTION__)) 5209: # 653 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: ; 5209: 5209: 5209: 5209: # 656 "/<>/test/../public/../internal/multi_thread_gemm.h" 3 4 5209: (static_cast ( 5209: # 656 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: rows >= cols 5209: # 656 "/<>/test/../public/../internal/multi_thread_gemm.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 656 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: "rows >= cols" 5209: # 656 "/<>/test/../public/../internal/multi_thread_gemm.h" 3 4 5209: , "/<>/test/../public/../internal/multi_thread_gemm.h", 656, __extension__ __PRETTY_FUNCTION__)) 5209: # 656 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: ; 5209: 5209: const int thread_count = HowManyThreads( 5209: context->max_num_threads(), rows, cols, depth); 5209: if (thread_count == 1) { 5209: return SingleThreadGemm(context, kernel, lhs, rhs, result, 5209: lhs_offset, rhs_offset, 5209: output_pipeline); 5209: } 5209: 5209: # 666 "/<>/test/../public/../internal/multi_thread_gemm.h" 3 4 5209: (static_cast ( 5209: # 666 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: thread_count > 1 5209: # 666 "/<>/test/../public/../internal/multi_thread_gemm.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 666 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: "thread_count > 1" 5209: # 666 "/<>/test/../public/../internal/multi_thread_gemm.h" 3 4 5209: , "/<>/test/../public/../internal/multi_thread_gemm.h", 666, __extension__ __PRETTY_FUNCTION__)) 5209: # 666 "/<>/test/../public/../internal/multi_thread_gemm.h" 5209: ; 5209: 5209: 5209: 5209: 5209: const int task_count = thread_count; 5209: 5209: Allocator* allocator = context->allocator(); 5209: auto* workers_pool = context->workers_pool(); 5209: 5209: BlockParams block_params; 5209: block_params.Init( 5209: rows, cols, depth, task_count, context->l1_bytes_to_use(), 5209: context->l2_bytes_to_use(), context->l2_rhs_factor()); 5209: 5209: PackedSideBlock packed_rhs(Side::Rhs, allocator, 5209: block_params); 5209: allocator->Commit(); 5209: 5209: 5209: for (int c = 0; c < cols; c += block_params.l2_cols) { 5209: int cs = std::min(block_params.l2_cols, cols - c); 5209: 5209: 5209: PackRhs(&packed_rhs, rhs.block(0, c, depth, cs)); 5209: 5209: 5209: std::vector tasks; 5209: int next_start_row = 0; 5209: for (int n = 0; n < task_count; ++n) { 5209: int start_row = next_start_row; 5209: next_start_row = std::min( 5209: rows, RoundUp(rows * (n + 1) / task_count)); 5209: 5209: int block_rows = next_start_row - start_row; 5209: auto lhs_block = lhs.block(start_row, 0, block_rows, depth); 5209: typedef GemmWithPackedRhsTask 5209: TaskType; 5209: tasks.push_back( 5209: new TaskType(context, kernel, lhs_block, packed_rhs, result, 5209: MatrixBlockBounds(start_row, c, block_rows, cs), 5209: lhs_offset, rhs_offset, block_params, output_pipeline)); 5209: } 5209: 5209: workers_pool->Execute(tasks); 5209: } 5209: 5209: allocator->Decommit(); 5209: } 5209: 5209: } 5209: # 24 "/<>/test/../public/../internal/dispatch_gemm_shape.h" 2 5209: 5209: namespace gemmlowp { 5209: 5209: template 5209: struct TransposeImpl { 5209: typedef T DstType; 5209: static T Run(const T& t) { return t; } 5209: }; 5209: 5209: template 5209: using TransposeType = typename TransposeImpl::DstType; 5209: 5209: template 5209: TransposeType Transpose(const T& t) { 5209: return TransposeImpl::Run(t); 5209: } 5209: 5209: template 5209: struct TransposeMapOrder { 5209: static constexpr MapOrder Value = 5209: Order == MapOrder::RowMajor ? MapOrder::ColMajor : MapOrder::RowMajor; 5209: }; 5209: 5209: template 5209: struct TransposeVectorShape { 5209: static constexpr VectorShape Value = 5209: Shape == VectorShape::Row ? VectorShape::Col : VectorShape::Row; 5209: }; 5209: 5209: template 5209: struct TransposeImpl> { 5209: typedef VectorMap SrcType; 5209: static constexpr VectorShape TransposedShape = 5209: TransposeVectorShape::Value; 5209: typedef VectorMap DstType; 5209: static DstType Run(const SrcType& src) { 5209: return DstType(src.data(), src.size()); 5209: } 5209: }; 5209: 5209: template 5209: struct TransposeImpl> { 5209: typedef MatrixMap SrcType; 5209: static constexpr MapOrder TransposedOrder = TransposeMapOrder::Value; 5209: typedef MatrixMap DstType; 5209: static DstType Run(const SrcType& src) { 5209: return DstType(src.data(), src.cols(), src.rows(), src.stride()); 5209: } 5209: }; 5209: 5209: template 5209: struct TransposeImpl> { 5209: typedef OutputStageQuantizeDownInt32ToUint8ScalePC SrcType; 5209: static const VectorShape TransposedShape = TransposeVectorShape::Value; 5209: typedef OutputStageQuantizeDownInt32ToUint8ScalePC DstType; 5209: static DstType Run(const SrcType& src) { 5209: DstType dst; 5209: dst.result_shift = src.result_shift; 5209: dst.result_offset = Transpose(src.result_offset); 5209: dst.result_mult_int = Transpose(src.result_mult_int); 5209: return dst; 5209: } 5209: }; 5209: 5209: template 5209: struct TransposeImpl> { 5209: typedef OutputStageScaleInt32ByFixedPointAndExponentPC SrcType; 5209: static const VectorShape TransposedShape = TransposeVectorShape::Value; 5209: typedef OutputStageScaleInt32ByFixedPointAndExponentPC 5209: DstType; 5209: static DstType Run(const SrcType& src) { 5209: DstType dst; 5209: dst.result_fixedpoint_multiplier = 5209: Transpose(src.result_fixedpoint_multiplier); 5209: dst.result_exponent = Transpose(src.result_exponent); 5209: dst.result_offset_after_shift = src.result_offset_after_shift; 5209: return dst; 5209: } 5209: }; 5209: 5209: template 5209: struct TransposeImpl> { 5209: typedef OutputStageBiasAddition SrcType; 5209: typedef TransposeType TransposedVectorMapType; 5209: typedef OutputStageBiasAddition DstType; 5209: static DstType Run(const SrcType& src) { 5209: DstType dst; 5209: dst.bias_vector = Transpose(src.bias_vector); 5209: return dst; 5209: } 5209: }; 5209: 5209: 5209: 5209: 5209: 5209: inline std::tuple<> TransposeTuple(const std::tuple<>& t) { return t; } 5209: 5209: template 5209: std::tuple> TransposeTuple(const std::tuple& t) { 5209: return std::make_tuple(Transpose(std::get<0>(t))); 5209: } 5209: 5209: template 5209: std::tuple, TransposeType> TransposeTuple( 5209: const std::tuple& t) { 5209: return std::make_tuple(Transpose(std::get<0>(t)), Transpose(std::get<1>(t))); 5209: } 5209: 5209: template 5209: std::tuple, TransposeType, TransposeType> 5209: TransposeTuple(const std::tuple& t) { 5209: return std::make_tuple(Transpose(std::get<0>(t)), Transpose(std::get<1>(t)), 5209: Transpose(std::get<2>(t))); 5209: } 5209: 5209: template 5209: std::tuple, TransposeType, TransposeType, 5209: TransposeType> 5209: TransposeTuple(const std::tuple& t) { 5209: return std::make_tuple(Transpose(std::get<0>(t)), Transpose(std::get<1>(t)), 5209: Transpose(std::get<2>(t)), Transpose(std::get<3>(t))); 5209: } 5209: 5209: template 5209: std::tuple, TransposeType, TransposeType, 5209: TransposeType, TransposeType> 5209: TransposeTuple(const std::tuple& t) { 5209: return std::make_tuple(Transpose(std::get<0>(t)), Transpose(std::get<1>(t)), 5209: Transpose(std::get<2>(t)), Transpose(std::get<3>(t)), 5209: Transpose(std::get<4>(t))); 5209: } 5209: 5209: template 5209: std::tuple, TransposeType, TransposeType, 5209: TransposeType, TransposeType, TransposeType> 5209: TransposeTuple(const std::tuple& t) { 5209: return std::make_tuple(Transpose(std::get<0>(t)), Transpose(std::get<1>(t)), 5209: Transpose(std::get<2>(t)), Transpose(std::get<3>(t)), 5209: Transpose(std::get<4>(t)), Transpose(std::get<5>(t))); 5209: } 5209: 5209: template 5209: void DispatchGemmShape(GemmContextType* context, 5209: const MatrixMap& lhs, 5209: const MatrixMap& rhs, 5209: MatrixMap* result, 5209: const LhsOffset& lhs_offset, const RhsOffset& rhs_offset, 5209: const OutputPipelineType& output_pipeline) { 5209: 5209: # 177 "/<>/test/../public/../internal/dispatch_gemm_shape.h" 3 4 5209: (static_cast ( 5209: # 177 "/<>/test/../public/../internal/dispatch_gemm_shape.h" 5209: lhs.cols() == rhs.rows() 5209: # 177 "/<>/test/../public/../internal/dispatch_gemm_shape.h" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 177 "/<>/test/../public/../internal/dispatch_gemm_shape.h" 5209: "lhs.cols() == rhs.rows()" 5209: # 177 "/<>/test/../public/../internal/dispatch_gemm_shape.h" 3 4 5209: , "/<>/test/../public/../internal/dispatch_gemm_shape.h", 177, __extension__ __PRETTY_FUNCTION__)) 5209: # 177 "/<>/test/../public/../internal/dispatch_gemm_shape.h" 5209: ; 5209: 5209: int rows = result->rows(); 5209: int cols = result->cols(); 5209: int depth = lhs.cols(); 5209: 5209: if (rows == 0 || cols == 0 || depth == 0) { 5209: 5209: 5209: return; 5209: } 5209: 5209: if (rows < cols) { 5209: auto transposed_result_map = Transpose(*result); 5209: return DispatchGemmShape( 5209: context, Transpose(rhs), Transpose(lhs), &transposed_result_map, 5209: Transpose(rhs_offset), Transpose(lhs_offset), 5209: TransposeTuple(output_pipeline)); 5209: } 5209: 5209: typedef DefaultKernel Kernel; 5209: MultiThreadGemm(context, Kernel(), lhs, rhs, result, 5209: lhs_offset, rhs_offset, output_pipeline); 5209: } 5209: 5209: } 5209: # 20 "/<>/test/../public/gemmlowp.h" 2 5209: # 1 "/<>/test/../public/bit_depth.h" 1 5209: # 21 "/<>/test/../public/gemmlowp.h" 2 5209: # 1 "/<>/test/../public/map.h" 1 5209: # 22 "/<>/test/../public/gemmlowp.h" 2 5209: # 1 "/<>/test/../public/output_stages.h" 1 5209: # 23 "/<>/test/../public/gemmlowp.h" 2 5209: 5209: namespace gemmlowp { 5209: 5209: class GemmContext : public MultiThreadGemmContext {}; 5209: 5209: 5209: 5209: template 5209: void GemmWithOutputPipelinePC(GemmContextType* context, 5209: const MatrixMap& lhs, 5209: const MatrixMap& rhs, 5209: MatrixMap* result, 5209: const LhsOffset& lhs_offset, 5209: const RhsOffset& rhs_offset, 5209: const OutputPipelineType& output_pipeline) { 5209: DispatchGemmShape( 5209: context, lhs, rhs, result, lhs_offset, rhs_offset, output_pipeline); 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: template 5209: void GemmWithOutputPipeline(GemmContextType* context, 5209: const MatrixMap& lhs, 5209: const MatrixMap& rhs, 5209: MatrixMap* result, 5209: int lhs_offset, int rhs_offset, 5209: const OutputPipelineType& output_pipeline) { 5209: typedef VectorDup OffsetColDup; 5209: typedef VectorDup OffsetRowDup; 5209: const OffsetColDup lhs_offset_vector(lhs_offset, lhs.rows()); 5209: const OffsetRowDup rhs_offset_vector(rhs_offset, rhs.cols()); 5209: DispatchGemmShape( 5209: context, lhs, rhs, result, lhs_offset_vector, rhs_offset_vector, 5209: output_pipeline); 5209: } 5209: 5209: 5209: 5209: 5209: 5209: template 5209: void Gemm(GemmContextType* context, 5209: const MatrixMap& lhs, 5209: const MatrixMap& rhs, 5209: MatrixMap* result, int lhs_offset, 5209: int rhs_offset, int result_offset, int result_mult_int, 5209: int result_shift) { 5209: GemmWithOutputPipeline( 5209: context, lhs, rhs, result, lhs_offset, rhs_offset, 5209: MakeStandardOutputPipeline(result_offset, result_mult_int, result_shift)); 5209: } 5209: 5209: } 5209: # 31 "/<>/test/test.h" 2 5209: 5209: namespace gemmlowp { 5209: # 46 "/<>/test/test.h" 5209: template 5209: class Matrix : public MatrixMap { 5209: public: 5209: typedef MatrixMap Map; 5209: typedef MatrixMap ConstMap; 5209: typedef typename Map::Scalar Scalar; 5209: static const MapOrder Order = tOrder; 5209: using Map::kOrder; 5209: using Map::rows_; 5209: using Map::cols_; 5209: using Map::stride_; 5209: using Map::data_; 5209: 5209: public: 5209: Matrix() : Map(nullptr, 0, 0, 0) {} 5209: 5209: Matrix(int rows, int cols) : Map(nullptr, 0, 0, 0) { Resize(rows, cols); } 5209: 5209: Matrix(const Matrix& other) : Map(nullptr, 0, 0, 0) { *this = other; } 5209: 5209: Matrix& operator=(const Matrix& other) { 5209: Resize(other.rows_, other.cols_); 5209: std::memcpy(data_, other.data_, size() * sizeof(Scalar)); 5209: return *this; 5209: } 5209: 5209: friend bool operator==(const Matrix& a, const Matrix& b) { 5209: return a.rows_ == b.rows_ && a.cols_ == b.cols_ && 5209: !std::memcmp(a.data_, b.data_, a.size()); 5209: } 5209: 5209: void Resize(int rows, int cols) { 5209: rows_ = rows; 5209: cols_ = cols; 5209: stride_ = kOrder == MapOrder::ColMajor ? rows : cols; 5209: storage.resize(size()); 5209: data_ = storage.data(); 5209: } 5209: 5209: int size() const { return rows_ * cols_; } 5209: 5209: Map& map() { return *static_cast(this); } 5209: 5209: ConstMap const_map() const { return ConstMap(data_, rows_, cols_, stride_); } 5209: 5209: protected: 5209: std::vector storage; 5209: }; 5209: 5209: inline std::mt19937& RandomEngine() { 5209: static std::mt19937 engine; 5209: return engine; 5209: } 5209: 5209: inline int Random() { 5209: std::uniform_int_distribution dist(0, std::numeric_limits::max()); 5209: return dist(RandomEngine()); 5209: } 5209: # 118 "/<>/test/test.h" 5209: template 5209: void MakeRandom(MatrixType* m) { 5209: ScopedProfilingLabel("MakeRandom(matrix)"); 5209: typedef typename MatrixType::Scalar Scalar; 5209: std::uniform_int_distribution dist(OperandRange::kMinValue, 5209: OperandRange::kMaxValue); 5209: for (int c = 0; c < m->cols(); c++) { 5209: for (int r = 0; r < m->rows(); r++) { 5209: (*m)(r, c) = dist(RandomEngine()); 5209: } 5209: } 5209: } 5209: 5209: 5209: template 5209: void MakeConstant(MatrixType* m, typename MatrixType::Scalar val) { 5209: ScopedProfilingLabel("MakeConstant(matrix)"); 5209: for (int c = 0; c < m->cols(); c++) { 5209: for (int r = 0; r < m->rows(); r++) { 5209: (*m)(r, c) = val; 5209: } 5209: } 5209: } 5209: 5209: template 5209: void MakeZero(MatrixType* m) { 5209: ScopedProfilingLabel("MakeZero(matrix)"); 5209: MakeConstant(m, 0); 5209: } 5209: 5209: } 5209: # 16 "/<>/test/test.cc" 2 5209: 5209: 5209: 5209: # 1 "/usr/include/c++/10/cstdlib" 1 3 5209: # 39 "/usr/include/c++/10/cstdlib" 3 5209: 5209: # 40 "/usr/include/c++/10/cstdlib" 3 5209: # 20 "/<>/test/test.cc" 2 5209: # 1 "/usr/include/c++/10/ctime" 1 3 5209: # 39 "/usr/include/c++/10/ctime" 3 5209: 5209: # 40 "/usr/include/c++/10/ctime" 3 5209: # 21 "/<>/test/test.cc" 2 5209: # 29 "/<>/test/test.cc" 5209: # 1 "/<>/test/../eight_bit_int_gemm/eight_bit_int_gemm.h" 1 5209: # 30 "/<>/test/../eight_bit_int_gemm/eight_bit_int_gemm.h" 5209: namespace gemmlowp { 5209: 5209: namespace eight_bit_int_gemm { 5209: # 48 "/<>/test/../eight_bit_int_gemm/eight_bit_int_gemm.h" 5209: enum class BitDepthSetting { 5209: A8B8, 5209: A5B7 5209: }; 5209: 5209: 5209: 5209: void EightBitIntGemm(bool transpose_a, bool transpose_b, bool transpose_c, 5209: int m, int n, int k, const std::uint8_t *a, 5209: std::int32_t a_offset, int lda, const std::uint8_t *b, 5209: std::int32_t b_offset, int ldb, std::uint8_t *c, 5209: std::int32_t c_offset, std::int32_t c_mult_int, 5209: std::int32_t c_shift, int ldc, BitDepthSetting bit_depth); 5209: 5209: void EightBitIntGemm(bool transpose_a, bool transpose_b, bool transpose_c, 5209: int m, int n, int k, const std::uint8_t *a, 5209: std::int32_t a_offset, int lda, const std::uint8_t *b, 5209: std::int32_t b_offset, int ldb, float *c, float c_offset, 5209: int ldc, BitDepthSetting bit_depth); 5209: 5209: 5209: 5209: 5209: 5209: void FreePersistentResources(); 5209: # 81 "/<>/test/../eight_bit_int_gemm/eight_bit_int_gemm.h" 5209: void SetMaxNumThreads(int n); 5209: 5209: } 5209: 5209: } 5209: # 30 "/<>/test/test.cc" 2 5209: # 1 "/<>/test/../internal/kernel_reference.h" 1 5209: # 31 "/<>/test/test.cc" 2 5209: # 1 "/<>/test/test_data.h" 1 5209: # 18 "/<>/test/test_data.h" 5209: namespace test_data { 5209: 5209: extern const bool is_a_transposed; 5209: extern const bool is_b_transposed; 5209: extern const bool is_c_transposed; 5209: extern const int m; 5209: extern const int n; 5209: extern const int k; 5209: extern const int a_offset; 5209: extern const int b_offset; 5209: extern const int c_shift; 5209: extern const int c_mult_int; 5209: extern const int c_shift; 5209: extern const int c_offset; 5209: 5209: extern const int a_count; 5209: extern const int b_count; 5209: extern const int c_count; 5209: 5209: extern unsigned char a_data[]; 5209: extern unsigned char b_data[]; 5209: extern unsigned char expected_c_data[]; 5209: 5209: } 5209: # 32 "/<>/test/test.cc" 2 5209: 5209: namespace gemmlowp { 5209: 5209: void ReferenceEightBitIntGemm(bool transpose_a, bool transpose_b, 5209: bool transpose_c, int m, int n, int k, 5209: const std::uint8_t* a, std::int32_t a_offset, 5209: int lda, const std::uint8_t* b, 5209: std::int32_t b_offset, int ldb, std::uint8_t* c, 5209: std::int32_t c_offset, std::int32_t c_mult_int, 5209: std::int32_t c_shift, int ldc) { 5209: ScopedProfilingLabel("ReferenceEightBitIntGemm"); 5209: 5209: # 43 "/<>/test/test.cc" 3 4 5209: (static_cast ( 5209: # 43 "/<>/test/test.cc" 5209: (c_shift >= 0) && (c_shift <= 32) 5209: # 43 "/<>/test/test.cc" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 43 "/<>/test/test.cc" 5209: "(c_shift >= 0) && (c_shift <= 32)" 5209: # 43 "/<>/test/test.cc" 3 4 5209: , "/<>/test/test.cc", 43, __extension__ __PRETTY_FUNCTION__)) 5209: # 43 "/<>/test/test.cc" 5209: ; 5209: 5209: 5209: # 45 "/<>/test/test.cc" 3 4 5209: (static_cast ( 5209: # 45 "/<>/test/test.cc" 5209: a != nullptr 5209: # 45 "/<>/test/test.cc" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 45 "/<>/test/test.cc" 5209: "a != nullptr" 5209: # 45 "/<>/test/test.cc" 3 4 5209: , "/<>/test/test.cc", 45, __extension__ __PRETTY_FUNCTION__)) 5209: # 45 "/<>/test/test.cc" 5209: ; 5209: 5209: # 46 "/<>/test/test.cc" 3 4 5209: (static_cast ( 5209: # 46 "/<>/test/test.cc" 5209: b != nullptr 5209: # 46 "/<>/test/test.cc" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 46 "/<>/test/test.cc" 5209: "b != nullptr" 5209: # 46 "/<>/test/test.cc" 3 4 5209: , "/<>/test/test.cc", 46, __extension__ __PRETTY_FUNCTION__)) 5209: # 46 "/<>/test/test.cc" 5209: ; 5209: 5209: # 47 "/<>/test/test.cc" 3 4 5209: (static_cast ( 5209: # 47 "/<>/test/test.cc" 5209: c != nullptr 5209: # 47 "/<>/test/test.cc" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 47 "/<>/test/test.cc" 5209: "c != nullptr" 5209: # 47 "/<>/test/test.cc" 3 4 5209: , "/<>/test/test.cc", 47, __extension__ __PRETTY_FUNCTION__)) 5209: # 47 "/<>/test/test.cc" 5209: ; 5209: 5209: int a_i_stride; 5209: int a_l_stride; 5209: if (transpose_a) { 5209: a_i_stride = lda; 5209: a_l_stride = 1; 5209: } else { 5209: a_i_stride = 1; 5209: a_l_stride = lda; 5209: } 5209: int b_j_stride; 5209: int b_l_stride; 5209: if (transpose_b) { 5209: b_j_stride = 1; 5209: b_l_stride = ldb; 5209: } else { 5209: b_j_stride = ldb; 5209: b_l_stride = 1; 5209: } 5209: int c_i_stride; 5209: int c_j_stride; 5209: if (transpose_c) { 5209: c_i_stride = ldc; 5209: c_j_stride = 1; 5209: } else { 5209: c_i_stride = 1; 5209: c_j_stride = ldc; 5209: } 5209: int i, j, l; 5209: 5209: const std::int32_t kRoundingTerm = (c_shift < 1) ? 0 : (1 << (c_shift - 1)); 5209: 5209: for (j = 0; j < n; j++) { 5209: for (i = 0; i < m; i++) { 5209: std::int32_t total = 0; 5209: for (l = 0; l < k; l++) { 5209: const int a_index = i * a_i_stride + l * a_l_stride; 5209: const std::uint8_t a_as_byte = a[a_index]; 5209: const std::int32_t a_as_int = 5209: static_cast(a_as_byte) + a_offset; 5209: const int b_index = j * b_j_stride + l * b_l_stride; 5209: const std::uint8_t b_as_byte = b[b_index]; 5209: const std::int32_t b_as_int = 5209: static_cast(b_as_byte) + b_offset; 5209: const std::int32_t mult_as_int = a_as_int * b_as_int; 5209: total += mult_as_int; 5209: } 5209: std::int32_t output = 5209: (((total + c_offset) * c_mult_int) + kRoundingTerm) >> c_shift; 5209: if (output > 255) { 5209: output = 255; 5209: } 5209: if (output < 0) { 5209: output = 0; 5209: } 5209: const int c_index = i * c_i_stride + j * c_j_stride; 5209: c[c_index] = static_cast(output); 5209: } 5209: } 5209: } 5209: 5209: typedef VectorMap OffsetColMap; 5209: typedef VectorMap OffsetRowMap; 5209: typedef VectorDup OffsetColDup; 5209: typedef VectorDup OffsetRowDup; 5209: 5209: 5209: 5209: 5209: template 5209: struct SingleThreadGemmWrapper { 5209: typedef tBitDepthParams BitDepthParams; 5209: 5209: static const char* Name() { 5209: static char buf[256]; 5209: snprintf(buf, sizeof(buf), "SingleThreadGemm, Kernel: %s", Kernel().Name()); 5209: return buf; 5209: } 5209: 5209: typedef SingleThreadGemmContext Context; 5209: 5209: template 5209: static bool Gemm(Context* context, 5209: const MatrixMap& lhs, 5209: const MatrixMap& rhs, 5209: MatrixMap* result, int lhs_offset, 5209: int rhs_offset, int result_offset, int result_mult_int, 5209: int result_shift) { 5209: ScopedProfilingLabel("SingleThreadGemmWrapper::Gemm"); 5209: const int rows = lhs.rows(); 5209: const int cols = rhs.cols(); 5209: if (rows < cols) { 5209: 5209: 5209: return false; 5209: } 5209: const OffsetColDup lhs_offset_vector(lhs_offset, rows); 5209: const OffsetRowDup rhs_offset_vector(rhs_offset, cols); 5209: SingleThreadGemm( 5209: context, Kernel(), lhs, rhs, result, lhs_offset_vector, 5209: rhs_offset_vector, 5209: MakeStandardOutputPipeline(result_offset, result_mult_int, 5209: result_shift)); 5209: return true; 5209: } 5209: }; 5209: 5209: template 5209: struct MultiThreadGemmWrapper { 5209: typedef tBitDepthParams BitDepthParams; 5209: 5209: static const char* Name() { 5209: static char buf[256]; 5209: snprintf(buf, sizeof(buf), "MultiThreadGemm, Kernel: %s", Kernel().Name()); 5209: return buf; 5209: } 5209: 5209: typedef MultiThreadGemmContext Context; 5209: 5209: template 5209: static bool Gemm(Context* context, 5209: const MatrixMap& lhs, 5209: const MatrixMap& rhs, 5209: MatrixMap* result, int lhs_offset, 5209: int rhs_offset, int result_offset, int result_mult_int, 5209: int result_shift) { 5209: ScopedProfilingLabel("MultiThreadGemmWrapper::Gemm"); 5209: context->set_max_num_threads(0); 5209: const int rows = lhs.rows(); 5209: const int cols = rhs.cols(); 5209: if (rows < cols) { 5209: 5209: 5209: return false; 5209: } 5209: const OffsetColDup lhs_offset_vector(lhs_offset, rows); 5209: const OffsetRowDup rhs_offset_vector(rhs_offset, cols); 5209: MultiThreadGemm( 5209: context, Kernel(), lhs, rhs, result, lhs_offset_vector, 5209: rhs_offset_vector, 5209: MakeStandardOutputPipeline(result_offset, result_mult_int, 5209: result_shift)); 5209: return true; 5209: } 5209: }; 5209: 5209: template 5209: struct PublicGemmWrapper { 5209: typedef tBitDepthParams BitDepthParams; 5209: 5209: static const char* Name() { return "public Gemm"; } 5209: 5209: typedef GemmContext Context; 5209: 5209: template 5209: static bool Gemm(Context* context, 5209: const MatrixMap& lhs, 5209: const MatrixMap& rhs, 5209: MatrixMap* result, int lhs_offset, 5209: int rhs_offset, int result_offset, int result_mult_int, 5209: int result_shift) { 5209: ScopedProfilingLabel("PublicGemmWrapper::Gemm"); 5209: gemmlowp::Gemm(context, lhs, rhs, result, lhs_offset, 5209: rhs_offset, result_offset, result_mult_int, 5209: result_shift); 5209: return true; 5209: } 5209: }; 5209: 5209: template 5209: struct BitDepthParamsForSettings {}; 5209: 5209: template <> 5209: struct BitDepthParamsForSettings 5209: : DefaultL8R8BitDepthParams {}; 5209: 5209: template <> 5209: struct BitDepthParamsForSettings 5209: : DefaultL7R5BitDepthParams {}; 5209: 5209: template 5209: struct EightBitIntGemmWrapper { 5209: typedef BitDepthParamsForSettings BitDepthParams; 5209: 5209: static const char* Name() { return "EightBitIntGemm"; } 5209: 5209: typedef void Context; 5209: 5209: template 5209: static bool Gemm(Context*, const MatrixMap& lhs, 5209: const MatrixMap& rhs, 5209: MatrixMap* result, int lhs_offset, 5209: int rhs_offset, int result_offset, int result_mult_int, 5209: int result_shift) { 5209: ScopedProfilingLabel("EightBitIntGemmWrapper::Gemm"); 5209: const bool transpose_c = ResultOrder == MapOrder::RowMajor; 5209: const bool transpose_a = LhsOrder == MapOrder::RowMajor; 5209: const bool transpose_b = RhsOrder == MapOrder::RowMajor; 5209: eight_bit_int_gemm::EightBitIntGemm( 5209: transpose_a, transpose_b, transpose_c, lhs.rows(), rhs.cols(), 5209: lhs.cols(), lhs.data(), lhs_offset, lhs.stride(), rhs.data(), 5209: rhs_offset, rhs.stride(), result->data(), result_offset, 5209: result_mult_int, result_shift, result->stride(), BitDepth); 5209: return true; 5209: } 5209: }; 5209: 5209: template 5209: struct ReferenceEightBitIntGemmWrapper { 5209: typedef DefaultL8R8BitDepthParams BitDepthParams; 5209: 5209: static const char* Name() { return "ReferenceEightBitIntGemm"; } 5209: 5209: template 5209: static bool Gemm(bool transpose_a, bool transpose_b, bool transpose_c, 5209: const MatrixMap& lhs, 5209: const MatrixMap& rhs, 5209: MatrixMap* result, int lhs_offset, 5209: int rhs_offset, int result_offset, int result_mult_int, 5209: int result_shift) { 5209: ScopedProfilingLabel("ReferenceEightBitIntGemmWrapper::Gemm"); 5209: ReferenceEightBitIntGemm(transpose_a, transpose_b, transpose_c, lhs.rows(), 5209: rhs.cols(), lhs.cols(), lhs.data(), lhs_offset, 5209: lhs.stride(), rhs.data(), rhs_offset, rhs.stride(), 5209: result->data(), result_offset, result_mult_int, 5209: result_shift, result->stride()); 5209: return true; 5209: } 5209: }; 5209: 5209: const char* OrderName(MapOrder order) { 5209: return order == MapOrder::ColMajor ? "ColMajor" : "RowMajor"; 5209: } 5209: 5209: struct ResultStats { 5209: ResultStats() 5209: : count(0), 5209: med_val(0), 5209: mean_signed_diff(0), 5209: med_signed_diff(0), 5209: med_unsigned_diff(0), 5209: max_unsigned_diff(0) {} 5209: 5209: int count; 5209: int med_val; 5209: float mean_signed_diff; 5209: int med_signed_diff; 5209: int med_unsigned_diff; 5209: int max_unsigned_diff; 5209: 5209: std::vector count_diff_by_pot_slice; 5209: }; 5209: 5209: void GetResultStats(const std::uint8_t* actual, const std::uint8_t* expected, 5209: size_t count, ResultStats* stats) { 5209: ScopedProfilingLabel("GetResultStats"); 5209: std::vector results; 5209: std::vector signed_diffs; 5209: std::vector unsigned_diffs; 5209: std::int64_t signed_diffs_sum = 0; 5209: for (size_t i = 0; i < count; i++) { 5209: results.push_back(actual[i]); 5209: std::int16_t signed_diff = actual[i] - expected[i]; 5209: signed_diffs.push_back(signed_diff); 5209: unsigned_diffs.push_back(std::abs(signed_diff)); 5209: signed_diffs_sum += signed_diff; 5209: } 5209: 5209: std::sort(results.begin(), results.end()); 5209: std::sort(signed_diffs.begin(), signed_diffs.end()); 5209: std::sort(unsigned_diffs.begin(), unsigned_diffs.end()); 5209: 5209: const size_t middle = count / 2; 5209: 5209: stats->count = count; 5209: stats->med_val = results[middle]; 5209: stats->mean_signed_diff = float(signed_diffs_sum) / count; 5209: stats->med_signed_diff = signed_diffs[middle]; 5209: stats->med_unsigned_diff = unsigned_diffs[middle]; 5209: stats->max_unsigned_diff = unsigned_diffs.back(); 5209: 5209: 5209: stats->count_diff_by_pot_slice.resize(9); 5209: auto cur = unsigned_diffs.begin(); 5209: size_t checksum = 0; 5209: for (int exponent = 0; exponent < 9; exponent++) { 5209: int pot = 1 << exponent; 5209: auto next = std::lower_bound(cur, unsigned_diffs.end(), pot); 5209: checksum += stats->count_diff_by_pot_slice[exponent] = next - cur; 5209: cur = next; 5209: } 5209: 5209: # 344 "/<>/test/test.cc" 3 4 5209: (static_cast ( 5209: # 344 "/<>/test/test.cc" 5209: checksum == count 5209: # 344 "/<>/test/test.cc" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 344 "/<>/test/test.cc" 5209: "checksum == count" 5209: # 344 "/<>/test/test.cc" 3 4 5209: , "/<>/test/test.cc", 344, __extension__ __PRETTY_FUNCTION__)) 5209: # 344 "/<>/test/test.cc" 5209: ; 5209: } 5209: 5209: struct ResultStatsBounds { 5209: ResultStatsBounds() 5209: : mean_signed_diff(0), 5209: med_signed_diff(0), 5209: med_unsigned_diff(0), 5209: max_unsigned_diff(0) {} 5209: 5209: float mean_signed_diff; 5209: int med_signed_diff; 5209: int med_unsigned_diff; 5209: int max_unsigned_diff; 5209: }; 5209: 5209: bool CheckResultStatsBounds(const ResultStats& stats, 5209: const ResultStatsBounds& bounds) { 5209: return stats.max_unsigned_diff <= bounds.max_unsigned_diff && 5209: stats.med_unsigned_diff <= bounds.med_unsigned_diff && 5209: std::abs(stats.med_signed_diff) <= bounds.med_signed_diff && 5209: std::abs(stats.mean_signed_diff) <= bounds.mean_signed_diff; 5209: } 5209: 5209: void ReportResultStats(const ResultStats& stats, 5209: const ResultStatsBounds& bounds) { 5209: printf(" number of matrix entries: %d\n", stats.count); 5209: printf(" median value: %d\n", stats.med_val); 5209: printf(" median unsigned diff: %d (tolerating %d)\n", 5209: stats.med_unsigned_diff, bounds.med_unsigned_diff); 5209: printf(" max unsigned diff: %d (tolerating %d)\n", stats.max_unsigned_diff, 5209: bounds.max_unsigned_diff); 5209: printf(" median signed diff: %d (tolerating %d)\n", stats.med_signed_diff, 5209: bounds.med_signed_diff); 5209: printf(" mean signed diff: %.3g (tolerating %.3g)\n", 5209: stats.mean_signed_diff, bounds.mean_signed_diff); 5209: 5209: printf("No error: %.2f %% of entries\n", 5209: 100.f * stats.count_diff_by_pot_slice[0] / stats.count); 5209: for (int exponent = 1; exponent < 9; exponent++) { 5209: printf("Error in %d..%d range: %.2f %% of entries\n", 1 << (exponent - 1), 5209: (1 << exponent) - 1, 5209: 100.f * stats.count_diff_by_pot_slice[exponent] / stats.count); 5209: } 5209: } 5209: # 399 "/<>/test/test.cc" 5209: template 5209: void test_gemm_impl(typename GemmWrapper::Context* context, const LhsType& lhs, 5209: const RhsType& rhs, ResultType* result, int lhs_offset, 5209: int rhs_offset, int result_offset, int result_mult_int, 5209: int result_shift_min, int result_shift_max) { 5209: const int rows = lhs.rows(); 5209: const int cols = rhs.cols(); 5209: do { ReleaseBuildAssertion( lhs.cols() == rhs.rows(), "test failed at " "/<>/test/test.cc" ":" "407"); } while (false); 5209: const int depth = lhs.cols(); 5209: 5209: const int result_shift = (result_shift_min + result_shift_max) / 2; 5209: 5209: if (!GemmWrapper::Gemm(context, lhs.const_map(), rhs.const_map(), 5209: &result->map(), lhs_offset, rhs_offset, result_offset, 5209: result_mult_int, result_shift)) { 5209: 5209: 5209: 5209: return; 5209: } 5209: 5209: typedef typename ResultType::Scalar Scalar; 5209: static const MapOrder kLhsOrder = LhsType::kOrder; 5209: static const MapOrder kRhsOrder = RhsType::kOrder; 5209: static const MapOrder kResultOrder = ResultType::kOrder; 5209: ResultType ref_result(rows, cols); 5209: const bool transpose_c = kResultOrder == MapOrder::RowMajor; 5209: const bool transpose_a = kLhsOrder == MapOrder::RowMajor; 5209: const bool transpose_b = kRhsOrder == MapOrder::RowMajor; 5209: ReferenceEightBitIntGemmWrapper::Gemm( 5209: transpose_a, transpose_b, transpose_c, lhs.const_map(), rhs.const_map(), 5209: &ref_result.map(), lhs_offset, rhs_offset, result_offset, result_mult_int, 5209: result_shift); 5209: 5209: typedef typename GemmWrapper::BitDepthParams BitDepthParams; 5209: 5209: ResultStats stats; 5209: GetResultStats(result->data(), ref_result.data(), rows * cols, &stats); 5209: 5209: 5209: int new_result_shift_min = result_shift_min; 5209: int new_result_shift_max = result_shift_max; 5209: bool retry = false; 5209: 5209: if (stats.med_val < 32) { 5209: new_result_shift_max = (result_shift_min + result_shift_max) / 2; 5209: retry = true; 5209: } 5209: 5209: if (stats.med_val > 224) { 5209: new_result_shift_min = (result_shift_min + result_shift_max) / 2; 5209: retry = true; 5209: } 5209: 5209: if (retry) { 5209: if (result_shift_min != result_shift_max) { 5209: test_gemm_impl(context, lhs, rhs, result, lhs_offset, 5209: rhs_offset, result_offset, result_mult_int, 5209: new_result_shift_min, new_result_shift_max); 5209: } 5209: return; 5209: } 5209: 5209: ResultStatsBounds bounds; 5209: 5209: 5209: const bool good = CheckResultStatsBounds(stats, bounds); 5209: 5209: printf( 5209: "%s: %dx%dx%d %s x %s -> %s, %s, offsets %d/%d/%d, mult %d, shift %d\n", 5209: good ? "PASS" : "FAIL", rows, depth, cols, OrderName(kLhsOrder), 5209: OrderName(kRhsOrder), OrderName(kResultOrder), GemmWrapper::Name(), 5209: lhs_offset, rhs_offset, result_offset, result_mult_int, result_shift); 5209: 5209: if (!good) { 5209: ReportResultStats(stats, bounds); 5209: 5209: int bad_coeffs_printed = 0; 5209: for (int c = 0; c < result->cols() && bad_coeffs_printed < 200; c++) { 5209: for (int r = 0; r < result->rows() && bad_coeffs_printed < 200; r++) { 5209: if (ref_result(r, c) != (*result)(r, c)) { 5209: printf("bad coeff: at (%d, %d), expected %d, got %d\n", r, c, 5209: ref_result(r, c), (*result)(r, c)); 5209: bad_coeffs_printed++; 5209: } 5209: } 5209: } 5209: } 5209: 5209: do { ReleaseBuildAssertion( good, "test failed at " "/<>/test/test.cc" ":" "489"); } while (false); 5209: } 5209: 5209: template 5209: void test_gemm(typename GemmWrapper::Context* context, const LhsType& lhs, 5209: const RhsType& rhs, ResultType* result, int lhs_offset, 5209: int rhs_offset, int result_offset, int result_mult_int) { 5209: test_gemm_impl(context, lhs, rhs, result, lhs_offset, rhs_offset, 5209: result_offset, result_mult_int, 0, 32); 5209: } 5209: 5209: enum class WhatParamsToTest { 5209: All, 5209: OnlyGenericCase, 5209: }; 5209: 5209: template 5209: void test_gemm(typename GemmWrapper::Context* context, int rows, int depth, 5209: int cols, WhatParamsToTest params_to_test) { 5209: typedef std::uint8_t Scalar; 5209: typedef Matrix LhsType; 5209: using BitDepthParams = typename GemmWrapper::BitDepthParams; 5209: LhsType lhs(rows, depth); 5209: MakeRandom(&lhs); 5209: typedef Matrix RhsType; 5209: RhsType rhs(depth, cols); 5209: MakeRandom(&rhs); 5209: typedef Matrix ResultType; 5209: ResultType result(rows, cols); 5209: MakeZero(&result); 5209: 5209: if (params_to_test == WhatParamsToTest::All) { 5209: test_gemm(context, lhs, rhs, &result, 0, 0, 0, 1); 5209: test_gemm(context, lhs, rhs, &result, 10, 0, 0, 1); 5209: test_gemm(context, lhs, rhs, &result, 0, 10, 0, 1); 5209: test_gemm(context, lhs, rhs, &result, 0, 0, 10, 1); 5209: test_gemm(context, lhs, rhs, &result, 0, 0, 0, 10); 5209: test_gemm(context, lhs, rhs, &result, 10, 10, 10, 10); 5209: test_gemm(context, lhs, rhs, &result, 256, 1, 17, 4); 5209: } 5209: test_gemm(context, lhs, rhs, &result, -75, -91, 74980, 123); 5209: } 5209: 5209: enum class WhatOrdersToTest { All, OnlyRCC }; 5209: 5209: template 5209: void test_gemm(typename GemmWrapper::Context* context, int rows, int depth, 5209: int cols, WhatParamsToTest params_to_test, 5209: WhatOrdersToTest orders_to_test) { 5209: 5209: 5209: 5209: 5209: 5209: 5209: 5209: if (orders_to_test == WhatOrdersToTest::All) { 5209: do { test_gemm(context, rows, depth, cols, params_to_test); } while (false); 5209: do { test_gemm(context, rows, depth, cols, params_to_test); } while (false); 5209: do { test_gemm(context, rows, depth, cols, params_to_test); } while (false); 5209: do { test_gemm(context, rows, depth, cols, params_to_test); } while (false); 5209: 5209: do { test_gemm(context, rows, depth, cols, params_to_test); } while (false); 5209: do { test_gemm(context, rows, depth, cols, params_to_test); } while (false); 5209: do { test_gemm(context, rows, depth, cols, params_to_test); } while (false); 5209: do { test_gemm(context, rows, depth, cols, params_to_test); } while (false); 5209: } else { 5209: do { test_gemm(context, rows, depth, cols, params_to_test); } while (false); 5209: } 5209: 5209: 5209: } 5209: 5209: template 5209: void test_gemm_kernel(MultiThreadGemmContext* context) { 5209: typedef MultiThreadGemmWrapper 5209: GemmWrapper; 5209: test_gemm(context, 1, 1, 1, WhatParamsToTest::OnlyGenericCase, 5209: WhatOrdersToTest::OnlyRCC); 5209: test_gemm(context, 2, 2, 2, WhatParamsToTest::OnlyGenericCase, 5209: WhatOrdersToTest::OnlyRCC); 5209: test_gemm(context, 3, 3, 3, WhatParamsToTest::OnlyGenericCase, 5209: WhatOrdersToTest::OnlyRCC); 5209: test_gemm(context, 4, 4, 4, WhatParamsToTest::OnlyGenericCase, 5209: WhatOrdersToTest::OnlyRCC); 5209: test_gemm(context, 5, 5, 5, WhatParamsToTest::OnlyGenericCase, 5209: WhatOrdersToTest::OnlyRCC); 5209: test_gemm(context, 9, 11, 13, WhatParamsToTest::OnlyGenericCase, 5209: WhatOrdersToTest::OnlyRCC); 5209: test_gemm(context, 50, 50, 50, WhatParamsToTest::All, 5209: WhatOrdersToTest::OnlyRCC); 5209: test_gemm(context, 200, 200, 200, 5209: WhatParamsToTest::OnlyGenericCase, 5209: WhatOrdersToTest::All); 5209: test_gemm(context, 50, 5000, 50, 5209: WhatParamsToTest::OnlyGenericCase, 5209: WhatOrdersToTest::OnlyRCC); 5209: } 5209: 5209: template 5209: void test_gemm(typename GemmWrapper::Context* context) { 5209: test_gemm(context, 1, 1, 1, WhatParamsToTest::All, 5209: WhatOrdersToTest::OnlyRCC); 5209: test_gemm(context, 2, 1, 1, WhatParamsToTest::All, 5209: WhatOrdersToTest::OnlyRCC); 5209: test_gemm(context, 1, 2, 1, WhatParamsToTest::All, 5209: WhatOrdersToTest::OnlyRCC); 5209: test_gemm(context, 1, 1, 2, WhatParamsToTest::All, 5209: WhatOrdersToTest::OnlyRCC); 5209: test_gemm(context, 2, 2, 2, WhatParamsToTest::All, 5209: WhatOrdersToTest::OnlyRCC); 5209: test_gemm(context, 3, 3, 3, WhatParamsToTest::All, 5209: WhatOrdersToTest::OnlyRCC); 5209: test_gemm(context, 4, 4, 4, WhatParamsToTest::All, 5209: WhatOrdersToTest::OnlyRCC); 5209: test_gemm(context, 5, 5, 5, WhatParamsToTest::All, 5209: WhatOrdersToTest::OnlyRCC); 5209: test_gemm(context, 6, 6, 6, WhatParamsToTest::All, 5209: WhatOrdersToTest::OnlyRCC); 5209: test_gemm(context, 3, 5, 7, WhatParamsToTest::All, 5209: WhatOrdersToTest::OnlyRCC); 5209: test_gemm(context, 7, 3, 5, WhatParamsToTest::All, 5209: WhatOrdersToTest::OnlyRCC); 5209: test_gemm(context, 5, 7, 3, WhatParamsToTest::All, 5209: WhatOrdersToTest::OnlyRCC); 5209: test_gemm(context, 8, 8, 8, WhatParamsToTest::All, 5209: WhatOrdersToTest::All); 5209: test_gemm(context, 16, 16, 16, WhatParamsToTest::All, 5209: WhatOrdersToTest::OnlyRCC); 5209: test_gemm(context, 32, 32, 32, WhatParamsToTest::All, 5209: WhatOrdersToTest::OnlyRCC); 5209: test_gemm(context, 64, 64, 64, WhatParamsToTest::All, 5209: WhatOrdersToTest::All); 5209: test_gemm(context, 128, 128, 128, WhatParamsToTest::All, 5209: WhatOrdersToTest::OnlyRCC); 5209: 5209: test_gemm(context, 16, 17, 16, WhatParamsToTest::All, 5209: WhatOrdersToTest::OnlyRCC); 5209: test_gemm(context, 37, 55, 73, WhatParamsToTest::All, 5209: WhatOrdersToTest::OnlyRCC); 5209: test_gemm(context, 57, 87, 117, WhatParamsToTest::All, 5209: WhatOrdersToTest::OnlyRCC); 5209: test_gemm(context, 93, 83, 73, WhatParamsToTest::All, 5209: WhatOrdersToTest::OnlyRCC); 5209: test_gemm(context, 109, 89, 99, WhatParamsToTest::All, 5209: WhatOrdersToTest::OnlyRCC); 5209: test_gemm(context, 78, 101, 82, WhatParamsToTest::All, 5209: WhatOrdersToTest::OnlyRCC); 5209: 5209: test_gemm(context, 512, 512, 512, 5209: WhatParamsToTest::OnlyGenericCase, 5209: WhatOrdersToTest::OnlyRCC); 5209: test_gemm(context, 1024, 1024, 1024, 5209: WhatParamsToTest::OnlyGenericCase, 5209: WhatOrdersToTest::OnlyRCC); 5209: test_gemm(context, 567, 2345, 123, 5209: WhatParamsToTest::OnlyGenericCase, 5209: WhatOrdersToTest::OnlyRCC); 5209: test_gemm(context, 100, 5000, 100, 5209: WhatParamsToTest::OnlyGenericCase, 5209: WhatOrdersToTest::OnlyRCC); 5209: test_gemm(context, 1, 1, 1000, WhatParamsToTest::OnlyGenericCase, 5209: WhatOrdersToTest::OnlyRCC); 5209: test_gemm(context, 1000, 1, 1, WhatParamsToTest::OnlyGenericCase, 5209: WhatOrdersToTest::OnlyRCC); 5209: test_gemm(context, 1, 1000, 1, WhatParamsToTest::OnlyGenericCase, 5209: WhatOrdersToTest::OnlyRCC); 5209: test_gemm(context, 1, 1000, 1000, 5209: WhatParamsToTest::OnlyGenericCase, 5209: WhatOrdersToTest::OnlyRCC); 5209: test_gemm(context, 1000, 1, 1000, 5209: WhatParamsToTest::OnlyGenericCase, 5209: WhatOrdersToTest::OnlyRCC); 5209: test_gemm(context, 1000, 1000, 1, 5209: WhatParamsToTest::OnlyGenericCase, 5209: WhatOrdersToTest::OnlyRCC); 5209: test_gemm(context, 777, 3456, 1, 5209: WhatParamsToTest::OnlyGenericCase, 5209: WhatOrdersToTest::OnlyRCC); 5209: test_gemm(context, 4567, 555, 1, 5209: WhatParamsToTest::OnlyGenericCase, 5209: WhatOrdersToTest::OnlyRCC); 5209: 5209: 5209: test_gemm(context, 70, 90, 110, WhatParamsToTest::All, 5209: WhatOrdersToTest::All); 5209: test_gemm(context, 300, 400, 500, 5209: WhatParamsToTest::OnlyGenericCase, 5209: WhatOrdersToTest::All); 5209: } 5209: 5209: template 5209: void test_gemv(typename GemmWrapper::Context* context) { 5209: test_gemm(context, 2, 2, 1, WhatParamsToTest::All, 5209: WhatOrdersToTest::OnlyRCC); 5209: test_gemm(context, 3, 3, 1, WhatParamsToTest::All, 5209: WhatOrdersToTest::OnlyRCC); 5209: test_gemm(context, 4, 4, 1, WhatParamsToTest::All, 5209: WhatOrdersToTest::OnlyRCC); 5209: test_gemm(context, 5, 5, 1, WhatParamsToTest::All, 5209: WhatOrdersToTest::OnlyRCC); 5209: test_gemm(context, 6, 6, 1, WhatParamsToTest::All, 5209: WhatOrdersToTest::OnlyRCC); 5209: test_gemm(context, 3, 5, 1, WhatParamsToTest::All, 5209: WhatOrdersToTest::OnlyRCC); 5209: test_gemm(context, 7, 3, 1, WhatParamsToTest::All, 5209: WhatOrdersToTest::OnlyRCC); 5209: test_gemm(context, 5, 7, 1, WhatParamsToTest::All, 5209: WhatOrdersToTest::OnlyRCC); 5209: test_gemm(context, 8, 8, 1, WhatParamsToTest::All, 5209: WhatOrdersToTest::OnlyRCC); 5209: test_gemm(context, 32, 32, 1, WhatParamsToTest::All, 5209: WhatOrdersToTest::OnlyRCC); 5209: test_gemm(context, 128, 128, 1, WhatParamsToTest::All, 5209: WhatOrdersToTest::OnlyRCC); 5209: test_gemm(context, 321, 123, 1, WhatParamsToTest::All, 5209: WhatOrdersToTest::OnlyRCC); 5209: 5209: 5209: test_gemm(context, 70, 90, 1, WhatParamsToTest::All, 5209: WhatOrdersToTest::All); 5209: test_gemm(context, 300, 400, 1, 5209: WhatParamsToTest::OnlyGenericCase, 5209: WhatOrdersToTest::All); 5209: } 5209: 5209: const char* GetBitDepthName(eight_bit_int_gemm::BitDepthSetting b) { 5209: switch (b) { 5209: case eight_bit_int_gemm::BitDepthSetting::A8B8: 5209: return "Lhs: 8 bit, Rhs: 8 bit"; 5209: case eight_bit_int_gemm::BitDepthSetting::A5B7: 5209: return "(legacy, no longer requantizing) Lhs: 7 bit, Rhs: 5 bit"; 5209: default: 5209: abort(); 5209: return nullptr; 5209: } 5209: } 5209: 5209: 5209: 5209: 5209: void TestWithSmallDataPerChannelQuantization() { 5209: const int m = 2; 5209: const int n = 9; 5209: const int k = 12; 5209: 5209: 5209: const std::uint8_t a_data[] = {0, 0, 0, 0, 0, 0, 0, 0, 5209: 0, 255, 255, 255, 64, 64, 64, 64, 5209: 64, 64, 0, 0, 0, 255, 255, 255}; 5209: const int lda = k; 5209: int a_offset[] = {0, -64}; 5209: MatrixMap lhs(a_data, m, k, lda); 5209: const OffsetColMap lhs_offset(a_offset, m); 5209: 5209: 5209: const std::uint8_t b_data[] = { 5209: 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 0, 5209: 0, 0, 0, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 127, 5209: 127, 127, 0, 0, 0, 127, 127, 127, 0, 0, 0, 255, 255, 255, 5209: 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 0, 0, 0, 0, 5209: 0, 0, 0, 0, 0, 0, 0, 127, 127, 127, 0, 0, 0, 127, 5209: 127, 127, 0, 0, 0, 0, 0, 0, 127, 127, 127, 127, 127, 127, 5209: 0, 0, 0, 0, 0, 0, 127, 127, 127, 127, 127, 127, 0, 0, 5209: 0, 127, 127, 127, 127, 127, 127, 127, 127, 127}; 5209: const int ldb = k; 5209: int b_offset = -127; 5209: MatrixMap rhs(b_data, k, n, ldb); 5209: const OffsetRowDup rhs_offset(b_offset, rhs.cols()); 5209: 5209: 5209: const std::uint8_t expected_c_data[] = {255, 255, 0, 0, 127, 159, 5209: 0, 64, 0, 64, 127, 159, 5209: 127, 127, 127, 127, 127, 127}; 5209: const int ldc = m; 5209: int c_offset[] = {97155, 97346}; 5209: int c_mult_int[] = {2741, 2741}; 5209: const int c_shift = 21; 5209: 5209: const int c_count = m * n; 5209: std::unique_ptr output_data(new std::uint8_t[c_count]); 5209: MatrixMap result(output_data.get(), m, n, 5209: ldc); 5209: const OffsetColMap result_offset(c_offset, m); 5209: const OffsetColMap result_mult_int(c_mult_int, m); 5209: const int result_shift = c_shift; 5209: 5209: GemmContext gemm_context; 5209: auto output_pipeline = MakeStandardOutputPipeline( 5209: result_offset, result_mult_int, result_shift); 5209: GemmWithOutputPipelinePC( 5209: &gemm_context, lhs, rhs, &result, lhs_offset, rhs_offset, 5209: output_pipeline); 5209: 5209: ResultStats stats; 5209: GetResultStats(output_data.get(), expected_c_data, c_count, &stats); 5209: 5209: ResultStatsBounds bounds; 5209: const bool good = CheckResultStatsBounds(stats, bounds); 5209: printf("TestWithSmallDataPerChannelQuantization: %s\n", 5209: good ? "PASS" : "FAIL"); 5209: ReportResultStats(stats, bounds); 5209: do { ReleaseBuildAssertion( good, "test failed at " "/<>/test/test.cc" ":" "795"); } while (false); 5209: } 5209: 5209: 5209: 5209: 5209: 5209: 5209: void TestWithLargeDataPerChannelQuantization() { 5209: const int m = 22; 5209: const int n = 25; 5209: const int k = 27; 5209: 5209: 5209: const std::uint8_t a_data[] = { 5209: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 5209: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5209: 0, 0, 0, 0, 0, 0, 127, 127, 127, 255, 255, 255, 127, 127, 127, 5209: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, 127, 127, 5209: 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 5209: 127, 127, 127, 0, 0, 0, 51, 51, 51, 51, 51, 51, 51, 51, 51, 5209: 0, 0, 0, 255, 255, 255, 0, 0, 0, 51, 51, 51, 51, 51, 51, 5209: 51, 51, 51, 51, 51, 51, 0, 0, 0, 51, 51, 51, 51, 51, 51, 5209: 255, 255, 255, 51, 51, 51, 51, 51, 51, 0, 0, 0, 51, 51, 51, 5209: 0, 0, 0, 64, 64, 64, 0, 0, 0, 64, 64, 64, 255, 255, 255, 5209: 64, 64, 64, 0, 0, 0, 64, 64, 64, 0, 0, 0, 36, 36, 36, 5209: 0, 0, 0, 36, 36, 36, 0, 0, 0, 255, 255, 255, 0, 0, 0, 5209: 36, 36, 36, 0, 0, 0, 36, 36, 36, 0, 0, 0, 0, 0, 0, 5209: 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 5209: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5209: 0, 0, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5209: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5209: 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5209: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 5209: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5209: 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 0, 0, 5209: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5209: 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 5209: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5209: 0, 0, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5209: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5209: 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5209: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 5209: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5209: 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 0, 0, 5209: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5209: 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 5209: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5209: 0, 0, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5209: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5209: 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5209: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 5209: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5209: 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 0, 0, 5209: 0, 0, 0, 0, 0, 0, 0, 0, 0, 5209: }; 5209: const int lda = k; 5209: int a_offset[] = {0, 0, 0, -51, -51, 0, -36, 0, 0, 0, 0, 5209: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; 5209: MatrixMap lhs(a_data, m, k, lda); 5209: const OffsetColMap lhs_offset(a_offset, m); 5209: 5209: 5209: const std::uint8_t b_data[] = { 5209: 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 119, 119, 5209: 119, 119, 119, 119, 127, 127, 127, 119, 119, 119, 119, 119, 119, 127, 5209: 127, 127, 127, 127, 127, 127, 127, 127, 119, 119, 119, 119, 119, 119, 5209: 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 127, 127, 5209: 127, 127, 127, 127, 127, 127, 127, 119, 119, 119, 119, 119, 119, 119, 5209: 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 127, 127, 127, 5209: 127, 127, 127, 127, 127, 127, 119, 119, 119, 119, 119, 119, 119, 119, 5209: 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 127, 127, 127, 127, 5209: 127, 127, 127, 127, 127, 119, 119, 119, 119, 119, 119, 127, 127, 127, 5209: 119, 119, 119, 119, 119, 119, 127, 127, 127, 127, 127, 127, 119, 119, 5209: 119, 119, 119, 119, 127, 127, 127, 119, 119, 119, 119, 119, 119, 127, 5209: 127, 127, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 5209: 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 5209: 119, 119, 119, 119, 136, 136, 136, 119, 119, 119, 119, 119, 119, 119, 5209: 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 5209: 136, 136, 136, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 5209: 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 136, 136, 136, 119, 5209: 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 127, 127, 127, 5209: 119, 119, 119, 119, 119, 119, 127, 127, 127, 119, 119, 119, 119, 119, 5209: 119, 127, 127, 127, 127, 127, 127, 119, 119, 119, 119, 119, 119, 127, 5209: 127, 127, 119, 119, 119, 119, 119, 119, 127, 127, 127, 119, 119, 119, 5209: 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 5209: 119, 119, 119, 119, 136, 136, 136, 119, 119, 119, 119, 119, 119, 119, 5209: 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 5209: 136, 136, 136, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 5209: 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 136, 136, 136, 119, 5209: 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 5209: 119, 119, 119, 119, 119, 119, 127, 127, 127, 119, 119, 119, 119, 119, 5209: 119, 127, 127, 127, 119, 119, 119, 119, 119, 119, 127, 127, 127, 127, 5209: 127, 127, 119, 119, 119, 119, 119, 119, 127, 127, 127, 119, 119, 119, 5209: 119, 119, 119, 127, 127, 127, 119, 119, 119, 119, 119, 119, 119, 119, 5209: 119, 119, 119, 119, 136, 136, 136, 119, 119, 119, 119, 119, 119, 119, 5209: 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 5209: 136, 136, 136, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 5209: 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 136, 136, 136, 119, 5209: 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 5209: 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 5209: 119, 127, 127, 127, 119, 119, 119, 119, 119, 119, 127, 127, 127, 119, 5209: 119, 119, 119, 119, 119, 127, 127, 127, 127, 127, 127, 119, 119, 119, 5209: 119, 119, 119, 127, 127, 127, 119, 119, 119, 119, 119, 119, 127, 127, 5209: 127, 127, 127, 127, 127, 127, 127, 119, 119, 119, 119, 119, 119, 119, 5209: 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 127, 127, 127, 5209: 127, 127, 127, 127, 127, 127, 119, 119, 119, 119, 119, 119, 119, 119, 5209: 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 127, 127, 127, 127, 5209: 127, 127, 127, 127, 127, 119, 119, 119, 119, 119, 119, 119, 119, 119, 5209: 119, 119, 119, 119, 119, 119, 119, 119, 119, 127, 127, 127, 127, 127, 5209: 127, 127, 127, 127, 119, 119, 119, 119, 119, 119, 127, 127, 127, 119, 5209: 119, 119, 119, 119, 119, 127, 127, 127, 127, 127, 127, 127, 127, 127, 5209: 127, 127, 127}; 5209: const int ldb = k; 5209: int b_offset = -127; 5209: MatrixMap rhs(b_data, k, n, ldb); 5209: const OffsetRowDup rhs_offset(b_offset, rhs.cols()); 5209: 5209: 5209: const std::uint8_t expected_c_data[] = { 5209: 7, 37, 37, 67, 67, 39, 79, 7, 7, 7, 7, 7, 7, 7, 7, 5209: 7, 7, 7, 7, 7, 7, 7, 7, 7, 37, 87, 67, 23, 91, 7, 5209: 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5209: 7, 37, 87, 67, 23, 91, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5209: 7, 7, 7, 7, 7, 7, 7, 7, 37, 87, 67, 23, 91, 7, 7, 5209: 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 37, 5209: 37, 67, 67, 39, 79, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5209: 7, 7, 7, 7, 7, 7, 37, 7, 67, 87, 23, 91, 7, 7, 7, 5209: 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5209: 87, 87, 7, 103, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5209: 7, 7, 7, 7, 7, 7, 71, 87, 45, 41, 77, 7, 7, 7, 7, 5209: 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 87, 5209: 87, 7, 103, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5209: 7, 7, 7, 7, 37, 7, 67, 87, 23, 91, 7, 7, 7, 7, 7, 5209: 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 37, 7, 67, 87, 5209: 23, 91, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5209: 7, 7, 7, 71, 7, 45, 87, 41, 77, 7, 7, 7, 7, 7, 7, 5209: 7, 7, 7, 7, 7, 7, 7, 7, 7, 255, 135, 135, 255, 255, 143, 5209: 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 5209: 255, 7, 71, 7, 45, 87, 41, 77, 7, 7, 7, 7, 7, 7, 7, 5209: 7, 7, 7, 7, 7, 7, 7, 7, 7, 37, 7, 67, 87, 23, 91, 5209: 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5209: 7, 37, 7, 67, 87, 23, 91, 7, 7, 7, 7, 7, 7, 7, 7, 5209: 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 87, 87, 7, 103, 7, 5209: 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5209: 7, 71, 87, 45, 41, 77, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5209: 7, 7, 7, 7, 7, 7, 7, 7, 7, 87, 87, 7, 103, 7, 7, 5209: 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 37, 5209: 7, 67, 87, 23, 91, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5209: 7, 7, 7, 7, 7, 7, 37, 37, 67, 67, 39, 79, 7, 7, 7, 5209: 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 37, 5209: 87, 67, 23, 91, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5209: 7, 7, 7, 7, 7, 7, 37, 87, 67, 23, 91, 7, 7, 7, 7, 5209: 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 37, 87, 5209: 67, 23, 91, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5209: 7, 7, 7, 7, 37, 37, 67, 67, 39, 79, 7, 7, 7, 7, 7, 5209: 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 99, 99, 99, 99, 99, 5209: 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 5209: 99, 99, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 5209: 111, 111, 111, 111, 111, 111, 111, 111, 111, 5209: }; 5209: const int ldc = m; 5209: int c_offset[] = { 5209: 6477, 12954, 12954, 7793, 7793, 12954, 9282, 6477, 6477, 6477, 6477, 5209: 6477, 6477, 6477, 6477, 6477, 6477, 6477, 6477, 6477, 6477, 6477, 5209: }; 5209: int c_mult_int[] = { 5209: 41121, 20560, 20560, 34267, 34267, 21937, 28784, 41121, 5209: 41121, 41121, 41121, 41121, 41121, 41121, 41121, 41121, 5209: 41121, 41121, 41121, 41121, 41121, 41121, 5209: }; 5209: const int c_shift = 21; 5209: 5209: const int c_count = m * n; 5209: std::unique_ptr output_data(new std::uint8_t[c_count]); 5209: MatrixMap result(output_data.get(), m, n, 5209: ldc); 5209: const OffsetColMap result_offset(c_offset, m); 5209: const OffsetColMap result_mult_int(c_mult_int, m); 5209: const int result_shift = c_shift; 5209: 5209: GemmContext gemm_context; 5209: auto output_pipeline = MakeStandardOutputPipeline( 5209: result_offset, result_mult_int, result_shift); 5209: GemmWithOutputPipelinePC( 5209: &gemm_context, lhs, rhs, &result, lhs_offset, rhs_offset, 5209: output_pipeline); 5209: 5209: ResultStats stats; 5209: GetResultStats(output_data.get(), expected_c_data, c_count, &stats); 5209: 5209: ResultStatsBounds bounds; 5209: const bool good = CheckResultStatsBounds(stats, bounds); 5209: printf("TestWithLargeDataPerChannelQuantization: %s\n", 5209: good ? "PASS" : "FAIL"); 5209: ReportResultStats(stats, bounds); 5209: do { ReleaseBuildAssertion( good, "test failed at " "/<>/test/test.cc" ":" "992"); } while (false); 5209: } 5209: # 1009 "/<>/test/test.cc" 5209: void TestMultithreadedPerChannelQuantization() { 5209: const int m = 64; 5209: const int n = 20; 5209: const int k = 160; 5209: 5209: 5209: const std::array lhs_offsets_terse{{ 5209: 0, -51, -85, -109, 5209: }}; 5209: 5209: # 1018 "/<>/test/test.cc" 3 4 5209: (static_cast ( 5209: # 1018 "/<>/test/test.cc" 5209: lhs_offsets_terse.size() * 16 == m 5209: # 1018 "/<>/test/test.cc" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 1018 "/<>/test/test.cc" 5209: "lhs_offsets_terse.size() * 16 == m" 5209: # 1018 "/<>/test/test.cc" 3 4 5209: , "/<>/test/test.cc", 1018, __extension__ __PRETTY_FUNCTION__)) 5209: # 1018 "/<>/test/test.cc" 5209: ; 5209: const std::array lhs_first_el{{ 5209: 128, 153, 170, 182, 5209: }}; 5209: 5209: # 1022 "/<>/test/test.cc" 3 4 5209: (static_cast ( 5209: # 1022 "/<>/test/test.cc" 5209: lhs_first_el.size() * 16 == m 5209: # 1022 "/<>/test/test.cc" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 1022 "/<>/test/test.cc" 5209: "lhs_first_el.size() * 16 == m" 5209: # 1022 "/<>/test/test.cc" 3 4 5209: , "/<>/test/test.cc", 1022, __extension__ __PRETTY_FUNCTION__)) 5209: # 1022 "/<>/test/test.cc" 5209: ; 5209: 5209: 5209: std::vector a_data(m * k, 0); 5209: for (int i = 0; i < m; ++i) { 5209: a_data[i * k] = lhs_first_el[i / 16]; 5209: a_data[i * k + 1] = 255; 5209: for (int j = 2; j < k; ++j) { 5209: a_data[i * k + j] = std::uint8_t(-lhs_offsets_terse[i / 16]); 5209: } 5209: } 5209: 5209: const int lda = k; 5209: 5209: std::vector a_offset(m, 0); 5209: for (int i = 0; i < m; ++i) { 5209: a_offset[i] = lhs_offsets_terse[i / 16]; 5209: } 5209: 5209: MatrixMap lhs(&a_data[0], m, k, lda); 5209: const OffsetColMap lhs_offset(&a_offset[0], m); 5209: 5209: 5209: 5209: std::vector b_data(k * n, 0); 5209: b_data[0] = 128; 5209: b_data[1] = 255; 5209: 5209: const int ldb = k; 5209: std::int32_t b_offset = 0; 5209: MatrixMap rhs(&b_data[0], k, n, ldb); 5209: const OffsetRowDup rhs_offset(b_offset, rhs.cols()); 5209: 5209: 5209: 5209: const std::array expected_c_terse{{ 5209: 142, 159, 182, 213, 5209: }}; 5209: 5209: # 1060 "/<>/test/test.cc" 3 4 5209: (static_cast ( 5209: # 1060 "/<>/test/test.cc" 5209: expected_c_terse.size() * 16 == m 5209: # 1060 "/<>/test/test.cc" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 1060 "/<>/test/test.cc" 5209: "expected_c_terse.size() * 16 == m" 5209: # 1060 "/<>/test/test.cc" 3 4 5209: , "/<>/test/test.cc", 1060, __extension__ __PRETTY_FUNCTION__)) 5209: # 1060 "/<>/test/test.cc" 5209: ; 5209: std::vector expected_c_data(m * n, 0); 5209: for (int i = 0; i < m; ++i) { 5209: expected_c_data[i] = expected_c_terse[i / 16]; 5209: } 5209: 5209: const int ldc = m; 5209: 5209: std::vector c_offset(m, 0); 5209: 5209: const std::array c_mult_int_terse{{ 5209: 3655, 5140, 7049, 9595, 5209: }}; 5209: 5209: # 1073 "/<>/test/test.cc" 3 4 5209: (static_cast ( 5209: # 1073 "/<>/test/test.cc" 5209: c_mult_int_terse.size() * 16 == m 5209: # 1073 "/<>/test/test.cc" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 1073 "/<>/test/test.cc" 5209: "c_mult_int_terse.size() * 16 == m" 5209: # 1073 "/<>/test/test.cc" 3 4 5209: , "/<>/test/test.cc", 1073, __extension__ __PRETTY_FUNCTION__)) 5209: # 1073 "/<>/test/test.cc" 5209: ; 5209: std::vector c_mult_int(m); 5209: for (int i = 0; i < m; ++i) { 5209: c_mult_int[i] = c_mult_int_terse[i / 16]; 5209: } 5209: 5209: const int c_shift = 21; 5209: 5209: const int c_count = m * n; 5209: std::unique_ptr output_data(new std::uint8_t[c_count]); 5209: MatrixMap result(output_data.get(), m, n, 5209: ldc); 5209: const OffsetColMap result_offset(&c_offset[0], m); 5209: const OffsetColMap result_mult_int(&c_mult_int[0], m); 5209: const int result_shift = c_shift; 5209: 5209: GemmContext gemm_context; 5209: auto output_pipeline = MakeStandardOutputPipeline( 5209: result_offset, result_mult_int, result_shift); 5209: GemmWithOutputPipelinePC( 5209: &gemm_context, lhs, rhs, &result, lhs_offset, rhs_offset, 5209: output_pipeline); 5209: 5209: ResultStats stats; 5209: GetResultStats(output_data.get(), &expected_c_data[0], c_count, &stats); 5209: 5209: ResultStatsBounds bounds; 5209: const bool good = CheckResultStatsBounds(stats, bounds); 5209: printf("TestMultithreadedPerChannelQuantization: %s\n", 5209: good ? "PASS" : "FAIL"); 5209: ReportResultStats(stats, bounds); 5209: do { ReleaseBuildAssertion( good, "test failed at " "/<>/test/test.cc" ":" "1105"); } while (false); 5209: } 5209: 5209: 5209: void TestWithSmallData() { 5209: const int m = 4; 5209: const int n = 2; 5209: const int k = 3; 5209: 5209: 5209: 5209: 5209: const std::uint8_t a_data[] = {7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18}; 5209: 5209: 5209: 5209: const std::uint8_t b_data[] = {1, 2, 3, 4, 5, 6}; 5209: # 1134 "/<>/test/test.cc" 5209: const std::uint8_t expected_data[] = {76, 100, 103, 136, 130, 172, 157, 208}; 5209: 5209: const int c_count = m * n; 5209: std::unique_ptr output_data(new std::uint8_t[c_count]); 5209: 5209: const bool is_a_transposed = true; 5209: const bool is_b_transposed = true; 5209: const bool is_c_transposed = true; 5209: const int lda = k; 5209: const int ldb = n; 5209: const int ldc = n; 5209: 5209: const int a_offset = 0; 5209: const int b_offset = 0; 5209: const int c_offset = 0; 5209: const int c_mult = 1; 5209: const int c_shift = 0; 5209: 5209: gemmlowp::eight_bit_int_gemm::EightBitIntGemm( 5209: is_a_transposed, is_b_transposed, is_c_transposed, m, n, k, a_data, 5209: a_offset, lda, b_data, b_offset, ldb, output_data.get(), c_offset, c_mult, 5209: c_shift, ldc, eight_bit_int_gemm::BitDepthSetting::A8B8); 5209: 5209: ResultStats stats; 5209: GetResultStats(output_data.get(), expected_data, c_count, &stats); 5209: 5209: ResultStatsBounds bounds; 5209: const bool good = CheckResultStatsBounds(stats, bounds); 5209: printf("TestWithSmallData: %s\n", good ? "PASS" : "FAIL"); 5209: ReportResultStats(stats, bounds); 5209: do { ReleaseBuildAssertion( good, "test failed at " "/<>/test/test.cc" ":" "1164"); } while (false); 5209: } 5209: 5209: 5209: 5209: 5209: void TestWithRealData(eight_bit_int_gemm::BitDepthSetting BitDepth, 5209: int tolerance_median, int tolerance_max) { 5209: std::unique_ptr output_data( 5209: new std::uint8_t[test_data::c_count]); 5209: gemmlowp::eight_bit_int_gemm::EightBitIntGemm( 5209: test_data::is_a_transposed, test_data::is_b_transposed, 5209: test_data::is_c_transposed, test_data::m, test_data::n, test_data::k, 5209: test_data::a_data, test_data::a_offset, test_data::k, test_data::b_data, 5209: test_data::b_offset, test_data::k, output_data.get(), test_data::c_offset, 5209: test_data::c_mult_int, test_data::c_shift, test_data::m, BitDepth); 5209: 5209: ResultStats stats; 5209: GetResultStats(output_data.get(), test_data::expected_c_data, 5209: test_data::c_count, &stats); 5209: 5209: ResultStatsBounds bounds; 5209: if (BitDepth == eight_bit_int_gemm::BitDepthSetting::A5B7) { 5209: bounds.med_unsigned_diff = tolerance_median; 5209: bounds.max_unsigned_diff = tolerance_max; 5209: bounds.med_signed_diff = 0; 5209: bounds.mean_signed_diff = 0.2f; 5209: } 5209: 5209: const bool good = CheckResultStatsBounds(stats, bounds); 5209: printf("TestWithRealData: %s with %s\n", good ? "PASS" : "FAIL", 5209: GetBitDepthName(BitDepth)); 5209: ReportResultStats(stats, bounds); 5209: do { ReleaseBuildAssertion( good, "test failed at " "/<>/test/test.cc" ":" "1197"); } while (false); 5209: } 5209: 5209: template 5209: void TestOutputStages(int rows, int depth, int cols, int result_offset, 5209: int result_mult_int, int result_shift) { 5209: Matrix lhs(rows, depth); 5209: Matrix rhs(depth, cols); 5209: Matrix result_raw_int32(rows, cols); 5209: MakeRandom(&lhs); 5209: MakeRandom(&rhs); 5209: const int lhs_offset = 12; 5209: const int rhs_offset = -34; 5209: 5209: 5209: auto empty_pipeline = std::make_tuple(); 5209: GemmContext context; 5209: GemmWithOutputPipeline( 5209: &context, lhs.const_map(), rhs.const_map(), &result_raw_int32, lhs_offset, 5209: rhs_offset, empty_pipeline); 5209: 5209: for (int r = 0; r < rows; r++) { 5209: for (int c = 0; c < cols; c++) { 5209: std::int32_t expected = 0; 5209: for (int d = 0; d < depth; d++) { 5209: std::int32_t lhs_val = 5209: static_cast(lhs(r, d)) + lhs_offset; 5209: std::int32_t rhs_val = 5209: static_cast(rhs(d, c)) + rhs_offset; 5209: expected += lhs_val * rhs_val; 5209: } 5209: do { ReleaseBuildAssertion( expected == result_raw_int32(r, c), "test failed at " "/<>/test/test.cc" ":" "1228"); } while (false); 5209: } 5209: } 5209: 5209: 5209: 5209: OutputStageQuantizeDownInt32ToUint8Scale quantize_down_stage; 5209: quantize_down_stage.result_offset = result_offset; 5209: quantize_down_stage.result_mult_int = result_mult_int; 5209: quantize_down_stage.result_shift = result_shift; 5209: auto quantize_down_pipeline = std::make_tuple(quantize_down_stage); 5209: Matrix result_quantized_down_int32(rows, cols); 5209: GemmWithOutputPipeline( 5209: &context, lhs.const_map(), rhs.const_map(), &result_quantized_down_int32, 5209: lhs_offset, rhs_offset, quantize_down_pipeline); 5209: 5209: std::int64_t sum = 0; 5209: for (int r = 0; r < rows; r++) { 5209: for (int c = 0; c < cols; c++) { 5209: std::int32_t raw = result_raw_int32(r, c); 5209: std::int32_t expected = RoundingDivideByPOT( 5209: (raw + result_offset) * result_mult_int, result_shift); 5209: do { ReleaseBuildAssertion( expected == result_quantized_down_int32(r, c), "test failed at " "/<>/test/test.cc" ":" "1250"); } while (false); 5209: sum += expected; 5209: } 5209: } 5209: std::int64_t avg = sum / (rows * cols); 5209: 5209: 5209: 5209: do { ReleaseBuildAssertion( avg >= 64 && avg <= 192, "test failed at " "/<>/test/test.cc" ":" "1258"); } while (false); 5209: 5209: 5209: 5209: OutputStageSaturatingCastToUint8 saturating_cast_stage; 5209: auto quantize_down_and_saturating_cast_pipeline = 5209: std::make_tuple(quantize_down_stage, saturating_cast_stage); 5209: Matrix result_quantized_down_saturated_uint8(rows, 5209: cols); 5209: GemmWithOutputPipeline( 5209: &context, lhs.const_map(), rhs.const_map(), 5209: &result_quantized_down_saturated_uint8, lhs_offset, rhs_offset, 5209: quantize_down_and_saturating_cast_pipeline); 5209: 5209: for (int r = 0; r < rows; r++) { 5209: for (int c = 0; c < cols; c++) { 5209: std::int32_t quantized = result_quantized_down_int32(r, c); 5209: std::uint8_t expected = std::min(std::max(quantized, 0), 255); 5209: do { ReleaseBuildAssertion( expected == result_quantized_down_saturated_uint8(r, c), "test failed at " "/<>/test/test.cc" ":" "1276"); } while (false); 5209: } 5209: } 5209: 5209: 5209: 5209: OutputStageSaturatingCastToInt16 saturating_cast_int16_stage; 5209: auto quantize_down_and_saturating_cast_int16_pipeline = 5209: std::make_tuple(quantize_down_stage, saturating_cast_int16_stage); 5209: Matrix result_quantized_down_saturated_int16(rows, 5209: cols); 5209: GemmWithOutputPipeline( 5209: &context, lhs.const_map(), rhs.const_map(), 5209: &result_quantized_down_saturated_int16, lhs_offset, rhs_offset, 5209: quantize_down_and_saturating_cast_int16_pipeline); 5209: 5209: for (int r = 0; r < rows; r++) { 5209: for (int c = 0; c < cols; c++) { 5209: std::int32_t quantized = result_quantized_down_int32(r, c); 5209: std::int16_t expected = std::min(std::max(quantized, -32768), 32767); 5209: do { ReleaseBuildAssertion( expected == result_quantized_down_saturated_int16(r, c), "test failed at " "/<>/test/test.cc" ":" "1296"); } while (false); 5209: } 5209: } 5209: # 1322 "/<>/test/test.cc" 5209: std::vector row_vector_data(cols); 5209: std::uniform_int_distribution uniform_minus_500_plus_500(-500, 5209: 500); 5209: for (int i = 0; i < cols; i++) { 5209: row_vector_data[i] = uniform_minus_500_plus_500(RandomEngine()); 5209: } 5209: typedef VectorMap RowVectorMap; 5209: RowVectorMap row_vector_map(row_vector_data.data(), cols); 5209: OutputStageBiasAddition row_bias_addition_stage; 5209: row_bias_addition_stage.bias_vector = row_vector_map; 5209: auto row_bias_addition_pipeline = std::make_tuple(row_bias_addition_stage); 5209: Matrix result_of_row_bias_addition(rows, cols); 5209: GemmWithOutputPipeline( 5209: &context, lhs.const_map(), rhs.const_map(), &result_of_row_bias_addition, 5209: lhs_offset, rhs_offset, row_bias_addition_pipeline); 5209: for (int r = 0; r < rows; r++) { 5209: for (int c = 0; c < cols; c++) { 5209: std::int32_t expected = result_raw_int32(r, c) + row_vector_data[c]; 5209: do { ReleaseBuildAssertion( expected == result_of_row_bias_addition(r, c), "test failed at " "/<>/test/test.cc" ":" "1340"); } while (false); 5209: } 5209: } 5209: 5209: 5209: std::vector col_vector_data(rows); 5209: for (int i = 0; i < rows; i++) { 5209: col_vector_data[i] = uniform_minus_500_plus_500(RandomEngine()); 5209: } 5209: typedef VectorMap ColVectorMap; 5209: ColVectorMap col_vector_map(col_vector_data.data(), rows); 5209: OutputStageBiasAddition col_bias_addition_stage; 5209: col_bias_addition_stage.bias_vector = col_vector_map; 5209: auto col_bias_addition_pipeline = std::make_tuple(col_bias_addition_stage); 5209: Matrix result_of_col_bias_addition(rows, cols); 5209: GemmWithOutputPipeline( 5209: &context, lhs.const_map(), rhs.const_map(), &result_of_col_bias_addition, 5209: lhs_offset, rhs_offset, col_bias_addition_pipeline); 5209: for (int r = 0; r < rows; r++) { 5209: for (int c = 0; c < cols; c++) { 5209: std::int32_t expected = result_raw_int32(r, c) + col_vector_data[r]; 5209: do { ReleaseBuildAssertion( expected == result_of_col_bias_addition(r, c), "test failed at " "/<>/test/test.cc" ":" "1361"); } while (false); 5209: } 5209: } 5209: 5209: 5209: OutputStageClamp clamp_stage; 5209: 5209: std::int32_t raw_min = std::numeric_limits::max(); 5209: std::int32_t raw_max = std::numeric_limits::min(); 5209: for (int r = 0; r < rows; r++) { 5209: for (int c = 0; c < cols; c++) { 5209: raw_min = std::min(raw_min, result_raw_int32(r, c)); 5209: raw_max = std::max(raw_max, result_raw_int32(r, c)); 5209: } 5209: } 5209: 5209: clamp_stage.min = static_cast(raw_min * 0.7 + raw_max * 0.3); 5209: clamp_stage.max = static_cast(raw_min * 0.3 + raw_max * 0.7); 5209: 5209: # 1379 "/<>/test/test.cc" 3 4 5209: (static_cast ( 5209: # 1379 "/<>/test/test.cc" 5209: raw_min <= clamp_stage.min && clamp_stage.min <= clamp_stage.max && clamp_stage.max <= raw_max 5209: # 1379 "/<>/test/test.cc" 3 4 5209: ) ? void (0) : __assert_fail ( 5209: # 1379 "/<>/test/test.cc" 5209: "raw_min <= clamp_stage.min && clamp_stage.min <= clamp_stage.max && clamp_stage.max <= raw_max" 5209: # 1379 "/<>/test/test.cc" 3 4 5209: , "/<>/test/test.cc", 1379, __extension__ __PRETTY_FUNCTION__)) 5209: 5209: # 1380 "/<>/test/test.cc" 5209: ; 5209: auto clamp_pipeline = std::make_tuple(clamp_stage); 5209: Matrix result_clamped(rows, cols); 5209: GemmWithOutputPipeline( 5209: &context, lhs.const_map(), rhs.const_map(), &result_clamped, lhs_offset, 5209: rhs_offset, clamp_pipeline); 5209: for (int r = 0; r < rows; r++) { 5209: for (int c = 0; c < cols; c++) { 5209: std::int32_t raw = result_raw_int32(r, c); 5209: std::int32_t expected = 5209: std::min(std::max(raw, clamp_stage.min), clamp_stage.max); 5209: do { ReleaseBuildAssertion( expected == result_clamped(r, c), "test failed at " "/<>/test/test.cc" ":" "1391"); } while (false); 5209: } 5209: } 5209: 5209: 5209: OutputStageTanh tanh_stage; 5209: const std::int32_t real_zero_as_int32 = (raw_max + raw_min) / 2; 5209: const std::int32_t real_amplitude_as_int32 = (raw_max - raw_min) / 16; 5209: tanh_stage.real_zero_as_int32 = real_zero_as_int32; 5209: tanh_stage.real_amplitude_as_int32 = real_amplitude_as_int32; 5209: auto tanh_pipeline = std::make_tuple(tanh_stage); 5209: Matrix result_tanh(rows, cols); 5209: GemmWithOutputPipeline( 5209: &context, lhs.const_map(), rhs.const_map(), &result_tanh, lhs_offset, 5209: rhs_offset, tanh_pipeline); 5209: for (int r = 0; r < rows; r++) { 5209: for (int c = 0; c < cols; c++) { 5209: std::int32_t raw = result_raw_int32(r, c); 5209: double real_input = 5209: double(raw - real_zero_as_int32) / real_amplitude_as_int32; 5209: double expected = std::tanh(real_input); 5209: std::int32_t actual_int32 = result_tanh(r, c); 5209: double actual = 5209: double(actual_int32 - real_zero_as_int32) / real_amplitude_as_int32; 5209: do { ReleaseBuildAssertion( std::abs(expected - actual) < 2e-4, "test failed at " "/<>/test/test.cc" ":" "1415"); } while (false); 5209: } 5209: } 5209: 5209: 5209: auto bias_clamp_pipeline = 5209: std::make_tuple(col_bias_addition_stage, clamp_stage); 5209: Matrix result_biased_clamped(rows, cols); 5209: GemmWithOutputPipeline( 5209: &context, lhs.const_map(), rhs.const_map(), &result_biased_clamped, 5209: lhs_offset, rhs_offset, bias_clamp_pipeline); 5209: for (int r = 0; r < rows; r++) { 5209: for (int c = 0; c < cols; c++) { 5209: std::int32_t raw = result_raw_int32(r, c); 5209: std::int32_t biased = raw + col_vector_data[r]; 5209: std::int32_t expected = 5209: std::min(std::max(biased, clamp_stage.min), clamp_stage.max); 5209: do { ReleaseBuildAssertion( expected == result_biased_clamped(r, c), "test failed at " "/<>/test/test.cc" ":" "1432"); } while (false); 5209: } 5209: } 5209: 5209: 5209: 5209: auto bias_clamp_quantize_cast_pipeline = 5209: std::make_tuple(col_bias_addition_stage, clamp_stage, quantize_down_stage, 5209: saturating_cast_stage); 5209: Matrix result_biased_clamped_quantized_casted( 5209: rows, cols); 5209: GemmWithOutputPipeline( 5209: &context, lhs.const_map(), rhs.const_map(), 5209: &result_biased_clamped_quantized_casted, lhs_offset, rhs_offset, 5209: bias_clamp_quantize_cast_pipeline); 5209: for (int r = 0; r < rows; r++) { 5209: for (int c = 0; c < cols; c++) { 5209: std::int32_t quantized = RoundingDivideByPOT( 5209: (result_biased_clamped(r, c) + result_offset) * result_mult_int, 5209: result_shift); 5209: std::uint8_t expected = std::min(std::max(quantized, 0), 255); 5209: do { ReleaseBuildAssertion( expected == result_biased_clamped_quantized_casted(r, c), "test failed at " "/<>/test/test.cc" ":" "1453"); } while (false); 5209: } 5209: } 5209: 5209: 5209: 5209: 5209: 5209: std::int32_t result_fixedpoint_multiplier = result_mult_int; 5209: std::int32_t result_fixedpoint_shift = result_shift; 5209: do { ReleaseBuildAssertion( result_mult_int > 0, "test failed at " "/<>/test/test.cc" ":" "1463"); } while (false); 5209: do { ReleaseBuildAssertion( result_shift > 0, "test failed at " "/<>/test/test.cc" ":" "1464"); } while (false); 5209: result_fixedpoint_multiplier = result_mult_int; 5209: result_fixedpoint_shift = result_shift - 31; 5209: while (result_fixedpoint_multiplier < (1 << 30)) { 5209: result_fixedpoint_multiplier <<= 1; 5209: result_fixedpoint_shift++; 5209: } 5209: do { ReleaseBuildAssertion( result_fixedpoint_shift >= 0, "test failed at " "/<>/test/test.cc" ":" "1471"); } while (false); 5209: 5209: OutputStageQuantizeDownInt32ByFixedPoint 5209: quantize_down_by_fixedpoint_stage; 5209: quantize_down_by_fixedpoint_stage.result_offset_after_shift = 5209: static_cast( 5209: round(static_cast(result_offset * result_mult_int) / 5209: (1 << result_shift))); 5209: quantize_down_by_fixedpoint_stage.result_fixedpoint_multiplier = 5209: result_fixedpoint_multiplier; 5209: quantize_down_by_fixedpoint_stage.result_shift = result_fixedpoint_shift; 5209: auto quantize_down_by_fixedpoint_pipeline = 5209: std::make_tuple(quantize_down_by_fixedpoint_stage); 5209: Matrix result_quantized_down_by_fixedpoint_int32( 5209: rows, cols); 5209: GemmWithOutputPipeline( 5209: &context, lhs.const_map(), rhs.const_map(), 5209: &result_quantized_down_by_fixedpoint_int32, lhs_offset, rhs_offset, 5209: quantize_down_by_fixedpoint_pipeline); 5209: 5209: for (int r = 0; r < rows; r++) { 5209: for (int c = 0; c < cols; c++) { 5209: const std::int32_t actual = 5209: result_quantized_down_by_fixedpoint_int32(r, c); 5209: const std::int32_t raw = result_raw_int32(r, c); 5209: const std::int32_t expected = 5209: quantize_down_by_fixedpoint_stage.result_offset_after_shift + 5209: RoundingDivideByPOT(SaturatingRoundingDoublingHighMul( 5209: raw, result_fixedpoint_multiplier), 5209: result_fixedpoint_shift); 5209: do { ReleaseBuildAssertion( actual == expected, "test failed at " "/<>/test/test.cc" ":" "1501"); } while (false); 5209: } 5209: } 5209: 5209: 5209: for (int exponent = -2; exponent <= 2; exponent++) { 5209: OutputStageScaleInt32ByFixedPointAndExponent 5209: scale_by_fixedpoint_and_exponent_stage; 5209: scale_by_fixedpoint_and_exponent_stage.result_offset_after_shift = 5209: static_cast(round(static_cast( 5209: result_offset * result_mult_int * std::pow(2.0, exponent)))); 5209: scale_by_fixedpoint_and_exponent_stage.result_fixedpoint_multiplier = 5209: result_fixedpoint_multiplier; 5209: scale_by_fixedpoint_and_exponent_stage.result_exponent = exponent; 5209: auto scale_by_fixedpoint_and_exponent_pipeline = 5209: std::make_tuple(scale_by_fixedpoint_and_exponent_stage); 5209: Matrix 5209: result_scaled_by_fixedpoint_and_exponent_int32(rows, cols); 5209: GemmWithOutputPipeline( 5209: &context, lhs.const_map(), rhs.const_map(), 5209: &result_scaled_by_fixedpoint_and_exponent_int32, lhs_offset, rhs_offset, 5209: scale_by_fixedpoint_and_exponent_pipeline); 5209: 5209: for (int r = 0; r < rows; r++) { 5209: for (int c = 0; c < cols; c++) { 5209: const std::int32_t actual = 5209: result_scaled_by_fixedpoint_and_exponent_int32(r, c); 5209: const std::int32_t raw = result_raw_int32(r, c); 5209: int left_shift = std::max(0, exponent); 5209: int right_shift = std::max(0, -exponent); 5209: const std::int32_t expected = 5209: scale_by_fixedpoint_and_exponent_stage.result_offset_after_shift + 5209: RoundingDivideByPOT( 5209: SaturatingRoundingDoublingHighMul((1 << left_shift) * raw, 5209: result_fixedpoint_multiplier), 5209: right_shift); 5209: do { ReleaseBuildAssertion( actual == expected, "test failed at " "/<>/test/test.cc" ":" "1538"); } while (false); 5209: } 5209: } 5209: } 5209: 5209: 5209: 5209: 5209: 5209: auto quantize_down_by_fixedpoint_and_saturating_cast_pipeline = 5209: std::make_tuple(quantize_down_by_fixedpoint_stage, saturating_cast_stage); 5209: Matrix 5209: result_quantized_down_by_fixedpoint_saturated_uint8(rows, cols); 5209: GemmWithOutputPipeline( 5209: &context, lhs.const_map(), rhs.const_map(), 5209: &result_quantized_down_by_fixedpoint_saturated_uint8, lhs_offset, 5209: rhs_offset, quantize_down_by_fixedpoint_and_saturating_cast_pipeline); 5209: 5209: for (int r = 0; r < rows; r++) { 5209: for (int c = 0; c < cols; c++) { 5209: std::int32_t quantized = result_quantized_down_by_fixedpoint_int32(r, c); 5209: std::uint8_t expected = std::min(std::max(quantized, 0), 255); 5209: do { ReleaseBuildAssertion( expected == result_quantized_down_by_fixedpoint_saturated_uint8(r, c), "test failed at " "/<>/test/test.cc" ":" "1560"); } while (false) 5209: ; 5209: } 5209: } 5209: 5209: printf("TestOutputStages: PASS with ResultOrder=%s\n", 5209: OrderName(ResultOrder)); 5209: } 5209: 5209: 5209: template 5209: void TestExhaustively() { 5209: GemmContext context; 5209: 5209: 5209: test_gemm< 5209: SingleThreadGemmWrapper, 5209: std::uint8_t, BitDepthParams>>(&context); 5209: 5209: test_gemm< 5209: MultiThreadGemmWrapper, 5209: std::uint8_t, BitDepthParams>>(&context); 5209: 5209: 5209: test_gemm>(&context); 5209: 5209: 5209: test_gemv< 5209: SingleThreadGemmWrapper, 5209: std::uint8_t, BitDepthParams>>(&context); 5209: 5209: test_gemv< 5209: MultiThreadGemmWrapper, 5209: std::uint8_t, BitDepthParams>>(&context); 5209: 5209: 5209: test_gemv>(&context); 5209: } 5209: 5209: template 5209: void TestExhaustivelyEightBitIntGemm() { 5209: GemmContext context; 5209: test_gemv>(&context); 5209: test_gemv>(&context); 5209: test_gemm>(&context); 5209: } 5209: 5209: void TestKernels() { 5209: GemmContext context; 5209: 5209: 5209: 5209: test_gemm_kernel< 5209: ReferenceKernel, 1>, 5209: KernelSideFormat, 1>>>>( 5209: &context); 5209: 5209: test_gemm_kernel< 5209: ReferenceKernel, 1>, 5209: KernelSideFormat, 2>>>>( 5209: &context); 5209: 5209: test_gemm_kernel< 5209: ReferenceKernel, 4>, 5209: KernelSideFormat, 5>>>>( 5209: &context); 5209: 5209: test_gemm_kernel, 2>, 5209: KernelSideFormat, 3>>>>(&context); 5209: 5209: test_gemm_kernel, 2>, 5209: KernelSideFormat, 3>>>>(&context); 5209: 5209: test_gemm_kernel, 3>, 5209: KernelSideFormat, 2>>>>(&context); 5209: 5209: test_gemm_kernel, 3>, 5209: KernelSideFormat, 2>>>>(&context); 5209: 5209: test_gemm_kernel, 2>, 5209: KernelSideFormat, 1>>>>(&context); 5209: 5209: test_gemm_kernel, 1>, 5209: KernelSideFormat, 1>>>>(&context); 5209: } 5209: 5209: 5209: 5209: template 5209: void TestOutputStages() { 5209: 5209: 5209: TestOutputStages(63, 10, 127, 5, 17, 14); 5209: TestOutputStages(63, 10, 127, 5, 17, 14); 5209: TestOutputStages(630, 10, 1270, 5, 17, 5209: 14); 5209: TestOutputStages(630, 10, 1270, 5, 17, 5209: 14); 5209: } 5209: 5209: void test() { 5209: 5209: 5209: 5209: 5209: 5209: 5209: TestWithSmallData(); 5209: 5209: 5209: TestExhaustively(); 5209: TestExhaustively(); 5209: TestExhaustively(); 5209: TestExhaustivelyEightBitIntGemm(); 5209: TestExhaustivelyEightBitIntGemm(); 5209: TestKernels(); 5209: 5209: 5209: 5209: TestWithRealData(eight_bit_int_gemm::BitDepthSetting::A8B8, 0, 0); 5209: TestWithRealData(eight_bit_int_gemm::BitDepthSetting::A5B7, 2, 10); 5209: 5209: 5209: 5209: TestOutputStages(); 5209: TestOutputStages(); 5209: 5209: 5209: TestWithSmallDataPerChannelQuantization(); 5209: TestWithLargeDataPerChannelQuantization(); 5209: TestMultithreadedPerChannelQuantization(); 5209: 5209: 5209: 5209: 5209: std::cerr << "All tests passed." << std::endl; 5209: 5209: 5209: 5209: 5209: eight_bit_int_gemm::FreePersistentResources(); 5209: } 5209: 5209: } 5209: 5209: 5209: 5209: int main() { gemmlowp::test(); } === END GCC DUMP === make[3]: *** [CMakeFiles/test_gemmlowp.dir/build.make:66: CMakeFiles/test_gemmlowp.dir/test/test.cc.o] Error 1 make[3]: Leaving directory '/<>/obj-aarch64-linux-gnu' make[2]: *** [CMakeFiles/Makefile2:214: CMakeFiles/test_gemmlowp.dir/all] Error 2 make[2]: Leaving directory '/<>/obj-aarch64-linux-gnu' make[1]: *** [Makefile:98: all] Error 2 make[1]: Leaving directory '/<>/obj-aarch64-linux-gnu' dh_auto_build: cd obj-aarch64-linux-gnu && make -j4 "INSTALL=install --strip-program=true" returned exit code 2 make: *** [debian/rules:7: build-arch] Error 255 dpkg-buildpackage: error: debian/rules build-arch subprocess returned exit status 2 -------------------------------------------------------------------------------- Build finished at 20200106-1422 Finished -------- E: Build failure (dpkg-buildpackage died) +------------------------------------------------------------------------------+ | Cleanup | +------------------------------------------------------------------------------+ Purging /<> Not removing build depends: as requested +------------------------------------------------------------------------------+ | Summary | +------------------------------------------------------------------------------+ Build Architecture: arm64 Build-Space: 40908 Build-Time: 296 Distribution: focal Fail-Stage: build Host Architecture: arm64 Install-Time: 23 Job: gemmlowp_0.0~git20190708.a227af1-1.dsc Machine Architecture: arm64 Package: gemmlowp Package-Time: 321 Source-Version: 0.0~git20190708.a227af1-1 Space: 40908 Status: attempted Version: 0.0~git20190708.a227af1-1 -------------------------------------------------------------------------------- Finished at 20200106-1422 Build needed 00:05:21, 40908k disc space RUN: /usr/share/launchpad-buildd/bin/in-target scan-for-processes --backend=chroot --series=focal --arch=arm64 PACKAGEBUILD-18385219 Scanning for processes to kill in build PACKAGEBUILD-18385219