Thanks for using Compiler Explorer
Sponsors
Jakt
C++
Ada
Analysis
Android Java
Android Kotlin
Assembly
C
C3
Carbon
C++ (Circle)
CIRCT
Clean
CMake
CMakeScript
COBOL
C++ for OpenCL
MLIR
Cppx
Cppx-Blue
Cppx-Gold
Cpp2-cppfront
Crystal
C#
CUDA C++
D
Dart
Elixir
Erlang
Fortran
F#
GLSL
Go
Haskell
HLSL
Hook
Hylo
IL
ispc
Java
Julia
Kotlin
LLVM IR
LLVM MIR
Modula-2
Nim
Objective-C
Objective-C++
OCaml
OpenCL C
Pascal
Pony
Python
Racket
Ruby
Rust
Snowball
Scala
Solidity
Spice
Swift
LLVM TableGen
Toit
TypeScript Native
V
Vala
Visual Basic
WASM
Zig
Javascript
GIMPLE
c source #1
Output
Compile to binary object
Link to binary
Execute the code
Intel asm syntax
Demangle identifiers
Verbose demangling
Filters
Unused labels
Library functions
Directives
Comments
Horizontal whitespace
Debug intrinsics
Compiler
6502 cc65 2.17
6502 cc65 2.18
6502 cc65 2.19
6502 cc65 trunk
ARM GCC 10.2.0 (linux)
ARM GCC 10.2.1 (none)
ARM GCC 10.3.0 (linux)
ARM GCC 10.3.1 (2021.07 none)
ARM GCC 10.3.1 (2021.10 none)
ARM GCC 10.5.0
ARM GCC 11.1.0 (linux)
ARM GCC 11.2.0 (linux)
ARM GCC 11.2.1 (none)
ARM GCC 11.3.0 (linux)
ARM GCC 11.4.0
ARM GCC 12.1.0 (linux)
ARM GCC 12.2.0 (linux)
ARM GCC 12.3.0
ARM GCC 12.4.0
ARM GCC 13.1.0 (linux)
ARM GCC 13.2.0
ARM GCC 13.2.0 (unknown-eabi)
ARM GCC 13.3.0
ARM GCC 13.3.0 (unknown-eabi)
ARM GCC 14.1.0
ARM GCC 14.1.0 (unknown-eabi)
ARM GCC 14.2.0
ARM GCC 14.2.0 (unknown-eabi)
ARM GCC 4.5.4 (linux)
ARM GCC 4.6.4 (linux)
ARM GCC 5.4 (linux)
ARM GCC 5.4.1 (none)
ARM GCC 6.3.0 (linux)
ARM GCC 6.4.0 (linux)
ARM GCC 7.2.1 (none)
ARM GCC 7.3.0 (linux)
ARM GCC 7.5.0 (linux)
ARM GCC 8.2.0 (WinCE)
ARM GCC 8.2.0 (linux)
ARM GCC 8.3.1 (none)
ARM GCC 8.5.0 (linux)
ARM GCC 9.2.1 (none)
ARM GCC 9.3.0 (linux)
ARM GCC trunk (linux)
ARM msvc v19.0 (WINE)
ARM msvc v19.10 (WINE)
ARM msvc v19.14 (WINE)
ARM64 GCC 10.2.0
ARM64 GCC 10.3.0
ARM64 GCC 10.4.0
ARM64 GCC 10.5.0
ARM64 GCC 11.1.0
ARM64 GCC 11.2.0
ARM64 GCC 11.3.0
ARM64 GCC 11.4.0
ARM64 GCC 12.1.0
ARM64 GCC 12.2.0
ARM64 GCC 12.3.0
ARM64 GCC 12.4.0
ARM64 GCC 13.1.0
ARM64 GCC 13.2.0
ARM64 GCC 13.3.0
ARM64 GCC 14.1.0
ARM64 GCC 14.2.0
ARM64 GCC 4.9.4
ARM64 GCC 5.4
ARM64 GCC 5.5.0
ARM64 GCC 6.3
ARM64 GCC 6.4.0
ARM64 GCC 7.3.0
ARM64 GCC 7.5.0
ARM64 GCC 8.2.0
ARM64 GCC 8.5.0
ARM64 GCC 9.3.0
ARM64 GCC 9.4.0
ARM64 GCC 9.5.0
ARM64 GCC trunk
ARM64 Morello GCC 10.1.0 Alpha 1
ARM64 Morello GCC 10.1.2 Alpha 2
ARM64 msvc v19.14 (WINE)
AVR gcc 10.3.0
AVR gcc 11.1.0
AVR gcc 12.1.0
AVR gcc 12.2.0
AVR gcc 12.3.0
AVR gcc 12.4.0
AVR gcc 13.1.0
AVR gcc 13.2.0
AVR gcc 13.3.0
AVR gcc 14.1.0
AVR gcc 14.2.0
AVR gcc 4.5.4
AVR gcc 4.6.4
AVR gcc 5.4.0
AVR gcc 9.2.0
AVR gcc 9.3.0
Arduino Mega (1.8.9)
Arduino Uno (1.8.9)
BPF clang (trunk)
BPF clang 13.0.0
BPF clang 14.0.0
BPF clang 15.0.0
BPF clang 16.0.0
BPF clang 17.0.1
BPF clang 18.1.0
BPF gcc 13.1.0
BPF gcc 13.2.0
BPF gcc 13.3.0
BPF gcc 14.1.0
BPF gcc 14.2.0
BPF gcc trunk
Chibicc 2020-12-07
FRC 2019
FRC 2020
FRC 2023
HPPA gcc 14.2.0
K1C gcc 7.4
K1C gcc 7.5
KVX ACB 4.1.0 (GCC 7.5.0)
KVX ACB 4.1.0-cd1 (GCC 7.5.0)
KVX ACB 4.10.0 (GCC 10.3.1)
KVX ACB 4.11.1 (GCC 10.3.1)
KVX ACB 4.12.0 (GCC 11.3.0)
KVX ACB 4.2.0 (GCC 7.5.0)
KVX ACB 4.3.0 (GCC 7.5.0)
KVX ACB 4.4.0 (GCC 7.5.0)
KVX ACB 4.6.0 (GCC 9.4.1)
KVX ACB 4.8.0 (GCC 9.4.1)
KVX ACB 4.9.0 (GCC 9.4.1)
KVX ACB 5.0.0 (GCC 12.2.1)
LC3 (trunk)
M68K clang (trunk)
M68K gcc 13.1.0
M68K gcc 13.2.0
M68K gcc 13.3.0
M68K gcc 14.1.0
M68K gcc 14.2.0
MRISC32 gcc (trunk)
MSP430 gcc 12.1.0
MSP430 gcc 12.2.0
MSP430 gcc 12.3.0
MSP430 gcc 12.4.0
MSP430 gcc 13.1.0
MSP430 gcc 13.2.0
MSP430 gcc 13.3.0
MSP430 gcc 14.1.0
MSP430 gcc 14.2.0
MSP430 gcc 4.5.3
MSP430 gcc 5.3.0
MSP430 gcc 6.2.1
MinGW clang 14.0.3
MinGW clang 14.0.6
MinGW clang 15.0.7
MinGW clang 16.0.0
MinGW clang 16.0.2
MinGW gcc 11.3.0
MinGW gcc 12.1.0
MinGW gcc 12.2.0
MinGW gcc 13.1.0
POWER64 gcc 11.2.0
POWER64 gcc 12.1.0
POWER64 gcc 12.2.0
POWER64 gcc 12.3.0
POWER64 gcc 12.4.0
POWER64 gcc 13.1.0
POWER64 gcc 13.2.0
POWER64 gcc 13.3.0
POWER64 gcc 14.1.0
POWER64 gcc 14.2.0
POWER64 gcc trunk
RISC-V (32-bits) gcc (trunk)
RISC-V (32-bits) gcc 10.2.0
RISC-V (32-bits) gcc 10.3.0
RISC-V (32-bits) gcc 11.2.0
RISC-V (32-bits) gcc 11.3.0
RISC-V (32-bits) gcc 11.4.0
RISC-V (32-bits) gcc 12.1.0
RISC-V (32-bits) gcc 12.2.0
RISC-V (32-bits) gcc 12.3.0
RISC-V (32-bits) gcc 12.4.0
RISC-V (32-bits) gcc 13.1.0
RISC-V (32-bits) gcc 13.2.0
RISC-V (32-bits) gcc 13.3.0
RISC-V (32-bits) gcc 14.1.0
RISC-V (32-bits) gcc 14.2.0
RISC-V (32-bits) gcc 8.2.0
RISC-V (32-bits) gcc 8.5.0
RISC-V (32-bits) gcc 9.4.0
RISC-V (64-bits) gcc (trunk)
RISC-V (64-bits) gcc 10.2.0
RISC-V (64-bits) gcc 10.3.0
RISC-V (64-bits) gcc 11.2.0
RISC-V (64-bits) gcc 11.3.0
RISC-V (64-bits) gcc 11.4.0
RISC-V (64-bits) gcc 12.1.0
RISC-V (64-bits) gcc 12.2.0
RISC-V (64-bits) gcc 12.3.0
RISC-V (64-bits) gcc 12.4.0
RISC-V (64-bits) gcc 13.1.0
RISC-V (64-bits) gcc 13.2.0
RISC-V (64-bits) gcc 13.3.0
RISC-V (64-bits) gcc 14.1.0
RISC-V (64-bits) gcc 14.2.0
RISC-V (64-bits) gcc 8.2.0
RISC-V (64-bits) gcc 8.5.0
RISC-V (64-bits) gcc 9.4.0
RISC-V rv32gc clang (trunk)
RISC-V rv32gc clang 10.0.0
RISC-V rv32gc clang 10.0.1
RISC-V rv32gc clang 11.0.0
RISC-V rv32gc clang 11.0.1
RISC-V rv32gc clang 12.0.0
RISC-V rv32gc clang 12.0.1
RISC-V rv32gc clang 13.0.0
RISC-V rv32gc clang 13.0.1
RISC-V rv32gc clang 14.0.0
RISC-V rv32gc clang 15.0.0
RISC-V rv32gc clang 16.0.0
RISC-V rv32gc clang 17.0.1
RISC-V rv32gc clang 18.1.0
RISC-V rv32gc clang 9.0.0
RISC-V rv32gc clang 9.0.1
RISC-V rv64gc clang (trunk)
RISC-V rv64gc clang 10.0.0
RISC-V rv64gc clang 10.0.1
RISC-V rv64gc clang 11.0.0
RISC-V rv64gc clang 11.0.1
RISC-V rv64gc clang 12.0.0
RISC-V rv64gc clang 12.0.1
RISC-V rv64gc clang 13.0.0
RISC-V rv64gc clang 13.0.1
RISC-V rv64gc clang 14.0.0
RISC-V rv64gc clang 15.0.0
RISC-V rv64gc clang 16.0.0
RISC-V rv64gc clang 17.0.1
RISC-V rv64gc clang 18.1.0
RISC-V rv64gc clang 9.0.0
RISC-V rv64gc clang 9.0.1
Raspbian Buster
Raspbian Stretch
SDCC 4.0.0
SDCC 4.1.0
SDCC 4.2.0
SDCC 4.3.0
SDCC 4.4.0
SPARC LEON gcc 12.2.0
SPARC LEON gcc 12.3.0
SPARC LEON gcc 12.4.0
SPARC LEON gcc 13.1.0
SPARC LEON gcc 13.2.0
SPARC LEON gcc 13.3.0
SPARC LEON gcc 14.1.0
SPARC LEON gcc 14.2.0
SPARC gcc 12.2.0
SPARC gcc 12.3.0
SPARC gcc 12.4.0
SPARC gcc 13.1.0
SPARC gcc 13.2.0
SPARC gcc 13.3.0
SPARC gcc 14.1.0
SPARC gcc 14.2.0
SPARC64 gcc 12.2.0
SPARC64 gcc 12.3.0
SPARC64 gcc 12.4.0
SPARC64 gcc 13.1.0
SPARC64 gcc 13.2.0
SPARC64 gcc 13.3.0
SPARC64 gcc 14.1.0
SPARC64 gcc 14.2.0
TCC (trunk)
TCC 0.9.27
TI C6x gcc 12.2.0
TI C6x gcc 12.3.0
TI C6x gcc 12.4.0
TI C6x gcc 13.1.0
TI C6x gcc 13.2.0
TI C6x gcc 13.3.0
TI C6x gcc 14.1.0
TI C6x gcc 14.2.0
TI CL430 21.6.1
VAX gcc NetBSDELF 10.4.0
VAX gcc NetBSDELF 10.5.0 (Nov 15 03:50:22 2023)
WebAssembly clang (trunk)
Xtensa ESP32 gcc 11.2.0 (2022r1)
Xtensa ESP32 gcc 12.2.0 (20230208)
Xtensa ESP32 gcc 8.2.0 (2019r2)
Xtensa ESP32 gcc 8.2.0 (2020r1)
Xtensa ESP32 gcc 8.2.0 (2020r2)
Xtensa ESP32 gcc 8.4.0 (2020r3)
Xtensa ESP32 gcc 8.4.0 (2021r1)
Xtensa ESP32 gcc 8.4.0 (2021r2)
Xtensa ESP32-S2 gcc 11.2.0 (2022r1)
Xtensa ESP32-S2 gcc 12.2.0 (20230208)
Xtensa ESP32-S2 gcc 8.2.0 (2019r2)
Xtensa ESP32-S2 gcc 8.2.0 (2020r1)
Xtensa ESP32-S2 gcc 8.2.0 (2020r2)
Xtensa ESP32-S2 gcc 8.4.0 (2020r3)
Xtensa ESP32-S2 gcc 8.4.0 (2021r1)
Xtensa ESP32-S2 gcc 8.4.0 (2021r2)
Xtensa ESP32-S3 gcc 11.2.0 (2022r1)
Xtensa ESP32-S3 gcc 12.2.0 (20230208)
Xtensa ESP32-S3 gcc 8.4.0 (2020r3)
Xtensa ESP32-S3 gcc 8.4.0 (2021r1)
Xtensa ESP32-S3 gcc 8.4.0 (2021r2)
arm64 msvc v19.20 VS16.0
arm64 msvc v19.21 VS16.1
arm64 msvc v19.22 VS16.2
arm64 msvc v19.23 VS16.3
arm64 msvc v19.24 VS16.4
arm64 msvc v19.25 VS16.5
arm64 msvc v19.27 VS16.7
arm64 msvc v19.28 VS16.8
arm64 msvc v19.28 VS16.9
arm64 msvc v19.29 VS16.10
arm64 msvc v19.29 VS16.11
arm64 msvc v19.30 VS17.0
arm64 msvc v19.31 VS17.1
arm64 msvc v19.32 VS17.2
arm64 msvc v19.33 VS17.3
arm64 msvc v19.34 VS17.4
arm64 msvc v19.35 VS17.5
arm64 msvc v19.36 VS17.6
arm64 msvc v19.37 VS17.7
arm64 msvc v19.38 VS17.8
arm64 msvc v19.39 VS17.9
arm64 msvc v19.40 VS17.10
arm64 msvc v19.latest
armv7-a clang (trunk)
armv7-a clang 10.0.0
armv7-a clang 10.0.1
armv7-a clang 11.0.0
armv7-a clang 11.0.1
armv7-a clang 12.0.0
armv7-a clang 12.0.1
armv7-a clang 13.0.0
armv7-a clang 13.0.1
armv7-a clang 14.0.0
armv7-a clang 15.0.0
armv7-a clang 16.0.0
armv7-a clang 17.0.1
armv7-a clang 18.1.0
armv7-a clang 9.0.0
armv7-a clang 9.0.1
armv8-a clang (all architectural features, trunk)
armv8-a clang (trunk)
armv8-a clang 10.0.0
armv8-a clang 10.0.1
armv8-a clang 11.0.0
armv8-a clang 11.0.1
armv8-a clang 12.0.0
armv8-a clang 12.0.1
armv8-a clang 13.0.0
armv8-a clang 13.0.1
armv8-a clang 14.0.0
armv8-a clang 15.0.0
armv8-a clang 16.0.0
armv8-a clang 17.0.1
armv8-a clang 18.1.0
armv8-a clang 9.0.0
armv8-a clang 9.0.1
clang 12 for DPU (rel 2023.2.0)
cproc-master
llvm-mos commander X16
llvm-mos commodore 64
llvm-mos mega65
llvm-mos nes-cnrom
llvm-mos nes-mmc1
llvm-mos nes-mmc3
llvm-mos nes-nrom
llvm-mos osi-c1p
loongarch64 gcc 12.2.0
loongarch64 gcc 12.3.0
loongarch64 gcc 12.4.0
loongarch64 gcc 13.1.0
loongarch64 gcc 13.2.0
loongarch64 gcc 13.3.0
loongarch64 gcc 14.1.0
loongarch64 gcc 14.2.0
mips (el) gcc 12.1.0
mips (el) gcc 12.2.0
mips (el) gcc 12.3.0
mips (el) gcc 12.4.0
mips (el) gcc 13.1.0
mips (el) gcc 13.2.0
mips (el) gcc 13.3.0
mips (el) gcc 14.1.0
mips (el) gcc 14.2.0
mips (el) gcc 4.9.4
mips (el) gcc 5.4
mips (el) gcc 5.5.0
mips (el) gcc 9.5.0
mips clang 13.0.0
mips clang 14.0.0
mips clang 15.0.0
mips clang 16.0.0
mips clang 17.0.1
mips clang 18.1.0
mips gcc 11.2.0
mips gcc 12.1.0
mips gcc 12.2.0
mips gcc 12.3.0
mips gcc 12.4.0
mips gcc 13.1.0
mips gcc 13.2.0
mips gcc 13.3.0
mips gcc 14.1.0
mips gcc 14.2.0
mips gcc 4.9.4
mips gcc 5.4
mips gcc 5.5.0
mips gcc 9.3.0 (codescape)
mips gcc 9.5.0
mips64 (el) gcc 12.1.0
mips64 (el) gcc 12.2.0
mips64 (el) gcc 12.3.0
mips64 (el) gcc 12.4.0
mips64 (el) gcc 13.1.0
mips64 (el) gcc 13.2.0
mips64 (el) gcc 13.3.0
mips64 (el) gcc 14.1.0
mips64 (el) gcc 14.2.0
mips64 (el) gcc 4.9.4
mips64 (el) gcc 5.4.0
mips64 (el) gcc 5.5.0
mips64 (el) gcc 9.5.0
mips64 clang 13.0.0
mips64 clang 14.0.0
mips64 clang 15.0.0
mips64 clang 16.0.0
mips64 clang 17.0.1
mips64 clang 18.1.0
mips64 gcc 11.2.0
mips64 gcc 12.1.0
mips64 gcc 12.2.0
mips64 gcc 12.3.0
mips64 gcc 12.4.0
mips64 gcc 13.1.0
mips64 gcc 13.2.0
mips64 gcc 13.3.0
mips64 gcc 14.1.0
mips64 gcc 14.2.0
mips64 gcc 4.9.4
mips64 gcc 5.4
mips64 gcc 5.5.0
mips64 gcc 9.5.0
mips64el clang 13.0.0
mips64el clang 14.0.0
mips64el clang 15.0.0
mips64el clang 16.0.0
mips64el clang 17.0.1
mips64el clang 18.1.0
mipsel clang 13.0.0
mipsel clang 14.0.0
mipsel clang 15.0.0
mipsel clang 16.0.0
mipsel clang 17.0.1
mipsel clang 18.1.0
movfuscator (trunk)
nanoMIPS gcc 6.3.0
power gcc 11.2.0
power gcc 12.1.0
power gcc 12.2.0
power gcc 12.3.0
power gcc 12.4.0
power gcc 13.1.0
power gcc 13.2.0
power gcc 13.3.0
power gcc 14.1.0
power gcc 14.2.0
power gcc 4.8.5
power64 AT12.0 (gcc8)
power64 AT13.0 (gcc9)
power64le AT12.0 (gcc8)
power64le AT13.0 (gcc9)
power64le clang (trunk)
power64le gcc 11.2.0
power64le gcc 12.1.0
power64le gcc 12.2.0
power64le gcc 12.3.0
power64le gcc 12.4.0
power64le gcc 13.1.0
power64le gcc 13.2.0
power64le gcc 13.3.0
power64le gcc 14.1.0
power64le gcc 14.2.0
power64le gcc 6.3.0
power64le gcc trunk
powerpc64 clang (trunk)
ppci 0.5.5
s390x gcc 11.2.0
s390x gcc 12.1.0
s390x gcc 12.2.0
s390x gcc 12.3.0
s390x gcc 12.4.0
s390x gcc 13.1.0
s390x gcc 13.2.0
s390x gcc 13.3.0
s390x gcc 14.1.0
s390x gcc 14.2.0
sh gcc 12.2.0
sh gcc 12.3.0
sh gcc 12.4.0
sh gcc 13.1.0
sh gcc 13.2.0
sh gcc 13.3.0
sh gcc 14.1.0
sh gcc 14.2.0
sh gcc 4.9.4
sh gcc 9.5.0
vast (trunk)
x64 msvc v19.0 (WINE)
x64 msvc v19.10 (WINE)
x64 msvc v19.14 (WINE)
x64 msvc v19.20 VS16.0
x64 msvc v19.21 VS16.1
x64 msvc v19.22 VS16.2
x64 msvc v19.23 VS16.3
x64 msvc v19.24 VS16.4
x64 msvc v19.25 VS16.5
x64 msvc v19.27 VS16.7
x64 msvc v19.28 VS16.8
x64 msvc v19.28 VS16.9
x64 msvc v19.29 VS16.10
x64 msvc v19.29 VS16.11
x64 msvc v19.30 VS17.0
x64 msvc v19.31 VS17.1
x64 msvc v19.32 VS17.2
x64 msvc v19.33 VS17.3
x64 msvc v19.34 VS17.4
x64 msvc v19.35 VS17.5
x64 msvc v19.36 VS17.6
x64 msvc v19.37 VS17.7
x64 msvc v19.38 VS17.8
x64 msvc v19.39 VS17.9
x64 msvc v19.40 VS17.10
x64 msvc v19.latest
x86 CompCert 3.10
x86 CompCert 3.11
x86 CompCert 3.12
x86 CompCert 3.9
x86 gcc 1.27
x86 msvc v19.0 (WINE)
x86 msvc v19.10 (WINE)
x86 msvc v19.14 (WINE)
x86 msvc v19.20 VS16.0
x86 msvc v19.21 VS16.1
x86 msvc v19.22 VS16.2
x86 msvc v19.23 VS16.3
x86 msvc v19.24 VS16.4
x86 msvc v19.25 VS16.5
x86 msvc v19.27 VS16.7
x86 msvc v19.28 VS16.8
x86 msvc v19.28 VS16.9
x86 msvc v19.29 VS16.10
x86 msvc v19.29 VS16.11
x86 msvc v19.30 VS17.0
x86 msvc v19.31 VS17.1
x86 msvc v19.32 VS17.2
x86 msvc v19.33 VS17.3
x86 msvc v19.34 VS17.4
x86 msvc v19.35 VS17.5
x86 msvc v19.36 VS17.6
x86 msvc v19.37 VS17.7
x86 msvc v19.38 VS17.8
x86 msvc v19.39 VS17.9
x86 msvc v19.40 VS17.10
x86 msvc v19.latest
x86 nvc
x86 tendra (trunk)
x86-64 clang (assertions trunk)
x86-64 clang (thephd.dev)
x86-64 clang (trunk)
x86-64 clang (widberg)
x86-64 clang 10.0.0
x86-64 clang 10.0.1
x86-64 clang 11.0.0
x86-64 clang 11.0.1
x86-64 clang 12.0.0
x86-64 clang 12.0.1
x86-64 clang 13.0.0
x86-64 clang 13.0.1
x86-64 clang 14.0.0
x86-64 clang 15.0.0
x86-64 clang 16.0.0
x86-64 clang 17.0.1
x86-64 clang 18.1.0
x86-64 clang 19.1.0
x86-64 clang 3.0.0
x86-64 clang 3.1
x86-64 clang 3.2
x86-64 clang 3.3
x86-64 clang 3.4.1
x86-64 clang 3.5
x86-64 clang 3.5.1
x86-64 clang 3.5.2
x86-64 clang 3.6
x86-64 clang 3.7
x86-64 clang 3.7.1
x86-64 clang 3.8
x86-64 clang 3.8.1
x86-64 clang 3.9.0
x86-64 clang 3.9.1
x86-64 clang 4.0.0
x86-64 clang 4.0.1
x86-64 clang 5.0.0
x86-64 clang 5.0.1
x86-64 clang 5.0.2
x86-64 clang 6.0.0
x86-64 clang 6.0.1
x86-64 clang 7.0.0
x86-64 clang 7.0.1
x86-64 clang 7.1.0
x86-64 clang 8.0.0
x86-64 clang 8.0.1
x86-64 clang 9.0.0
x86-64 clang 9.0.1
x86-64 gcc (trunk)
x86-64 gcc 10.1
x86-64 gcc 10.2
x86-64 gcc 10.3
x86-64 gcc 10.4
x86-64 gcc 10.5
x86-64 gcc 11.1
x86-64 gcc 11.2
x86-64 gcc 11.3
x86-64 gcc 11.4
x86-64 gcc 12.1
x86-64 gcc 12.2
x86-64 gcc 12.3
x86-64 gcc 12.4
x86-64 gcc 13.1
x86-64 gcc 13.2
x86-64 gcc 13.3
x86-64 gcc 14.1
x86-64 gcc 14.2
x86-64 gcc 3.4.6
x86-64 gcc 4.0.4
x86-64 gcc 4.1.2
x86-64 gcc 4.4.7
x86-64 gcc 4.5.3
x86-64 gcc 4.6.4
x86-64 gcc 4.7.1
x86-64 gcc 4.7.2
x86-64 gcc 4.7.3
x86-64 gcc 4.7.4
x86-64 gcc 4.8.1
x86-64 gcc 4.8.2
x86-64 gcc 4.8.3
x86-64 gcc 4.8.4
x86-64 gcc 4.8.5
x86-64 gcc 4.9.0
x86-64 gcc 4.9.1
x86-64 gcc 4.9.2
x86-64 gcc 4.9.3
x86-64 gcc 4.9.4
x86-64 gcc 5.1
x86-64 gcc 5.2
x86-64 gcc 5.3
x86-64 gcc 5.4
x86-64 gcc 6.1
x86-64 gcc 6.2
x86-64 gcc 6.3
x86-64 gcc 6.5
x86-64 gcc 7.1
x86-64 gcc 7.2
x86-64 gcc 7.3
x86-64 gcc 7.4
x86-64 gcc 7.5
x86-64 gcc 8.1
x86-64 gcc 8.2
x86-64 gcc 8.3
x86-64 gcc 8.4
x86-64 gcc 8.5
x86-64 gcc 9.1
x86-64 gcc 9.2
x86-64 gcc 9.3
x86-64 gcc 9.4
x86-64 gcc 9.5
x86-64 icc 13.0.1
x86-64 icc 16.0.3
x86-64 icc 17.0.0
x86-64 icc 18.0.0
x86-64 icc 19.0.0
x86-64 icc 19.0.1
x86-64 icc 2021.1.2
x86-64 icc 2021.10.0
x86-64 icc 2021.2.0
x86-64 icc 2021.3.0
x86-64 icc 2021.4.0
x86-64 icc 2021.5.0
x86-64 icc 2021.6.0
x86-64 icc 2021.7.0
x86-64 icc 2021.7.1
x86-64 icc 2021.8.0
x86-64 icc 2021.9.0
x86-64 icx (latest)
x86-64 icx 2021.1.2
x86-64 icx 2021.2.0
x86-64 icx 2021.3.0
x86-64 icx 2021.4.0
x86-64 icx 2022.0.0
x86-64 icx 2022.1.0
x86-64 icx 2022.2.0
x86-64 icx 2022.2.1
x86-64 icx 2023.0.0
x86-64 icx 2023.1.0
x86-64 icx 2024.0.0
x86_64 CompCert 3.10
x86_64 CompCert 3.11
x86_64 CompCert 3.12
x86_64 CompCert 3.9
z88dk 2.2
zig cc 0.10.0
zig cc 0.11.0
zig cc 0.12.0
zig cc 0.12.1
zig cc 0.13.0
zig cc 0.6.0
zig cc 0.7.0
zig cc 0.7.1
zig cc 0.8.0
zig cc 0.9.0
zig cc trunk
Options
Source code
# 0 "../test/arm/neon/addv.c" # 1 "/home/zengzhijin/workspace/toolchain/github/simde/test//" # 0 "<built-in>" # 0 "<command-line>" # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdc-predef.h" 1 3 4 # 0 "<command-line>" 2 # 1 "../test/arm/neon/addv.c" # 1 "../test/arm/neon/test-neon.h" 1 # 1 "../test/arm/neon/../../test.h" 1 # 1 "../test/arm/neon/../../../simde/hedley.h" 1 # 1262 "../test/arm/neon/../../../simde/hedley.h" # 1262 "../test/arm/neon/../../../simde/hedley.h" #pragma GCC diagnostic push # 1273 "../test/arm/neon/../../../simde/hedley.h" # 1273 "../test/arm/neon/../../../simde/hedley.h" #pragma GCC diagnostic ignored "-Wvariadic-macros" # 1288 "../test/arm/neon/../../../simde/hedley.h" # 1288 "../test/arm/neon/../../../simde/hedley.h" #pragma GCC diagnostic pop # 5 "../test/arm/neon/../../test.h" 2 # 1 "../test/arm/neon/../../../simde/simde-common.h" 1 # 32 "../test/arm/neon/../../../simde/simde-common.h" # 1 "../test/arm/neon/../../../simde/hedley.h" 1 # 33 "../test/arm/neon/../../../simde/simde-common.h" 2 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/lib/gcc/riscv64-unknown-linux-gnu/13.2.0/include/stddef.h" 1 3 4 # 145 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/lib/gcc/riscv64-unknown-linux-gnu/13.2.0/include/stddef.h" 3 4 # 145 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/lib/gcc/riscv64-unknown-linux-gnu/13.2.0/include/stddef.h" 3 4 typedef long int ptrdiff_t; # 214 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/lib/gcc/riscv64-unknown-linux-gnu/13.2.0/include/stddef.h" 3 4 typedef long unsigned int size_t; # 329 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/lib/gcc/riscv64-unknown-linux-gnu/13.2.0/include/stddef.h" 3 4 typedef int wchar_t; # 41 "../test/arm/neon/../../../simde/simde-common.h" 2 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/lib/gcc/riscv64-unknown-linux-gnu/13.2.0/include/stdint.h" 1 3 4 # 9 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/lib/gcc/riscv64-unknown-linux-gnu/13.2.0/include/stdint.h" 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdint.h" 1 3 4 # 26 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdint.h" 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/libc-header-start.h" 1 3 4 # 33 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/libc-header-start.h" 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/features.h" 1 3 4 # 394 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/features.h" 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/features-time64.h" 1 3 4 # 20 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/features-time64.h" 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/wordsize.h" 1 3 4 # 21 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/features-time64.h" 2 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/timesize.h" 1 3 4 # 22 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/features-time64.h" 2 3 4 # 395 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/features.h" 2 3 4 # 503 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/features.h" 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/sys/cdefs.h" 1 3 4 # 576 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/sys/cdefs.h" 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/wordsize.h" 1 3 4 # 577 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/sys/cdefs.h" 2 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/long-double.h" 1 3 4 # 578 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/sys/cdefs.h" 2 3 4 # 504 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/features.h" 2 3 4 # 527 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/features.h" 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/gnu/stubs.h" 1 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/wordsize.h" 1 3 4 # 6 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/gnu/stubs.h" 2 3 4 # 17 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/gnu/stubs.h" 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/gnu/stubs-lp64d.h" 1 3 4 # 18 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/gnu/stubs.h" 2 3 4 # 528 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/features.h" 2 3 4 # 34 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/libc-header-start.h" 2 3 4 # 27 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdint.h" 2 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/types.h" 1 3 4 # 27 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/types.h" 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/wordsize.h" 1 3 4 # 28 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/types.h" 2 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/timesize.h" 1 3 4 # 29 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/types.h" 2 3 4 typedef unsigned char __u_char; typedef unsigned short int __u_short; typedef unsigned int __u_int; typedef unsigned long int __u_long; typedef signed char __int8_t; typedef unsigned char __uint8_t; typedef signed short int __int16_t; typedef unsigned short int __uint16_t; typedef signed int __int32_t; typedef unsigned int __uint32_t; typedef signed long int __int64_t; typedef unsigned long int __uint64_t; typedef __int8_t __int_least8_t; typedef __uint8_t __uint_least8_t; typedef __int16_t __int_least16_t; typedef __uint16_t __uint_least16_t; typedef __int32_t __int_least32_t; typedef __uint32_t __uint_least32_t; typedef __int64_t __int_least64_t; typedef __uint64_t __uint_least64_t; typedef long int __quad_t; typedef unsigned long int __u_quad_t; typedef long int __intmax_t; typedef unsigned long int __uintmax_t; # 141 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/types.h" 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/typesizes.h" 1 3 4 # 142 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/types.h" 2 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/time64.h" 1 3 4 # 143 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/types.h" 2 3 4 typedef unsigned long int __dev_t; typedef unsigned int __uid_t; typedef unsigned int __gid_t; typedef unsigned long int __ino_t; typedef unsigned long int __ino64_t; typedef unsigned int __mode_t; typedef unsigned int __nlink_t; typedef long int __off_t; typedef long int __off64_t; typedef int __pid_t; typedef struct { int __val[2]; } __fsid_t; typedef long int __clock_t; typedef unsigned long int __rlim_t; typedef unsigned long int __rlim64_t; typedef unsigned int __id_t; typedef long int __time_t; typedef unsigned int __useconds_t; typedef long int __suseconds_t; typedef long int __suseconds64_t; typedef int __daddr_t; typedef int __key_t; typedef int __clockid_t; typedef void * __timer_t; typedef int __blksize_t; typedef long int __blkcnt_t; typedef long int __blkcnt64_t; typedef unsigned long int __fsblkcnt_t; typedef unsigned long int __fsblkcnt64_t; typedef unsigned long int __fsfilcnt_t; typedef unsigned long int __fsfilcnt64_t; typedef long int __fsword_t; typedef long int __ssize_t; typedef long int __syscall_slong_t; typedef unsigned long int __syscall_ulong_t; typedef __off64_t __loff_t; typedef char *__caddr_t; typedef long int __intptr_t; typedef unsigned int __socklen_t; typedef int __sig_atomic_t; # 28 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdint.h" 2 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/wchar.h" 1 3 4 # 29 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdint.h" 2 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/wordsize.h" 1 3 4 # 30 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdint.h" 2 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/stdint-intn.h" 1 3 4 # 24 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/stdint-intn.h" 3 4 typedef __int8_t int8_t; typedef __int16_t int16_t; typedef __int32_t int32_t; typedef __int64_t int64_t; # 35 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdint.h" 2 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/stdint-uintn.h" 1 3 4 # 24 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/stdint-uintn.h" 3 4 typedef __uint8_t uint8_t; typedef __uint16_t uint16_t; typedef __uint32_t uint32_t; typedef __uint64_t uint64_t; # 38 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdint.h" 2 3 4 typedef __int_least8_t int_least8_t; typedef __int_least16_t int_least16_t; typedef __int_least32_t int_least32_t; typedef __int_least64_t int_least64_t; typedef __uint_least8_t uint_least8_t; typedef __uint_least16_t uint_least16_t; typedef __uint_least32_t uint_least32_t; typedef __uint_least64_t uint_least64_t; typedef signed char int_fast8_t; typedef long int int_fast16_t; typedef long int int_fast32_t; typedef long int int_fast64_t; # 71 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdint.h" 3 4 typedef unsigned char uint_fast8_t; typedef unsigned long int uint_fast16_t; typedef unsigned long int uint_fast32_t; typedef unsigned long int uint_fast64_t; # 87 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdint.h" 3 4 typedef long int intptr_t; typedef unsigned long int uintptr_t; # 101 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdint.h" 3 4 typedef __intmax_t intmax_t; typedef __uintmax_t uintmax_t; # 10 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/lib/gcc/riscv64-unknown-linux-gnu/13.2.0/include/stdint.h" 2 3 4 # 42 "../test/arm/neon/../../../simde/simde-common.h" 2 # 1 "../test/arm/neon/../../../simde/simde-detect-clang.h" 1 # 44 "../test/arm/neon/../../../simde/simde-common.h" 2 # 1 "../test/arm/neon/../../../simde/simde-arch.h" 1 # 45 "../test/arm/neon/../../../simde/simde-arch.h" # 1 "../test/arm/neon/../../../simde/hedley.h" 1 # 46 "../test/arm/neon/../../../simde/simde-arch.h" 2 # 45 "../test/arm/neon/../../../simde/simde-common.h" 2 # 1 "../test/arm/neon/../../../simde/simde-features.h" 1 # 36 "../test/arm/neon/../../../simde/simde-features.h" # 1 "../test/arm/neon/../../../simde/simde-diagnostic.h" 1 # 50 "../test/arm/neon/../../../simde/simde-diagnostic.h" # 1 "../test/arm/neon/../../../simde/hedley.h" 1 # 51 "../test/arm/neon/../../../simde/simde-diagnostic.h" 2 # 37 "../test/arm/neon/../../../simde/simde-features.h" 2 # 46 "../test/arm/neon/../../../simde/simde-common.h" 2 # 1 "../test/arm/neon/../../../simde/simde-math.h" 1 # 36 "../test/arm/neon/../../../simde/simde-math.h" # 1 "../test/arm/neon/../../../simde/hedley.h" 1 # 37 "../test/arm/neon/../../../simde/simde-math.h" 2 # 44 "../test/arm/neon/../../../simde/simde-math.h" #pragma GCC diagnostic push # 45 "../test/arm/neon/../../../simde/simde-math.h" #pragma GCC diagnostic ignored "-Wunused-function" # 45 "../test/arm/neon/../../../simde/simde-math.h" # 45 "../test/arm/neon/../../../simde/simde-math.h" #pragma GCC diagnostic ignored "-Wpsabi" # 45 "../test/arm/neon/../../../simde/simde-math.h" # 45 "../test/arm/neon/../../../simde/simde-math.h" #pragma GCC diagnostic ignored "-Wfloat-equal" # 45 "../test/arm/neon/../../../simde/simde-math.h" # 45 "../test/arm/neon/../../../simde/simde-math.h" #pragma GCC diagnostic ignored "-Wvla" # 115 "../test/arm/neon/../../../simde/simde-math.h" # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/math.h" 1 3 4 # 27 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/math.h" 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/libc-header-start.h" 1 3 4 # 28 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/math.h" 2 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/math-vector.h" 1 3 4 # 27 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/math-vector.h" 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/libm-simd-decl-stubs.h" 1 3 4 # 28 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/math-vector.h" 2 3 4 # 41 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/math.h" 2 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/floatn.h" 1 3 4 # 23 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/floatn.h" 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/long-double.h" 1 3 4 # 24 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/floatn.h" 2 3 4 # 95 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/floatn.h" 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/floatn-common.h" 1 3 4 # 24 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/floatn-common.h" 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/long-double.h" 1 3 4 # 25 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/floatn-common.h" 2 3 4 # 96 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/floatn.h" 2 3 4 # 44 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/math.h" 2 3 4 # 152 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/math.h" 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/flt-eval-method.h" 1 3 4 # 153 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/math.h" 2 3 4 # 163 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/math.h" 3 4 # 163 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/math.h" 3 4 typedef float float_t; typedef double double_t; # 204 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/math.h" 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/fp-logb.h" 1 3 4 # 205 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/math.h" 2 3 4 # 247 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/math.h" 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/fp-fast.h" 1 3 4 # 248 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/math.h" 2 3 4 # 312 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/math.h" 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/mathcalls-helper-functions.h" 1 3 4 # 20 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/mathcalls-helper-functions.h" 3 4 extern int __fpclassify (double __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern int __signbit (double __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern int __isinf (double __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern int __finite (double __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern int __isnan (double __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern int __iseqsig (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)); extern int __issignaling (double __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); # 313 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/math.h" 2 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/mathcalls.h" 1 3 4 # 53 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/mathcalls.h" 3 4 extern double acos (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __acos (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double asin (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __asin (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double atan (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __atan (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double atan2 (double __y, double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __atan2 (double __y, double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double cos (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __cos (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double sin (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __sin (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double tan (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __tan (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double cosh (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __cosh (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double sinh (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __sinh (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double tanh (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __tanh (double __x) __attribute__ ((__nothrow__ , __leaf__)); # 85 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/mathcalls.h" 3 4 extern double acosh (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __acosh (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double asinh (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __asinh (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double atanh (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __atanh (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double exp (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __exp (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double frexp (double __x, int *__exponent) __attribute__ ((__nothrow__ , __leaf__)); extern double __frexp (double __x, int *__exponent) __attribute__ ((__nothrow__ , __leaf__)); extern double ldexp (double __x, int __exponent) __attribute__ ((__nothrow__ , __leaf__)); extern double __ldexp (double __x, int __exponent) __attribute__ ((__nothrow__ , __leaf__)); extern double log (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __log (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double log10 (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __log10 (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double modf (double __x, double *__iptr) __attribute__ ((__nothrow__ , __leaf__)); extern double __modf (double __x, double *__iptr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))); # 119 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/mathcalls.h" 3 4 extern double expm1 (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __expm1 (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double log1p (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __log1p (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double logb (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __logb (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double exp2 (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __exp2 (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double log2 (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __log2 (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double pow (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)); extern double __pow (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)); extern double sqrt (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __sqrt (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double hypot (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)); extern double __hypot (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)); extern double cbrt (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __cbrt (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double ceil (double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double __ceil (double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double fabs (double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double __fabs (double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double floor (double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double __floor (double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double fmod (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)); extern double __fmod (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)); # 198 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/mathcalls.h" 3 4 extern double copysign (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double __copysign (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double nan (const char *__tagb) __attribute__ ((__nothrow__ , __leaf__)); extern double __nan (const char *__tagb) __attribute__ ((__nothrow__ , __leaf__)); # 231 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/mathcalls.h" 3 4 extern double erf (double) __attribute__ ((__nothrow__ , __leaf__)); extern double __erf (double) __attribute__ ((__nothrow__ , __leaf__)); extern double erfc (double) __attribute__ ((__nothrow__ , __leaf__)); extern double __erfc (double) __attribute__ ((__nothrow__ , __leaf__)); extern double lgamma (double) __attribute__ ((__nothrow__ , __leaf__)); extern double __lgamma (double) __attribute__ ((__nothrow__ , __leaf__)); extern double tgamma (double) __attribute__ ((__nothrow__ , __leaf__)); extern double __tgamma (double) __attribute__ ((__nothrow__ , __leaf__)); # 259 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/mathcalls.h" 3 4 extern double rint (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __rint (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double nextafter (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)); extern double __nextafter (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)); extern double nexttoward (double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)); extern double __nexttoward (double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)); # 275 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/mathcalls.h" 3 4 extern double remainder (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)); extern double __remainder (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)); extern double scalbn (double __x, int __n) __attribute__ ((__nothrow__ , __leaf__)); extern double __scalbn (double __x, int __n) __attribute__ ((__nothrow__ , __leaf__)); extern int ilogb (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern int __ilogb (double __x) __attribute__ ((__nothrow__ , __leaf__)); # 293 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/mathcalls.h" 3 4 extern double scalbln (double __x, long int __n) __attribute__ ((__nothrow__ , __leaf__)); extern double __scalbln (double __x, long int __n) __attribute__ ((__nothrow__ , __leaf__)); extern double nearbyint (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __nearbyint (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double round (double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double __round (double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double trunc (double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double __trunc (double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double remquo (double __x, double __y, int *__quo) __attribute__ ((__nothrow__ , __leaf__)); extern double __remquo (double __x, double __y, int *__quo) __attribute__ ((__nothrow__ , __leaf__)); extern long int lrint (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int __lrint (double __x) __attribute__ ((__nothrow__ , __leaf__)); __extension__ extern long long int llrint (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long long int __llrint (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int lround (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int __lround (double __x) __attribute__ ((__nothrow__ , __leaf__)); __extension__ extern long long int llround (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long long int __llround (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double fdim (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)); extern double __fdim (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)); extern double fmax (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double __fmax (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double fmin (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double __fmin (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double fma (double __x, double __y, double __z) __attribute__ ((__nothrow__ , __leaf__)); extern double __fma (double __x, double __y, double __z) __attribute__ ((__nothrow__ , __leaf__)); # 314 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/math.h" 2 3 4 # 329 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/math.h" 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/mathcalls-helper-functions.h" 1 3 4 # 20 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/mathcalls-helper-functions.h" 3 4 extern int __fpclassifyf (float __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern int __signbitf (float __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern int __isinff (float __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern int __finitef (float __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern int __isnanf (float __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern int __iseqsigf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)); extern int __issignalingf (float __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); # 330 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/math.h" 2 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/mathcalls.h" 1 3 4 # 53 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/mathcalls.h" 3 4 extern float acosf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __acosf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float asinf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __asinf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float atanf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __atanf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float atan2f (float __y, float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __atan2f (float __y, float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float cosf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __cosf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float sinf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __sinf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float tanf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __tanf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float coshf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __coshf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float sinhf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __sinhf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float tanhf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __tanhf (float __x) __attribute__ ((__nothrow__ , __leaf__)); # 85 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/mathcalls.h" 3 4 extern float acoshf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __acoshf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float asinhf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __asinhf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float atanhf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __atanhf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float expf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __expf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float frexpf (float __x, int *__exponent) __attribute__ ((__nothrow__ , __leaf__)); extern float __frexpf (float __x, int *__exponent) __attribute__ ((__nothrow__ , __leaf__)); extern float ldexpf (float __x, int __exponent) __attribute__ ((__nothrow__ , __leaf__)); extern float __ldexpf (float __x, int __exponent) __attribute__ ((__nothrow__ , __leaf__)); extern float logf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __logf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float log10f (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __log10f (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float modff (float __x, float *__iptr) __attribute__ ((__nothrow__ , __leaf__)); extern float __modff (float __x, float *__iptr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))); # 119 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/mathcalls.h" 3 4 extern float expm1f (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __expm1f (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float log1pf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __log1pf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float logbf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __logbf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float exp2f (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __exp2f (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float log2f (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __log2f (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float powf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)); extern float __powf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)); extern float sqrtf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __sqrtf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float hypotf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)); extern float __hypotf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)); extern float cbrtf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __cbrtf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float ceilf (float __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float __ceilf (float __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float fabsf (float __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float __fabsf (float __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float floorf (float __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float __floorf (float __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float fmodf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)); extern float __fmodf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)); # 198 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/mathcalls.h" 3 4 extern float copysignf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float __copysignf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float nanf (const char *__tagb) __attribute__ ((__nothrow__ , __leaf__)); extern float __nanf (const char *__tagb) __attribute__ ((__nothrow__ , __leaf__)); # 231 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/mathcalls.h" 3 4 extern float erff (float) __attribute__ ((__nothrow__ , __leaf__)); extern float __erff (float) __attribute__ ((__nothrow__ , __leaf__)); extern float erfcf (float) __attribute__ ((__nothrow__ , __leaf__)); extern float __erfcf (float) __attribute__ ((__nothrow__ , __leaf__)); extern float lgammaf (float) __attribute__ ((__nothrow__ , __leaf__)); extern float __lgammaf (float) __attribute__ ((__nothrow__ , __leaf__)); extern float tgammaf (float) __attribute__ ((__nothrow__ , __leaf__)); extern float __tgammaf (float) __attribute__ ((__nothrow__ , __leaf__)); # 259 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/mathcalls.h" 3 4 extern float rintf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __rintf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float nextafterf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)); extern float __nextafterf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)); extern float nexttowardf (float __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)); extern float __nexttowardf (float __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)); # 275 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/mathcalls.h" 3 4 extern float remainderf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)); extern float __remainderf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)); extern float scalbnf (float __x, int __n) __attribute__ ((__nothrow__ , __leaf__)); extern float __scalbnf (float __x, int __n) __attribute__ ((__nothrow__ , __leaf__)); extern int ilogbf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern int __ilogbf (float __x) __attribute__ ((__nothrow__ , __leaf__)); # 293 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/mathcalls.h" 3 4 extern float scalblnf (float __x, long int __n) __attribute__ ((__nothrow__ , __leaf__)); extern float __scalblnf (float __x, long int __n) __attribute__ ((__nothrow__ , __leaf__)); extern float nearbyintf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __nearbyintf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float roundf (float __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float __roundf (float __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float truncf (float __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float __truncf (float __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float remquof (float __x, float __y, int *__quo) __attribute__ ((__nothrow__ , __leaf__)); extern float __remquof (float __x, float __y, int *__quo) __attribute__ ((__nothrow__ , __leaf__)); extern long int lrintf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int __lrintf (float __x) __attribute__ ((__nothrow__ , __leaf__)); __extension__ extern long long int llrintf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern long long int __llrintf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int lroundf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int __lroundf (float __x) __attribute__ ((__nothrow__ , __leaf__)); __extension__ extern long long int llroundf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern long long int __llroundf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float fdimf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)); extern float __fdimf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)); extern float fmaxf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float __fmaxf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float fminf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float __fminf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float fmaf (float __x, float __y, float __z) __attribute__ ((__nothrow__ , __leaf__)); extern float __fmaf (float __x, float __y, float __z) __attribute__ ((__nothrow__ , __leaf__)); # 331 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/math.h" 2 3 4 # 398 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/math.h" 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/mathcalls-helper-functions.h" 1 3 4 # 20 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/mathcalls-helper-functions.h" 3 4 extern int __fpclassifyl (long double __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern int __signbitl (long double __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern int __isinfl (long double __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern int __finitel (long double __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern int __isnanl (long double __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern int __iseqsigl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)); extern int __issignalingl (long double __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); # 399 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/math.h" 2 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/mathcalls.h" 1 3 4 # 53 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/mathcalls.h" 3 4 extern long double acosl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __acosl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double asinl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __asinl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double atanl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __atanl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double atan2l (long double __y, long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __atan2l (long double __y, long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double cosl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __cosl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double sinl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __sinl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double tanl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __tanl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double coshl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __coshl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double sinhl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __sinhl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double tanhl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __tanhl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); # 85 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/mathcalls.h" 3 4 extern long double acoshl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __acoshl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double asinhl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __asinhl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double atanhl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __atanhl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double expl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __expl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double frexpl (long double __x, int *__exponent) __attribute__ ((__nothrow__ , __leaf__)); extern long double __frexpl (long double __x, int *__exponent) __attribute__ ((__nothrow__ , __leaf__)); extern long double ldexpl (long double __x, int __exponent) __attribute__ ((__nothrow__ , __leaf__)); extern long double __ldexpl (long double __x, int __exponent) __attribute__ ((__nothrow__ , __leaf__)); extern long double logl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __logl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double log10l (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __log10l (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double modfl (long double __x, long double *__iptr) __attribute__ ((__nothrow__ , __leaf__)); extern long double __modfl (long double __x, long double *__iptr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))); # 119 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/mathcalls.h" 3 4 extern long double expm1l (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __expm1l (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double log1pl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __log1pl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double logbl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __logbl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double exp2l (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __exp2l (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double log2l (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __log2l (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double powl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)); extern long double __powl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)); extern long double sqrtl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __sqrtl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double hypotl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)); extern long double __hypotl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)); extern long double cbrtl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __cbrtl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double ceill (long double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double __ceill (long double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double fabsl (long double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double __fabsl (long double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double floorl (long double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double __floorl (long double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double fmodl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)); extern long double __fmodl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)); # 198 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/mathcalls.h" 3 4 extern long double copysignl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double __copysignl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double nanl (const char *__tagb) __attribute__ ((__nothrow__ , __leaf__)); extern long double __nanl (const char *__tagb) __attribute__ ((__nothrow__ , __leaf__)); # 231 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/mathcalls.h" 3 4 extern long double erfl (long double) __attribute__ ((__nothrow__ , __leaf__)); extern long double __erfl (long double) __attribute__ ((__nothrow__ , __leaf__)); extern long double erfcl (long double) __attribute__ ((__nothrow__ , __leaf__)); extern long double __erfcl (long double) __attribute__ ((__nothrow__ , __leaf__)); extern long double lgammal (long double) __attribute__ ((__nothrow__ , __leaf__)); extern long double __lgammal (long double) __attribute__ ((__nothrow__ , __leaf__)); extern long double tgammal (long double) __attribute__ ((__nothrow__ , __leaf__)); extern long double __tgammal (long double) __attribute__ ((__nothrow__ , __leaf__)); # 259 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/mathcalls.h" 3 4 extern long double rintl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __rintl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double nextafterl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)); extern long double __nextafterl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)); extern long double nexttowardl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)); extern long double __nexttowardl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)); # 275 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/mathcalls.h" 3 4 extern long double remainderl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)); extern long double __remainderl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)); extern long double scalbnl (long double __x, int __n) __attribute__ ((__nothrow__ , __leaf__)); extern long double __scalbnl (long double __x, int __n) __attribute__ ((__nothrow__ , __leaf__)); extern int ilogbl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern int __ilogbl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); # 293 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/mathcalls.h" 3 4 extern long double scalblnl (long double __x, long int __n) __attribute__ ((__nothrow__ , __leaf__)); extern long double __scalblnl (long double __x, long int __n) __attribute__ ((__nothrow__ , __leaf__)); extern long double nearbyintl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __nearbyintl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double roundl (long double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double __roundl (long double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double truncl (long double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double __truncl (long double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double remquol (long double __x, long double __y, int *__quo) __attribute__ ((__nothrow__ , __leaf__)); extern long double __remquol (long double __x, long double __y, int *__quo) __attribute__ ((__nothrow__ , __leaf__)); extern long int lrintl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int __lrintl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); __extension__ extern long long int llrintl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long long int __llrintl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int lroundl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int __lroundl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); __extension__ extern long long int llroundl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long long int __llroundl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double fdiml (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)); extern long double __fdiml (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)); extern long double fmaxl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double __fmaxl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double fminl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double __fminl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double fmal (long double __x, long double __y, long double __z) __attribute__ ((__nothrow__ , __leaf__)); extern long double __fmal (long double __x, long double __y, long double __z) __attribute__ ((__nothrow__ , __leaf__)); # 400 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/math.h" 2 3 4 # 934 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/math.h" 3 4 enum { FP_NAN = 0, FP_INFINITE = 1, FP_ZERO = 2, FP_SUBNORMAL = 3, FP_NORMAL = 4 }; # 1472 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/math.h" 3 4 # 116 "../test/arm/neon/../../../simde/simde-math.h" 2 # 404 "../test/arm/neon/../../../simde/simde-math.h" # 404 "../test/arm/neon/../../../simde/simde-math.h" static inline int simde_math_fpclassifyf(float v) { return __builtin_fpclassify( # 408 "../test/arm/neon/../../../simde/simde-math.h" 3 4 0 # 408 "../test/arm/neon/../../../simde/simde-math.h" , # 408 "../test/arm/neon/../../../simde/simde-math.h" 3 4 1 # 408 "../test/arm/neon/../../../simde/simde-math.h" , # 408 "../test/arm/neon/../../../simde/simde-math.h" 3 4 4 # 408 "../test/arm/neon/../../../simde/simde-math.h" , # 408 "../test/arm/neon/../../../simde/simde-math.h" 3 4 3 # 408 "../test/arm/neon/../../../simde/simde-math.h" , # 408 "../test/arm/neon/../../../simde/simde-math.h" 3 4 2 # 408 "../test/arm/neon/../../../simde/simde-math.h" , v); # 419 "../test/arm/neon/../../../simde/simde-math.h" } static inline int simde_math_fpclassify(double v) { return __builtin_fpclassify( # 425 "../test/arm/neon/../../../simde/simde-math.h" 3 4 0 # 425 "../test/arm/neon/../../../simde/simde-math.h" , # 425 "../test/arm/neon/../../../simde/simde-math.h" 3 4 1 # 425 "../test/arm/neon/../../../simde/simde-math.h" , # 425 "../test/arm/neon/../../../simde/simde-math.h" 3 4 4 # 425 "../test/arm/neon/../../../simde/simde-math.h" , # 425 "../test/arm/neon/../../../simde/simde-math.h" 3 4 3 # 425 "../test/arm/neon/../../../simde/simde-math.h" , # 425 "../test/arm/neon/../../../simde/simde-math.h" 3 4 2 # 425 "../test/arm/neon/../../../simde/simde-math.h" , v); # 436 "../test/arm/neon/../../../simde/simde-math.h" } # 447 "../test/arm/neon/../../../simde/simde-math.h" static inline uint8_t simde_math_fpclassf(float v, const int imm8) { union { float f; uint32_t u; } fu; fu.f = v; uint32_t bits = fu.u; uint8_t NegNum = (bits >> 31) & 1; uint32_t const ExpMask = 0x3F800000; uint32_t const MantMask = 0x007FFFFF; uint8_t ExpAllOnes = ((bits & ExpMask) == ExpMask); uint8_t ExpAllZeros = ((bits & ExpMask) == 0); uint8_t MantAllZeros = ((bits & MantMask) == 0); uint8_t ZeroNumber = ExpAllZeros & MantAllZeros; uint8_t SignalingBit = (bits >> 22) & 1; uint8_t result = 0; uint8_t qNaN_res = ExpAllOnes & (!MantAllZeros) & SignalingBit; uint8_t Pzero_res = (!NegNum) & ExpAllZeros & MantAllZeros; uint8_t Nzero_res = NegNum & ExpAllZeros & MantAllZeros; uint8_t Pinf_res = (!NegNum) & ExpAllOnes & MantAllZeros; uint8_t Ninf_res = NegNum & ExpAllOnes & MantAllZeros; uint8_t Denorm_res = ExpAllZeros & (!MantAllZeros); uint8_t FinNeg_res = NegNum & (!ExpAllOnes) & (!ZeroNumber); uint8_t sNaN_res = ExpAllOnes & (!MantAllZeros) & (!SignalingBit); result = (((imm8 >> 0) & qNaN_res) | ((imm8 >> 1) & Pzero_res) | ((imm8 >> 2) & Nzero_res) | ((imm8 >> 3) & Pinf_res) | ((imm8 >> 4) & Ninf_res) | ((imm8 >> 5) & Denorm_res) | ((imm8 >> 6) & FinNeg_res) | ((imm8 >> 7) & sNaN_res)); return result; } static inline uint8_t simde_math_fpclass(double v, const int imm8) { union { double d; uint64_t u; } du; du.d = v; uint64_t bits = du.u; uint8_t NegNum = (bits >> 63) & 1; uint64_t const ExpMask = 0x3FF0000000000000; uint64_t const MantMask = 0x000FFFFFFFFFFFFF; uint8_t ExpAllOnes = ((bits & ExpMask) == ExpMask); uint8_t ExpAllZeros = ((bits & ExpMask) == 0); uint8_t MantAllZeros = ((bits & MantMask) == 0); uint8_t ZeroNumber = ExpAllZeros & MantAllZeros; uint8_t SignalingBit = (bits >> 51) & 1; uint8_t result = 0; uint8_t qNaN_res = ExpAllOnes & (!MantAllZeros) & SignalingBit; uint8_t Pzero_res = (!NegNum) & ExpAllZeros & MantAllZeros; uint8_t Nzero_res = NegNum & ExpAllZeros & MantAllZeros; uint8_t Pinf_res = (!NegNum) & ExpAllOnes & MantAllZeros; uint8_t Ninf_res = NegNum & ExpAllOnes & MantAllZeros; uint8_t Denorm_res = ExpAllZeros & (!MantAllZeros); uint8_t FinNeg_res = NegNum & (!ExpAllOnes) & (!ZeroNumber); uint8_t sNaN_res = ExpAllOnes & (!MantAllZeros) & (!SignalingBit); result = (((imm8 >> 0) & qNaN_res) | ((imm8 >> 1) & Pzero_res) | ((imm8 >> 2) & Nzero_res) | ((imm8 >> 3) & Pinf_res) | ((imm8 >> 4) & Ninf_res) | ((imm8 >> 5) & Denorm_res) | ((imm8 >> 6) & FinNeg_res) | ((imm8 >> 7) & sNaN_res)); return result; } # 1463 "../test/arm/neon/../../../simde/simde-math.h" static inline double simde_math_cdfnorm(double x) { static const double a1 = 0.254829592; static const double a2 = -0.284496736; static const double a3 = 1.421413741; static const double a4 = -1.453152027; static const double a5 = 1.061405429; static const double p = 0.3275911; const int sign = x < 0; x = __builtin_fabs(x) / __builtin_sqrt(2.0); double t = 1.0 / (1.0 + p * x); double y = 1.0 - (((((a5 * t + a4) * t) + a3) * t + a2) * t + a1) * t * __builtin_exp(-x * x); return 0.5 * (1.0 + (sign ? -y : y)); } static inline float simde_math_cdfnormf(float x) { static const float a1 = 0.254829592f; static const float a2 = -0.284496736f; static const float a3 = 1.421413741f; static const float a4 = -1.453152027f; static const float a5 = 1.061405429f; static const float p = 0.3275911f; const int sign = x < 0; x = __builtin_fabsf(x) / __builtin_sqrtf(2.0f); float t = 1.0f / (1.0f + p * x); float y = 1.0f - (((((a5 * t + a4) * t) + a3) * t + a2) * t + a1) * t * __builtin_expf(-x * x); return 0.5f * (1.0f + (sign ? -y : y)); } static inline double simde_math_cdfnorminv(double p) { static const double a[6] = { -3.969683028665376e+01, 2.209460984245205e+02, -2.759285104469687e+02, 1.383577518672690e+02, -3.066479806614716e+01, 2.506628277459239e+00 }; static const double b[5] = { -5.447609879822406e+01, 1.615858368580409e+02, -1.556989798598866e+02, 6.680131188771972e+01, -1.328068155288572e+01 }; static const double c[6] = { -7.784894002430293e-03, -3.223964580411365e-01, -2.400758277161838e+00, -2.549732539343734e+00, 4.374664141464968e+00, 2.938163982698783e+00 }; static const double d[4] = { 7.784695709041462e-03, 3.224671290700398e-01, 2.445134137142996e+00, 3.754408661907416e+00 }; static const double low = 0.02425; static const double high = 0.97575; double q, r; if (p < 0 || p > 1) { return 0.0; } else if (p == 0) { return -(__builtin_inf()); } else if (p == 1) { return (__builtin_inf()); } else if (p < low) { q = __builtin_sqrt(-2.0 * __builtin_log(p)); return (((((c[0] * q + c[1]) * q + c[2]) * q + c[3]) * q + c[4]) * q + c[5]) / (((((d[0] * q + d[1]) * q + d[2]) * q + d[3]) * q + 1)); } else if (p > high) { q = __builtin_sqrt(-2.0 * __builtin_log(1.0 - p)); return -(((((c[0] * q + c[1]) * q + c[2]) * q + c[3]) * q + c[4]) * q + c[5]) / (((((d[0] * q + d[1]) * q + d[2]) * q + d[3]) * q + 1)); } else { q = p - 0.5; r = q * q; return (((((a[0] * r + a[1]) * r + a[2]) * r + a[3]) * r + a[4]) * r + a[5]) * q / (((((b[0] * r + b[1]) * r + b[2]) * r + b[3]) * r + b[4]) * r + 1); } } static inline float simde_math_cdfnorminvf(float p) { static const float a[6] = { -3.969683028665376e+01f, 2.209460984245205e+02f, -2.759285104469687e+02f, 1.383577518672690e+02f, -3.066479806614716e+01f, 2.506628277459239e+00f }; static const float b[5] = { -5.447609879822406e+01f, 1.615858368580409e+02f, -1.556989798598866e+02f, 6.680131188771972e+01f, -1.328068155288572e+01f }; static const float c[6] = { -7.784894002430293e-03f, -3.223964580411365e-01f, -2.400758277161838e+00f, -2.549732539343734e+00f, 4.374664141464968e+00f, 2.938163982698783e+00f }; static const float d[4] = { 7.784695709041462e-03f, 3.224671290700398e-01f, 2.445134137142996e+00f, 3.754408661907416e+00f }; static const float low = 0.02425f; static const float high = 0.97575f; float q, r; if (p < 0 || p > 1) { return 0.0f; } else if (p == 0) { return -(__builtin_inff()); } else if (p == 1) { return (__builtin_inff()); } else if (p < low) { q = __builtin_sqrtf(-2.0f * __builtin_logf(p)); return (((((c[0] * q + c[1]) * q + c[2]) * q + c[3]) * q + c[4]) * q + c[5]) / (((((d[0] * q + d[1]) * q + d[2]) * q + d[3]) * q + 1)); } else if (p > high) { q = __builtin_sqrtf(-2.0f * __builtin_logf(1.0f - p)); return -(((((c[0] * q + c[1]) * q + c[2]) * q + c[3]) * q + c[4]) * q + c[5]) / (((((d[0] * q + d[1]) * q + d[2]) * q + d[3]) * q + 1)); } else { q = p - 0.5f; r = q * q; return (((((a[0] * r + a[1]) * r + a[2]) * r + a[3]) * r + a[4]) * r + a[5]) * q / (((((b[0] * r + b[1]) * r + b[2]) * r + b[3]) * r + b[4]) * r + 1); } } static inline double simde_math_erfinv(double x) { # 1655 "../test/arm/neon/../../../simde/simde-math.h" double tt1, tt2, lnx; double sgn = __builtin_copysign(1.0, x); x = (1.0 - x) * (1.0 + x); lnx = __builtin_log(x); tt1 = 2.0 / (3.14159265358979323846 * 0.14829094707965850830078125) + 0.5 * lnx; tt2 = (1.0 / 0.14829094707965850830078125) * lnx; return sgn * __builtin_sqrt(-tt1 + __builtin_sqrt(tt1 * tt1 - tt2)); } static inline float simde_math_erfinvf(float x) { float tt1, tt2, lnx; float sgn = __builtin_copysignf(1.0f, x); x = (1.0f - x) * (1.0f + x); lnx = __builtin_logf(x); tt1 = 2.0f / (3.14159265358979323846f * 0.14829094707965850830078125f) + 0.5f * lnx; tt2 = (1.0f / 0.14829094707965850830078125f) * lnx; return sgn * __builtin_sqrtf(-tt1 + __builtin_sqrtf(tt1 * tt1 - tt2)); } static inline double simde_math_erfcinv(double x) { if(x >= 0.0625 && x < 2.0) { return simde_math_erfinv(1.0 - x); } else if (x < 0.0625 && x >= 1.0e-100) { static const double p[6] = { 0.1550470003116, 1.382719649631, 0.690969348887, -1.128081391617, 0.680544246825, -0.16444156791 }; static const double q[3] = { 0.155024849822, 1.385228141995, 1.000000000000 }; const double t = 1.0 / __builtin_sqrt(-__builtin_log(x)); return (p[0] / t + p[1] + t * (p[2] + t * (p[3] + t * (p[4] + t * p[5])))) / (q[0] + t * (q[1] + t * (q[2]))); } else if (x < 1.0e-100 && x >= ((double)2.22507385850720138309023271733240406e-308L)) { static const double p[4] = { 0.00980456202915, 0.363667889171, 0.97302949837, -0.5374947401 }; static const double q[3] = { 0.00980451277802, 0.363699971544, 1.000000000000 }; const double t = 1.0 / __builtin_sqrt(-__builtin_log(x)); return (p[0] / t + p[1] + t * (p[2] + t * p[3])) / (q[0] + t * (q[1] + t * (q[2]))); } else if (!__builtin_isnormal(x)) { return (__builtin_inf()); } else { return -(__builtin_inf()); } } static inline float simde_math_erfcinvf(float x) { if(x >= 0.0625f && x < 2.0f) { return simde_math_erfinvf(1.0f - x); } else if (x < 0.0625f && x >= 1.17549435082228750796873653722224568e-38F) { static const float p[6] = { 0.1550470003116f, 1.382719649631f, 0.690969348887f, -1.128081391617f, 0.680544246825f -0.164441567910f }; static const float q[3] = { 0.155024849822f, 1.385228141995f, 1.000000000000f }; const float t = 1.0f / __builtin_sqrtf(-__builtin_logf(x)); return (p[0] / t + p[1] + t * (p[2] + t * (p[3] + t * (p[4] + t * p[5])))) / (q[0] + t * (q[1] + t * (q[2]))); } else if (x < 1.17549435082228750796873653722224568e-38F && __builtin_isnormal(x)) { static const float p[4] = { 0.00980456202915f, 0.36366788917100f, 0.97302949837000f, -0.5374947401000f }; static const float q[3] = { 0.00980451277802f, 0.36369997154400f, 1.00000000000000f }; const float t = 1.0f / __builtin_sqrtf(-__builtin_logf(x)); return (p[0] / t + p[1] + t * (p[2] + t * p[3])) / (q[0] + t * (q[1] + t * (q[2]))); } else { return __builtin_isnormal(x) ? -(__builtin_inff()) : (__builtin_inff()); } } static inline double simde_math_rad2deg(double radians) { return radians * 57.295779513082320876798154814105170332405472466564321549160243861; } static inline float simde_math_rad2degf(float radians) { return radians * 57.295779513082320876798154814105170332405472466564321549160243861f; } static inline double simde_math_deg2rad(double degrees) { return degrees * 0.0174532925199432957692369076848861271344287188854172545609719144; } static inline float simde_math_deg2radf(float degrees) { return degrees * (0.0174532925199432957692369076848861271344287188854172545609719144f); } static inline int8_t simde_math_adds_i8(int8_t a, int8_t b) { uint8_t a_ = ((uint8_t) (a)); uint8_t b_ = ((uint8_t) (b)); uint8_t r_ = a_ + b_; a_ = (a_ >> ((8 * sizeof(r_)) - 1)) + # 1821 "../test/arm/neon/../../../simde/simde-math.h" 3 4 (127) # 1821 "../test/arm/neon/../../../simde/simde-math.h" ; if (((int8_t) (((a_ ^ b_) | ~(b_ ^ r_)))) >= 0) { r_ = a_; } return ((int8_t) (r_)); } static inline int16_t simde_math_adds_i16(int16_t a, int16_t b) { uint16_t a_ = ((uint16_t) (a)); uint16_t b_ = ((uint16_t) (b)); uint16_t r_ = a_ + b_; a_ = (a_ >> ((8 * sizeof(r_)) - 1)) + # 1840 "../test/arm/neon/../../../simde/simde-math.h" 3 4 (32767) # 1840 "../test/arm/neon/../../../simde/simde-math.h" ; if (((int16_t) (((a_ ^ b_) | ~(b_ ^ r_)))) >= 0) { r_ = a_; } return ((int16_t) (r_)); } static inline int32_t simde_math_adds_i32(int32_t a, int32_t b) { uint32_t a_ = ((uint32_t) (a)); uint32_t b_ = ((uint32_t) (b)); uint32_t r_ = a_ + b_; a_ = (a_ >> ((8 * sizeof(r_)) - 1)) + # 1859 "../test/arm/neon/../../../simde/simde-math.h" 3 4 (2147483647) # 1859 "../test/arm/neon/../../../simde/simde-math.h" ; if (((int32_t) (((a_ ^ b_) | ~(b_ ^ r_)))) >= 0) { r_ = a_; } return ((int32_t) (r_)); } static inline int64_t simde_math_adds_i64(int64_t a, int64_t b) { uint64_t a_ = ((uint64_t) (a)); uint64_t b_ = ((uint64_t) (b)); uint64_t r_ = a_ + b_; a_ = (a_ >> ((8 * sizeof(r_)) - 1)) + # 1878 "../test/arm/neon/../../../simde/simde-math.h" 3 4 (9223372036854775807L) # 1878 "../test/arm/neon/../../../simde/simde-math.h" ; if (((int64_t) (((a_ ^ b_) | ~(b_ ^ r_)))) >= 0) { r_ = a_; } return ((int64_t) (r_)); } static inline uint8_t simde_math_adds_u8(uint8_t a, uint8_t b) { uint8_t r = a + b; r |= -(r < a); return r; } static inline uint16_t simde_math_adds_u16(uint16_t a, uint16_t b) { uint16_t r = a + b; r |= -(r < a); return r; } static inline uint32_t simde_math_adds_u32(uint32_t a, uint32_t b) { uint32_t r = a + b; r |= -(r < a); return r; } static inline uint64_t simde_math_adds_u64(uint64_t a, uint64_t b) { uint64_t r = a + b; r |= -(r < a); return r; } static inline int8_t simde_math_subs_i8(int8_t a, int8_t b) { uint8_t a_ = ((uint8_t) (a)); uint8_t b_ = ((uint8_t) (b)); uint8_t r_ = a_ - b_; a_ = (a_ >> 7) + # 1945 "../test/arm/neon/../../../simde/simde-math.h" 3 4 (127) # 1945 "../test/arm/neon/../../../simde/simde-math.h" ; if (((int8_t) ((a_ ^ b_) & (a_ ^ r_))) < 0) { r_ = a_; } return ((int8_t) (r_)); } static inline int16_t simde_math_subs_i16(int16_t a, int16_t b) { uint16_t a_ = ((uint16_t) (a)); uint16_t b_ = ((uint16_t) (b)); uint16_t r_ = a_ - b_; a_ = (a_ >> 15) + # 1965 "../test/arm/neon/../../../simde/simde-math.h" 3 4 (32767) # 1965 "../test/arm/neon/../../../simde/simde-math.h" ; if (((int16_t) ((a_ ^ b_) & (a_ ^ r_))) < 0) { r_ = a_; } return ((int16_t) (r_)); } static inline int32_t simde_math_subs_i32(int32_t a, int32_t b) { uint32_t a_ = ((uint32_t) (a)); uint32_t b_ = ((uint32_t) (b)); uint32_t r_ = a_ - b_; a_ = (a_ >> 31) + # 1985 "../test/arm/neon/../../../simde/simde-math.h" 3 4 (2147483647) # 1985 "../test/arm/neon/../../../simde/simde-math.h" ; if (((int32_t) ((a_ ^ b_) & (a_ ^ r_))) < 0) { r_ = a_; } return ((int32_t) (r_)); } static inline int64_t simde_math_subs_i64(int64_t a, int64_t b) { uint64_t a_ = ((uint64_t) (a)); uint64_t b_ = ((uint64_t) (b)); uint64_t r_ = a_ - b_; a_ = (a_ >> 63) + # 2005 "../test/arm/neon/../../../simde/simde-math.h" 3 4 (9223372036854775807L) # 2005 "../test/arm/neon/../../../simde/simde-math.h" ; if (((int64_t) ((a_ ^ b_) & (a_ ^ r_))) < 0) { r_ = a_; } return ((int64_t) (r_)); } static inline uint8_t simde_math_subs_u8(uint8_t a, uint8_t b) { uint8_t res = a - b; res &= -(res <= a); return res; } static inline uint16_t simde_math_subs_u16(uint16_t a, uint16_t b) { uint16_t res = a - b; res &= -(res <= a); return res; } static inline uint32_t simde_math_subs_u32(uint32_t a, uint32_t b) { uint32_t res = a - b; res &= -(res <= a); return res; } static inline uint64_t simde_math_subs_u64(uint64_t a, uint64_t b) { uint64_t res = a - b; res &= -(res <= a); return res; } # 2063 "../test/arm/neon/../../../simde/simde-math.h" #pragma GCC diagnostic pop # 48 "../test/arm/neon/../../../simde/simde-common.h" 2 # 1 "../test/arm/neon/../../../simde/simde-constify.h" 1 # 55 "../test/arm/neon/../../../simde/simde-constify.h" # 55 "../test/arm/neon/../../../simde/simde-constify.h" #pragma GCC diagnostic push # 56 "../test/arm/neon/../../../simde/simde-constify.h" #pragma GCC diagnostic ignored "-Wvariadic-macros" # 395 "../test/arm/neon/../../../simde/simde-constify.h" # 395 "../test/arm/neon/../../../simde/simde-constify.h" #pragma GCC diagnostic pop # 49 "../test/arm/neon/../../../simde/simde-common.h" 2 # 1 "../test/arm/neon/../../../simde/simde-align.h" 1 # 55 "../test/arm/neon/../../../simde/simde-align.h" # 1 "../test/arm/neon/../../../simde/hedley.h" 1 # 56 "../test/arm/neon/../../../simde/simde-align.h" 2 # 50 "../test/arm/neon/../../../simde/simde-common.h" 2 # 292 "../test/arm/neon/../../../simde/simde-common.h" # 292 "../test/arm/neon/../../../simde/simde-common.h" #pragma GCC diagnostic push # 299 "../test/arm/neon/../../../simde/simde-common.h" #pragma GCC diagnostic ignored "-Wvariadic-macros" # 310 "../test/arm/neon/../../../simde/simde-common.h" # 310 "../test/arm/neon/../../../simde/simde-common.h" #pragma GCC diagnostic pop # 426 "../test/arm/neon/../../../simde/simde-common.h" # 426 "../test/arm/neon/../../../simde/simde-common.h" #pragma GCC diagnostic push # 444 "../test/arm/neon/../../../simde/simde-common.h" # 444 "../test/arm/neon/../../../simde/simde-common.h" #pragma GCC diagnostic push # 445 "../test/arm/neon/../../../simde/simde-common.h" #pragma GCC diagnostic ignored "-Wpedantic" typedef __int128 simde_int128; typedef unsigned __int128 simde_uint128; # 448 "../test/arm/neon/../../../simde/simde-common.h" #pragma GCC diagnostic pop # 557 "../test/arm/neon/../../../simde/simde-common.h" typedef float simde_float32; typedef double simde_float64; # 577 "../test/arm/neon/../../../simde/simde-common.h" typedef uint8_t simde_poly8; # 589 "../test/arm/neon/../../../simde/simde-common.h" typedef uint16_t simde_poly16; # 601 "../test/arm/neon/../../../simde/simde-common.h" typedef uint64_t simde_poly64; # 616 "../test/arm/neon/../../../simde/simde-common.h" typedef __int128 simde_poly128; typedef _Bool simde_bool; # 770 "../test/arm/neon/../../../simde/simde-common.h" static inline double simde_math_quiet(double x) { uint64_t tmp, mask; if (!__builtin_isnan(x)) { return x; } __builtin_memcpy(&tmp, &x, 8); mask = 0x7ff80000; mask <<= 32; tmp |= mask; __builtin_memcpy(&x, &tmp, 8); return x; } static inline float simde_math_quietf(float x) { uint32_t tmp; if (!__builtin_isnanf(x)) { return x; } __builtin_memcpy(&tmp, &x, 4); tmp |= 0x7fc00000lu; __builtin_memcpy(&x, &tmp, 4); return x; } # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/fenv.h" 1 3 4 # 26 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/fenv.h" 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/libc-header-start.h" 1 3 4 # 27 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/fenv.h" 2 3 4 # 64 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/fenv.h" 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/fenv.h" 1 3 4 # 23 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/fenv.h" 3 4 # 23 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/fenv.h" 3 4 enum { FE_INEXACT = (0x01), FE_UNDERFLOW = (0x02), FE_OVERFLOW = (0x04), FE_DIVBYZERO = (0x08), FE_INVALID = (0x10) }; enum { FE_TONEAREST = (0x0), FE_TOWARDZERO = (0x1), FE_DOWNWARD = (0x2), FE_UPWARD = (0x3) }; typedef unsigned int fexcept_t; typedef unsigned int fenv_t; # 65 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/fenv.h" 2 3 4 extern int feclearexcept (int __excepts) __attribute__ ((__nothrow__ , __leaf__)); extern int fegetexceptflag (fexcept_t *__flagp, int __excepts) __attribute__ ((__nothrow__ , __leaf__)); extern int feraiseexcept (int __excepts) __attribute__ ((__nothrow__ , __leaf__)); # 88 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/fenv.h" 3 4 extern int fesetexceptflag (const fexcept_t *__flagp, int __excepts) __attribute__ ((__nothrow__ , __leaf__)); extern int fetestexcept (int __excepts) __attribute__ ((__nothrow__ , __leaf__)); # 104 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/fenv.h" 3 4 extern int fegetround (void) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)); extern int fesetround (int __rounding_direction) __attribute__ ((__nothrow__ , __leaf__)); extern int fegetenv (fenv_t *__envp) __attribute__ ((__nothrow__ , __leaf__)); extern int feholdexcept (fenv_t *__envp) __attribute__ ((__nothrow__ , __leaf__)); extern int fesetenv (const fenv_t *__envp) __attribute__ ((__nothrow__ , __leaf__)); extern int feupdateenv (const fenv_t *__envp) __attribute__ ((__nothrow__ , __leaf__)); # 168 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/fenv.h" 3 4 # 803 "../test/arm/neon/../../../simde/simde-common.h" 2 # 814 "../test/arm/neon/../../../simde/simde-common.h" # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdlib.h" 1 3 4 # 26 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdlib.h" 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/libc-header-start.h" 1 3 4 # 27 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdlib.h" 2 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/lib/gcc/riscv64-unknown-linux-gnu/13.2.0/include/stddef.h" 1 3 4 # 33 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdlib.h" 2 3 4 # 59 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdlib.h" 3 4 typedef struct { int quot; int rem; } div_t; typedef struct { long int quot; long int rem; } ldiv_t; __extension__ typedef struct { long long int quot; long long int rem; } lldiv_t; # 98 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdlib.h" 3 4 extern size_t __ctype_get_mb_cur_max (void) __attribute__ ((__nothrow__ , __leaf__)) ; extern double atof (const char *__nptr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ; extern int atoi (const char *__nptr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ; extern long int atol (const char *__nptr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ; __extension__ extern long long int atoll (const char *__nptr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ; extern double strtod (const char *__restrict __nptr, char **__restrict __endptr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern float strtof (const char *__restrict __nptr, char **__restrict __endptr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern long double strtold (const char *__restrict __nptr, char **__restrict __endptr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); # 177 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdlib.h" 3 4 extern long int strtol (const char *__restrict __nptr, char **__restrict __endptr, int __base) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern unsigned long int strtoul (const char *__restrict __nptr, char **__restrict __endptr, int __base) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); # 200 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdlib.h" 3 4 __extension__ extern long long int strtoll (const char *__restrict __nptr, char **__restrict __endptr, int __base) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); __extension__ extern unsigned long long int strtoull (const char *__restrict __nptr, char **__restrict __endptr, int __base) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); # 480 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdlib.h" 3 4 extern __inline __attribute__ ((__gnu_inline__)) int __attribute__ ((__nothrow__ , __leaf__)) atoi (const char *__nptr) { return (int) strtol (__nptr, (char **) ((void *)0), 10); } extern __inline __attribute__ ((__gnu_inline__)) long int __attribute__ ((__nothrow__ , __leaf__)) atol (const char *__nptr) { return strtol (__nptr, (char **) ((void *)0), 10); } __extension__ extern __inline __attribute__ ((__gnu_inline__)) long long int __attribute__ ((__nothrow__ , __leaf__)) atoll (const char *__nptr) { return strtoll (__nptr, (char **) ((void *)0), 10); } # 573 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdlib.h" 3 4 extern int rand (void) __attribute__ ((__nothrow__ , __leaf__)); extern void srand (unsigned int __seed) __attribute__ ((__nothrow__ , __leaf__)); # 672 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdlib.h" 3 4 extern void *malloc (size_t __size) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__)) __attribute__ ((__alloc_size__ (1))) ; extern void *calloc (size_t __nmemb, size_t __size) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__)) __attribute__ ((__alloc_size__ (1, 2))) ; extern void *realloc (void *__ptr, size_t __size) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)) __attribute__ ((__alloc_size__ (2))); extern void free (void *__ptr) __attribute__ ((__nothrow__ , __leaf__)); # 730 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdlib.h" 3 4 extern void abort (void) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__noreturn__)); extern int atexit (void (*__func) (void)) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); # 756 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdlib.h" 3 4 extern void exit (int __status) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__noreturn__)); # 768 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdlib.h" 3 4 extern void _Exit (int __status) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__noreturn__)); extern char *getenv (const char *__name) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) ; # 923 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdlib.h" 3 4 extern int system (const char *__command) ; # 948 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdlib.h" 3 4 typedef int (*__compar_fn_t) (const void *, const void *); # 960 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdlib.h" 3 4 extern void *bsearch (const void *__key, const void *__base, size_t __nmemb, size_t __size, __compar_fn_t __compar) __attribute__ ((__nonnull__ (1, 2, 5))) ; # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/stdlib-bsearch.h" 1 3 4 # 19 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/stdlib-bsearch.h" 3 4 extern __inline __attribute__ ((__gnu_inline__)) void * bsearch (const void *__key, const void *__base, size_t __nmemb, size_t __size, __compar_fn_t __compar) { size_t __l, __u, __idx; const void *__p; int __comparison; __l = 0; __u = __nmemb; while (__l < __u) { __idx = (__l + __u) / 2; __p = (const void *) (((const char *) __base) + (__idx * __size)); __comparison = (*__compar) (__key, __p); if (__comparison < 0) __u = __idx; else if (__comparison > 0) __l = __idx + 1; else { #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wcast-qual" return (void *) __p; #pragma GCC diagnostic pop } } return ((void *)0); } # 966 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdlib.h" 2 3 4 extern void qsort (void *__base, size_t __nmemb, size_t __size, __compar_fn_t __compar) __attribute__ ((__nonnull__ (1, 4))); # 980 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdlib.h" 3 4 extern int abs (int __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)) ; extern long int labs (long int __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)) ; __extension__ extern long long int llabs (long long int __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)) ; extern div_t div (int __numer, int __denom) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)) ; extern ldiv_t ldiv (long int __numer, long int __denom) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)) ; __extension__ extern lldiv_t lldiv (long long int __numer, long long int __denom) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)) ; # 1062 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdlib.h" 3 4 extern int mblen (const char *__s, size_t __n) __attribute__ ((__nothrow__ , __leaf__)); extern int mbtowc (wchar_t *__restrict __pwc, const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__ , __leaf__)); extern int wctomb (char *__s, wchar_t __wchar) __attribute__ ((__nothrow__ , __leaf__)); extern size_t mbstowcs (wchar_t *__restrict __pwcs, const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__access__ (__read_only__, 2))); extern size_t wcstombs (char *__restrict __s, const wchar_t *__restrict __pwcs, size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__access__ (__write_only__, 1, 3))) __attribute__ ((__access__ (__read_only__, 2))); # 1155 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdlib.h" 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/stdlib-float.h" 1 3 4 # 24 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/stdlib-float.h" 3 4 extern __inline __attribute__ ((__gnu_inline__)) double __attribute__ ((__nothrow__ , __leaf__)) atof (const char *__nptr) { return strtod (__nptr, (char **) ((void *)0)); } # 1156 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdlib.h" 2 3 4 # 1167 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdlib.h" 3 4 # 815 "../test/arm/neon/../../../simde/simde-common.h" 2 # 845 "../test/arm/neon/../../../simde/simde-common.h" # 845 "../test/arm/neon/../../../simde/simde-common.h" static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) uint32_t simde_float32_as_uint32 (simde_float32 value) { uint32_t r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_float32 simde_uint32_as_float32 (uint32_t value) { simde_float32 r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) uint64_t simde_float64_as_uint64 (simde_float64 value) { uint64_t r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_float64 simde_uint64_as_float64 (uint64_t value) { simde_float64 r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } # 1 "../test/arm/neon/../../../simde/check.h" 1 # 20 "../test/arm/neon/../../../simde/check.h" # 1 "../test/arm/neon/../../../simde/hedley.h" 1 # 21 "../test/arm/neon/../../../simde/check.h" 2 # 49 "../test/arm/neon/../../../simde/check.h" # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdio.h" 1 3 4 # 27 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdio.h" 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/libc-header-start.h" 1 3 4 # 28 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdio.h" 2 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/lib/gcc/riscv64-unknown-linux-gnu/13.2.0/include/stddef.h" 1 3 4 # 34 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdio.h" 2 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/lib/gcc/riscv64-unknown-linux-gnu/13.2.0/include/stdarg.h" 1 3 4 # 40 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/lib/gcc/riscv64-unknown-linux-gnu/13.2.0/include/stdarg.h" 3 4 # 40 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/lib/gcc/riscv64-unknown-linux-gnu/13.2.0/include/stdarg.h" 3 4 typedef __builtin_va_list __gnuc_va_list; # 37 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdio.h" 2 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/types/__fpos_t.h" 1 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/types/__mbstate_t.h" 1 3 4 # 13 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/types/__mbstate_t.h" 3 4 typedef struct { int __count; union { unsigned int __wch; char __wchb[4]; } __value; } __mbstate_t; # 6 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/types/__fpos_t.h" 2 3 4 typedef struct _G_fpos_t { __off_t __pos; __mbstate_t __state; } __fpos_t; # 40 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdio.h" 2 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/types/__fpos64_t.h" 1 3 4 # 10 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/types/__fpos64_t.h" 3 4 typedef struct _G_fpos64_t { __off64_t __pos; __mbstate_t __state; } __fpos64_t; # 41 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdio.h" 2 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/types/__FILE.h" 1 3 4 struct _IO_FILE; typedef struct _IO_FILE __FILE; # 42 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdio.h" 2 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/types/FILE.h" 1 3 4 struct _IO_FILE; typedef struct _IO_FILE FILE; # 43 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdio.h" 2 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/types/struct_FILE.h" 1 3 4 # 35 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/types/struct_FILE.h" 3 4 struct _IO_FILE; struct _IO_marker; struct _IO_codecvt; struct _IO_wide_data; typedef void _IO_lock_t; struct _IO_FILE { int _flags; char *_IO_read_ptr; char *_IO_read_end; char *_IO_read_base; char *_IO_write_base; char *_IO_write_ptr; char *_IO_write_end; char *_IO_buf_base; char *_IO_buf_end; char *_IO_save_base; char *_IO_backup_base; char *_IO_save_end; struct _IO_marker *_markers; struct _IO_FILE *_chain; int _fileno; int _flags2; __off_t _old_offset; unsigned short _cur_column; signed char _vtable_offset; char _shortbuf[1]; _IO_lock_t *_lock; __off64_t _offset; struct _IO_codecvt *_codecvt; struct _IO_wide_data *_wide_data; struct _IO_FILE *_freeres_list; void *_freeres_buf; size_t __pad5; int _mode; char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)]; }; # 44 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdio.h" 2 3 4 # 86 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdio.h" 3 4 typedef __fpos64_t fpos_t; # 128 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdio.h" 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/stdio_lim.h" 1 3 4 # 129 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdio.h" 2 3 4 # 148 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdio.h" 3 4 extern FILE *stdin; extern FILE *stdout; extern FILE *stderr; extern int remove (const char *__filename) __attribute__ ((__nothrow__ , __leaf__)); extern int rename (const char *__old, const char *__new) __attribute__ ((__nothrow__ , __leaf__)); # 183 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdio.h" 3 4 extern int fclose (FILE *__stream) __attribute__ ((__nonnull__ (1))); # 197 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdio.h" 3 4 extern FILE *tmpfile (void) __asm__ ("" "tmpfile64") __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) ; # 210 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdio.h" 3 4 extern char *tmpnam (char[20]) __attribute__ ((__nothrow__ , __leaf__)) ; # 235 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdio.h" 3 4 extern int fflush (FILE *__stream); # 275 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdio.h" 3 4 extern FILE *fopen (const char *__restrict __filename, const char *__restrict __modes) __asm__ ("" "fopen64") __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) ; extern FILE *freopen (const char *__restrict __filename, const char *__restrict __modes, FILE *__restrict __stream) __asm__ ("" "freopen64") ; # 333 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdio.h" 3 4 extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) __attribute__ ((__nothrow__ , __leaf__)); extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf, int __modes, size_t __n) __attribute__ ((__nothrow__ , __leaf__)); # 355 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdio.h" 3 4 extern int fprintf (FILE *__restrict __stream, const char *__restrict __format, ...); extern int printf (const char *__restrict __format, ...); extern int sprintf (char *__restrict __s, const char *__restrict __format, ...) __attribute__ ((__nothrow__)); extern int vfprintf (FILE *__restrict __s, const char *__restrict __format, __gnuc_va_list __arg); extern int vprintf (const char *__restrict __format, __gnuc_va_list __arg); extern int vsprintf (char *__restrict __s, const char *__restrict __format, __gnuc_va_list __arg) __attribute__ ((__nothrow__)); extern int snprintf (char *__restrict __s, size_t __maxlen, const char *__restrict __format, ...) __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 4))); extern int vsnprintf (char *__restrict __s, size_t __maxlen, const char *__restrict __format, __gnuc_va_list __arg) __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 0))); # 420 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdio.h" 3 4 extern int fscanf (FILE *__restrict __stream, const char *__restrict __format, ...) ; extern int scanf (const char *__restrict __format, ...) ; extern int sscanf (const char *__restrict __s, const char *__restrict __format, ...) __attribute__ ((__nothrow__ , __leaf__)); # 460 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdio.h" 3 4 extern int fscanf (FILE *__restrict __stream, const char *__restrict __format, ...) __asm__ ("" "__isoc99_fscanf") ; extern int scanf (const char *__restrict __format, ...) __asm__ ("" "__isoc99_scanf") ; extern int sscanf (const char *__restrict __s, const char *__restrict __format, ...) __asm__ ("" "__isoc99_sscanf") __attribute__ ((__nothrow__ , __leaf__)) ; # 486 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdio.h" 3 4 extern int vfscanf (FILE *__restrict __s, const char *__restrict __format, __gnuc_va_list __arg) __attribute__ ((__format__ (__scanf__, 2, 0))) ; extern int vscanf (const char *__restrict __format, __gnuc_va_list __arg) __attribute__ ((__format__ (__scanf__, 1, 0))) ; extern int vsscanf (const char *__restrict __s, const char *__restrict __format, __gnuc_va_list __arg) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__format__ (__scanf__, 2, 0))); # 536 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdio.h" 3 4 extern int vfscanf (FILE *__restrict __s, const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc99_vfscanf") __attribute__ ((__format__ (__scanf__, 2, 0))) ; extern int vscanf (const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc99_vscanf") __attribute__ ((__format__ (__scanf__, 1, 0))) ; extern int vsscanf (const char *__restrict __s, const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc99_vsscanf") __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__format__ (__scanf__, 2, 0))); # 571 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdio.h" 3 4 extern int fgetc (FILE *__stream); extern int getc (FILE *__stream); extern int getchar (void); # 607 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdio.h" 3 4 extern int fputc (int __c, FILE *__stream); extern int putc (int __c, FILE *__stream); extern int putchar (int __c); # 650 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdio.h" 3 4 extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream) __attribute__ ((__access__ (__write_only__, 1, 2))); # 663 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdio.h" 3 4 extern char *gets (char *__s) __attribute__ ((__deprecated__)); # 713 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdio.h" 3 4 extern int fputs (const char *__restrict __s, FILE *__restrict __stream); extern int puts (const char *__s); extern int ungetc (int __c, FILE *__stream); extern size_t fread (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) ; extern size_t fwrite (const void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __s); # 771 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdio.h" 3 4 extern int fseek (FILE *__stream, long int __off, int __whence); extern long int ftell (FILE *__stream) ; extern void rewind (FILE *__stream); # 826 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdio.h" 3 4 extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos) __asm__ ("" "fgetpos64") ; extern int fsetpos (FILE *__stream, const fpos_t *__pos) __asm__ ("" "fsetpos64") ; # 844 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdio.h" 3 4 extern void clearerr (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)); extern int feof (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) ; extern int ferror (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) ; # 862 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdio.h" 3 4 extern void perror (const char *__s) __attribute__ ((__cold__)); # 943 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdio.h" 3 4 extern int __uflow (FILE *); extern int __overflow (FILE *, int); # 960 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdio.h" 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/stdio.h" 1 3 4 # 38 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/stdio.h" 3 4 extern __inline __attribute__ ((__gnu_inline__)) int vprintf (const char *__restrict __fmt, __gnuc_va_list __arg) { return vfprintf (stdout, __fmt, __arg); } extern __inline __attribute__ ((__gnu_inline__)) int getchar (void) { return getc (stdin); } # 81 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/stdio.h" 3 4 extern __inline __attribute__ ((__gnu_inline__)) int putchar (int __c) { return putc (__c, stdout); } # 961 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/stdio.h" 2 3 4 # 50 "../test/arm/neon/../../../simde/check.h" 2 # 61 "../test/arm/neon/../../../simde/check.h" # 1 "../test/arm/neon/../../../simde/debug-trap.h" 1 # 58 "../test/arm/neon/../../../simde/debug-trap.h" # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/signal.h" 1 3 4 # 27 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/signal.h" 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/signum-generic.h" 1 3 4 # 76 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/signum-generic.h" 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/signum-arch.h" 1 3 4 # 77 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/signum-generic.h" 2 3 4 # 31 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/signal.h" 2 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/types/sig_atomic_t.h" 1 3 4 typedef __sig_atomic_t sig_atomic_t; # 33 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/signal.h" 2 3 4 # 72 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/signal.h" 3 4 typedef void (*__sighandler_t) (int); extern __sighandler_t __sysv_signal (int __sig, __sighandler_t __handler) __attribute__ ((__nothrow__ , __leaf__)); # 93 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/signal.h" 3 4 extern __sighandler_t signal (int __sig, __sighandler_t __handler) __asm__ ("" "__sysv_signal") __attribute__ ((__nothrow__ , __leaf__)) ; # 123 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/signal.h" 3 4 extern int raise (int __sig) __attribute__ ((__nothrow__ , __leaf__)); # 383 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/signal.h" 3 4 extern int __libc_current_sigrtmin (void) __attribute__ ((__nothrow__ , __leaf__)); extern int __libc_current_sigrtmax (void) __attribute__ ((__nothrow__ , __leaf__)); # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/signal_ext.h" 1 3 4 # 392 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/signal.h" 2 3 4 # 59 "../test/arm/neon/../../../simde/debug-trap.h" 2 # 62 "../test/arm/neon/../../../simde/check.h" 2 # 63 "../test/arm/neon/../../../simde/check.h" #pragma GCC diagnostic push # 64 "../test/arm/neon/../../../simde/check.h" #pragma GCC diagnostic ignored "-Wvariadic-macros" # 70 "../test/arm/neon/../../../simde/check.h" #pragma GCC diagnostic pop # 851 "../test/arm/neon/../../../simde/simde-common.h" 2 # 863 "../test/arm/neon/../../../simde/simde-common.h" # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/lib/gcc/riscv64-unknown-linux-gnu/13.2.0/include/limits.h" 1 3 4 # 34 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/lib/gcc/riscv64-unknown-linux-gnu/13.2.0/include/limits.h" 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/lib/gcc/riscv64-unknown-linux-gnu/13.2.0/include/syslimits.h" 1 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/lib/gcc/riscv64-unknown-linux-gnu/13.2.0/include/limits.h" 1 3 4 # 205 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/lib/gcc/riscv64-unknown-linux-gnu/13.2.0/include/limits.h" 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/limits.h" 1 3 4 # 26 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/limits.h" 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/libc-header-start.h" 1 3 4 # 27 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/limits.h" 2 3 4 # 206 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/lib/gcc/riscv64-unknown-linux-gnu/13.2.0/include/limits.h" 2 3 4 # 8 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/lib/gcc/riscv64-unknown-linux-gnu/13.2.0/include/syslimits.h" 2 3 4 # 35 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/lib/gcc/riscv64-unknown-linux-gnu/13.2.0/include/limits.h" 2 3 4 # 864 "../test/arm/neon/../../../simde/simde-common.h" 2 # 865 "../test/arm/neon/../../../simde/simde-common.h" #pragma GCC diagnostic push # 913 "../test/arm/neon/../../../simde/simde-common.h" # 913 "../test/arm/neon/../../../simde/simde-common.h" #pragma GCC diagnostic pop # 1228 "../test/arm/neon/../../../simde/simde-common.h" # 1228 "../test/arm/neon/../../../simde/simde-common.h" #pragma GCC diagnostic pop # 6 "../test/arm/neon/../../test.h" 2 # 1 "../test/arm/neon/../../../simde/simde-f16.h" 1 # 28 "../test/arm/neon/../../../simde/simde-f16.h" # 1 "../test/arm/neon/../../../simde/hedley.h" 1 # 29 "../test/arm/neon/../../../simde/simde-f16.h" 2 # 1 "../test/arm/neon/../../../simde/simde-common.h" 1 # 30 "../test/arm/neon/../../../simde/simde-f16.h" 2 # 35 "../test/arm/neon/../../../simde/simde-f16.h" #pragma GCC diagnostic push # 36 "../test/arm/neon/../../../simde/simde-f16.h" #pragma GCC diagnostic ignored "-Wunused-function" # 36 "../test/arm/neon/../../../simde/simde-f16.h" # 36 "../test/arm/neon/../../../simde/simde-f16.h" #pragma GCC diagnostic ignored "-Wpsabi" # 36 "../test/arm/neon/../../../simde/simde-f16.h" # 36 "../test/arm/neon/../../../simde/simde-f16.h" #pragma GCC diagnostic ignored "-Wfloat-equal" # 36 "../test/arm/neon/../../../simde/simde-f16.h" # 36 "../test/arm/neon/../../../simde/simde-f16.h" #pragma GCC diagnostic ignored "-Wvla" # 37 "../test/arm/neon/../../../simde/simde-f16.h" #pragma GCC diagnostic push # 118 "../test/arm/neon/../../../simde/simde-f16.h" typedef struct { uint16_t value; } simde_float16; # 134 "../test/arm/neon/../../../simde/simde-f16.h" static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) uint16_t simde_float16_as_uint16 (simde_float16 value) { uint16_t r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_float16 simde_uint16_as_float16 (uint16_t value) { simde_float16 r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } # 173 "../test/arm/neon/../../../simde/simde-f16.h" static __attribute__((__always_inline__)) inline __attribute__((__const__)) simde_float16 simde_float16_from_float32 (simde_float32 value) { simde_float16 res; # 186 "../test/arm/neon/../../../simde/simde-f16.h" uint32_t f32u = simde_float32_as_uint32(value); static const uint32_t f32u_infty = 255U << 23; static const uint32_t f16u_max = (127U + 16U) << 23; static const uint32_t denorm_magic = ((127U - 15U) + (23U - 10U) + 1U) << 23; uint16_t f16u; uint32_t sign = f32u & (1U << 31); f32u ^= sign; if (f32u > f16u_max) { f16u = (f32u > f32u_infty) ? 0x7e00U : 0x7c00U; } else { if (f32u < (113U << 23)) { f32u = simde_float32_as_uint32(simde_uint32_as_float32(f32u) + simde_uint32_as_float32(denorm_magic)); f16u = ((uint16_t) (f32u - denorm_magic)); } else { uint32_t mant_odd = (f32u >> 13) & 1; f32u += (((uint32_t) (15 - 127)) << 23) + 0xfffU; f32u += mant_odd; f16u = ((uint16_t) (f32u >> 13)); } } f16u |= sign >> 16; res = simde_uint16_as_float16(f16u); return res; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) simde_float32 simde_float16_to_float32 (simde_float16 value) { simde_float32 res; uint16_t half = simde_float16_as_uint16(value); const simde_float32 denorm_magic = simde_uint32_as_float32((113U << 23)); const uint32_t shifted_exp = 0x7c00U << 13; uint32_t f32u; f32u = (half & 0x7fffU) << 13; uint32_t exp = shifted_exp & f32u; f32u += (127U - 15U) << 23; if (exp == shifted_exp) f32u += (128U - 16U) << 23; else if (exp == 0) { f32u += (1) << 23; f32u = simde_float32_as_uint32(simde_uint32_as_float32(f32u) - denorm_magic); } f32u |= (half & 0x8000U) << 16; res = simde_uint32_as_float32(f32u); return res; } # 285 "../test/arm/neon/../../../simde/simde-f16.h" static inline uint8_t simde_fpclasshf(simde_float16 v, const int imm8) { uint16_t bits = simde_float16_as_uint16(v); uint8_t negative = (bits >> 15) & 1; uint16_t const ExpMask = 0x7C00; uint16_t const MantMask = 0x03FF; uint8_t exponent_all_ones = ((bits & ExpMask) == ExpMask); uint8_t exponent_all_zeros = ((bits & ExpMask) == 0); uint8_t mantissa_all_zeros = ((bits & MantMask) == 0); uint8_t zero = exponent_all_zeros & mantissa_all_zeros; uint8_t signaling_bit = (bits >> 9) & 1; uint8_t result = 0; uint8_t snan = exponent_all_ones & (!mantissa_all_zeros) & (!signaling_bit); uint8_t qnan = exponent_all_ones & (!mantissa_all_zeros) & signaling_bit; uint8_t positive_zero = (!negative) & zero; uint8_t negative_zero = negative & zero; uint8_t positive_infinity = (!negative) & exponent_all_ones & mantissa_all_zeros; uint8_t negative_infinity = negative & exponent_all_ones & mantissa_all_zeros; uint8_t denormal = exponent_all_zeros & (!mantissa_all_zeros); uint8_t finite_negative = negative & (!exponent_all_ones) & (!zero); result = (((imm8 >> 0) & qnan) | ((imm8 >> 1) & positive_zero) | ((imm8 >> 2) & negative_zero) | ((imm8 >> 3) & positive_infinity) | ((imm8 >> 4) & negative_infinity) | ((imm8 >> 5) & denormal) | ((imm8 >> 6) & finite_negative) | ((imm8 >> 7) & snan)); return result; } # 318 "../test/arm/neon/../../../simde/simde-f16.h" #pragma GCC diagnostic pop # 319 "../test/arm/neon/../../../simde/simde-f16.h" #pragma GCC diagnostic pop # 7 "../test/arm/neon/../../test.h" 2 # 1 "../test/arm/neon/../../../simde/simde-bf16.h" 1 # 27 "../test/arm/neon/../../../simde/simde-bf16.h" # 1 "../test/arm/neon/../../../simde/hedley.h" 1 # 28 "../test/arm/neon/../../../simde/simde-bf16.h" 2 # 34 "../test/arm/neon/../../../simde/simde-bf16.h" #pragma GCC diagnostic push # 35 "../test/arm/neon/../../../simde/simde-bf16.h" #pragma GCC diagnostic ignored "-Wunused-function" # 35 "../test/arm/neon/../../../simde/simde-bf16.h" # 35 "../test/arm/neon/../../../simde/simde-bf16.h" #pragma GCC diagnostic ignored "-Wpsabi" # 35 "../test/arm/neon/../../../simde/simde-bf16.h" # 35 "../test/arm/neon/../../../simde/simde-bf16.h" #pragma GCC diagnostic ignored "-Wfloat-equal" # 35 "../test/arm/neon/../../../simde/simde-bf16.h" # 35 "../test/arm/neon/../../../simde/simde-bf16.h" #pragma GCC diagnostic ignored "-Wvla" # 36 "../test/arm/neon/../../../simde/simde-bf16.h" #pragma GCC diagnostic push # 61 "../test/arm/neon/../../../simde/simde-bf16.h" typedef struct { uint16_t value; } simde_bfloat16; static __attribute__((__always_inline__)) inline __attribute__((__const__)) simde_bfloat16 simde_bfloat16_from_float32 (simde_float32 value) { simde_bfloat16 res; char* src = ((char*) (&value)); uint8_t rounding = 0; if (src[1] & 0x80) rounding = 1; src[2] = ((char) ((((uint8_t) (src[2])) + rounding))); __builtin_memcpy(&res, src+2, sizeof(res)); return res; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) simde_float32 simde_bfloat16_to_float32 (simde_bfloat16 value) { simde_float32 res = 0.0; char* _res = ((char*) (&res)); __builtin_memcpy(_res+2, &value, sizeof(value)); return res; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_bfloat16 simde_uint16_as_bfloat16 (uint16_t value) { simde_bfloat16 r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } # 128 "../test/arm/neon/../../../simde/simde-bf16.h" # 128 "../test/arm/neon/../../../simde/simde-bf16.h" #pragma GCC diagnostic pop # 129 "../test/arm/neon/../../../simde/simde-bf16.h" #pragma GCC diagnostic pop # 8 "../test/arm/neon/../../test.h" 2 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/time.h" 1 3 4 # 29 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/time.h" 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/lib/gcc/riscv64-unknown-linux-gnu/13.2.0/include/stddef.h" 1 3 4 # 30 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/time.h" 2 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/time.h" 1 3 4 # 34 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/time.h" 2 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/types/clock_t.h" 1 3 4 # 7 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/types/clock_t.h" 3 4 typedef __clock_t clock_t; # 38 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/time.h" 2 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/types/time_t.h" 1 3 4 # 10 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/types/time_t.h" 3 4 typedef __time_t time_t; # 39 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/time.h" 2 3 4 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/bits/types/struct_tm.h" 1 3 4 struct tm { int tm_sec; int tm_min; int tm_hour; int tm_mday; int tm_mon; int tm_year; int tm_wday; int tm_yday; int tm_isdst; long int __tm_gmtoff; const char *__tm_zone; }; # 40 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/time.h" 2 3 4 # 68 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/time.h" 3 4 extern clock_t clock (void) __attribute__ ((__nothrow__ , __leaf__)); extern time_t time (time_t *__timer) __attribute__ ((__nothrow__ , __leaf__)); extern double difftime (time_t __time1, time_t __time0) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern time_t mktime (struct tm *__tp) __attribute__ ((__nothrow__ , __leaf__)); # 100 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/time.h" 3 4 extern size_t strftime (char *__restrict __s, size_t __maxsize, const char *__restrict __format, const struct tm *__restrict __tp) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3, 4))); # 133 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/time.h" 3 4 extern struct tm *gmtime (const time_t *__timer) __attribute__ ((__nothrow__ , __leaf__)); extern struct tm *localtime (const time_t *__timer) __attribute__ ((__nothrow__ , __leaf__)); # 180 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/time.h" 3 4 extern char *asctime (const struct tm *__tp) __attribute__ ((__nothrow__ , __leaf__)); extern char *ctime (const time_t *__timer) __attribute__ ((__nothrow__ , __leaf__)); # 218 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/time.h" 3 4 extern char *__tzname[2]; extern int __daylight; extern long int __timezone; # 453 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/time.h" 3 4 # 10 "../test/arm/neon/../../test.h" 2 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/inttypes.h" 1 3 4 # 34 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/inttypes.h" 3 4 typedef int __gwchar_t; # 327 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/inttypes.h" 3 4 typedef struct { long int quot; long int rem; } imaxdiv_t; # 351 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/inttypes.h" 3 4 extern intmax_t imaxabs (intmax_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern imaxdiv_t imaxdiv (intmax_t __numer, intmax_t __denom) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern intmax_t strtoimax (const char *__restrict __nptr, char **__restrict __endptr, int __base) __attribute__ ((__nothrow__ , __leaf__)); extern uintmax_t strtoumax (const char *__restrict __nptr, char ** __restrict __endptr, int __base) __attribute__ ((__nothrow__ , __leaf__)); extern intmax_t wcstoimax (const __gwchar_t *__restrict __nptr, __gwchar_t **__restrict __endptr, int __base) __attribute__ ((__nothrow__ , __leaf__)); extern uintmax_t wcstoumax (const __gwchar_t *__restrict __nptr, __gwchar_t ** __restrict __endptr, int __base) __attribute__ ((__nothrow__ , __leaf__)); # 415 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/sysroot/usr/include/inttypes.h" 3 4 # 13 "../test/arm/neon/../../test.h" 2 # 1 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/lib/gcc/riscv64-unknown-linux-gnu/13.2.0/include/stdarg.h" 1 3 4 # 103 "/home/zengzhijin/workspace/toolchain/gitlab/riscv-gnu-toolchain/build_docker_install/lib/gcc/riscv64-unknown-linux-gnu/13.2.0/include/stdarg.h" 3 4 typedef __gnuc_va_list va_list; # 14 "../test/arm/neon/../../test.h" 2 # 15 "../test/arm/neon/../../test.h" typedef enum SimdeTestVecPos { SIMDE_TEST_VEC_POS_SINGLE = 2, SIMDE_TEST_VEC_POS_FIRST = 1, SIMDE_TEST_VEC_POS_MIDDLE = 0, SIMDE_TEST_VEC_POS_LAST = -1 } SimdeTestVecPos; # 26 "../test/arm/neon/../../test.h" #pragma GCC diagnostic ignored "-Wvla" # 41 "../test/arm/neon/../../test.h" # 41 "../test/arm/neon/../../test.h" #pragma GCC diagnostic push # 42 "../test/arm/neon/../../test.h" #pragma GCC diagnostic ignored "-Wunused-function" # 44 "../test/arm/neon/../../test.h" #pragma GCC diagnostic ignored "-Wcast-function-type" # 93 "../test/arm/neon/../../test.h" __attribute__((__format__(__printf__, 1, 2))) static void simde_test_debug_printf_(const char* format, ...) { va_list ap; # 98 "../test/arm/neon/../../test.h" 3 4 __builtin_va_start( # 98 "../test/arm/neon/../../test.h" ap # 98 "../test/arm/neon/../../test.h" 3 4 , # 98 "../test/arm/neon/../../test.h" format # 98 "../test/arm/neon/../../test.h" 3 4 ) # 98 "../test/arm/neon/../../test.h" ; vfprintf( # 99 "../test/arm/neon/../../test.h" 3 4 stderr # 99 "../test/arm/neon/../../test.h" , format, ap); # 100 "../test/arm/neon/../../test.h" 3 4 __builtin_va_end( # 100 "../test/arm/neon/../../test.h" ap # 100 "../test/arm/neon/../../test.h" 3 4 ) # 100 "../test/arm/neon/../../test.h" ; fflush( # 101 "../test/arm/neon/../../test.h" 3 4 stderr # 101 "../test/arm/neon/../../test.h" ); # 111 "../test/arm/neon/../../test.h" } __attribute__((__format__(__printf__, 3, 4))) static void simde_test_codegen_snprintf_(char* str, size_t size, const char* format, ...) { va_list ap; int w; # 123 "../test/arm/neon/../../test.h" 3 4 __builtin_va_start( # 123 "../test/arm/neon/../../test.h" ap # 123 "../test/arm/neon/../../test.h" 3 4 , # 123 "../test/arm/neon/../../test.h" format # 123 "../test/arm/neon/../../test.h" 3 4 ) # 123 "../test/arm/neon/../../test.h" ; w = vsnprintf(str, size, format, ap); # 125 "../test/arm/neon/../../test.h" 3 4 __builtin_va_end( # 125 "../test/arm/neon/../../test.h" ap # 125 "../test/arm/neon/../../test.h" 3 4 ) # 125 "../test/arm/neon/../../test.h" ; if (w > ((int) (size))) { simde_test_debug_printf_("Not enough space to write value (given %zu bytes, need %d bytes)\n", size, w + 1); } } static void simde_test_codegen_f16(size_t buf_len, char buf[(buf_len)], simde_float16 value) { simde_float32 valuef = simde_float16_to_float32(value); if (__builtin_isnanf(simde_float16_to_float32(value))) { simde_test_codegen_snprintf_(buf, buf_len, " SIMDE_NANHF"); } else if (__builtin_isinff(simde_float16_to_float32(value))) { simde_test_codegen_snprintf_(buf, buf_len, "%5cSIMDE_INFINITYHF", valuef < 0 ? '-' : ' '); } else { simde_test_codegen_snprintf_(buf, buf_len, "SIMDE_FLOAT16_VALUE(%9.2f)", ((double) (valuef))); } } static void simde_test_codegen_f32(size_t buf_len, char buf[(buf_len)], simde_float32 value) { if (__builtin_isnan(value)) { simde_test_codegen_snprintf_(buf, buf_len, " SIMDE_MATH_NANF"); } else if (__builtin_isinf(value)) { simde_test_codegen_snprintf_(buf, buf_len, "%5cSIMDE_MATH_INFINITYF", value < 0 ? '-' : ' '); } else { simde_test_codegen_snprintf_(buf, buf_len, "SIMDE_FLOAT32_C(%9.2f)", ((double) (value))); } } static void simde_test_codegen_f64(size_t buf_len, char buf[(buf_len)], simde_float64 value) { if (__builtin_isnan(value)) { simde_test_codegen_snprintf_(buf, buf_len, " SIMDE_MATH_NAN"); } else if (__builtin_isinf(value)) { simde_test_codegen_snprintf_(buf, buf_len, "%7cSIMDE_MATH_INFINITY", value < 0 ? '-' : ' '); } else { simde_test_codegen_snprintf_(buf, buf_len, "SIMDE_FLOAT64_C(%9.2f)", ((double) (value))); } } static void simde_test_codegen_bf16(size_t buf_len, char buf[(buf_len)], simde_bfloat16 value) { simde_float32 valuef = simde_bfloat16_to_float32(value); if (__builtin_isnanf(simde_bfloat16_to_float32(value))) { simde_test_codegen_snprintf_(buf, buf_len, " SIMDE_NANBF"); } else if (__builtin_isinff(simde_bfloat16_to_float32(value))) { simde_test_codegen_snprintf_(buf, buf_len, "%5cSIMDE_INFINITYBF", valuef < 0 ? '-' : ' '); } else { simde_test_codegen_snprintf_(buf, buf_len, "SIMDE_BFLOAT16_VALUE(%9.2f)", ((double) (valuef))); } } static void simde_test_codegen_i8(size_t buf_len, char buf[(buf_len)], int8_t value) { if (value == # 180 "../test/arm/neon/../../test.h" 3 4 (-128) # 180 "../test/arm/neon/../../test.h" ) { simde_test_codegen_snprintf_(buf, buf_len, " INT8_MIN"); } else if (value == # 182 "../test/arm/neon/../../test.h" 3 4 (127) # 182 "../test/arm/neon/../../test.h" ) { simde_test_codegen_snprintf_(buf, buf_len, " INT8_MAX"); } else { simde_test_codegen_snprintf_(buf, buf_len, "%cINT8_C(%4" # 185 "../test/arm/neon/../../test.h" 3 4 "d" # 185 "../test/arm/neon/../../test.h" ")", (value < 0) ? '-' : ' ', ((int8_t) ((value < 0) ? -value : value))); } } static void simde_test_codegen_i16(size_t buf_len, char buf[(buf_len)], int16_t value) { if (value == # 191 "../test/arm/neon/../../test.h" 3 4 (-32767-1) # 191 "../test/arm/neon/../../test.h" ) { simde_test_codegen_snprintf_(buf, buf_len, "%16s", "INT16_MIN"); } else if (value == # 193 "../test/arm/neon/../../test.h" 3 4 (32767) # 193 "../test/arm/neon/../../test.h" ) { simde_test_codegen_snprintf_(buf, buf_len, "%16s", "INT16_MAX"); } else { simde_test_codegen_snprintf_(buf, buf_len, "%cINT16_C(%6" # 196 "../test/arm/neon/../../test.h" 3 4 "d" # 196 "../test/arm/neon/../../test.h" ")", (value < 0) ? '-' : ' ', ((int16_t) ((value < 0) ? -value : value))); } } static void simde_test_codegen_i32(size_t buf_len, char buf[(buf_len)], int32_t value) { if (value == # 202 "../test/arm/neon/../../test.h" 3 4 (-2147483647-1) # 202 "../test/arm/neon/../../test.h" ) { simde_test_codegen_snprintf_(buf, buf_len, "%22s", "INT32_MIN"); } else if (value == # 204 "../test/arm/neon/../../test.h" 3 4 (2147483647) # 204 "../test/arm/neon/../../test.h" ) { simde_test_codegen_snprintf_(buf, buf_len, "%22s", "INT32_MAX"); } else { simde_test_codegen_snprintf_(buf, buf_len, "%cINT32_C(%12" # 207 "../test/arm/neon/../../test.h" 3 4 "d" # 207 "../test/arm/neon/../../test.h" ")", (value < 0) ? '-' : ' ', ((int32_t) ((value < 0) ? -value : value))); } } static void simde_test_codegen_i64(size_t buf_len, char buf[(buf_len)], int64_t value) { if (value == # 213 "../test/arm/neon/../../test.h" 3 4 (-9223372036854775807L -1) # 213 "../test/arm/neon/../../test.h" ) { simde_test_codegen_snprintf_(buf, buf_len, "%30s", "INT64_MIN"); } else if (value == # 215 "../test/arm/neon/../../test.h" 3 4 (9223372036854775807L) # 215 "../test/arm/neon/../../test.h" ) { simde_test_codegen_snprintf_(buf, buf_len, "%30s", "INT64_MAX"); } else { simde_test_codegen_snprintf_(buf, buf_len, "%cINT64_C(%20" # 218 "../test/arm/neon/../../test.h" 3 4 "l" "d" # 218 "../test/arm/neon/../../test.h" ")", (value < 0) ? '-' : ' ', ((int64_t) ((value < 0) ? -value : value))); } } static void simde_test_codegen_u8(size_t buf_len, char buf[(buf_len)], uint8_t value) { if (value == # 224 "../test/arm/neon/../../test.h" 3 4 (255) # 224 "../test/arm/neon/../../test.h" ) { simde_test_codegen_snprintf_(buf, buf_len, " UINT8_MAX"); } else { simde_test_codegen_snprintf_(buf, buf_len, "UINT8_C(%3" # 227 "../test/arm/neon/../../test.h" 3 4 "u" # 227 "../test/arm/neon/../../test.h" ")", value); } } static void simde_test_codegen_u16(size_t buf_len, char buf[(buf_len)], uint16_t value) { if (value == # 233 "../test/arm/neon/../../test.h" 3 4 (65535) # 233 "../test/arm/neon/../../test.h" ) { simde_test_codegen_snprintf_(buf, buf_len, "%15s", "UINT16_MAX"); } else { simde_test_codegen_snprintf_(buf, buf_len, "UINT16_C(%5" # 236 "../test/arm/neon/../../test.h" 3 4 "u" # 236 "../test/arm/neon/../../test.h" ")", value); } } static void simde_test_codegen_u32(size_t buf_len, char buf[(buf_len)], uint32_t value) { if (value == # 242 "../test/arm/neon/../../test.h" 3 4 (4294967295U) # 242 "../test/arm/neon/../../test.h" ) { simde_test_codegen_snprintf_(buf, buf_len, "%20s", "UINT32_MAX"); } else { simde_test_codegen_snprintf_(buf, buf_len, "UINT32_C(%10" # 245 "../test/arm/neon/../../test.h" 3 4 "u" # 245 "../test/arm/neon/../../test.h" ")", value); } } static void simde_test_codegen_u64(size_t buf_len, char buf[(buf_len)], uint64_t value) { if (value == # 251 "../test/arm/neon/../../test.h" 3 4 (18446744073709551615UL) # 251 "../test/arm/neon/../../test.h" ) { simde_test_codegen_snprintf_(buf, buf_len, "%30s", "UINT64_MAX"); } else { simde_test_codegen_snprintf_(buf, buf_len, "UINT64_C(%20" # 254 "../test/arm/neon/../../test.h" 3 4 "l" "u" # 254 "../test/arm/neon/../../test.h" ")", value); } } static void simde_test_codegen_p8(size_t buf_len, char buf[(buf_len)], simde_poly8 value) { uint8_t value_ = ((uint8_t) (value)); if (value_ == # 261 "../test/arm/neon/../../test.h" 3 4 (255) # 261 "../test/arm/neon/../../test.h" ) { simde_test_codegen_snprintf_(buf, buf_len, " SIMDE_POLY8_C(UINT8_MAX)"); } else { simde_test_codegen_snprintf_(buf, buf_len, "SIMDE_POLY8_C(%3" # 264 "../test/arm/neon/../../test.h" 3 4 "u" # 264 "../test/arm/neon/../../test.h" ")", value_); } } static void simde_test_codegen_p16(size_t buf_len, char buf[(buf_len)], simde_poly16 value) { uint16_t value_ = ((uint16_t) (value)); if (value_ == # 271 "../test/arm/neon/../../test.h" 3 4 (65535) # 271 "../test/arm/neon/../../test.h" ) { simde_test_codegen_snprintf_(buf, buf_len, "%15s", "SIMDE_POLY16_C(UINT16_MAX)"); } else { simde_test_codegen_snprintf_(buf, buf_len, "SIMDE_POLY16_C(%5" # 274 "../test/arm/neon/../../test.h" 3 4 "u" # 274 "../test/arm/neon/../../test.h" ")", value_); } } static void simde_test_codegen_p64(size_t buf_len, char buf[(buf_len)], simde_poly64 value) { uint64_t value_ = ((uint64_t) (value)); if (value_ == # 281 "../test/arm/neon/../../test.h" 3 4 (18446744073709551615UL) # 281 "../test/arm/neon/../../test.h" ) { simde_test_codegen_snprintf_(buf, buf_len, "%30s", "SIMDE_POLY64_C(UINT64_MAX)"); } else { simde_test_codegen_snprintf_(buf, buf_len, "SIMDE_POLY64_C(%20" # 284 "../test/arm/neon/../../test.h" 3 4 "l" "u" # 284 "../test/arm/neon/../../test.h" ")", value_); } } static void simde_test_codegen_write_indent(int indent) { for (int i = 0 ; i < indent ; i++) { fputs(" ", # 291 "../test/arm/neon/../../test.h" 3 4 stderr # 291 "../test/arm/neon/../../test.h" ); } } static int simde_test_codegen_rand(void) { static int is_init = 0; if (__builtin_expect (!!(!is_init), 0 )) { FILE* fp = fopen("/dev/urandom", "r"); if (fp == # 301 "../test/arm/neon/../../test.h" 3 4 ((void *)0) # 301 "../test/arm/neon/../../test.h" ) fp = fopen("/dev/random", "r"); if (fp != # 304 "../test/arm/neon/../../test.h" 3 4 ((void *)0) # 304 "../test/arm/neon/../../test.h" ) { unsigned int seed; size_t nread = fread(&seed, sizeof(seed), 1, fp); fclose(fp); if (nread == 1) { srand(seed); is_init = 1; } } if (!is_init) { srand(((unsigned int) (time( # 316 "../test/arm/neon/../../test.h" 3 4 ((void *)0) # 316 "../test/arm/neon/../../test.h" )))); is_init = 1; } } return rand(); } static void simde_test_codegen_random_memory(size_t buf_len, uint8_t buf[(buf_len)]) { for (size_t i = 0 ; i < buf_len ; i++) { buf[i] = ((uint8_t) (simde_test_codegen_rand() & 0xff)); } } static simde_float32 simde_test_codegen_random_f32(simde_float32 min, simde_float32 max) { simde_float32 v = (((simde_float32) (simde_test_codegen_rand())) / (((simde_float32) ( # 333 "../test/arm/neon/../../test.h" 3 4 2147483647 # 333 "../test/arm/neon/../../test.h" )) / (max - min))) + min; return __builtin_roundf(v * 100.0f) / 100.0f; } static simde_float16 simde_test_codegen_random_f16(simde_float16 min, simde_float16 max) { return simde_float16_from_float32( simde_test_codegen_random_f32( simde_float16_to_float32(min), simde_float16_to_float32(max) ) ); } static simde_float64 simde_test_codegen_random_f64(simde_float64 min, simde_float64 max) { simde_float64 v = (((simde_float64) (simde_test_codegen_rand())) / (((simde_float64) ( # 350 "../test/arm/neon/../../test.h" 3 4 2147483647 # 350 "../test/arm/neon/../../test.h" )) / (max - min))) + min; return __builtin_round(v * 100.0) / 100.0; } static simde_bfloat16 simde_test_codegen_random_bf16(simde_bfloat16 min, simde_bfloat16 max) { return simde_bfloat16_from_float32( simde_test_codegen_random_f32( simde_bfloat16_to_float32(min), simde_bfloat16_to_float32(max) ) ); } typedef enum SimdeTestVecFloatMask { SIMDE_TEST_VEC_FLOAT_DEFAULT = 0, SIMDE_TEST_VEC_FLOAT_PAIR = 1, SIMDE_TEST_VEC_FLOAT_NAN = 2, SIMDE_TEST_VEC_FLOAT_EQUAL = 4, SIMDE_TEST_VEC_FLOAT_ROUND = 8 } SimdeTestVecFloatType; static void simde_test_codegen_calc_pair(int pairwise, size_t test_sets, size_t vectors_per_set, size_t elements_per_vector, size_t pos, size_t* a, size_t* b) { (void) test_sets; if (pairwise) { *a = (((pos * 2) + 0) % elements_per_vector) + ((((pos * 2) + 0) / elements_per_vector) * elements_per_vector); *b = (((pos * 2) + 1) % elements_per_vector) + ((((pos * 2) + 1) / elements_per_vector) * elements_per_vector); } else { size_t elements_per_set = elements_per_vector * vectors_per_set; size_t set_num = pos / elements_per_vector; size_t pos_in_set = pos % elements_per_vector; *a = (elements_per_set * set_num) + pos_in_set; *b = *a + elements_per_vector; } } static void simde_test_codegen_float_set_value_(size_t element_size, size_t pos, void* values, simde_float32 f32_val, simde_float64 f64_val) { switch (element_size) { case sizeof(simde_float16): ((simde_float16*) (values))[pos] = simde_float16_from_float32(f32_val); break; case sizeof(simde_float32): ((simde_float32*) (values))[pos] = f32_val; break; case sizeof(simde_float64): ((simde_float64*) (values))[pos] = f64_val; break; } } static void simde_test_codegen_random_vfX_full_( size_t test_sets, size_t vectors_per_set, size_t elements_per_vector, size_t elem_size, void* values, simde_float64 min, simde_float64 max, SimdeTestVecFloatType vec_type) { for (size_t i = 0 ; i < (test_sets * vectors_per_set * elements_per_vector) ; i++) { simde_float64 v = simde_test_codegen_random_f64(min, max); if (vec_type & SIMDE_TEST_VEC_FLOAT_ROUND) { if (simde_test_codegen_rand() & 7) { do { v = ((simde_float64) (((int64_t) (v)))); if (simde_test_codegen_rand() & 7) v += 0.5; } while (v > max || v < min); } } simde_test_codegen_float_set_value_(elem_size, i, values, ((simde_float32) (v)), v); } int pairwise = !!(vec_type & SIMDE_TEST_VEC_FLOAT_PAIR); size_t pos = 0; size_t a, b; if (vec_type & SIMDE_TEST_VEC_FLOAT_NAN) { simde_test_codegen_calc_pair(pairwise, test_sets, vectors_per_set, elements_per_vector, pos++, &a, &b); simde_test_codegen_float_set_value_(elem_size, a, values, (__builtin_nanf("")), (__builtin_nan(""))); simde_test_codegen_calc_pair(pairwise, test_sets, vectors_per_set, elements_per_vector, pos++, &a, &b); simde_test_codegen_float_set_value_(elem_size, b, values, (__builtin_nanf("")), (__builtin_nan(""))); simde_test_codegen_calc_pair(pairwise, test_sets, vectors_per_set, elements_per_vector, pos++, &a, &b); simde_test_codegen_float_set_value_(elem_size, a, values, (__builtin_nanf("")), (__builtin_nan(""))); simde_test_codegen_float_set_value_(elem_size, b, values, (__builtin_nanf("")), (__builtin_nan(""))); } if (vec_type & SIMDE_TEST_VEC_FLOAT_EQUAL) { simde_test_codegen_calc_pair(pairwise, test_sets, vectors_per_set, elements_per_vector, pos++, &a, &b); simde_float64 v = simde_test_codegen_random_f64(min, max); simde_test_codegen_float_set_value_(elem_size, a, values, ((simde_float32) (v)), v); simde_test_codegen_float_set_value_(elem_size, b, values, ((simde_float32) (v)), v); } } static void simde_test_codegen_random_vf16_full( size_t test_sets, size_t vectors_per_set, size_t elements_per_vector, simde_float16 values[(test_sets * vectors_per_set * elements_per_vector)], simde_float16 min, simde_float16 max, SimdeTestVecFloatType vec_type) { simde_test_codegen_random_vfX_full_(test_sets, vectors_per_set, elements_per_vector, sizeof(simde_float16), values, ((simde_float64) (simde_float16_to_float32(min))), ((simde_float64) (simde_float16_to_float32(max))), vec_type); } static void simde_test_codegen_random_vf32_full( size_t test_sets, size_t vectors_per_set, size_t elements_per_vector, simde_float32 values[(test_sets * vectors_per_set * elements_per_vector)], simde_float32 min, simde_float32 max, SimdeTestVecFloatType vec_type) { simde_test_codegen_random_vfX_full_(test_sets, vectors_per_set, elements_per_vector, sizeof(simde_float32), values, ((simde_float64) (min)), ((simde_float64) (max)), vec_type); } static void simde_test_codegen_random_vf64_full( size_t test_sets, size_t vectors_per_set, size_t elements_per_vector, simde_float64 values[(test_sets * vectors_per_set * elements_per_vector)], simde_float64 min, simde_float64 max, SimdeTestVecFloatType vec_type) { simde_test_codegen_random_vfX_full_(test_sets, vectors_per_set, elements_per_vector, sizeof(simde_float64), values, min, max, vec_type); } static void simde_test_codegen_random_vbf16_full( size_t test_sets, size_t vectors_per_set, size_t elements_per_vector, simde_bfloat16 values[(test_sets * vectors_per_set * elements_per_vector)], simde_bfloat16 min, simde_bfloat16 max, SimdeTestVecFloatType vec_type) { simde_test_codegen_random_vfX_full_(test_sets, vectors_per_set, elements_per_vector, sizeof(simde_bfloat16), values, ((simde_float64) (simde_bfloat16_to_float32(min))), ((simde_float64) (simde_bfloat16_to_float32(max))), vec_type); } static void simde_test_codegen_random_vf16(size_t elem_count, simde_float16 values[(elem_count)], simde_float16 min, simde_float16 max) { for (size_t i = 0 ; i < elem_count ; i++) { values[i] = simde_test_codegen_random_f16(min, max); } } static void simde_test_codegen_random_vf32(size_t elem_count, simde_float32 values[(elem_count)], simde_float32 min, simde_float32 max) { for (size_t i = 0 ; i < elem_count ; i++) { values[i] = simde_test_codegen_random_f32(min, max); } } static void simde_test_codegen_random_vf64(size_t elem_count, simde_float64 values[(elem_count)], simde_float64 min, simde_float64 max) { for (size_t i = 0 ; i < elem_count ; i++) { values[i] = simde_test_codegen_random_f64(min, max); } } static void simde_test_codegen_random_vbf16(size_t elem_count, simde_bfloat16 values[(elem_count)], simde_bfloat16 min, simde_bfloat16 max) { for (size_t i = 0 ; i < elem_count ; i++) { values[i] = simde_test_codegen_random_bf16(min, max); } } # 546 "../test/arm/neon/../../test.h" static int8_t simde_test_codegen_random_i8(void) { int8_t r; simde_test_codegen_random_memory(sizeof(r), ((uint8_t*) (&r))); return r; } static int16_t simde_test_codegen_random_i16(void) { int16_t r; simde_test_codegen_random_memory(sizeof(r), ((uint8_t*) (&r))); return r; } static int32_t simde_test_codegen_random_i32(void) { int32_t r; simde_test_codegen_random_memory(sizeof(r), ((uint8_t*) (&r))); return r; } static int64_t simde_test_codegen_random_i64(void) { int64_t r; simde_test_codegen_random_memory(sizeof(r), ((uint8_t*) (&r))); return r; } static uint8_t simde_test_codegen_random_u8(void) { uint8_t r; simde_test_codegen_random_memory(sizeof(r), ((uint8_t*) (&r))); return r; } static uint16_t simde_test_codegen_random_u16(void) { uint16_t r; simde_test_codegen_random_memory(sizeof(r), ((uint8_t*) (&r))); return r; } static uint32_t simde_test_codegen_random_u32(void) { uint32_t r; simde_test_codegen_random_memory(sizeof(r), ((uint8_t*) (&r))); return r; } static uint64_t simde_test_codegen_random_u64(void) { uint64_t r; simde_test_codegen_random_memory(sizeof(r), ((uint8_t*) (&r))); return r; } static simde_poly8 simde_test_codegen_random_p8(void) { simde_poly8 r; simde_test_codegen_random_memory(sizeof(r), ((uint8_t*) (&r))); return r; } static simde_poly16 simde_test_codegen_random_p16(void) { simde_poly16 r; simde_test_codegen_random_memory(sizeof(r), ((uint8_t*) (&r))); return r; } static simde_poly64 simde_test_codegen_random_p64(void) { simde_poly64 r; simde_test_codegen_random_memory(sizeof(r), ((uint8_t*) (&r))); return r; } # 618 "../test/arm/neon/../../test.h" static void simde_test_codegen_write_vf16_full(int indent, size_t elem_count, const char* name, simde_float16 values[(elem_count)], SimdeTestVecPos pos) { switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: simde_test_codegen_write_indent(indent); indent++; fputs("{ ", # 618 "../test/arm/neon/../../test.h" 3 4 stderr # 618 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_MIDDLE: case SIMDE_TEST_VEC_POS_LAST: indent++; simde_test_codegen_write_indent(indent); break; case SIMDE_TEST_VEC_POS_SINGLE: simde_test_codegen_write_indent(indent++); fprintf( # 618 "../test/arm/neon/../../test.h" 3 4 stderr # 618 "../test/arm/neon/../../test.h" , "static const " "simde_float16" " %s[] = \n", name); simde_test_codegen_write_indent(indent); break; } fputs("{ ", # 618 "../test/arm/neon/../../test.h" 3 4 stderr # 618 "../test/arm/neon/../../test.h" ); for (size_t i = 0 ; i < elem_count ; i++) { if (i != 0) { fputc(',', # 618 "../test/arm/neon/../../test.h" 3 4 stderr # 618 "../test/arm/neon/../../test.h" ); if ((i % 4) == 0) { fputc('\n', # 618 "../test/arm/neon/../../test.h" 3 4 stderr # 618 "../test/arm/neon/../../test.h" ); simde_test_codegen_write_indent(indent + 1); } else { fputc(' ', # 618 "../test/arm/neon/../../test.h" 3 4 stderr # 618 "../test/arm/neon/../../test.h" ); } } char buf[53]; simde_test_codegen_f16(sizeof(buf), buf, values[i]); fputs(buf, # 618 "../test/arm/neon/../../test.h" 3 4 stderr # 618 "../test/arm/neon/../../test.h" ); } fputs(" }", # 618 "../test/arm/neon/../../test.h" 3 4 stderr # 618 "../test/arm/neon/../../test.h" ); switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: case SIMDE_TEST_VEC_POS_MIDDLE: fputc(',', # 618 "../test/arm/neon/../../test.h" 3 4 stderr # 618 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_LAST: fputs(" },", # 618 "../test/arm/neon/../../test.h" 3 4 stderr # 618 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_SINGLE: fputs(";", # 618 "../test/arm/neon/../../test.h" 3 4 stderr # 618 "../test/arm/neon/../../test.h" ); break; } fputc('\n', # 618 "../test/arm/neon/../../test.h" 3 4 stderr # 618 "../test/arm/neon/../../test.h" ); } static void simde_test_codegen_write_vf16(int indent, size_t elem_count, simde_float16 values[(elem_count)], SimdeTestVecPos pos) { simde_test_codegen_write_vf16_full(indent, elem_count, "???", values, pos); } static void simde_test_codegen_write_vf32_full(int indent, size_t elem_count, const char* name, simde_float32 values[(elem_count)], SimdeTestVecPos pos) { switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: simde_test_codegen_write_indent(indent); indent++; fputs("{ ", # 619 "../test/arm/neon/../../test.h" 3 4 stderr # 619 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_MIDDLE: case SIMDE_TEST_VEC_POS_LAST: indent++; simde_test_codegen_write_indent(indent); break; case SIMDE_TEST_VEC_POS_SINGLE: simde_test_codegen_write_indent(indent++); fprintf( # 619 "../test/arm/neon/../../test.h" 3 4 stderr # 619 "../test/arm/neon/../../test.h" , "static const " "simde_float32" " %s[] = \n", name); simde_test_codegen_write_indent(indent); break; } fputs("{ ", # 619 "../test/arm/neon/../../test.h" 3 4 stderr # 619 "../test/arm/neon/../../test.h" ); for (size_t i = 0 ; i < elem_count ; i++) { if (i != 0) { fputc(',', # 619 "../test/arm/neon/../../test.h" 3 4 stderr # 619 "../test/arm/neon/../../test.h" ); if ((i % 4) == 0) { fputc('\n', # 619 "../test/arm/neon/../../test.h" 3 4 stderr # 619 "../test/arm/neon/../../test.h" ); simde_test_codegen_write_indent(indent + 1); } else { fputc(' ', # 619 "../test/arm/neon/../../test.h" 3 4 stderr # 619 "../test/arm/neon/../../test.h" ); } } char buf[53]; simde_test_codegen_f32(sizeof(buf), buf, values[i]); fputs(buf, # 619 "../test/arm/neon/../../test.h" 3 4 stderr # 619 "../test/arm/neon/../../test.h" ); } fputs(" }", # 619 "../test/arm/neon/../../test.h" 3 4 stderr # 619 "../test/arm/neon/../../test.h" ); switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: case SIMDE_TEST_VEC_POS_MIDDLE: fputc(',', # 619 "../test/arm/neon/../../test.h" 3 4 stderr # 619 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_LAST: fputs(" },", # 619 "../test/arm/neon/../../test.h" 3 4 stderr # 619 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_SINGLE: fputs(";", # 619 "../test/arm/neon/../../test.h" 3 4 stderr # 619 "../test/arm/neon/../../test.h" ); break; } fputc('\n', # 619 "../test/arm/neon/../../test.h" 3 4 stderr # 619 "../test/arm/neon/../../test.h" ); } static void simde_test_codegen_write_vf32(int indent, size_t elem_count, simde_float32 values[(elem_count)], SimdeTestVecPos pos) { simde_test_codegen_write_vf32_full(indent, elem_count, "???", values, pos); } static void simde_test_codegen_write_vf64_full(int indent, size_t elem_count, const char* name, simde_float64 values[(elem_count)], SimdeTestVecPos pos) { switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: simde_test_codegen_write_indent(indent); indent++; fputs("{ ", # 620 "../test/arm/neon/../../test.h" 3 4 stderr # 620 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_MIDDLE: case SIMDE_TEST_VEC_POS_LAST: indent++; simde_test_codegen_write_indent(indent); break; case SIMDE_TEST_VEC_POS_SINGLE: simde_test_codegen_write_indent(indent++); fprintf( # 620 "../test/arm/neon/../../test.h" 3 4 stderr # 620 "../test/arm/neon/../../test.h" , "static const " "simde_float64" " %s[] = \n", name); simde_test_codegen_write_indent(indent); break; } fputs("{ ", # 620 "../test/arm/neon/../../test.h" 3 4 stderr # 620 "../test/arm/neon/../../test.h" ); for (size_t i = 0 ; i < elem_count ; i++) { if (i != 0) { fputc(',', # 620 "../test/arm/neon/../../test.h" 3 4 stderr # 620 "../test/arm/neon/../../test.h" ); if ((i % 4) == 0) { fputc('\n', # 620 "../test/arm/neon/../../test.h" 3 4 stderr # 620 "../test/arm/neon/../../test.h" ); simde_test_codegen_write_indent(indent + 1); } else { fputc(' ', # 620 "../test/arm/neon/../../test.h" 3 4 stderr # 620 "../test/arm/neon/../../test.h" ); } } char buf[53]; simde_test_codegen_f64(sizeof(buf), buf, values[i]); fputs(buf, # 620 "../test/arm/neon/../../test.h" 3 4 stderr # 620 "../test/arm/neon/../../test.h" ); } fputs(" }", # 620 "../test/arm/neon/../../test.h" 3 4 stderr # 620 "../test/arm/neon/../../test.h" ); switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: case SIMDE_TEST_VEC_POS_MIDDLE: fputc(',', # 620 "../test/arm/neon/../../test.h" 3 4 stderr # 620 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_LAST: fputs(" },", # 620 "../test/arm/neon/../../test.h" 3 4 stderr # 620 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_SINGLE: fputs(";", # 620 "../test/arm/neon/../../test.h" 3 4 stderr # 620 "../test/arm/neon/../../test.h" ); break; } fputc('\n', # 620 "../test/arm/neon/../../test.h" 3 4 stderr # 620 "../test/arm/neon/../../test.h" ); } static void simde_test_codegen_write_vf64(int indent, size_t elem_count, simde_float64 values[(elem_count)], SimdeTestVecPos pos) { simde_test_codegen_write_vf64_full(indent, elem_count, "???", values, pos); } static void simde_test_codegen_write_vbf16_full(int indent, size_t elem_count, const char* name, simde_bfloat16 values[(elem_count)], SimdeTestVecPos pos) { switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: simde_test_codegen_write_indent(indent); indent++; fputs("{ ", # 621 "../test/arm/neon/../../test.h" 3 4 stderr # 621 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_MIDDLE: case SIMDE_TEST_VEC_POS_LAST: indent++; simde_test_codegen_write_indent(indent); break; case SIMDE_TEST_VEC_POS_SINGLE: simde_test_codegen_write_indent(indent++); fprintf( # 621 "../test/arm/neon/../../test.h" 3 4 stderr # 621 "../test/arm/neon/../../test.h" , "static const " "simde_bfloat16" " %s[] = \n", name); simde_test_codegen_write_indent(indent); break; } fputs("{ ", # 621 "../test/arm/neon/../../test.h" 3 4 stderr # 621 "../test/arm/neon/../../test.h" ); for (size_t i = 0 ; i < elem_count ; i++) { if (i != 0) { fputc(',', # 621 "../test/arm/neon/../../test.h" 3 4 stderr # 621 "../test/arm/neon/../../test.h" ); if ((i % 4) == 0) { fputc('\n', # 621 "../test/arm/neon/../../test.h" 3 4 stderr # 621 "../test/arm/neon/../../test.h" ); simde_test_codegen_write_indent(indent + 1); } else { fputc(' ', # 621 "../test/arm/neon/../../test.h" 3 4 stderr # 621 "../test/arm/neon/../../test.h" ); } } char buf[53]; simde_test_codegen_bf16(sizeof(buf), buf, values[i]); fputs(buf, # 621 "../test/arm/neon/../../test.h" 3 4 stderr # 621 "../test/arm/neon/../../test.h" ); } fputs(" }", # 621 "../test/arm/neon/../../test.h" 3 4 stderr # 621 "../test/arm/neon/../../test.h" ); switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: case SIMDE_TEST_VEC_POS_MIDDLE: fputc(',', # 621 "../test/arm/neon/../../test.h" 3 4 stderr # 621 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_LAST: fputs(" },", # 621 "../test/arm/neon/../../test.h" 3 4 stderr # 621 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_SINGLE: fputs(";", # 621 "../test/arm/neon/../../test.h" 3 4 stderr # 621 "../test/arm/neon/../../test.h" ); break; } fputc('\n', # 621 "../test/arm/neon/../../test.h" 3 4 stderr # 621 "../test/arm/neon/../../test.h" ); } static void simde_test_codegen_write_vbf16(int indent, size_t elem_count, simde_bfloat16 values[(elem_count)], SimdeTestVecPos pos) { simde_test_codegen_write_vbf16_full(indent, elem_count, "???", values, pos); } static void simde_test_codegen_write_vi8_full(int indent, size_t elem_count, const char* name, int8_t values[(elem_count)], SimdeTestVecPos pos) { switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: simde_test_codegen_write_indent(indent); indent++; fputs("{ ", # 622 "../test/arm/neon/../../test.h" 3 4 stderr # 622 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_MIDDLE: case SIMDE_TEST_VEC_POS_LAST: indent++; simde_test_codegen_write_indent(indent); break; case SIMDE_TEST_VEC_POS_SINGLE: simde_test_codegen_write_indent(indent++); fprintf( # 622 "../test/arm/neon/../../test.h" 3 4 stderr # 622 "../test/arm/neon/../../test.h" , "static const " "int8_t" " %s[] = \n", name); simde_test_codegen_write_indent(indent); break; } fputs("{ ", # 622 "../test/arm/neon/../../test.h" 3 4 stderr # 622 "../test/arm/neon/../../test.h" ); for (size_t i = 0 ; i < elem_count ; i++) { if (i != 0) { fputc(',', # 622 "../test/arm/neon/../../test.h" 3 4 stderr # 622 "../test/arm/neon/../../test.h" ); if ((i % 8) == 0) { fputc('\n', # 622 "../test/arm/neon/../../test.h" 3 4 stderr # 622 "../test/arm/neon/../../test.h" ); simde_test_codegen_write_indent(indent + 1); } else { fputc(' ', # 622 "../test/arm/neon/../../test.h" 3 4 stderr # 622 "../test/arm/neon/../../test.h" ); } } char buf[53]; simde_test_codegen_i8(sizeof(buf), buf, values[i]); fputs(buf, # 622 "../test/arm/neon/../../test.h" 3 4 stderr # 622 "../test/arm/neon/../../test.h" ); } fputs(" }", # 622 "../test/arm/neon/../../test.h" 3 4 stderr # 622 "../test/arm/neon/../../test.h" ); switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: case SIMDE_TEST_VEC_POS_MIDDLE: fputc(',', # 622 "../test/arm/neon/../../test.h" 3 4 stderr # 622 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_LAST: fputs(" },", # 622 "../test/arm/neon/../../test.h" 3 4 stderr # 622 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_SINGLE: fputs(";", # 622 "../test/arm/neon/../../test.h" 3 4 stderr # 622 "../test/arm/neon/../../test.h" ); break; } fputc('\n', # 622 "../test/arm/neon/../../test.h" 3 4 stderr # 622 "../test/arm/neon/../../test.h" ); } static void simde_test_codegen_write_vi8(int indent, size_t elem_count, int8_t values[(elem_count)], SimdeTestVecPos pos) { simde_test_codegen_write_vi8_full(indent, elem_count, "???", values, pos); } static void simde_test_codegen_write_vi16_full(int indent, size_t elem_count, const char* name, int16_t values[(elem_count)], SimdeTestVecPos pos) { switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: simde_test_codegen_write_indent(indent); indent++; fputs("{ ", # 623 "../test/arm/neon/../../test.h" 3 4 stderr # 623 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_MIDDLE: case SIMDE_TEST_VEC_POS_LAST: indent++; simde_test_codegen_write_indent(indent); break; case SIMDE_TEST_VEC_POS_SINGLE: simde_test_codegen_write_indent(indent++); fprintf( # 623 "../test/arm/neon/../../test.h" 3 4 stderr # 623 "../test/arm/neon/../../test.h" , "static const " "int16_t" " %s[] = \n", name); simde_test_codegen_write_indent(indent); break; } fputs("{ ", # 623 "../test/arm/neon/../../test.h" 3 4 stderr # 623 "../test/arm/neon/../../test.h" ); for (size_t i = 0 ; i < elem_count ; i++) { if (i != 0) { fputc(',', # 623 "../test/arm/neon/../../test.h" 3 4 stderr # 623 "../test/arm/neon/../../test.h" ); if ((i % 8) == 0) { fputc('\n', # 623 "../test/arm/neon/../../test.h" 3 4 stderr # 623 "../test/arm/neon/../../test.h" ); simde_test_codegen_write_indent(indent + 1); } else { fputc(' ', # 623 "../test/arm/neon/../../test.h" 3 4 stderr # 623 "../test/arm/neon/../../test.h" ); } } char buf[53]; simde_test_codegen_i16(sizeof(buf), buf, values[i]); fputs(buf, # 623 "../test/arm/neon/../../test.h" 3 4 stderr # 623 "../test/arm/neon/../../test.h" ); } fputs(" }", # 623 "../test/arm/neon/../../test.h" 3 4 stderr # 623 "../test/arm/neon/../../test.h" ); switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: case SIMDE_TEST_VEC_POS_MIDDLE: fputc(',', # 623 "../test/arm/neon/../../test.h" 3 4 stderr # 623 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_LAST: fputs(" },", # 623 "../test/arm/neon/../../test.h" 3 4 stderr # 623 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_SINGLE: fputs(";", # 623 "../test/arm/neon/../../test.h" 3 4 stderr # 623 "../test/arm/neon/../../test.h" ); break; } fputc('\n', # 623 "../test/arm/neon/../../test.h" 3 4 stderr # 623 "../test/arm/neon/../../test.h" ); } static void simde_test_codegen_write_vi16(int indent, size_t elem_count, int16_t values[(elem_count)], SimdeTestVecPos pos) { simde_test_codegen_write_vi16_full(indent, elem_count, "???", values, pos); } static void simde_test_codegen_write_vi32_full(int indent, size_t elem_count, const char* name, int32_t values[(elem_count)], SimdeTestVecPos pos) { switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: simde_test_codegen_write_indent(indent); indent++; fputs("{ ", # 624 "../test/arm/neon/../../test.h" 3 4 stderr # 624 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_MIDDLE: case SIMDE_TEST_VEC_POS_LAST: indent++; simde_test_codegen_write_indent(indent); break; case SIMDE_TEST_VEC_POS_SINGLE: simde_test_codegen_write_indent(indent++); fprintf( # 624 "../test/arm/neon/../../test.h" 3 4 stderr # 624 "../test/arm/neon/../../test.h" , "static const " "int32_t" " %s[] = \n", name); simde_test_codegen_write_indent(indent); break; } fputs("{ ", # 624 "../test/arm/neon/../../test.h" 3 4 stderr # 624 "../test/arm/neon/../../test.h" ); for (size_t i = 0 ; i < elem_count ; i++) { if (i != 0) { fputc(',', # 624 "../test/arm/neon/../../test.h" 3 4 stderr # 624 "../test/arm/neon/../../test.h" ); if ((i % 8) == 0) { fputc('\n', # 624 "../test/arm/neon/../../test.h" 3 4 stderr # 624 "../test/arm/neon/../../test.h" ); simde_test_codegen_write_indent(indent + 1); } else { fputc(' ', # 624 "../test/arm/neon/../../test.h" 3 4 stderr # 624 "../test/arm/neon/../../test.h" ); } } char buf[53]; simde_test_codegen_i32(sizeof(buf), buf, values[i]); fputs(buf, # 624 "../test/arm/neon/../../test.h" 3 4 stderr # 624 "../test/arm/neon/../../test.h" ); } fputs(" }", # 624 "../test/arm/neon/../../test.h" 3 4 stderr # 624 "../test/arm/neon/../../test.h" ); switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: case SIMDE_TEST_VEC_POS_MIDDLE: fputc(',', # 624 "../test/arm/neon/../../test.h" 3 4 stderr # 624 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_LAST: fputs(" },", # 624 "../test/arm/neon/../../test.h" 3 4 stderr # 624 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_SINGLE: fputs(";", # 624 "../test/arm/neon/../../test.h" 3 4 stderr # 624 "../test/arm/neon/../../test.h" ); break; } fputc('\n', # 624 "../test/arm/neon/../../test.h" 3 4 stderr # 624 "../test/arm/neon/../../test.h" ); } static void simde_test_codegen_write_vi32(int indent, size_t elem_count, int32_t values[(elem_count)], SimdeTestVecPos pos) { simde_test_codegen_write_vi32_full(indent, elem_count, "???", values, pos); } static void simde_test_codegen_write_vi64_full(int indent, size_t elem_count, const char* name, int64_t values[(elem_count)], SimdeTestVecPos pos) { switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: simde_test_codegen_write_indent(indent); indent++; fputs("{ ", # 625 "../test/arm/neon/../../test.h" 3 4 stderr # 625 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_MIDDLE: case SIMDE_TEST_VEC_POS_LAST: indent++; simde_test_codegen_write_indent(indent); break; case SIMDE_TEST_VEC_POS_SINGLE: simde_test_codegen_write_indent(indent++); fprintf( # 625 "../test/arm/neon/../../test.h" 3 4 stderr # 625 "../test/arm/neon/../../test.h" , "static const " "int64_t" " %s[] = \n", name); simde_test_codegen_write_indent(indent); break; } fputs("{ ", # 625 "../test/arm/neon/../../test.h" 3 4 stderr # 625 "../test/arm/neon/../../test.h" ); for (size_t i = 0 ; i < elem_count ; i++) { if (i != 0) { fputc(',', # 625 "../test/arm/neon/../../test.h" 3 4 stderr # 625 "../test/arm/neon/../../test.h" ); if ((i % 4) == 0) { fputc('\n', # 625 "../test/arm/neon/../../test.h" 3 4 stderr # 625 "../test/arm/neon/../../test.h" ); simde_test_codegen_write_indent(indent + 1); } else { fputc(' ', # 625 "../test/arm/neon/../../test.h" 3 4 stderr # 625 "../test/arm/neon/../../test.h" ); } } char buf[53]; simde_test_codegen_i64(sizeof(buf), buf, values[i]); fputs(buf, # 625 "../test/arm/neon/../../test.h" 3 4 stderr # 625 "../test/arm/neon/../../test.h" ); } fputs(" }", # 625 "../test/arm/neon/../../test.h" 3 4 stderr # 625 "../test/arm/neon/../../test.h" ); switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: case SIMDE_TEST_VEC_POS_MIDDLE: fputc(',', # 625 "../test/arm/neon/../../test.h" 3 4 stderr # 625 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_LAST: fputs(" },", # 625 "../test/arm/neon/../../test.h" 3 4 stderr # 625 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_SINGLE: fputs(";", # 625 "../test/arm/neon/../../test.h" 3 4 stderr # 625 "../test/arm/neon/../../test.h" ); break; } fputc('\n', # 625 "../test/arm/neon/../../test.h" 3 4 stderr # 625 "../test/arm/neon/../../test.h" ); } static void simde_test_codegen_write_vi64(int indent, size_t elem_count, int64_t values[(elem_count)], SimdeTestVecPos pos) { simde_test_codegen_write_vi64_full(indent, elem_count, "???", values, pos); } static void simde_test_codegen_write_vu8_full(int indent, size_t elem_count, const char* name, uint8_t values[(elem_count)], SimdeTestVecPos pos) { switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: simde_test_codegen_write_indent(indent); indent++; fputs("{ ", # 626 "../test/arm/neon/../../test.h" 3 4 stderr # 626 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_MIDDLE: case SIMDE_TEST_VEC_POS_LAST: indent++; simde_test_codegen_write_indent(indent); break; case SIMDE_TEST_VEC_POS_SINGLE: simde_test_codegen_write_indent(indent++); fprintf( # 626 "../test/arm/neon/../../test.h" 3 4 stderr # 626 "../test/arm/neon/../../test.h" , "static const " "uint8_t" " %s[] = \n", name); simde_test_codegen_write_indent(indent); break; } fputs("{ ", # 626 "../test/arm/neon/../../test.h" 3 4 stderr # 626 "../test/arm/neon/../../test.h" ); for (size_t i = 0 ; i < elem_count ; i++) { if (i != 0) { fputc(',', # 626 "../test/arm/neon/../../test.h" 3 4 stderr # 626 "../test/arm/neon/../../test.h" ); if ((i % 8) == 0) { fputc('\n', # 626 "../test/arm/neon/../../test.h" 3 4 stderr # 626 "../test/arm/neon/../../test.h" ); simde_test_codegen_write_indent(indent + 1); } else { fputc(' ', # 626 "../test/arm/neon/../../test.h" 3 4 stderr # 626 "../test/arm/neon/../../test.h" ); } } char buf[53]; simde_test_codegen_u8(sizeof(buf), buf, values[i]); fputs(buf, # 626 "../test/arm/neon/../../test.h" 3 4 stderr # 626 "../test/arm/neon/../../test.h" ); } fputs(" }", # 626 "../test/arm/neon/../../test.h" 3 4 stderr # 626 "../test/arm/neon/../../test.h" ); switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: case SIMDE_TEST_VEC_POS_MIDDLE: fputc(',', # 626 "../test/arm/neon/../../test.h" 3 4 stderr # 626 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_LAST: fputs(" },", # 626 "../test/arm/neon/../../test.h" 3 4 stderr # 626 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_SINGLE: fputs(";", # 626 "../test/arm/neon/../../test.h" 3 4 stderr # 626 "../test/arm/neon/../../test.h" ); break; } fputc('\n', # 626 "../test/arm/neon/../../test.h" 3 4 stderr # 626 "../test/arm/neon/../../test.h" ); } static void simde_test_codegen_write_vu8(int indent, size_t elem_count, uint8_t values[(elem_count)], SimdeTestVecPos pos) { simde_test_codegen_write_vu8_full(indent, elem_count, "???", values, pos); } static void simde_test_codegen_write_vu16_full(int indent, size_t elem_count, const char* name, uint16_t values[(elem_count)], SimdeTestVecPos pos) { switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: simde_test_codegen_write_indent(indent); indent++; fputs("{ ", # 627 "../test/arm/neon/../../test.h" 3 4 stderr # 627 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_MIDDLE: case SIMDE_TEST_VEC_POS_LAST: indent++; simde_test_codegen_write_indent(indent); break; case SIMDE_TEST_VEC_POS_SINGLE: simde_test_codegen_write_indent(indent++); fprintf( # 627 "../test/arm/neon/../../test.h" 3 4 stderr # 627 "../test/arm/neon/../../test.h" , "static const " "uint16_t" " %s[] = \n", name); simde_test_codegen_write_indent(indent); break; } fputs("{ ", # 627 "../test/arm/neon/../../test.h" 3 4 stderr # 627 "../test/arm/neon/../../test.h" ); for (size_t i = 0 ; i < elem_count ; i++) { if (i != 0) { fputc(',', # 627 "../test/arm/neon/../../test.h" 3 4 stderr # 627 "../test/arm/neon/../../test.h" ); if ((i % 8) == 0) { fputc('\n', # 627 "../test/arm/neon/../../test.h" 3 4 stderr # 627 "../test/arm/neon/../../test.h" ); simde_test_codegen_write_indent(indent + 1); } else { fputc(' ', # 627 "../test/arm/neon/../../test.h" 3 4 stderr # 627 "../test/arm/neon/../../test.h" ); } } char buf[53]; simde_test_codegen_u16(sizeof(buf), buf, values[i]); fputs(buf, # 627 "../test/arm/neon/../../test.h" 3 4 stderr # 627 "../test/arm/neon/../../test.h" ); } fputs(" }", # 627 "../test/arm/neon/../../test.h" 3 4 stderr # 627 "../test/arm/neon/../../test.h" ); switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: case SIMDE_TEST_VEC_POS_MIDDLE: fputc(',', # 627 "../test/arm/neon/../../test.h" 3 4 stderr # 627 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_LAST: fputs(" },", # 627 "../test/arm/neon/../../test.h" 3 4 stderr # 627 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_SINGLE: fputs(";", # 627 "../test/arm/neon/../../test.h" 3 4 stderr # 627 "../test/arm/neon/../../test.h" ); break; } fputc('\n', # 627 "../test/arm/neon/../../test.h" 3 4 stderr # 627 "../test/arm/neon/../../test.h" ); } static void simde_test_codegen_write_vu16(int indent, size_t elem_count, uint16_t values[(elem_count)], SimdeTestVecPos pos) { simde_test_codegen_write_vu16_full(indent, elem_count, "???", values, pos); } static void simde_test_codegen_write_vu32_full(int indent, size_t elem_count, const char* name, uint32_t values[(elem_count)], SimdeTestVecPos pos) { switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: simde_test_codegen_write_indent(indent); indent++; fputs("{ ", # 628 "../test/arm/neon/../../test.h" 3 4 stderr # 628 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_MIDDLE: case SIMDE_TEST_VEC_POS_LAST: indent++; simde_test_codegen_write_indent(indent); break; case SIMDE_TEST_VEC_POS_SINGLE: simde_test_codegen_write_indent(indent++); fprintf( # 628 "../test/arm/neon/../../test.h" 3 4 stderr # 628 "../test/arm/neon/../../test.h" , "static const " "uint32_t" " %s[] = \n", name); simde_test_codegen_write_indent(indent); break; } fputs("{ ", # 628 "../test/arm/neon/../../test.h" 3 4 stderr # 628 "../test/arm/neon/../../test.h" ); for (size_t i = 0 ; i < elem_count ; i++) { if (i != 0) { fputc(',', # 628 "../test/arm/neon/../../test.h" 3 4 stderr # 628 "../test/arm/neon/../../test.h" ); if ((i % 8) == 0) { fputc('\n', # 628 "../test/arm/neon/../../test.h" 3 4 stderr # 628 "../test/arm/neon/../../test.h" ); simde_test_codegen_write_indent(indent + 1); } else { fputc(' ', # 628 "../test/arm/neon/../../test.h" 3 4 stderr # 628 "../test/arm/neon/../../test.h" ); } } char buf[53]; simde_test_codegen_u32(sizeof(buf), buf, values[i]); fputs(buf, # 628 "../test/arm/neon/../../test.h" 3 4 stderr # 628 "../test/arm/neon/../../test.h" ); } fputs(" }", # 628 "../test/arm/neon/../../test.h" 3 4 stderr # 628 "../test/arm/neon/../../test.h" ); switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: case SIMDE_TEST_VEC_POS_MIDDLE: fputc(',', # 628 "../test/arm/neon/../../test.h" 3 4 stderr # 628 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_LAST: fputs(" },", # 628 "../test/arm/neon/../../test.h" 3 4 stderr # 628 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_SINGLE: fputs(";", # 628 "../test/arm/neon/../../test.h" 3 4 stderr # 628 "../test/arm/neon/../../test.h" ); break; } fputc('\n', # 628 "../test/arm/neon/../../test.h" 3 4 stderr # 628 "../test/arm/neon/../../test.h" ); } static void simde_test_codegen_write_vu32(int indent, size_t elem_count, uint32_t values[(elem_count)], SimdeTestVecPos pos) { simde_test_codegen_write_vu32_full(indent, elem_count, "???", values, pos); } static void simde_test_codegen_write_vu64_full(int indent, size_t elem_count, const char* name, uint64_t values[(elem_count)], SimdeTestVecPos pos) { switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: simde_test_codegen_write_indent(indent); indent++; fputs("{ ", # 629 "../test/arm/neon/../../test.h" 3 4 stderr # 629 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_MIDDLE: case SIMDE_TEST_VEC_POS_LAST: indent++; simde_test_codegen_write_indent(indent); break; case SIMDE_TEST_VEC_POS_SINGLE: simde_test_codegen_write_indent(indent++); fprintf( # 629 "../test/arm/neon/../../test.h" 3 4 stderr # 629 "../test/arm/neon/../../test.h" , "static const " "uint64_t" " %s[] = \n", name); simde_test_codegen_write_indent(indent); break; } fputs("{ ", # 629 "../test/arm/neon/../../test.h" 3 4 stderr # 629 "../test/arm/neon/../../test.h" ); for (size_t i = 0 ; i < elem_count ; i++) { if (i != 0) { fputc(',', # 629 "../test/arm/neon/../../test.h" 3 4 stderr # 629 "../test/arm/neon/../../test.h" ); if ((i % 4) == 0) { fputc('\n', # 629 "../test/arm/neon/../../test.h" 3 4 stderr # 629 "../test/arm/neon/../../test.h" ); simde_test_codegen_write_indent(indent + 1); } else { fputc(' ', # 629 "../test/arm/neon/../../test.h" 3 4 stderr # 629 "../test/arm/neon/../../test.h" ); } } char buf[53]; simde_test_codegen_u64(sizeof(buf), buf, values[i]); fputs(buf, # 629 "../test/arm/neon/../../test.h" 3 4 stderr # 629 "../test/arm/neon/../../test.h" ); } fputs(" }", # 629 "../test/arm/neon/../../test.h" 3 4 stderr # 629 "../test/arm/neon/../../test.h" ); switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: case SIMDE_TEST_VEC_POS_MIDDLE: fputc(',', # 629 "../test/arm/neon/../../test.h" 3 4 stderr # 629 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_LAST: fputs(" },", # 629 "../test/arm/neon/../../test.h" 3 4 stderr # 629 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_SINGLE: fputs(";", # 629 "../test/arm/neon/../../test.h" 3 4 stderr # 629 "../test/arm/neon/../../test.h" ); break; } fputc('\n', # 629 "../test/arm/neon/../../test.h" 3 4 stderr # 629 "../test/arm/neon/../../test.h" ); } static void simde_test_codegen_write_vu64(int indent, size_t elem_count, uint64_t values[(elem_count)], SimdeTestVecPos pos) { simde_test_codegen_write_vu64_full(indent, elem_count, "???", values, pos); } static void simde_test_codegen_write_vp8_full(int indent, size_t elem_count, const char* name, simde_poly8 values[(elem_count)], SimdeTestVecPos pos) { switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: simde_test_codegen_write_indent(indent); indent++; fputs("{ ", # 630 "../test/arm/neon/../../test.h" 3 4 stderr # 630 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_MIDDLE: case SIMDE_TEST_VEC_POS_LAST: indent++; simde_test_codegen_write_indent(indent); break; case SIMDE_TEST_VEC_POS_SINGLE: simde_test_codegen_write_indent(indent++); fprintf( # 630 "../test/arm/neon/../../test.h" 3 4 stderr # 630 "../test/arm/neon/../../test.h" , "static const " "simde_poly8" " %s[] = \n", name); simde_test_codegen_write_indent(indent); break; } fputs("{ ", # 630 "../test/arm/neon/../../test.h" 3 4 stderr # 630 "../test/arm/neon/../../test.h" ); for (size_t i = 0 ; i < elem_count ; i++) { if (i != 0) { fputc(',', # 630 "../test/arm/neon/../../test.h" 3 4 stderr # 630 "../test/arm/neon/../../test.h" ); if ((i % 8) == 0) { fputc('\n', # 630 "../test/arm/neon/../../test.h" 3 4 stderr # 630 "../test/arm/neon/../../test.h" ); simde_test_codegen_write_indent(indent + 1); } else { fputc(' ', # 630 "../test/arm/neon/../../test.h" 3 4 stderr # 630 "../test/arm/neon/../../test.h" ); } } char buf[53]; simde_test_codegen_p8(sizeof(buf), buf, values[i]); fputs(buf, # 630 "../test/arm/neon/../../test.h" 3 4 stderr # 630 "../test/arm/neon/../../test.h" ); } fputs(" }", # 630 "../test/arm/neon/../../test.h" 3 4 stderr # 630 "../test/arm/neon/../../test.h" ); switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: case SIMDE_TEST_VEC_POS_MIDDLE: fputc(',', # 630 "../test/arm/neon/../../test.h" 3 4 stderr # 630 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_LAST: fputs(" },", # 630 "../test/arm/neon/../../test.h" 3 4 stderr # 630 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_SINGLE: fputs(";", # 630 "../test/arm/neon/../../test.h" 3 4 stderr # 630 "../test/arm/neon/../../test.h" ); break; } fputc('\n', # 630 "../test/arm/neon/../../test.h" 3 4 stderr # 630 "../test/arm/neon/../../test.h" ); } static void simde_test_codegen_write_vp8(int indent, size_t elem_count, simde_poly8 values[(elem_count)], SimdeTestVecPos pos) { simde_test_codegen_write_vp8_full(indent, elem_count, "???", values, pos); } static void simde_test_codegen_write_vp16_full(int indent, size_t elem_count, const char* name, simde_poly16 values[(elem_count)], SimdeTestVecPos pos) { switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: simde_test_codegen_write_indent(indent); indent++; fputs("{ ", # 631 "../test/arm/neon/../../test.h" 3 4 stderr # 631 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_MIDDLE: case SIMDE_TEST_VEC_POS_LAST: indent++; simde_test_codegen_write_indent(indent); break; case SIMDE_TEST_VEC_POS_SINGLE: simde_test_codegen_write_indent(indent++); fprintf( # 631 "../test/arm/neon/../../test.h" 3 4 stderr # 631 "../test/arm/neon/../../test.h" , "static const " "simde_poly16" " %s[] = \n", name); simde_test_codegen_write_indent(indent); break; } fputs("{ ", # 631 "../test/arm/neon/../../test.h" 3 4 stderr # 631 "../test/arm/neon/../../test.h" ); for (size_t i = 0 ; i < elem_count ; i++) { if (i != 0) { fputc(',', # 631 "../test/arm/neon/../../test.h" 3 4 stderr # 631 "../test/arm/neon/../../test.h" ); if ((i % 8) == 0) { fputc('\n', # 631 "../test/arm/neon/../../test.h" 3 4 stderr # 631 "../test/arm/neon/../../test.h" ); simde_test_codegen_write_indent(indent + 1); } else { fputc(' ', # 631 "../test/arm/neon/../../test.h" 3 4 stderr # 631 "../test/arm/neon/../../test.h" ); } } char buf[53]; simde_test_codegen_p16(sizeof(buf), buf, values[i]); fputs(buf, # 631 "../test/arm/neon/../../test.h" 3 4 stderr # 631 "../test/arm/neon/../../test.h" ); } fputs(" }", # 631 "../test/arm/neon/../../test.h" 3 4 stderr # 631 "../test/arm/neon/../../test.h" ); switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: case SIMDE_TEST_VEC_POS_MIDDLE: fputc(',', # 631 "../test/arm/neon/../../test.h" 3 4 stderr # 631 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_LAST: fputs(" },", # 631 "../test/arm/neon/../../test.h" 3 4 stderr # 631 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_SINGLE: fputs(";", # 631 "../test/arm/neon/../../test.h" 3 4 stderr # 631 "../test/arm/neon/../../test.h" ); break; } fputc('\n', # 631 "../test/arm/neon/../../test.h" 3 4 stderr # 631 "../test/arm/neon/../../test.h" ); } static void simde_test_codegen_write_vp16(int indent, size_t elem_count, simde_poly16 values[(elem_count)], SimdeTestVecPos pos) { simde_test_codegen_write_vp16_full(indent, elem_count, "???", values, pos); } static void simde_test_codegen_write_vp64_full(int indent, size_t elem_count, const char* name, simde_poly64 values[(elem_count)], SimdeTestVecPos pos) { switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: simde_test_codegen_write_indent(indent); indent++; fputs("{ ", # 632 "../test/arm/neon/../../test.h" 3 4 stderr # 632 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_MIDDLE: case SIMDE_TEST_VEC_POS_LAST: indent++; simde_test_codegen_write_indent(indent); break; case SIMDE_TEST_VEC_POS_SINGLE: simde_test_codegen_write_indent(indent++); fprintf( # 632 "../test/arm/neon/../../test.h" 3 4 stderr # 632 "../test/arm/neon/../../test.h" , "static const " "simde_poly64" " %s[] = \n", name); simde_test_codegen_write_indent(indent); break; } fputs("{ ", # 632 "../test/arm/neon/../../test.h" 3 4 stderr # 632 "../test/arm/neon/../../test.h" ); for (size_t i = 0 ; i < elem_count ; i++) { if (i != 0) { fputc(',', # 632 "../test/arm/neon/../../test.h" 3 4 stderr # 632 "../test/arm/neon/../../test.h" ); if ((i % 4) == 0) { fputc('\n', # 632 "../test/arm/neon/../../test.h" 3 4 stderr # 632 "../test/arm/neon/../../test.h" ); simde_test_codegen_write_indent(indent + 1); } else { fputc(' ', # 632 "../test/arm/neon/../../test.h" 3 4 stderr # 632 "../test/arm/neon/../../test.h" ); } } char buf[53]; simde_test_codegen_p64(sizeof(buf), buf, values[i]); fputs(buf, # 632 "../test/arm/neon/../../test.h" 3 4 stderr # 632 "../test/arm/neon/../../test.h" ); } fputs(" }", # 632 "../test/arm/neon/../../test.h" 3 4 stderr # 632 "../test/arm/neon/../../test.h" ); switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: case SIMDE_TEST_VEC_POS_MIDDLE: fputc(',', # 632 "../test/arm/neon/../../test.h" 3 4 stderr # 632 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_LAST: fputs(" },", # 632 "../test/arm/neon/../../test.h" 3 4 stderr # 632 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_SINGLE: fputs(";", # 632 "../test/arm/neon/../../test.h" 3 4 stderr # 632 "../test/arm/neon/../../test.h" ); break; } fputc('\n', # 632 "../test/arm/neon/../../test.h" 3 4 stderr # 632 "../test/arm/neon/../../test.h" ); } static void simde_test_codegen_write_vp64(int indent, size_t elem_count, simde_poly64 values[(elem_count)], SimdeTestVecPos pos) { simde_test_codegen_write_vp64_full(indent, elem_count, "???", values, pos); } # 697 "../test/arm/neon/../../test.h" static void simde_test_codegen_write_i8_full(int indent, const char* name, int8_t value, SimdeTestVecPos pos) { switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: simde_test_codegen_write_indent(indent); indent++; fputs("{ ", # 697 "../test/arm/neon/../../test.h" 3 4 stderr # 697 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_MIDDLE: case SIMDE_TEST_VEC_POS_LAST: indent++; simde_test_codegen_write_indent(indent); break; case SIMDE_TEST_VEC_POS_SINGLE: simde_test_codegen_write_indent(indent++); fprintf( # 697 "../test/arm/neon/../../test.h" 3 4 stderr # 697 "../test/arm/neon/../../test.h" , "static const " "int8_t" " %s = ", name); break; } { char buf[53]; simde_test_codegen_i8(sizeof(buf), buf, value); fputs(buf, # 697 "../test/arm/neon/../../test.h" 3 4 stderr # 697 "../test/arm/neon/../../test.h" ); } switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: case SIMDE_TEST_VEC_POS_MIDDLE: fputc(',', # 697 "../test/arm/neon/../../test.h" 3 4 stderr # 697 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_LAST: fputs(" },", # 697 "../test/arm/neon/../../test.h" 3 4 stderr # 697 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_SINGLE: fputs(";", # 697 "../test/arm/neon/../../test.h" 3 4 stderr # 697 "../test/arm/neon/../../test.h" ); break; } fputc('\n', # 697 "../test/arm/neon/../../test.h" 3 4 stderr # 697 "../test/arm/neon/../../test.h" ); } static void simde_test_codegen_write_i8(int indent, int8_t value, SimdeTestVecPos pos) { simde_test_codegen_write_i8_full(indent, "???", value, pos); } static void simde_test_codegen_write_i16_full(int indent, const char* name, int16_t value, SimdeTestVecPos pos) { switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: simde_test_codegen_write_indent(indent); indent++; fputs("{ ", # 698 "../test/arm/neon/../../test.h" 3 4 stderr # 698 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_MIDDLE: case SIMDE_TEST_VEC_POS_LAST: indent++; simde_test_codegen_write_indent(indent); break; case SIMDE_TEST_VEC_POS_SINGLE: simde_test_codegen_write_indent(indent++); fprintf( # 698 "../test/arm/neon/../../test.h" 3 4 stderr # 698 "../test/arm/neon/../../test.h" , "static const " "int16_t" " %s = ", name); break; } { char buf[53]; simde_test_codegen_i16(sizeof(buf), buf, value); fputs(buf, # 698 "../test/arm/neon/../../test.h" 3 4 stderr # 698 "../test/arm/neon/../../test.h" ); } switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: case SIMDE_TEST_VEC_POS_MIDDLE: fputc(',', # 698 "../test/arm/neon/../../test.h" 3 4 stderr # 698 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_LAST: fputs(" },", # 698 "../test/arm/neon/../../test.h" 3 4 stderr # 698 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_SINGLE: fputs(";", # 698 "../test/arm/neon/../../test.h" 3 4 stderr # 698 "../test/arm/neon/../../test.h" ); break; } fputc('\n', # 698 "../test/arm/neon/../../test.h" 3 4 stderr # 698 "../test/arm/neon/../../test.h" ); } static void simde_test_codegen_write_i16(int indent, int16_t value, SimdeTestVecPos pos) { simde_test_codegen_write_i16_full(indent, "???", value, pos); } static void simde_test_codegen_write_i32_full(int indent, const char* name, int32_t value, SimdeTestVecPos pos) { switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: simde_test_codegen_write_indent(indent); indent++; fputs("{ ", # 699 "../test/arm/neon/../../test.h" 3 4 stderr # 699 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_MIDDLE: case SIMDE_TEST_VEC_POS_LAST: indent++; simde_test_codegen_write_indent(indent); break; case SIMDE_TEST_VEC_POS_SINGLE: simde_test_codegen_write_indent(indent++); fprintf( # 699 "../test/arm/neon/../../test.h" 3 4 stderr # 699 "../test/arm/neon/../../test.h" , "static const " "int32_t" " %s = ", name); break; } { char buf[53]; simde_test_codegen_i32(sizeof(buf), buf, value); fputs(buf, # 699 "../test/arm/neon/../../test.h" 3 4 stderr # 699 "../test/arm/neon/../../test.h" ); } switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: case SIMDE_TEST_VEC_POS_MIDDLE: fputc(',', # 699 "../test/arm/neon/../../test.h" 3 4 stderr # 699 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_LAST: fputs(" },", # 699 "../test/arm/neon/../../test.h" 3 4 stderr # 699 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_SINGLE: fputs(";", # 699 "../test/arm/neon/../../test.h" 3 4 stderr # 699 "../test/arm/neon/../../test.h" ); break; } fputc('\n', # 699 "../test/arm/neon/../../test.h" 3 4 stderr # 699 "../test/arm/neon/../../test.h" ); } static void simde_test_codegen_write_i32(int indent, int32_t value, SimdeTestVecPos pos) { simde_test_codegen_write_i32_full(indent, "???", value, pos); } static void simde_test_codegen_write_i64_full(int indent, const char* name, int64_t value, SimdeTestVecPos pos) { switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: simde_test_codegen_write_indent(indent); indent++; fputs("{ ", # 700 "../test/arm/neon/../../test.h" 3 4 stderr # 700 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_MIDDLE: case SIMDE_TEST_VEC_POS_LAST: indent++; simde_test_codegen_write_indent(indent); break; case SIMDE_TEST_VEC_POS_SINGLE: simde_test_codegen_write_indent(indent++); fprintf( # 700 "../test/arm/neon/../../test.h" 3 4 stderr # 700 "../test/arm/neon/../../test.h" , "static const " "int64_t" " %s = ", name); break; } { char buf[53]; simde_test_codegen_i64(sizeof(buf), buf, value); fputs(buf, # 700 "../test/arm/neon/../../test.h" 3 4 stderr # 700 "../test/arm/neon/../../test.h" ); } switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: case SIMDE_TEST_VEC_POS_MIDDLE: fputc(',', # 700 "../test/arm/neon/../../test.h" 3 4 stderr # 700 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_LAST: fputs(" },", # 700 "../test/arm/neon/../../test.h" 3 4 stderr # 700 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_SINGLE: fputs(";", # 700 "../test/arm/neon/../../test.h" 3 4 stderr # 700 "../test/arm/neon/../../test.h" ); break; } fputc('\n', # 700 "../test/arm/neon/../../test.h" 3 4 stderr # 700 "../test/arm/neon/../../test.h" ); } static void simde_test_codegen_write_i64(int indent, int64_t value, SimdeTestVecPos pos) { simde_test_codegen_write_i64_full(indent, "???", value, pos); } static void simde_test_codegen_write_u8_full(int indent, const char* name, uint8_t value, SimdeTestVecPos pos) { switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: simde_test_codegen_write_indent(indent); indent++; fputs("{ ", # 701 "../test/arm/neon/../../test.h" 3 4 stderr # 701 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_MIDDLE: case SIMDE_TEST_VEC_POS_LAST: indent++; simde_test_codegen_write_indent(indent); break; case SIMDE_TEST_VEC_POS_SINGLE: simde_test_codegen_write_indent(indent++); fprintf( # 701 "../test/arm/neon/../../test.h" 3 4 stderr # 701 "../test/arm/neon/../../test.h" , "static const " "uint8_t" " %s = ", name); break; } { char buf[53]; simde_test_codegen_u8(sizeof(buf), buf, value); fputs(buf, # 701 "../test/arm/neon/../../test.h" 3 4 stderr # 701 "../test/arm/neon/../../test.h" ); } switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: case SIMDE_TEST_VEC_POS_MIDDLE: fputc(',', # 701 "../test/arm/neon/../../test.h" 3 4 stderr # 701 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_LAST: fputs(" },", # 701 "../test/arm/neon/../../test.h" 3 4 stderr # 701 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_SINGLE: fputs(";", # 701 "../test/arm/neon/../../test.h" 3 4 stderr # 701 "../test/arm/neon/../../test.h" ); break; } fputc('\n', # 701 "../test/arm/neon/../../test.h" 3 4 stderr # 701 "../test/arm/neon/../../test.h" ); } static void simde_test_codegen_write_u8(int indent, uint8_t value, SimdeTestVecPos pos) { simde_test_codegen_write_u8_full(indent, "???", value, pos); } static void simde_test_codegen_write_u16_full(int indent, const char* name, uint16_t value, SimdeTestVecPos pos) { switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: simde_test_codegen_write_indent(indent); indent++; fputs("{ ", # 702 "../test/arm/neon/../../test.h" 3 4 stderr # 702 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_MIDDLE: case SIMDE_TEST_VEC_POS_LAST: indent++; simde_test_codegen_write_indent(indent); break; case SIMDE_TEST_VEC_POS_SINGLE: simde_test_codegen_write_indent(indent++); fprintf( # 702 "../test/arm/neon/../../test.h" 3 4 stderr # 702 "../test/arm/neon/../../test.h" , "static const " "uint16_t" " %s = ", name); break; } { char buf[53]; simde_test_codegen_u16(sizeof(buf), buf, value); fputs(buf, # 702 "../test/arm/neon/../../test.h" 3 4 stderr # 702 "../test/arm/neon/../../test.h" ); } switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: case SIMDE_TEST_VEC_POS_MIDDLE: fputc(',', # 702 "../test/arm/neon/../../test.h" 3 4 stderr # 702 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_LAST: fputs(" },", # 702 "../test/arm/neon/../../test.h" 3 4 stderr # 702 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_SINGLE: fputs(";", # 702 "../test/arm/neon/../../test.h" 3 4 stderr # 702 "../test/arm/neon/../../test.h" ); break; } fputc('\n', # 702 "../test/arm/neon/../../test.h" 3 4 stderr # 702 "../test/arm/neon/../../test.h" ); } static void simde_test_codegen_write_u16(int indent, uint16_t value, SimdeTestVecPos pos) { simde_test_codegen_write_u16_full(indent, "???", value, pos); } static void simde_test_codegen_write_u32_full(int indent, const char* name, uint32_t value, SimdeTestVecPos pos) { switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: simde_test_codegen_write_indent(indent); indent++; fputs("{ ", # 703 "../test/arm/neon/../../test.h" 3 4 stderr # 703 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_MIDDLE: case SIMDE_TEST_VEC_POS_LAST: indent++; simde_test_codegen_write_indent(indent); break; case SIMDE_TEST_VEC_POS_SINGLE: simde_test_codegen_write_indent(indent++); fprintf( # 703 "../test/arm/neon/../../test.h" 3 4 stderr # 703 "../test/arm/neon/../../test.h" , "static const " "uint32_t" " %s = ", name); break; } { char buf[53]; simde_test_codegen_u32(sizeof(buf), buf, value); fputs(buf, # 703 "../test/arm/neon/../../test.h" 3 4 stderr # 703 "../test/arm/neon/../../test.h" ); } switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: case SIMDE_TEST_VEC_POS_MIDDLE: fputc(',', # 703 "../test/arm/neon/../../test.h" 3 4 stderr # 703 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_LAST: fputs(" },", # 703 "../test/arm/neon/../../test.h" 3 4 stderr # 703 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_SINGLE: fputs(";", # 703 "../test/arm/neon/../../test.h" 3 4 stderr # 703 "../test/arm/neon/../../test.h" ); break; } fputc('\n', # 703 "../test/arm/neon/../../test.h" 3 4 stderr # 703 "../test/arm/neon/../../test.h" ); } static void simde_test_codegen_write_u32(int indent, uint32_t value, SimdeTestVecPos pos) { simde_test_codegen_write_u32_full(indent, "???", value, pos); } static void simde_test_codegen_write_u64_full(int indent, const char* name, uint64_t value, SimdeTestVecPos pos) { switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: simde_test_codegen_write_indent(indent); indent++; fputs("{ ", # 704 "../test/arm/neon/../../test.h" 3 4 stderr # 704 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_MIDDLE: case SIMDE_TEST_VEC_POS_LAST: indent++; simde_test_codegen_write_indent(indent); break; case SIMDE_TEST_VEC_POS_SINGLE: simde_test_codegen_write_indent(indent++); fprintf( # 704 "../test/arm/neon/../../test.h" 3 4 stderr # 704 "../test/arm/neon/../../test.h" , "static const " "uint64_t" " %s = ", name); break; } { char buf[53]; simde_test_codegen_u64(sizeof(buf), buf, value); fputs(buf, # 704 "../test/arm/neon/../../test.h" 3 4 stderr # 704 "../test/arm/neon/../../test.h" ); } switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: case SIMDE_TEST_VEC_POS_MIDDLE: fputc(',', # 704 "../test/arm/neon/../../test.h" 3 4 stderr # 704 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_LAST: fputs(" },", # 704 "../test/arm/neon/../../test.h" 3 4 stderr # 704 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_SINGLE: fputs(";", # 704 "../test/arm/neon/../../test.h" 3 4 stderr # 704 "../test/arm/neon/../../test.h" ); break; } fputc('\n', # 704 "../test/arm/neon/../../test.h" 3 4 stderr # 704 "../test/arm/neon/../../test.h" ); } static void simde_test_codegen_write_u64(int indent, uint64_t value, SimdeTestVecPos pos) { simde_test_codegen_write_u64_full(indent, "???", value, pos); } static void simde_test_codegen_write_f16_full(int indent, const char* name, simde_float16 value, SimdeTestVecPos pos) { switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: simde_test_codegen_write_indent(indent); indent++; fputs("{ ", # 705 "../test/arm/neon/../../test.h" 3 4 stderr # 705 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_MIDDLE: case SIMDE_TEST_VEC_POS_LAST: indent++; simde_test_codegen_write_indent(indent); break; case SIMDE_TEST_VEC_POS_SINGLE: simde_test_codegen_write_indent(indent++); fprintf( # 705 "../test/arm/neon/../../test.h" 3 4 stderr # 705 "../test/arm/neon/../../test.h" , "static const " "simde_float16" " %s = ", name); break; } { char buf[53]; simde_test_codegen_f16(sizeof(buf), buf, value); fputs(buf, # 705 "../test/arm/neon/../../test.h" 3 4 stderr # 705 "../test/arm/neon/../../test.h" ); } switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: case SIMDE_TEST_VEC_POS_MIDDLE: fputc(',', # 705 "../test/arm/neon/../../test.h" 3 4 stderr # 705 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_LAST: fputs(" },", # 705 "../test/arm/neon/../../test.h" 3 4 stderr # 705 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_SINGLE: fputs(";", # 705 "../test/arm/neon/../../test.h" 3 4 stderr # 705 "../test/arm/neon/../../test.h" ); break; } fputc('\n', # 705 "../test/arm/neon/../../test.h" 3 4 stderr # 705 "../test/arm/neon/../../test.h" ); } static void simde_test_codegen_write_f16(int indent, simde_float16 value, SimdeTestVecPos pos) { simde_test_codegen_write_f16_full(indent, "???", value, pos); } static void simde_test_codegen_write_f32_full(int indent, const char* name, simde_float32 value, SimdeTestVecPos pos) { switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: simde_test_codegen_write_indent(indent); indent++; fputs("{ ", # 706 "../test/arm/neon/../../test.h" 3 4 stderr # 706 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_MIDDLE: case SIMDE_TEST_VEC_POS_LAST: indent++; simde_test_codegen_write_indent(indent); break; case SIMDE_TEST_VEC_POS_SINGLE: simde_test_codegen_write_indent(indent++); fprintf( # 706 "../test/arm/neon/../../test.h" 3 4 stderr # 706 "../test/arm/neon/../../test.h" , "static const " "simde_float32" " %s = ", name); break; } { char buf[53]; simde_test_codegen_f32(sizeof(buf), buf, value); fputs(buf, # 706 "../test/arm/neon/../../test.h" 3 4 stderr # 706 "../test/arm/neon/../../test.h" ); } switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: case SIMDE_TEST_VEC_POS_MIDDLE: fputc(',', # 706 "../test/arm/neon/../../test.h" 3 4 stderr # 706 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_LAST: fputs(" },", # 706 "../test/arm/neon/../../test.h" 3 4 stderr # 706 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_SINGLE: fputs(";", # 706 "../test/arm/neon/../../test.h" 3 4 stderr # 706 "../test/arm/neon/../../test.h" ); break; } fputc('\n', # 706 "../test/arm/neon/../../test.h" 3 4 stderr # 706 "../test/arm/neon/../../test.h" ); } static void simde_test_codegen_write_f32(int indent, simde_float32 value, SimdeTestVecPos pos) { simde_test_codegen_write_f32_full(indent, "???", value, pos); } static void simde_test_codegen_write_f64_full(int indent, const char* name, simde_float64 value, SimdeTestVecPos pos) { switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: simde_test_codegen_write_indent(indent); indent++; fputs("{ ", # 707 "../test/arm/neon/../../test.h" 3 4 stderr # 707 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_MIDDLE: case SIMDE_TEST_VEC_POS_LAST: indent++; simde_test_codegen_write_indent(indent); break; case SIMDE_TEST_VEC_POS_SINGLE: simde_test_codegen_write_indent(indent++); fprintf( # 707 "../test/arm/neon/../../test.h" 3 4 stderr # 707 "../test/arm/neon/../../test.h" , "static const " "simde_float64" " %s = ", name); break; } { char buf[53]; simde_test_codegen_f64(sizeof(buf), buf, value); fputs(buf, # 707 "../test/arm/neon/../../test.h" 3 4 stderr # 707 "../test/arm/neon/../../test.h" ); } switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: case SIMDE_TEST_VEC_POS_MIDDLE: fputc(',', # 707 "../test/arm/neon/../../test.h" 3 4 stderr # 707 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_LAST: fputs(" },", # 707 "../test/arm/neon/../../test.h" 3 4 stderr # 707 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_SINGLE: fputs(";", # 707 "../test/arm/neon/../../test.h" 3 4 stderr # 707 "../test/arm/neon/../../test.h" ); break; } fputc('\n', # 707 "../test/arm/neon/../../test.h" 3 4 stderr # 707 "../test/arm/neon/../../test.h" ); } static void simde_test_codegen_write_f64(int indent, simde_float64 value, SimdeTestVecPos pos) { simde_test_codegen_write_f64_full(indent, "???", value, pos); } static void simde_test_codegen_write_p8_full(int indent, const char* name, simde_poly8 value, SimdeTestVecPos pos) { switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: simde_test_codegen_write_indent(indent); indent++; fputs("{ ", # 708 "../test/arm/neon/../../test.h" 3 4 stderr # 708 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_MIDDLE: case SIMDE_TEST_VEC_POS_LAST: indent++; simde_test_codegen_write_indent(indent); break; case SIMDE_TEST_VEC_POS_SINGLE: simde_test_codegen_write_indent(indent++); fprintf( # 708 "../test/arm/neon/../../test.h" 3 4 stderr # 708 "../test/arm/neon/../../test.h" , "static const " "simde_poly8" " %s = ", name); break; } { char buf[53]; simde_test_codegen_p8(sizeof(buf), buf, value); fputs(buf, # 708 "../test/arm/neon/../../test.h" 3 4 stderr # 708 "../test/arm/neon/../../test.h" ); } switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: case SIMDE_TEST_VEC_POS_MIDDLE: fputc(',', # 708 "../test/arm/neon/../../test.h" 3 4 stderr # 708 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_LAST: fputs(" },", # 708 "../test/arm/neon/../../test.h" 3 4 stderr # 708 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_SINGLE: fputs(";", # 708 "../test/arm/neon/../../test.h" 3 4 stderr # 708 "../test/arm/neon/../../test.h" ); break; } fputc('\n', # 708 "../test/arm/neon/../../test.h" 3 4 stderr # 708 "../test/arm/neon/../../test.h" ); } static void simde_test_codegen_write_p8(int indent, simde_poly8 value, SimdeTestVecPos pos) { simde_test_codegen_write_p8_full(indent, "???", value, pos); } static void simde_test_codegen_write_p16_full(int indent, const char* name, simde_poly16 value, SimdeTestVecPos pos) { switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: simde_test_codegen_write_indent(indent); indent++; fputs("{ ", # 709 "../test/arm/neon/../../test.h" 3 4 stderr # 709 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_MIDDLE: case SIMDE_TEST_VEC_POS_LAST: indent++; simde_test_codegen_write_indent(indent); break; case SIMDE_TEST_VEC_POS_SINGLE: simde_test_codegen_write_indent(indent++); fprintf( # 709 "../test/arm/neon/../../test.h" 3 4 stderr # 709 "../test/arm/neon/../../test.h" , "static const " "simde_poly16" " %s = ", name); break; } { char buf[53]; simde_test_codegen_p16(sizeof(buf), buf, value); fputs(buf, # 709 "../test/arm/neon/../../test.h" 3 4 stderr # 709 "../test/arm/neon/../../test.h" ); } switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: case SIMDE_TEST_VEC_POS_MIDDLE: fputc(',', # 709 "../test/arm/neon/../../test.h" 3 4 stderr # 709 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_LAST: fputs(" },", # 709 "../test/arm/neon/../../test.h" 3 4 stderr # 709 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_SINGLE: fputs(";", # 709 "../test/arm/neon/../../test.h" 3 4 stderr # 709 "../test/arm/neon/../../test.h" ); break; } fputc('\n', # 709 "../test/arm/neon/../../test.h" 3 4 stderr # 709 "../test/arm/neon/../../test.h" ); } static void simde_test_codegen_write_p16(int indent, simde_poly16 value, SimdeTestVecPos pos) { simde_test_codegen_write_p16_full(indent, "???", value, pos); } static void simde_test_codegen_write_p64_full(int indent, const char* name, simde_poly64 value, SimdeTestVecPos pos) { switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: simde_test_codegen_write_indent(indent); indent++; fputs("{ ", # 710 "../test/arm/neon/../../test.h" 3 4 stderr # 710 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_MIDDLE: case SIMDE_TEST_VEC_POS_LAST: indent++; simde_test_codegen_write_indent(indent); break; case SIMDE_TEST_VEC_POS_SINGLE: simde_test_codegen_write_indent(indent++); fprintf( # 710 "../test/arm/neon/../../test.h" 3 4 stderr # 710 "../test/arm/neon/../../test.h" , "static const " "simde_poly64" " %s = ", name); break; } { char buf[53]; simde_test_codegen_p64(sizeof(buf), buf, value); fputs(buf, # 710 "../test/arm/neon/../../test.h" 3 4 stderr # 710 "../test/arm/neon/../../test.h" ); } switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: case SIMDE_TEST_VEC_POS_MIDDLE: fputc(',', # 710 "../test/arm/neon/../../test.h" 3 4 stderr # 710 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_LAST: fputs(" },", # 710 "../test/arm/neon/../../test.h" 3 4 stderr # 710 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_SINGLE: fputs(";", # 710 "../test/arm/neon/../../test.h" 3 4 stderr # 710 "../test/arm/neon/../../test.h" ); break; } fputc('\n', # 710 "../test/arm/neon/../../test.h" 3 4 stderr # 710 "../test/arm/neon/../../test.h" ); } static void simde_test_codegen_write_p64(int indent, simde_poly64 value, SimdeTestVecPos pos) { simde_test_codegen_write_p64_full(indent, "???", value, pos); } static void simde_test_codegen_write_bf16_full(int indent, const char* name, simde_bfloat16 value, SimdeTestVecPos pos) { switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: simde_test_codegen_write_indent(indent); indent++; fputs("{ ", # 711 "../test/arm/neon/../../test.h" 3 4 stderr # 711 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_MIDDLE: case SIMDE_TEST_VEC_POS_LAST: indent++; simde_test_codegen_write_indent(indent); break; case SIMDE_TEST_VEC_POS_SINGLE: simde_test_codegen_write_indent(indent++); fprintf( # 711 "../test/arm/neon/../../test.h" 3 4 stderr # 711 "../test/arm/neon/../../test.h" , "static const " "simde_bfloat16" " %s = ", name); break; } { char buf[53]; simde_test_codegen_bf16(sizeof(buf), buf, value); fputs(buf, # 711 "../test/arm/neon/../../test.h" 3 4 stderr # 711 "../test/arm/neon/../../test.h" ); } switch (pos) { case SIMDE_TEST_VEC_POS_FIRST: case SIMDE_TEST_VEC_POS_MIDDLE: fputc(',', # 711 "../test/arm/neon/../../test.h" 3 4 stderr # 711 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_LAST: fputs(" },", # 711 "../test/arm/neon/../../test.h" 3 4 stderr # 711 "../test/arm/neon/../../test.h" ); break; case SIMDE_TEST_VEC_POS_SINGLE: fputs(";", # 711 "../test/arm/neon/../../test.h" 3 4 stderr # 711 "../test/arm/neon/../../test.h" ); break; } fputc('\n', # 711 "../test/arm/neon/../../test.h" 3 4 stderr # 711 "../test/arm/neon/../../test.h" ); } static void simde_test_codegen_write_bf16(int indent, simde_bfloat16 value, SimdeTestVecPos pos) { simde_test_codegen_write_bf16_full(indent, "???", value, pos); } # 729 "../test/arm/neon/../../test.h" # 729 "../test/arm/neon/../../test.h" #pragma GCC diagnostic push # 730 "../test/arm/neon/../../test.h" #pragma GCC diagnostic ignored "-Wfloat-equal" static int simde_test_equal_f32(simde_float32 a, simde_float32 b, simde_float32 slop) { if (__builtin_isnan(a)) { return __builtin_isnan(b); } else if (__builtin_isinf(a)) { return !((a < b) || (a > b)); } else if (slop == 0.0f) { return !__builtin_memcmp(&a, &b, sizeof(simde_float32)); } else { simde_float32 lo = a - slop; if (__builtin_expect (!!(lo == a), 0 )) lo = __builtin_nextafterf(a, -(__builtin_inff())); simde_float32 hi = a + slop; if (__builtin_expect (!!(hi == a), 0 )) hi = __builtin_nextafterf(a, (__builtin_inff())); return ((b >= lo) && (b <= hi)); } } static int simde_test_equal_f16(simde_float16 a, simde_float16 b, simde_float16 slop) { simde_float32 af = simde_float16_to_float32(a), bf = simde_float16_to_float32(b), slopf = simde_float16_to_float32(slop); return simde_test_equal_f32(af, bf, slopf); } static int simde_test_equal_f64(simde_float64 a, simde_float64 b, simde_float64 slop) { if (__builtin_isnan(a)) { return __builtin_isnan(b); } else if (__builtin_isinf(a)) { return !((a < b) || (a > b)); } else if (slop == 0.0) { return !__builtin_memcmp(&a, &b, sizeof(simde_float64)); } else { simde_float64 lo = a - slop; if (__builtin_expect (!!(lo == a), 0 )) lo = __builtin_nextafter(a, -(__builtin_inf())); simde_float64 hi = a + slop; if (__builtin_expect (!!(hi == a), 0 )) hi = __builtin_nextafter(a, (__builtin_inf())); return ((b >= lo) && (b <= hi)); } } static int simde_test_equal_bf16(simde_bfloat16 a, simde_bfloat16 b, simde_bfloat16 slop) { simde_float32 af = simde_bfloat16_to_float32(a), bf = simde_bfloat16_to_float32(b), slopf = simde_bfloat16_to_float32(slop); return simde_test_equal_f32(af, bf, slopf); } # 792 "../test/arm/neon/../../test.h" #pragma GCC diagnostic pop static simde_float16 simde_test_f16_precision_to_slop(int precision) { return __builtin_expect (!!(precision == 0x7fffffff # 796 "../test/arm/neon/../../test.h" ), 0 ) ? simde_float16_from_float32(0.0f) : simde_float16_from_float32(__builtin_powf(10.0f, -((float) (precision)))); } static float simde_test_f32_precision_to_slop(int precision) { return __builtin_expect (!!(precision == 0x7fffffff # 801 "../test/arm/neon/../../test.h" ), 0 ) ? 0.0f : __builtin_powf(10.0f, -((float) (precision))); } static double simde_test_f64_precision_to_slop(int precision) { return __builtin_expect (!!(precision == 0x7fffffff # 806 "../test/arm/neon/../../test.h" ), 0 ) ? 0.0 : __builtin_pow(10.0, -((double) (precision))); } static simde_bfloat16 simde_test_bf16_precision_to_slop(int precision) { return __builtin_expect (!!(precision == 0x7fffffff # 811 "../test/arm/neon/../../test.h" ), 0 ) ? simde_bfloat16_from_float32(0.0f) : simde_bfloat16_from_float32(__builtin_powf(10.0f, -((float) (precision)))); } static int simde_assert_equal_vf16_( size_t vec_len, simde_float16 const a[(vec_len)], simde_float16 const b[(vec_len)], simde_float16 slop, const char* filename, int line, const char* astr, const char* bstr) { simde_float32 slop_ = simde_float16_to_float32(slop); for (size_t i = 0 ; i < vec_len ; i++) { simde_float32 a_ = simde_float16_to_float32(a[i]); simde_float32 b_ = simde_float16_to_float32(b[i]); if (__builtin_expect (!!(!simde_test_equal_f32(a_, b_, slop_)), 0 )) { simde_test_debug_printf_("%s:%d: assertion failed: %s[%zu] ~= %s[%zu] (%f ~= %f)\n", filename, line, astr, i, bstr, i, ((double) (a_)), ((double) (b_))); return 1; } } return 0; } static int simde_assert_equal_f16_(simde_float16 a, simde_float16 b, simde_float16 slop, const char* filename, int line, const char* astr, const char* bstr) { simde_float32 a_ = simde_float16_to_float32(a); simde_float32 b_ = simde_float16_to_float32(b); simde_float32 slop_ = simde_float16_to_float32(slop); if (__builtin_expect (!!(!simde_test_equal_f32(a_, b_, slop_)), 0 )) { simde_test_debug_printf_("%s:%d: assertion failed: %s ~= %s (%f ~= %f)\n", filename, line, astr, bstr, ((double) (a_)), ((double) (b_))); return 1; } return 0; } static int simde_assert_equal_vf32_( size_t vec_len, simde_float32 const a[(vec_len)], simde_float32 const b[(vec_len)], simde_float32 slop, const char* filename, int line, const char* astr, const char* bstr) { for (size_t i = 0 ; i < vec_len ; i++) { if (__builtin_expect (!!(!simde_test_equal_f32(a[i], b[i], slop)), 0 )) { simde_test_debug_printf_("%s:%d: assertion failed: %s[%zu] ~= %s[%zu] (%f ~= %f)\n", filename, line, astr, i, bstr, i, ((double) (a[i])), ((double) (b[i]))); return 1; } } return 0; } static int simde_assert_equal_f32_(simde_float32 a, simde_float32 b, simde_float32 slop, const char* filename, int line, const char* astr, const char* bstr) { if (__builtin_expect (!!(!simde_test_equal_f32(a, b, slop)), 0 )) { simde_test_debug_printf_("%s:%d: assertion failed: %s ~= %s (%f ~= %f)\n", filename, line, astr, bstr, ((double) (a)), ((double) (b))); return 1; } return 0; } static int simde_assert_equal_vf64_( size_t vec_len, simde_float64 const a[(vec_len)], simde_float64 const b[(vec_len)], simde_float64 slop, const char* filename, int line, const char* astr, const char* bstr) { for (size_t i = 0 ; i < vec_len ; i++) { if (__builtin_expect (!!(!simde_test_equal_f64(a[i], b[i], slop)), 0 )) { simde_test_debug_printf_("%s:%d: assertion failed: %s[%zu] ~= %s[%zu] (%f ~= %f)\n", filename, line, astr, i, bstr, i, ((double) (a[i])), ((double) (b[i]))); return 1; } } return 0; } static int simde_assert_equal_f64_(simde_float64 a, simde_float64 b, simde_float64 slop, const char* filename, int line, const char* astr, const char* bstr) { if (__builtin_expect (!!(!simde_test_equal_f64(a, b, slop)), 0 )) { simde_test_debug_printf_("%s:%d: assertion failed: %s ~= %s (%f ~= %f)\n", filename, line, astr, bstr, a, b); return 1; } return 0; } static int simde_assert_equal_vbf16_( size_t vec_len, simde_bfloat16 const a[(vec_len)], simde_bfloat16 const b[(vec_len)], simde_bfloat16 slop, const char* filename, int line, const char* astr, const char* bstr) { simde_float32 slop_ = simde_bfloat16_to_float32(slop); for (size_t i = 0 ; i < vec_len ; i++) { simde_float32 a_ = simde_bfloat16_to_float32(a[i]); simde_float32 b_ = simde_bfloat16_to_float32(b[i]); if (__builtin_expect (!!(!simde_test_equal_f32(a_, b_, slop_)), 0 )) { simde_test_debug_printf_("%s:%d: assertion failed: %s[%zu] ~= %s[%zu] (%f ~= %f)\n", filename, line, astr, i, bstr, i, ((double) (a_)), ((double) (b_))); return 1; } } return 0; } static int simde_assert_equal_bf16_(simde_bfloat16 a, simde_bfloat16 b, simde_bfloat16 slop, const char* filename, int line, const char* astr, const char* bstr) { simde_float32 a_ = simde_bfloat16_to_float32(a); simde_float32 b_ = simde_bfloat16_to_float32(b); simde_float32 slop_ = simde_bfloat16_to_float32(slop); if (__builtin_expect (!!(!simde_test_equal_f32(a_, b_, slop_)), 0 )) { simde_test_debug_printf_("%s:%d: assertion failed: %s ~= %s (%f ~= %f)\n", filename, line, astr, bstr, ((double) (a_)), ((double) (b_))); return 1; } return 0; } static int simde_assert_equal_vp8_( size_t vec_len, simde_poly8 const a[(vec_len)], simde_poly8 const b[(vec_len)], const char* filename, int line, const char* astr, const char* bstr) { for (size_t i = 0 ; i < vec_len ; i++) { uint8_t a_ = ((uint8_t) (a[i])); uint8_t b_ = ((uint8_t) (b[i])); if (__builtin_expect (!!(a_ != b_), 0 )) { simde_test_debug_printf_("%s:%d: assertion failed: %s[%zu] ~= %s[%zu] (%" # 949 "../test/arm/neon/../../test.h" 3 4 "u" # 949 "../test/arm/neon/../../test.h" " ~= %" # 949 "../test/arm/neon/../../test.h" 3 4 "u" # 949 "../test/arm/neon/../../test.h" ")\n", filename, line, astr, i, bstr, i, a_, b_); return 1; } } return 0; } static int simde_assert_equal_p8_(simde_poly8 a, simde_poly8 b, const char* filename, int line, const char* astr, const char* bstr) { uint8_t a_ = ((uint8_t) (a)); uint8_t b_ = ((uint8_t) (b)); if (__builtin_expect (!!(a_ != b_), 0 )) { simde_test_debug_printf_("%s:%d: assertion failed: %s ~= %s (%" # 964 "../test/arm/neon/../../test.h" 3 4 "u" # 964 "../test/arm/neon/../../test.h" " ~= %" # 964 "../test/arm/neon/../../test.h" 3 4 "u" # 964 "../test/arm/neon/../../test.h" ")\n", filename, line, astr, bstr, a_, b_); return 1; } return 0; } static int simde_assert_equal_vp16_( size_t vec_len, simde_poly16 const a[(vec_len)], simde_poly16 const b[(vec_len)], const char* filename, int line, const char* astr, const char* bstr) { for (size_t i = 0 ; i < vec_len ; i++) { uint16_t a_ = ((uint16_t) (a[i])); uint16_t b_ = ((uint16_t) (b[i])); if (__builtin_expect (!!(a_ != b_), 0 )) { simde_test_debug_printf_("%s:%d: assertion failed: %s[%zu] ~= %s[%zu] (%" # 981 "../test/arm/neon/../../test.h" 3 4 "u" # 981 "../test/arm/neon/../../test.h" " ~= %" # 981 "../test/arm/neon/../../test.h" 3 4 "u" # 981 "../test/arm/neon/../../test.h" ")\n", filename, line, astr, i, bstr, i, a_, b_); return 1; } } return 0; } static int simde_assert_equal_p16_(simde_poly16 a, simde_poly16 b, const char* filename, int line, const char* astr, const char* bstr) { uint16_t a_ = ((uint16_t) (a)); uint16_t b_ = ((uint16_t) (b)); if (__builtin_expect (!!(a_ != b_), 0 )) { simde_test_debug_printf_("%s:%d: assertion failed: %s ~= %s (%" # 996 "../test/arm/neon/../../test.h" 3 4 "u" # 996 "../test/arm/neon/../../test.h" " ~= %" # 996 "../test/arm/neon/../../test.h" 3 4 "u" # 996 "../test/arm/neon/../../test.h" ")\n", filename, line, astr, bstr, a_, b_); return 1; } return 0; } static int simde_assert_equal_vp64_( size_t vec_len, simde_poly64 const a[(vec_len)], simde_poly64 const b[(vec_len)], const char* filename, int line, const char* astr, const char* bstr) { for (size_t i = 0 ; i < vec_len ; i++) { uint64_t a_ = ((uint64_t) (a[i])); uint64_t b_ = ((uint64_t) (b[i])); if (__builtin_expect (!!(a_ != b_), 0 )) { simde_test_debug_printf_("%s:%d: assertion failed: %s[%zu] ~= %s[%zu] (%" # 1013 "../test/arm/neon/../../test.h" 3 4 "l" "u" # 1013 "../test/arm/neon/../../test.h" " ~= %" # 1013 "../test/arm/neon/../../test.h" 3 4 "l" "u" # 1013 "../test/arm/neon/../../test.h" ")\n", filename, line, astr, i, bstr, i, a_, b_); return 1; } } return 0; } static int simde_assert_equal_p64_(simde_poly64 a, simde_poly64 b, const char* filename, int line, const char* astr, const char* bstr) { uint64_t a_ = ((uint64_t) (a)); uint64_t b_ = ((uint64_t) (b)); if (__builtin_expect (!!(a_ != b_), 0 )) { simde_test_debug_printf_("%s:%d: assertion failed: %s ~= %s (%" # 1028 "../test/arm/neon/../../test.h" 3 4 "l" "u" # 1028 "../test/arm/neon/../../test.h" " ~= %" # 1028 "../test/arm/neon/../../test.h" 3 4 "l" "u" # 1028 "../test/arm/neon/../../test.h" ")\n", filename, line, astr, bstr, a_, b_); return 1; } return 0; } # 1087 "../test/arm/neon/../../test.h" static int simde_assert_equal_i_(int a, int b, const char* filename, int line, const char* astr, const char* bstr) { if (__builtin_expect (!!(a != b), 0 )) { simde_test_debug_printf_("%s:%d: assertion failed: %s == %s (%d == %d)\n", filename, line, astr, bstr, a, b); return 1; } return 0; } static int simde_assert_equal_vi8_( size_t vec_len, const int8_t a[(vec_len)], const int8_t b[(vec_len)], const char* filename, int line, const char* astr, const char* bstr) { for (size_t i = 0 ; i < vec_len ; i++) { if (__builtin_expect (!!(a[i] != b[i]), 0 )) { simde_test_debug_printf_("%s:%d: assertion failed: %s[%zu] == %s[%zu] (%" # 1097 "../test/arm/neon/../../test.h" 3 4 "d" # 1097 "../test/arm/neon/../../test.h" " == %" # 1097 "../test/arm/neon/../../test.h" 3 4 "d" # 1097 "../test/arm/neon/../../test.h" ")\n", filename, line, astr, i, bstr, i, a[i], b[i]); return 1; } } return 0; } static int simde_assert_equal_i8_(int8_t a, int8_t b, const char* filename, int line, const char* astr, const char* bstr) { if (__builtin_expect (!!(a != b), 0 )) { simde_test_debug_printf_("%s:%d: assertion failed: %s == %s (%" # 1097 "../test/arm/neon/../../test.h" 3 4 "d" # 1097 "../test/arm/neon/../../test.h" " == %" # 1097 "../test/arm/neon/../../test.h" 3 4 "d" # 1097 "../test/arm/neon/../../test.h" ")\n", filename, line, astr, bstr, a, b); return 1; } return 0; } static int simde_assert_close_vi8_( size_t vec_len, const int8_t a[(vec_len)], const int8_t b[(vec_len)], const int8_t slop, const char* filename, int line, const char* astr, const char* bstr) { for (size_t i = 0 ; i < vec_len ; i++) { if (((a[i] + slop) < b[i]) || ((a[i] - slop) > b[i])) { simde_test_debug_printf_("%s:%d: assertion failed: %s[%zu] == %s[%zu] (%" # 1097 "../test/arm/neon/../../test.h" 3 4 "d" # 1097 "../test/arm/neon/../../test.h" " == %" # 1097 "../test/arm/neon/../../test.h" 3 4 "d" # 1097 "../test/arm/neon/../../test.h" ")\n", filename, line, astr, i, bstr, i, a[i], b[i]); return 1; } } return 0; } static int simde_assert_close_i8_(int8_t a, int8_t b, int8_t slop, const char* filename, int line, const char* astr, const char* bstr) { if (((a + slop) < b) || ((a - slop) > b)) { simde_test_debug_printf_("%s:%d: assertion failed: %s == %s +/- %" # 1097 "../test/arm/neon/../../test.h" 3 4 "d" # 1097 "../test/arm/neon/../../test.h" " (%" # 1097 "../test/arm/neon/../../test.h" 3 4 "d" # 1097 "../test/arm/neon/../../test.h" " == %" # 1097 "../test/arm/neon/../../test.h" 3 4 "d" # 1097 "../test/arm/neon/../../test.h" ")\n", filename, line, astr, bstr, slop, a, b); return 1; } return 0; } static int simde_assert_equal_vi16_( size_t vec_len, const int16_t a[(vec_len)], const int16_t b[(vec_len)], const char* filename, int line, const char* astr, const char* bstr) { for (size_t i = 0 ; i < vec_len ; i++) { if (__builtin_expect (!!(a[i] != b[i]), 0 )) { simde_test_debug_printf_("%s:%d: assertion failed: %s[%zu] == %s[%zu] (%" # 1098 "../test/arm/neon/../../test.h" 3 4 "d" # 1098 "../test/arm/neon/../../test.h" " == %" # 1098 "../test/arm/neon/../../test.h" 3 4 "d" # 1098 "../test/arm/neon/../../test.h" ")\n", filename, line, astr, i, bstr, i, a[i], b[i]); return 1; } } return 0; } static int simde_assert_equal_i16_(int16_t a, int16_t b, const char* filename, int line, const char* astr, const char* bstr) { if (__builtin_expect (!!(a != b), 0 )) { simde_test_debug_printf_("%s:%d: assertion failed: %s == %s (%" # 1098 "../test/arm/neon/../../test.h" 3 4 "d" # 1098 "../test/arm/neon/../../test.h" " == %" # 1098 "../test/arm/neon/../../test.h" 3 4 "d" # 1098 "../test/arm/neon/../../test.h" ")\n", filename, line, astr, bstr, a, b); return 1; } return 0; } static int simde_assert_close_vi16_( size_t vec_len, const int16_t a[(vec_len)], const int16_t b[(vec_len)], const int16_t slop, const char* filename, int line, const char* astr, const char* bstr) { for (size_t i = 0 ; i < vec_len ; i++) { if (((a[i] + slop) < b[i]) || ((a[i] - slop) > b[i])) { simde_test_debug_printf_("%s:%d: assertion failed: %s[%zu] == %s[%zu] (%" # 1098 "../test/arm/neon/../../test.h" 3 4 "d" # 1098 "../test/arm/neon/../../test.h" " == %" # 1098 "../test/arm/neon/../../test.h" 3 4 "d" # 1098 "../test/arm/neon/../../test.h" ")\n", filename, line, astr, i, bstr, i, a[i], b[i]); return 1; } } return 0; } static int simde_assert_close_i16_(int16_t a, int16_t b, int16_t slop, const char* filename, int line, const char* astr, const char* bstr) { if (((a + slop) < b) || ((a - slop) > b)) { simde_test_debug_printf_("%s:%d: assertion failed: %s == %s +/- %" # 1098 "../test/arm/neon/../../test.h" 3 4 "d" # 1098 "../test/arm/neon/../../test.h" " (%" # 1098 "../test/arm/neon/../../test.h" 3 4 "d" # 1098 "../test/arm/neon/../../test.h" " == %" # 1098 "../test/arm/neon/../../test.h" 3 4 "d" # 1098 "../test/arm/neon/../../test.h" ")\n", filename, line, astr, bstr, slop, a, b); return 1; } return 0; } static int simde_assert_equal_vi32_( size_t vec_len, const int32_t a[(vec_len)], const int32_t b[(vec_len)], const char* filename, int line, const char* astr, const char* bstr) { for (size_t i = 0 ; i < vec_len ; i++) { if (__builtin_expect (!!(a[i] != b[i]), 0 )) { simde_test_debug_printf_("%s:%d: assertion failed: %s[%zu] == %s[%zu] (%" # 1099 "../test/arm/neon/../../test.h" 3 4 "d" # 1099 "../test/arm/neon/../../test.h" " == %" # 1099 "../test/arm/neon/../../test.h" 3 4 "d" # 1099 "../test/arm/neon/../../test.h" ")\n", filename, line, astr, i, bstr, i, a[i], b[i]); return 1; } } return 0; } static int simde_assert_equal_i32_(int32_t a, int32_t b, const char* filename, int line, const char* astr, const char* bstr) { if (__builtin_expect (!!(a != b), 0 )) { simde_test_debug_printf_("%s:%d: assertion failed: %s == %s (%" # 1099 "../test/arm/neon/../../test.h" 3 4 "d" # 1099 "../test/arm/neon/../../test.h" " == %" # 1099 "../test/arm/neon/../../test.h" 3 4 "d" # 1099 "../test/arm/neon/../../test.h" ")\n", filename, line, astr, bstr, a, b); return 1; } return 0; } static int simde_assert_close_vi32_( size_t vec_len, const int32_t a[(vec_len)], const int32_t b[(vec_len)], const int32_t slop, const char* filename, int line, const char* astr, const char* bstr) { for (size_t i = 0 ; i < vec_len ; i++) { if (((a[i] + slop) < b[i]) || ((a[i] - slop) > b[i])) { simde_test_debug_printf_("%s:%d: assertion failed: %s[%zu] == %s[%zu] (%" # 1099 "../test/arm/neon/../../test.h" 3 4 "d" # 1099 "../test/arm/neon/../../test.h" " == %" # 1099 "../test/arm/neon/../../test.h" 3 4 "d" # 1099 "../test/arm/neon/../../test.h" ")\n", filename, line, astr, i, bstr, i, a[i], b[i]); return 1; } } return 0; } static int simde_assert_close_i32_(int32_t a, int32_t b, int32_t slop, const char* filename, int line, const char* astr, const char* bstr) { if (((a + slop) < b) || ((a - slop) > b)) { simde_test_debug_printf_("%s:%d: assertion failed: %s == %s +/- %" # 1099 "../test/arm/neon/../../test.h" 3 4 "d" # 1099 "../test/arm/neon/../../test.h" " (%" # 1099 "../test/arm/neon/../../test.h" 3 4 "d" # 1099 "../test/arm/neon/../../test.h" " == %" # 1099 "../test/arm/neon/../../test.h" 3 4 "d" # 1099 "../test/arm/neon/../../test.h" ")\n", filename, line, astr, bstr, slop, a, b); return 1; } return 0; } static int simde_assert_equal_vi64_( size_t vec_len, const int64_t a[(vec_len)], const int64_t b[(vec_len)], const char* filename, int line, const char* astr, const char* bstr) { for (size_t i = 0 ; i < vec_len ; i++) { if (__builtin_expect (!!(a[i] != b[i]), 0 )) { simde_test_debug_printf_("%s:%d: assertion failed: %s[%zu] == %s[%zu] (%" # 1100 "../test/arm/neon/../../test.h" 3 4 "l" "d" # 1100 "../test/arm/neon/../../test.h" " == %" # 1100 "../test/arm/neon/../../test.h" 3 4 "l" "d" # 1100 "../test/arm/neon/../../test.h" ")\n", filename, line, astr, i, bstr, i, a[i], b[i]); return 1; } } return 0; } static int simde_assert_equal_i64_(int64_t a, int64_t b, const char* filename, int line, const char* astr, const char* bstr) { if (__builtin_expect (!!(a != b), 0 )) { simde_test_debug_printf_("%s:%d: assertion failed: %s == %s (%" # 1100 "../test/arm/neon/../../test.h" 3 4 "l" "d" # 1100 "../test/arm/neon/../../test.h" " == %" # 1100 "../test/arm/neon/../../test.h" 3 4 "l" "d" # 1100 "../test/arm/neon/../../test.h" ")\n", filename, line, astr, bstr, a, b); return 1; } return 0; } static int simde_assert_close_vi64_( size_t vec_len, const int64_t a[(vec_len)], const int64_t b[(vec_len)], const int64_t slop, const char* filename, int line, const char* astr, const char* bstr) { for (size_t i = 0 ; i < vec_len ; i++) { if (((a[i] + slop) < b[i]) || ((a[i] - slop) > b[i])) { simde_test_debug_printf_("%s:%d: assertion failed: %s[%zu] == %s[%zu] (%" # 1100 "../test/arm/neon/../../test.h" 3 4 "l" "d" # 1100 "../test/arm/neon/../../test.h" " == %" # 1100 "../test/arm/neon/../../test.h" 3 4 "l" "d" # 1100 "../test/arm/neon/../../test.h" ")\n", filename, line, astr, i, bstr, i, a[i], b[i]); return 1; } } return 0; } static int simde_assert_close_i64_(int64_t a, int64_t b, int64_t slop, const char* filename, int line, const char* astr, const char* bstr) { if (((a + slop) < b) || ((a - slop) > b)) { simde_test_debug_printf_("%s:%d: assertion failed: %s == %s +/- %" # 1100 "../test/arm/neon/../../test.h" 3 4 "l" "d" # 1100 "../test/arm/neon/../../test.h" " (%" # 1100 "../test/arm/neon/../../test.h" 3 4 "l" "d" # 1100 "../test/arm/neon/../../test.h" " == %" # 1100 "../test/arm/neon/../../test.h" 3 4 "l" "d" # 1100 "../test/arm/neon/../../test.h" ")\n", filename, line, astr, bstr, slop, a, b); return 1; } return 0; } static int simde_assert_equal_vu8_( size_t vec_len, const uint8_t a[(vec_len)], const uint8_t b[(vec_len)], const char* filename, int line, const char* astr, const char* bstr) { for (size_t i = 0 ; i < vec_len ; i++) { if (__builtin_expect (!!(a[i] != b[i]), 0 )) { simde_test_debug_printf_("%s:%d: assertion failed: %s[%zu] == %s[%zu] (%" # 1101 "../test/arm/neon/../../test.h" 3 4 "u" # 1101 "../test/arm/neon/../../test.h" " == %" # 1101 "../test/arm/neon/../../test.h" 3 4 "u" # 1101 "../test/arm/neon/../../test.h" ")\n", filename, line, astr, i, bstr, i, a[i], b[i]); return 1; } } return 0; } static int simde_assert_equal_u8_(uint8_t a, uint8_t b, const char* filename, int line, const char* astr, const char* bstr) { if (__builtin_expect (!!(a != b), 0 )) { simde_test_debug_printf_("%s:%d: assertion failed: %s == %s (%" # 1101 "../test/arm/neon/../../test.h" 3 4 "u" # 1101 "../test/arm/neon/../../test.h" " == %" # 1101 "../test/arm/neon/../../test.h" 3 4 "u" # 1101 "../test/arm/neon/../../test.h" ")\n", filename, line, astr, bstr, a, b); return 1; } return 0; } static int simde_assert_close_vu8_( size_t vec_len, const uint8_t a[(vec_len)], const uint8_t b[(vec_len)], const uint8_t slop, const char* filename, int line, const char* astr, const char* bstr) { for (size_t i = 0 ; i < vec_len ; i++) { if (((a[i] + slop) < b[i]) || ((a[i] - slop) > b[i])) { simde_test_debug_printf_("%s:%d: assertion failed: %s[%zu] == %s[%zu] (%" # 1101 "../test/arm/neon/../../test.h" 3 4 "u" # 1101 "../test/arm/neon/../../test.h" " == %" # 1101 "../test/arm/neon/../../test.h" 3 4 "u" # 1101 "../test/arm/neon/../../test.h" ")\n", filename, line, astr, i, bstr, i, a[i], b[i]); return 1; } } return 0; } static int simde_assert_close_u8_(uint8_t a, uint8_t b, uint8_t slop, const char* filename, int line, const char* astr, const char* bstr) { if (((a + slop) < b) || ((a - slop) > b)) { simde_test_debug_printf_("%s:%d: assertion failed: %s == %s +/- %" # 1101 "../test/arm/neon/../../test.h" 3 4 "u" # 1101 "../test/arm/neon/../../test.h" " (%" # 1101 "../test/arm/neon/../../test.h" 3 4 "u" # 1101 "../test/arm/neon/../../test.h" " == %" # 1101 "../test/arm/neon/../../test.h" 3 4 "u" # 1101 "../test/arm/neon/../../test.h" ")\n", filename, line, astr, bstr, slop, a, b); return 1; } return 0; } static int simde_assert_equal_vu16_( size_t vec_len, const uint16_t a[(vec_len)], const uint16_t b[(vec_len)], const char* filename, int line, const char* astr, const char* bstr) { for (size_t i = 0 ; i < vec_len ; i++) { if (__builtin_expect (!!(a[i] != b[i]), 0 )) { simde_test_debug_printf_("%s:%d: assertion failed: %s[%zu] == %s[%zu] (%" # 1102 "../test/arm/neon/../../test.h" 3 4 "u" # 1102 "../test/arm/neon/../../test.h" " == %" # 1102 "../test/arm/neon/../../test.h" 3 4 "u" # 1102 "../test/arm/neon/../../test.h" ")\n", filename, line, astr, i, bstr, i, a[i], b[i]); return 1; } } return 0; } static int simde_assert_equal_u16_(uint16_t a, uint16_t b, const char* filename, int line, const char* astr, const char* bstr) { if (__builtin_expect (!!(a != b), 0 )) { simde_test_debug_printf_("%s:%d: assertion failed: %s == %s (%" # 1102 "../test/arm/neon/../../test.h" 3 4 "u" # 1102 "../test/arm/neon/../../test.h" " == %" # 1102 "../test/arm/neon/../../test.h" 3 4 "u" # 1102 "../test/arm/neon/../../test.h" ")\n", filename, line, astr, bstr, a, b); return 1; } return 0; } static int simde_assert_close_vu16_( size_t vec_len, const uint16_t a[(vec_len)], const uint16_t b[(vec_len)], const uint16_t slop, const char* filename, int line, const char* astr, const char* bstr) { for (size_t i = 0 ; i < vec_len ; i++) { if (((a[i] + slop) < b[i]) || ((a[i] - slop) > b[i])) { simde_test_debug_printf_("%s:%d: assertion failed: %s[%zu] == %s[%zu] (%" # 1102 "../test/arm/neon/../../test.h" 3 4 "u" # 1102 "../test/arm/neon/../../test.h" " == %" # 1102 "../test/arm/neon/../../test.h" 3 4 "u" # 1102 "../test/arm/neon/../../test.h" ")\n", filename, line, astr, i, bstr, i, a[i], b[i]); return 1; } } return 0; } static int simde_assert_close_u16_(uint16_t a, uint16_t b, uint16_t slop, const char* filename, int line, const char* astr, const char* bstr) { if (((a + slop) < b) || ((a - slop) > b)) { simde_test_debug_printf_("%s:%d: assertion failed: %s == %s +/- %" # 1102 "../test/arm/neon/../../test.h" 3 4 "u" # 1102 "../test/arm/neon/../../test.h" " (%" # 1102 "../test/arm/neon/../../test.h" 3 4 "u" # 1102 "../test/arm/neon/../../test.h" " == %" # 1102 "../test/arm/neon/../../test.h" 3 4 "u" # 1102 "../test/arm/neon/../../test.h" ")\n", filename, line, astr, bstr, slop, a, b); return 1; } return 0; } static int simde_assert_equal_vu32_( size_t vec_len, const uint32_t a[(vec_len)], const uint32_t b[(vec_len)], const char* filename, int line, const char* astr, const char* bstr) { for (size_t i = 0 ; i < vec_len ; i++) { if (__builtin_expect (!!(a[i] != b[i]), 0 )) { simde_test_debug_printf_("%s:%d: assertion failed: %s[%zu] == %s[%zu] (%" # 1103 "../test/arm/neon/../../test.h" 3 4 "u" # 1103 "../test/arm/neon/../../test.h" " == %" # 1103 "../test/arm/neon/../../test.h" 3 4 "u" # 1103 "../test/arm/neon/../../test.h" ")\n", filename, line, astr, i, bstr, i, a[i], b[i]); return 1; } } return 0; } static int simde_assert_equal_u32_(uint32_t a, uint32_t b, const char* filename, int line, const char* astr, const char* bstr) { if (__builtin_expect (!!(a != b), 0 )) { simde_test_debug_printf_("%s:%d: assertion failed: %s == %s (%" # 1103 "../test/arm/neon/../../test.h" 3 4 "u" # 1103 "../test/arm/neon/../../test.h" " == %" # 1103 "../test/arm/neon/../../test.h" 3 4 "u" # 1103 "../test/arm/neon/../../test.h" ")\n", filename, line, astr, bstr, a, b); return 1; } return 0; } static int simde_assert_close_vu32_( size_t vec_len, const uint32_t a[(vec_len)], const uint32_t b[(vec_len)], const uint32_t slop, const char* filename, int line, const char* astr, const char* bstr) { for (size_t i = 0 ; i < vec_len ; i++) { if (((a[i] + slop) < b[i]) || ((a[i] - slop) > b[i])) { simde_test_debug_printf_("%s:%d: assertion failed: %s[%zu] == %s[%zu] (%" # 1103 "../test/arm/neon/../../test.h" 3 4 "u" # 1103 "../test/arm/neon/../../test.h" " == %" # 1103 "../test/arm/neon/../../test.h" 3 4 "u" # 1103 "../test/arm/neon/../../test.h" ")\n", filename, line, astr, i, bstr, i, a[i], b[i]); return 1; } } return 0; } static int simde_assert_close_u32_(uint32_t a, uint32_t b, uint32_t slop, const char* filename, int line, const char* astr, const char* bstr) { if (((a + slop) < b) || ((a - slop) > b)) { simde_test_debug_printf_("%s:%d: assertion failed: %s == %s +/- %" # 1103 "../test/arm/neon/../../test.h" 3 4 "u" # 1103 "../test/arm/neon/../../test.h" " (%" # 1103 "../test/arm/neon/../../test.h" 3 4 "u" # 1103 "../test/arm/neon/../../test.h" " == %" # 1103 "../test/arm/neon/../../test.h" 3 4 "u" # 1103 "../test/arm/neon/../../test.h" ")\n", filename, line, astr, bstr, slop, a, b); return 1; } return 0; } static int simde_assert_equal_vu64_( size_t vec_len, const uint64_t a[(vec_len)], const uint64_t b[(vec_len)], const char* filename, int line, const char* astr, const char* bstr) { for (size_t i = 0 ; i < vec_len ; i++) { if (__builtin_expect (!!(a[i] != b[i]), 0 )) { simde_test_debug_printf_("%s:%d: assertion failed: %s[%zu] == %s[%zu] (%" # 1104 "../test/arm/neon/../../test.h" 3 4 "l" "u" # 1104 "../test/arm/neon/../../test.h" " == %" # 1104 "../test/arm/neon/../../test.h" 3 4 "l" "u" # 1104 "../test/arm/neon/../../test.h" ")\n", filename, line, astr, i, bstr, i, a[i], b[i]); return 1; } } return 0; } static int simde_assert_equal_u64_(uint64_t a, uint64_t b, const char* filename, int line, const char* astr, const char* bstr) { if (__builtin_expect (!!(a != b), 0 )) { simde_test_debug_printf_("%s:%d: assertion failed: %s == %s (%" # 1104 "../test/arm/neon/../../test.h" 3 4 "l" "u" # 1104 "../test/arm/neon/../../test.h" " == %" # 1104 "../test/arm/neon/../../test.h" 3 4 "l" "u" # 1104 "../test/arm/neon/../../test.h" ")\n", filename, line, astr, bstr, a, b); return 1; } return 0; } static int simde_assert_close_vu64_( size_t vec_len, const uint64_t a[(vec_len)], const uint64_t b[(vec_len)], const uint64_t slop, const char* filename, int line, const char* astr, const char* bstr) { for (size_t i = 0 ; i < vec_len ; i++) { if (((a[i] + slop) < b[i]) || ((a[i] - slop) > b[i])) { simde_test_debug_printf_("%s:%d: assertion failed: %s[%zu] == %s[%zu] (%" # 1104 "../test/arm/neon/../../test.h" 3 4 "l" "u" # 1104 "../test/arm/neon/../../test.h" " == %" # 1104 "../test/arm/neon/../../test.h" 3 4 "l" "u" # 1104 "../test/arm/neon/../../test.h" ")\n", filename, line, astr, i, bstr, i, a[i], b[i]); return 1; } } return 0; } static int simde_assert_close_u64_(uint64_t a, uint64_t b, uint64_t slop, const char* filename, int line, const char* astr, const char* bstr) { if (((a + slop) < b) || ((a - slop) > b)) { simde_test_debug_printf_("%s:%d: assertion failed: %s == %s +/- %" # 1104 "../test/arm/neon/../../test.h" 3 4 "l" "u" # 1104 "../test/arm/neon/../../test.h" " (%" # 1104 "../test/arm/neon/../../test.h" 3 4 "l" "u" # 1104 "../test/arm/neon/../../test.h" " == %" # 1104 "../test/arm/neon/../../test.h" 3 4 "l" "u" # 1104 "../test/arm/neon/../../test.h" ")\n", filename, line, astr, bstr, slop, a, b); return 1; } return 0; } # 1225 "../test/arm/neon/../../test.h" # 1225 "../test/arm/neon/../../test.h" #pragma GCC diagnostic pop # 5 "../test/arm/neon/test-neon.h" 2 # 1 "../test/arm/neon/../../../simde/arm/neon/ld1.h" 1 # 33 "../test/arm/neon/../../../simde/arm/neon/ld1.h" # 1 "../test/arm/neon/../../../simde/arm/neon/types.h" 1 # 32 "../test/arm/neon/../../../simde/arm/neon/types.h" # 1 "../test/arm/neon/../../../simde/arm/neon/../../simde-common.h" 1 # 33 "../test/arm/neon/../../../simde/arm/neon/types.h" 2 # 1 "../test/arm/neon/../../../simde/arm/neon/../../simde-f16.h" 1 # 28 "../test/arm/neon/../../../simde/arm/neon/../../simde-f16.h" # 1 "../test/arm/neon/../../../simde/arm/neon/../../hedley.h" 1 # 29 "../test/arm/neon/../../../simde/arm/neon/../../simde-f16.h" 2 # 1 "../test/arm/neon/../../../simde/arm/neon/../../simde-common.h" 1 # 30 "../test/arm/neon/../../../simde/arm/neon/../../simde-f16.h" 2 # 1 "../test/arm/neon/../../../simde/arm/neon/../../simde-detect-clang.h" 1 # 31 "../test/arm/neon/../../../simde/arm/neon/../../simde-f16.h" 2 # 34 "../test/arm/neon/../../../simde/arm/neon/types.h" 2 # 1 "../test/arm/neon/../../../simde/arm/neon/../../simde-bf16.h" 1 # 27 "../test/arm/neon/../../../simde/arm/neon/../../simde-bf16.h" # 1 "../test/arm/neon/../../../simde/arm/neon/../../hedley.h" 1 # 28 "../test/arm/neon/../../../simde/arm/neon/../../simde-bf16.h" 2 # 35 "../test/arm/neon/../../../simde/arm/neon/types.h" 2 # 36 "../test/arm/neon/../../../simde/arm/neon/types.h" #pragma GCC diagnostic push # 37 "../test/arm/neon/../../../simde/arm/neon/types.h" #pragma GCC diagnostic ignored "-Wunused-function" # 37 "../test/arm/neon/../../../simde/arm/neon/types.h" # 37 "../test/arm/neon/../../../simde/arm/neon/types.h" #pragma GCC diagnostic ignored "-Wpsabi" # 37 "../test/arm/neon/../../../simde/arm/neon/types.h" # 37 "../test/arm/neon/../../../simde/arm/neon/types.h" #pragma GCC diagnostic ignored "-Wfloat-equal" # 37 "../test/arm/neon/../../../simde/arm/neon/types.h" # 37 "../test/arm/neon/../../../simde/arm/neon/types.h" #pragma GCC diagnostic ignored "-Wvla" # 38 "../test/arm/neon/../../../simde/arm/neon/types.h" #pragma GCC diagnostic push typedef union { int8_t values __attribute__((__vector_size__(8))); # 57 "../test/arm/neon/../../../simde/arm/neon/types.h" } simde_int8x8_private; typedef union { int16_t values __attribute__((__vector_size__(8))); # 70 "../test/arm/neon/../../../simde/arm/neon/types.h" } simde_int16x4_private; typedef union { int32_t values __attribute__((__vector_size__(8))); # 83 "../test/arm/neon/../../../simde/arm/neon/types.h" } simde_int32x2_private; typedef union { int64_t values __attribute__((__vector_size__(8))); # 96 "../test/arm/neon/../../../simde/arm/neon/types.h" } simde_int64x1_private; typedef union { uint8_t values __attribute__((__vector_size__(8))); # 109 "../test/arm/neon/../../../simde/arm/neon/types.h" } simde_uint8x8_private; typedef union { uint16_t values __attribute__((__vector_size__(8))); # 122 "../test/arm/neon/../../../simde/arm/neon/types.h" } simde_uint16x4_private; typedef union { uint32_t values __attribute__((__vector_size__(8))); # 135 "../test/arm/neon/../../../simde/arm/neon/types.h" } simde_uint32x2_private; typedef union { uint64_t values __attribute__((__vector_size__(8))); # 148 "../test/arm/neon/../../../simde/arm/neon/types.h" } simde_uint64x1_private; typedef union { simde_float16 values[4]; # 165 "../test/arm/neon/../../../simde/arm/neon/types.h" } simde_float16x4_private; typedef union { simde_float32 values __attribute__((__vector_size__(8))); # 178 "../test/arm/neon/../../../simde/arm/neon/types.h" } simde_float32x2_private; typedef union { simde_float64 values __attribute__((__vector_size__(8))); # 191 "../test/arm/neon/../../../simde/arm/neon/types.h" } simde_float64x1_private; typedef union { simde_poly8 values __attribute__((__vector_size__(8))); } simde_poly8x8_private; typedef union { simde_poly16 values __attribute__((__vector_size__(8))); } simde_poly16x4_private; typedef union { simde_poly64 values __attribute__((__vector_size__(8))); } simde_poly64x1_private; typedef union { int8_t values __attribute__((__vector_size__(16))); # 233 "../test/arm/neon/../../../simde/arm/neon/types.h" } simde_int8x16_private; typedef union { int16_t values __attribute__((__vector_size__(16))); # 255 "../test/arm/neon/../../../simde/arm/neon/types.h" } simde_int16x8_private; typedef union { int32_t values __attribute__((__vector_size__(16))); # 281 "../test/arm/neon/../../../simde/arm/neon/types.h" } simde_int32x4_private; typedef union { int64_t values __attribute__((__vector_size__(16))); # 303 "../test/arm/neon/../../../simde/arm/neon/types.h" } simde_int64x2_private; typedef union { uint8_t values __attribute__((__vector_size__(16))); # 324 "../test/arm/neon/../../../simde/arm/neon/types.h" } simde_uint8x16_private; typedef union { uint16_t values __attribute__((__vector_size__(16))); # 346 "../test/arm/neon/../../../simde/arm/neon/types.h" } simde_uint16x8_private; typedef union { uint32_t values __attribute__((__vector_size__(16))); # 368 "../test/arm/neon/../../../simde/arm/neon/types.h" } simde_uint32x4_private; typedef union { uint64_t values __attribute__((__vector_size__(16))); # 390 "../test/arm/neon/../../../simde/arm/neon/types.h" } simde_uint64x2_private; typedef union { simde_float16 values[8]; # 415 "../test/arm/neon/../../../simde/arm/neon/types.h" } simde_float16x8_private; typedef union { simde_float32 values __attribute__((__vector_size__(16))); # 436 "../test/arm/neon/../../../simde/arm/neon/types.h" } simde_float32x4_private; typedef union { simde_float64 values __attribute__((__vector_size__(16))); # 457 "../test/arm/neon/../../../simde/arm/neon/types.h" } simde_float64x2_private; typedef union { simde_poly8 values __attribute__((__vector_size__(16))); } simde_poly8x16_private; typedef union { simde_poly16 values __attribute__((__vector_size__(16))); } simde_poly16x8_private; typedef union { simde_poly64 values __attribute__((__vector_size__(16))); } simde_poly64x2_private; typedef union { simde_bfloat16 values[4]; } simde_bfloat16x4_private; typedef union { simde_bfloat16 values[8]; } simde_bfloat16x8_private; # 822 "../test/arm/neon/../../../simde/arm/neon/types.h" typedef simde_float32 simde_float32_t; typedef simde_float64 simde_float64_t; typedef int8_t simde_int8x8_t __attribute__((__vector_size__(8))); typedef int16_t simde_int16x4_t __attribute__((__vector_size__(8))); typedef int32_t simde_int32x2_t __attribute__((__vector_size__(8))); typedef int64_t simde_int64x1_t __attribute__((__vector_size__(8))); typedef uint8_t simde_uint8x8_t __attribute__((__vector_size__(8))); typedef uint16_t simde_uint16x4_t __attribute__((__vector_size__(8))); typedef uint32_t simde_uint32x2_t __attribute__((__vector_size__(8))); typedef uint64_t simde_uint64x1_t __attribute__((__vector_size__(8))); typedef simde_float32_t simde_float32x2_t __attribute__((__vector_size__(8))); typedef simde_float64_t simde_float64x1_t __attribute__((__vector_size__(8))); typedef int8_t simde_int8x16_t __attribute__((__vector_size__(16))); typedef int16_t simde_int16x8_t __attribute__((__vector_size__(16))); typedef int32_t simde_int32x4_t __attribute__((__vector_size__(16))); typedef int64_t simde_int64x2_t __attribute__((__vector_size__(16))); typedef uint8_t simde_uint8x16_t __attribute__((__vector_size__(16))); typedef uint16_t simde_uint16x8_t __attribute__((__vector_size__(16))); typedef uint32_t simde_uint32x4_t __attribute__((__vector_size__(16))); typedef uint64_t simde_uint64x2_t __attribute__((__vector_size__(16))); typedef simde_float32_t simde_float32x4_t __attribute__((__vector_size__(16))); typedef simde_float64_t simde_float64x2_t __attribute__((__vector_size__(16))); # 897 "../test/arm/neon/../../../simde/arm/neon/types.h" typedef simde_poly8 simde_poly8_t; typedef simde_poly16 simde_poly16_t; typedef simde_poly8x8_private simde_poly8x8_t; typedef simde_poly16x4_private simde_poly16x4_t; typedef simde_poly8x16_private simde_poly8x16_t; typedef simde_poly16x8_private simde_poly16x8_t; typedef simde_poly64 simde_poly64_t; typedef simde_poly64x1_private simde_poly64x1_t; typedef simde_poly64x2_private simde_poly64x2_t; typedef struct simde_poly64x1x2_t { simde_poly64x1_t val[2]; } simde_poly64x1x2_t; typedef struct simde_poly64x2x2_t { simde_poly64x2_t val[2]; } simde_poly64x2x2_t; typedef struct simde_poly64x1x3_t { simde_poly64x1_t val[3]; } simde_poly64x1x3_t; typedef struct simde_poly64x2x3_t { simde_poly64x2_t val[3]; } simde_poly64x2x3_t; typedef struct simde_poly64x1x4_t { simde_poly64x1_t val[4]; } simde_poly64x1x4_t; typedef struct simde_poly64x2x4_t { simde_poly64x2_t val[4]; } simde_poly64x2x4_t; typedef simde_poly128 simde_poly128_t; typedef struct simde_poly8x8x2_t { simde_poly8x8_t val[2]; } simde_poly8x8x2_t; typedef struct simde_poly16x4x2_t { simde_poly16x4_t val[2]; } simde_poly16x4x2_t; typedef struct simde_poly8x16x2_t { simde_poly8x16_t val[2]; } simde_poly8x16x2_t; typedef struct simde_poly16x8x2_t { simde_poly16x8_t val[2]; } simde_poly16x8x2_t; typedef struct simde_poly8x8x3_t { simde_poly8x8_t val[3]; } simde_poly8x8x3_t; typedef struct simde_poly16x4x3_t { simde_poly16x4_t val[3]; } simde_poly16x4x3_t; typedef struct simde_poly8x16x3_t { simde_poly8x16_t val[3]; } simde_poly8x16x3_t; typedef struct simde_poly16x8x3_t { simde_poly16x8_t val[3]; } simde_poly16x8x3_t; typedef struct simde_poly8x8x4_t { simde_poly8x8_t val[4]; } simde_poly8x8x4_t; typedef struct simde_poly16x4x4_t { simde_poly16x4_t val[4]; } simde_poly16x4x4_t; typedef struct simde_poly8x16x4_t { simde_poly8x16_t val[4]; } simde_poly8x16x4_t; typedef struct simde_poly16x8x4_t { simde_poly16x8_t val[4]; } simde_poly16x8x4_t; typedef simde_bfloat16 simde_bfloat16_t; typedef simde_bfloat16x4_private simde_bfloat16x4_t; typedef simde_bfloat16x8_private simde_bfloat16x8_t; typedef struct simde_bfloat16x4x2_t { simde_bfloat16x4_t val[2]; } simde_bfloat16x4x2_t; typedef struct simde_bfloat16x8x2_t { simde_bfloat16x8_t val[2]; } simde_bfloat16x8x2_t; typedef struct simde_bfloat16x4x3_t { simde_bfloat16x4_t val[3]; } simde_bfloat16x4x3_t; typedef struct simde_bfloat16x8x3_t { simde_bfloat16x8_t val[3]; } simde_bfloat16x8x3_t; typedef struct simde_bfloat16x4x4_t { simde_bfloat16x4_t val[4]; } simde_bfloat16x4x4_t; typedef struct simde_bfloat16x8x4_t { simde_bfloat16x8_t val[4]; } simde_bfloat16x8x4_t; # 1067 "../test/arm/neon/../../../simde/arm/neon/types.h" typedef simde_float16 simde_float16_t; typedef simde_float16x4_private simde_float16x4_t; typedef simde_float16x8_private simde_float16x8_t; typedef struct simde_float16x4x2_t { simde_float16x4_t val[2]; } simde_float16x4x2_t; typedef struct simde_float16x4x3_t { simde_float16x4_t val[3]; } simde_float16x4x3_t; typedef struct simde_float16x4x4_t { simde_float16x4_t val[4]; } simde_float16x4x4_t; typedef struct simde_float16x8x2_t { simde_float16x8_t val[2]; } simde_float16x8x2_t; typedef struct simde_float16x8x3_t { simde_float16x8_t val[3]; } simde_float16x8x3_t; typedef struct simde_float16x8x4_t { simde_float16x8_t val[4]; } simde_float16x8x4_t; # 1098 "../test/arm/neon/../../../simde/arm/neon/types.h" typedef struct simde_int8x8x2_t { simde_int8x8_t val[2]; } simde_int8x8x2_t; typedef struct simde_int16x4x2_t { simde_int16x4_t val[2]; } simde_int16x4x2_t; typedef struct simde_int32x2x2_t { simde_int32x2_t val[2]; } simde_int32x2x2_t; typedef struct simde_int64x1x2_t { simde_int64x1_t val[2]; } simde_int64x1x2_t; typedef struct simde_uint8x8x2_t { simde_uint8x8_t val[2]; } simde_uint8x8x2_t; typedef struct simde_uint16x4x2_t { simde_uint16x4_t val[2]; } simde_uint16x4x2_t; typedef struct simde_uint32x2x2_t { simde_uint32x2_t val[2]; } simde_uint32x2x2_t; typedef struct simde_uint64x1x2_t { simde_uint64x1_t val[2]; } simde_uint64x1x2_t; typedef struct simde_float32x2x2_t { simde_float32x2_t val[2]; } simde_float32x2x2_t; typedef struct simde_int8x16x2_t { simde_int8x16_t val[2]; } simde_int8x16x2_t; typedef struct simde_int16x8x2_t { simde_int16x8_t val[2]; } simde_int16x8x2_t; typedef struct simde_int32x4x2_t { simde_int32x4_t val[2]; } simde_int32x4x2_t; typedef struct simde_int64x2x2_t { simde_int64x2_t val[2]; } simde_int64x2x2_t; typedef struct simde_uint8x16x2_t { simde_uint8x16_t val[2]; } simde_uint8x16x2_t; typedef struct simde_uint16x8x2_t { simde_uint16x8_t val[2]; } simde_uint16x8x2_t; typedef struct simde_uint32x4x2_t { simde_uint32x4_t val[2]; } simde_uint32x4x2_t; typedef struct simde_uint64x2x2_t { simde_uint64x2_t val[2]; } simde_uint64x2x2_t; typedef struct simde_float32x4x2_t { simde_float32x4_t val[2]; } simde_float32x4x2_t; typedef struct simde_int8x8x3_t { simde_int8x8_t val[3]; } simde_int8x8x3_t; typedef struct simde_int16x4x3_t { simde_int16x4_t val[3]; } simde_int16x4x3_t; typedef struct simde_int32x2x3_t { simde_int32x2_t val[3]; } simde_int32x2x3_t; typedef struct simde_int64x1x3_t { simde_int64x1_t val[3]; } simde_int64x1x3_t; typedef struct simde_uint8x8x3_t { simde_uint8x8_t val[3]; } simde_uint8x8x3_t; typedef struct simde_uint16x4x3_t { simde_uint16x4_t val[3]; } simde_uint16x4x3_t; typedef struct simde_uint32x2x3_t { simde_uint32x2_t val[3]; } simde_uint32x2x3_t; typedef struct simde_uint64x1x3_t { simde_uint64x1_t val[3]; } simde_uint64x1x3_t; typedef struct simde_float32x2x3_t { simde_float32x2_t val[3]; } simde_float32x2x3_t; typedef struct simde_int8x16x3_t { simde_int8x16_t val[3]; } simde_int8x16x3_t; typedef struct simde_int16x8x3_t { simde_int16x8_t val[3]; } simde_int16x8x3_t; typedef struct simde_int32x4x3_t { simde_int32x4_t val[3]; } simde_int32x4x3_t; typedef struct simde_int64x2x3_t { simde_int64x2_t val[3]; } simde_int64x2x3_t; typedef struct simde_uint8x16x3_t { simde_uint8x16_t val[3]; } simde_uint8x16x3_t; typedef struct simde_uint16x8x3_t { simde_uint16x8_t val[3]; } simde_uint16x8x3_t; typedef struct simde_uint32x4x3_t { simde_uint32x4_t val[3]; } simde_uint32x4x3_t; typedef struct simde_uint64x2x3_t { simde_uint64x2_t val[3]; } simde_uint64x2x3_t; typedef struct simde_float32x4x3_t { simde_float32x4_t val[3]; } simde_float32x4x3_t; typedef struct simde_int8x8x4_t { simde_int8x8_t val[4]; } simde_int8x8x4_t; typedef struct simde_int16x4x4_t { simde_int16x4_t val[4]; } simde_int16x4x4_t; typedef struct simde_int32x2x4_t { simde_int32x2_t val[4]; } simde_int32x2x4_t; typedef struct simde_int64x1x4_t { simde_int64x1_t val[4]; } simde_int64x1x4_t; typedef struct simde_uint8x8x4_t { simde_uint8x8_t val[4]; } simde_uint8x8x4_t; typedef struct simde_uint16x4x4_t { simde_uint16x4_t val[4]; } simde_uint16x4x4_t; typedef struct simde_uint32x2x4_t { simde_uint32x2_t val[4]; } simde_uint32x2x4_t; typedef struct simde_uint64x1x4_t { simde_uint64x1_t val[4]; } simde_uint64x1x4_t; typedef struct simde_float32x2x4_t { simde_float32x2_t val[4]; } simde_float32x2x4_t; typedef struct simde_int8x16x4_t { simde_int8x16_t val[4]; } simde_int8x16x4_t; typedef struct simde_int16x8x4_t { simde_int16x8_t val[4]; } simde_int16x8x4_t; typedef struct simde_int32x4x4_t { simde_int32x4_t val[4]; } simde_int32x4x4_t; typedef struct simde_int64x2x4_t { simde_int64x2_t val[4]; } simde_int64x2x4_t; typedef struct simde_uint8x16x4_t { simde_uint8x16_t val[4]; } simde_uint8x16x4_t; typedef struct simde_uint16x8x4_t { simde_uint16x8_t val[4]; } simde_uint16x8x4_t; typedef struct simde_uint32x4x4_t { simde_uint32x4_t val[4]; } simde_uint32x4x4_t; typedef struct simde_uint64x2x4_t { simde_uint64x2_t val[4]; } simde_uint64x2x4_t; typedef struct simde_float32x4x4_t { simde_float32x4_t val[4]; } simde_float32x4x4_t; typedef struct simde_float64x1x2_t { simde_float64x1_t val[2]; } simde_float64x1x2_t; typedef struct simde_float64x1x3_t { simde_float64x1_t val[3]; } simde_float64x1x3_t; typedef struct simde_float64x1x4_t { simde_float64x1_t val[4]; } simde_float64x1x4_t; typedef struct simde_float64x2x2_t { simde_float64x2_t val[2]; } simde_float64x2x2_t; typedef struct simde_float64x2x3_t { simde_float64x2_t val[3]; } simde_float64x2x3_t; typedef struct simde_float64x2x4_t { simde_float64x2_t val[4]; } simde_float64x2x4_t; # 1498 "../test/arm/neon/../../../simde/arm/neon/types.h" static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_int8x8_private simde_int8x8_to_private (simde_int8x8_t value) { simde_int8x8_private r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_int8x8_t simde_int8x8_from_private (simde_int8x8_private value) { simde_int8x8_t r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_int16x4_private simde_int16x4_to_private (simde_int16x4_t value) { simde_int16x4_private r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_int16x4_t simde_int16x4_from_private (simde_int16x4_private value) { simde_int16x4_t r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_int32x2_private simde_int32x2_to_private (simde_int32x2_t value) { simde_int32x2_private r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_int32x2_t simde_int32x2_from_private (simde_int32x2_private value) { simde_int32x2_t r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_int64x1_private simde_int64x1_to_private (simde_int64x1_t value) { simde_int64x1_private r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_int64x1_t simde_int64x1_from_private (simde_int64x1_private value) { simde_int64x1_t r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_uint8x8_private simde_uint8x8_to_private (simde_uint8x8_t value) { simde_uint8x8_private r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_uint8x8_t simde_uint8x8_from_private (simde_uint8x8_private value) { simde_uint8x8_t r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_uint16x4_private simde_uint16x4_to_private (simde_uint16x4_t value) { simde_uint16x4_private r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_uint16x4_t simde_uint16x4_from_private (simde_uint16x4_private value) { simde_uint16x4_t r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_uint32x2_private simde_uint32x2_to_private (simde_uint32x2_t value) { simde_uint32x2_private r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_uint32x2_t simde_uint32x2_from_private (simde_uint32x2_private value) { simde_uint32x2_t r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_uint64x1_private simde_uint64x1_to_private (simde_uint64x1_t value) { simde_uint64x1_private r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_uint64x1_t simde_uint64x1_from_private (simde_uint64x1_private value) { simde_uint64x1_t r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_float16x4_private simde_float16x4_to_private (simde_float16x4_t value) { simde_float16x4_private r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_float16x4_t simde_float16x4_from_private (simde_float16x4_private value) { simde_float16x4_t r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_float32x2_private simde_float32x2_to_private (simde_float32x2_t value) { simde_float32x2_private r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_float32x2_t simde_float32x2_from_private (simde_float32x2_private value) { simde_float32x2_t r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_float64x1_private simde_float64x1_to_private (simde_float64x1_t value) { simde_float64x1_private r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_float64x1_t simde_float64x1_from_private (simde_float64x1_private value) { simde_float64x1_t r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_poly8x8_private simde_poly8x8_to_private (simde_poly8x8_t value) { simde_poly8x8_private r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_poly8x8_t simde_poly8x8_from_private (simde_poly8x8_private value) { simde_poly8x8_t r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_poly16x4_private simde_poly16x4_to_private (simde_poly16x4_t value) { simde_poly16x4_private r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_poly16x4_t simde_poly16x4_from_private (simde_poly16x4_private value) { simde_poly16x4_t r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_poly64x1_private simde_poly64x1_to_private (simde_poly64x1_t value) { simde_poly64x1_private r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_poly64x1_t simde_poly64x1_from_private (simde_poly64x1_private value) { simde_poly64x1_t r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_bfloat16x4_private simde_bfloat16x4_to_private (simde_bfloat16x4_t value) { simde_bfloat16x4_private r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_bfloat16x4_t simde_bfloat16x4_from_private (simde_bfloat16x4_private value) { simde_bfloat16x4_t r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_int8x16_private simde_int8x16_to_private (simde_int8x16_t value) { simde_int8x16_private r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_int8x16_t simde_int8x16_from_private (simde_int8x16_private value) { simde_int8x16_t r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_int16x8_private simde_int16x8_to_private (simde_int16x8_t value) { simde_int16x8_private r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_int16x8_t simde_int16x8_from_private (simde_int16x8_private value) { simde_int16x8_t r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_int32x4_private simde_int32x4_to_private (simde_int32x4_t value) { simde_int32x4_private r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_int32x4_t simde_int32x4_from_private (simde_int32x4_private value) { simde_int32x4_t r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_int64x2_private simde_int64x2_to_private (simde_int64x2_t value) { simde_int64x2_private r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_int64x2_t simde_int64x2_from_private (simde_int64x2_private value) { simde_int64x2_t r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_uint8x16_private simde_uint8x16_to_private (simde_uint8x16_t value) { simde_uint8x16_private r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_uint8x16_t simde_uint8x16_from_private (simde_uint8x16_private value) { simde_uint8x16_t r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_uint16x8_private simde_uint16x8_to_private (simde_uint16x8_t value) { simde_uint16x8_private r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_uint16x8_t simde_uint16x8_from_private (simde_uint16x8_private value) { simde_uint16x8_t r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_uint32x4_private simde_uint32x4_to_private (simde_uint32x4_t value) { simde_uint32x4_private r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_uint32x4_t simde_uint32x4_from_private (simde_uint32x4_private value) { simde_uint32x4_t r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_uint64x2_private simde_uint64x2_to_private (simde_uint64x2_t value) { simde_uint64x2_private r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_uint64x2_t simde_uint64x2_from_private (simde_uint64x2_private value) { simde_uint64x2_t r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_poly8x16_private simde_poly8x16_to_private (simde_poly8x16_t value) { simde_poly8x16_private r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_poly8x16_t simde_poly8x16_from_private (simde_poly8x16_private value) { simde_poly8x16_t r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_poly16x8_private simde_poly16x8_to_private (simde_poly16x8_t value) { simde_poly16x8_private r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_poly16x8_t simde_poly16x8_from_private (simde_poly16x8_private value) { simde_poly16x8_t r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_poly64x2_private simde_poly64x2_to_private (simde_poly64x2_t value) { simde_poly64x2_private r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_poly64x2_t simde_poly64x2_from_private (simde_poly64x2_private value) { simde_poly64x2_t r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_float16x8_private simde_float16x8_to_private (simde_float16x8_t value) { simde_float16x8_private r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_float16x8_t simde_float16x8_from_private (simde_float16x8_private value) { simde_float16x8_t r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_float32x4_private simde_float32x4_to_private (simde_float32x4_t value) { simde_float32x4_private r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_float32x4_t simde_float32x4_from_private (simde_float32x4_private value) { simde_float32x4_t r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_float64x2_private simde_float64x2_to_private (simde_float64x2_t value) { simde_float64x2_private r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_float64x2_t simde_float64x2_from_private (simde_float64x2_private value) { simde_float64x2_t r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_bfloat16x8_private simde_bfloat16x8_to_private (simde_bfloat16x8_t value) { simde_bfloat16x8_private r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } static __attribute__((__always_inline__)) inline __attribute__((__const__)) __attribute__((__unused__)) simde_bfloat16x8_t simde_bfloat16x8_from_private (simde_bfloat16x8_private value) { simde_bfloat16x8_t r; __builtin_memcpy(&r, &value, sizeof(r)); return r; } # 1529 "../test/arm/neon/../../../simde/arm/neon/types.h" #pragma GCC diagnostic pop # 1530 "../test/arm/neon/../../../simde/arm/neon/types.h" #pragma GCC diagnostic pop # 34 "../test/arm/neon/../../../simde/arm/neon/ld1.h" 2 # 35 "../test/arm/neon/../../../simde/arm/neon/ld1.h" #pragma GCC diagnostic push # 36 "../test/arm/neon/../../../simde/arm/neon/ld1.h" #pragma GCC diagnostic ignored "-Wunused-function" # 36 "../test/arm/neon/../../../simde/arm/neon/ld1.h" # 36 "../test/arm/neon/../../../simde/arm/neon/ld1.h" #pragma GCC diagnostic ignored "-Wpsabi" # 36 "../test/arm/neon/../../../simde/arm/neon/ld1.h" # 36 "../test/arm/neon/../../../simde/arm/neon/ld1.h" #pragma GCC diagnostic ignored "-Wfloat-equal" # 36 "../test/arm/neon/../../../simde/arm/neon/ld1.h" # 36 "../test/arm/neon/../../../simde/arm/neon/ld1.h" #pragma GCC diagnostic ignored "-Wvla" # 37 "../test/arm/neon/../../../simde/arm/neon/ld1.h" #pragma GCC diagnostic push __attribute__((__always_inline__)) inline static simde_float16x4_t simde_vld1_f16(simde_float16_t const ptr[(4)]) { simde_float16x4_private r_; __builtin_memcpy(&r_, ptr, sizeof(r_)); return simde_float16x4_from_private(r_); } __attribute__((__always_inline__)) inline static simde_float32x2_t simde_vld1_f32(simde_float32 const ptr[(2)]) { simde_float32x2_private r_; __builtin_memcpy(&r_, ptr, sizeof(r_)); return simde_float32x2_from_private(r_); } __attribute__((__always_inline__)) inline static simde_float64x1_t simde_vld1_f64(simde_float64 const ptr[(1)]) { simde_float64x1_private r_; __builtin_memcpy(&r_, ptr, sizeof(r_)); return simde_float64x1_from_private(r_); } __attribute__((__always_inline__)) inline static simde_int8x8_t simde_vld1_s8(int8_t const ptr[(8)]) { simde_int8x8_private r_; __builtin_memcpy(&r_, ptr, sizeof(r_)); return simde_int8x8_from_private(r_); } __attribute__((__always_inline__)) inline static simde_int16x4_t simde_vld1_s16(int16_t const ptr[(4)]) { simde_int16x4_private r_; __builtin_memcpy(&r_, ptr, sizeof(r_)); return simde_int16x4_from_private(r_); } __attribute__((__always_inline__)) inline static simde_int32x2_t simde_vld1_s32(int32_t const ptr[(2)]) { simde_int32x2_private r_; __builtin_memcpy(&r_, ptr, sizeof(r_)); return simde_int32x2_from_private(r_); } __attribute__((__always_inline__)) inline static simde_int64x1_t simde_vld1_s64(int64_t const ptr[(1)]) { simde_int64x1_private r_; __builtin_memcpy(&r_, ptr, sizeof(r_)); return simde_int64x1_from_private(r_); } __attribute__((__always_inline__)) inline static simde_uint8x8_t simde_vld1_u8(uint8_t const ptr[(8)]) { simde_uint8x8_private r_; __builtin_memcpy(&r_, ptr, sizeof(r_)); return simde_uint8x8_from_private(r_); } __attribute__((__always_inline__)) inline static simde_uint16x4_t simde_vld1_u16(uint16_t const ptr[(4)]) { simde_uint16x4_private r_; __builtin_memcpy(&r_, ptr, sizeof(r_)); return simde_uint16x4_from_private(r_); } __attribute__((__always_inline__)) inline static simde_uint32x2_t simde_vld1_u32(uint32_t const ptr[(2)]) { simde_uint32x2_private r_; __builtin_memcpy(&r_, ptr, sizeof(r_)); return simde_uint32x2_from_private(r_); } __attribute__((__always_inline__)) inline static simde_uint64x1_t simde_vld1_u64(uint64_t const ptr[(1)]) { simde_uint64x1_private r_; __builtin_memcpy(&r_, ptr, sizeof(r_)); return simde_uint64x1_from_private(r_); } __attribute__((__always_inline__)) inline static simde_float16x8_t simde_vld1q_f16(simde_float16_t const ptr[(8)]) { simde_float16x8_private r_; __builtin_memcpy(&r_, ptr, sizeof(r_)); return simde_float16x8_from_private(r_); } __attribute__((__always_inline__)) inline static simde_float32x4_t simde_vld1q_f32(simde_float32 const ptr[(4)]) { simde_float32x4_private r_; __builtin_memcpy(&r_, ptr, sizeof(r_)); return simde_float32x4_from_private(r_); } __attribute__((__always_inline__)) inline static simde_float64x2_t simde_vld1q_f64(simde_float64 const ptr[(2)]) { simde_float64x2_private r_; __builtin_memcpy(&r_, ptr, sizeof(r_)); return simde_float64x2_from_private(r_); } __attribute__((__always_inline__)) inline static simde_int8x16_t simde_vld1q_s8(int8_t const ptr[(16)]) { simde_int8x16_private r_; __builtin_memcpy(&r_, ptr, sizeof(r_)); return simde_int8x16_from_private(r_); } __attribute__((__always_inline__)) inline static simde_int16x8_t simde_vld1q_s16(int16_t const ptr[(8)]) { simde_int16x8_private r_; __builtin_memcpy(&r_, ptr, sizeof(r_)); return simde_int16x8_from_private(r_); } __attribute__((__always_inline__)) inline static simde_int32x4_t simde_vld1q_s32(int32_t const ptr[(4)]) { simde_int32x4_private r_; __builtin_memcpy(&r_, ptr, sizeof(r_)); return simde_int32x4_from_private(r_); } __attribute__((__always_inline__)) inline static simde_int64x2_t simde_vld1q_s64(int64_t const ptr[(2)]) { simde_int64x2_private r_; __builtin_memcpy(&r_, ptr, sizeof(r_)); return simde_int64x2_from_private(r_); } __attribute__((__always_inline__)) inline static simde_uint8x16_t simde_vld1q_u8(uint8_t const ptr[(16)]) { simde_uint8x16_private r_; __builtin_memcpy(&r_, ptr, sizeof(r_)); return simde_uint8x16_from_private(r_); } __attribute__((__always_inline__)) inline static simde_uint16x8_t simde_vld1q_u16(uint16_t const ptr[(8)]) { simde_uint16x8_private r_; __builtin_memcpy(&r_, ptr, sizeof(r_)); return simde_uint16x8_from_private(r_); } __attribute__((__always_inline__)) inline static simde_uint32x4_t simde_vld1q_u32(uint32_t const ptr[(4)]) { simde_uint32x4_private r_; __builtin_memcpy(&r_, ptr, sizeof(r_)); return simde_uint32x4_from_private(r_); } __attribute__((__always_inline__)) inline static simde_uint64x2_t simde_vld1q_u64(uint64_t const ptr[(2)]) { simde_uint64x2_private r_; __builtin_memcpy(&r_, ptr, sizeof(r_)); return simde_uint64x2_from_private(r_); } __attribute__((__always_inline__)) inline static simde_poly8x8_t simde_vld1_p8(simde_poly8_t const ptr[(8)]) { simde_poly8x8_private r_; __builtin_memcpy(&r_, ptr, sizeof(r_)); return simde_poly8x8_from_private(r_); } __attribute__((__always_inline__)) inline static simde_poly16x4_t simde_vld1_p16(simde_poly16_t const ptr[(4)]) { simde_poly16x4_private r_; __builtin_memcpy(&r_, ptr, sizeof(r_)); return simde_poly16x4_from_private(r_); } __attribute__((__always_inline__)) inline static simde_poly64x1_t simde_vld1_p64(simde_poly64_t const ptr[(1)]) { simde_poly64x1_private r_; __builtin_memcpy(&r_, ptr, sizeof(r_)); return simde_poly64x1_from_private(r_); } __attribute__((__always_inline__)) inline static simde_poly8x16_t simde_vld1q_p8(simde_poly8_t const ptr[(16)]) { simde_poly8x16_private r_; __builtin_memcpy(&r_, ptr, sizeof(r_)); return simde_poly8x16_from_private(r_); } __attribute__((__always_inline__)) inline static simde_poly16x8_t simde_vld1q_p16(simde_poly16_t const ptr[(8)]) { simde_poly16x8_private r_; __builtin_memcpy(&r_, ptr, sizeof(r_)); return simde_poly16x8_from_private(r_); } __attribute__((__always_inline__)) inline static simde_poly64x2_t simde_vld1q_p64(simde_poly64_t const ptr[(2)]) { simde_poly64x2_private r_; __builtin_memcpy(&r_, ptr, sizeof(r_)); return simde_poly64x2_from_private(r_); } __attribute__((__always_inline__)) inline static simde_poly128_t simde_vldrq_p128(simde_poly128_t const ptr[(1)]) { simde_poly128_t r_; __builtin_memcpy(&r_, ptr, sizeof(r_)); return r_; } __attribute__((__always_inline__)) inline static simde_bfloat16x4_t simde_vld1_bf16(simde_bfloat16_t const ptr[(4)]) { simde_bfloat16x4_private r_; __builtin_memcpy(&r_, ptr, sizeof(r_)); return simde_bfloat16x4_from_private(r_); } __attribute__((__always_inline__)) inline static simde_bfloat16x8_t simde_vld1q_bf16(simde_bfloat16_t const ptr[(8)]) { simde_bfloat16x8_private r_; __builtin_memcpy(&r_, ptr, sizeof(r_)); return simde_bfloat16x8_from_private(r_); } # 672 "../test/arm/neon/../../../simde/arm/neon/ld1.h" #pragma GCC diagnostic pop # 673 "../test/arm/neon/../../../simde/arm/neon/ld1.h" #pragma GCC diagnostic pop # 6 "../test/arm/neon/test-neon.h" 2 # 1 "../test/arm/neon/../../../simde/arm/neon/st1.h" 1 # 34 "../test/arm/neon/../../../simde/arm/neon/st1.h" # 34 "../test/arm/neon/../../../simde/arm/neon/st1.h" #pragma GCC diagnostic push # 35 "../test/arm/neon/../../../simde/arm/neon/st1.h" #pragma GCC diagnostic ignored "-Wunused-function" # 35 "../test/arm/neon/../../../simde/arm/neon/st1.h" # 35 "../test/arm/neon/../../../simde/arm/neon/st1.h" #pragma GCC diagnostic ignored "-Wpsabi" # 35 "../test/arm/neon/../../../simde/arm/neon/st1.h" # 35 "../test/arm/neon/../../../simde/arm/neon/st1.h" #pragma GCC diagnostic ignored "-Wfloat-equal" # 35 "../test/arm/neon/../../../simde/arm/neon/st1.h" # 35 "../test/arm/neon/../../../simde/arm/neon/st1.h" #pragma GCC diagnostic ignored "-Wvla" # 36 "../test/arm/neon/../../../simde/arm/neon/st1.h" #pragma GCC diagnostic push __attribute__((__always_inline__)) inline static void simde_vst1_f16(simde_float16_t ptr[(4)], simde_float16x4_t val) { simde_float16x4_private val_ = simde_float16x4_to_private(val); __builtin_memcpy(ptr, &val_, sizeof(val_)); } __attribute__((__always_inline__)) inline static void simde_vst1_f32(simde_float32_t ptr[(2)], simde_float32x2_t val) { simde_float32x2_private val_ = simde_float32x2_to_private(val); __builtin_memcpy(ptr, &val_, sizeof(val_)); } __attribute__((__always_inline__)) inline static void simde_vst1_f64(simde_float64_t ptr[(1)], simde_float64x1_t val) { simde_float64x1_private val_ = simde_float64x1_to_private(val); __builtin_memcpy(ptr, &val_, sizeof(val_)); } __attribute__((__always_inline__)) inline static void simde_vst1_s8(int8_t ptr[(8)], simde_int8x8_t val) { simde_int8x8_private val_ = simde_int8x8_to_private(val); __builtin_memcpy(ptr, &val_, sizeof(val_)); } __attribute__((__always_inline__)) inline static void simde_vst1_s16(int16_t ptr[(4)], simde_int16x4_t val) { simde_int16x4_private val_ = simde_int16x4_to_private(val); __builtin_memcpy(ptr, &val_, sizeof(val_)); } __attribute__((__always_inline__)) inline static void simde_vst1_s32(int32_t ptr[(2)], simde_int32x2_t val) { simde_int32x2_private val_ = simde_int32x2_to_private(val); __builtin_memcpy(ptr, &val_, sizeof(val_)); } __attribute__((__always_inline__)) inline static void simde_vst1_s64(int64_t ptr[(1)], simde_int64x1_t val) { simde_int64x1_private val_ = simde_int64x1_to_private(val); __builtin_memcpy(ptr, &val_, sizeof(val_)); } __attribute__((__always_inline__)) inline static void simde_vst1_u8(uint8_t ptr[(8)], simde_uint8x8_t val) { simde_uint8x8_private val_ = simde_uint8x8_to_private(val); __builtin_memcpy(ptr, &val_, sizeof(val_)); } __attribute__((__always_inline__)) inline static void simde_vst1_u16(uint16_t ptr[(4)], simde_uint16x4_t val) { simde_uint16x4_private val_ = simde_uint16x4_to_private(val); __builtin_memcpy(ptr, &val_, sizeof(val_)); } __attribute__((__always_inline__)) inline static void simde_vst1_u32(uint32_t ptr[(2)], simde_uint32x2_t val) { simde_uint32x2_private val_ = simde_uint32x2_to_private(val); __builtin_memcpy(ptr, &val_, sizeof(val_)); } __attribute__((__always_inline__)) inline static void simde_vst1_u64(uint64_t ptr[(1)], simde_uint64x1_t val) { simde_uint64x1_private val_ = simde_uint64x1_to_private(val); __builtin_memcpy(ptr, &val_, sizeof(val_)); } __attribute__((__always_inline__)) inline static void simde_vst1q_f16(simde_float16_t ptr[(8)], simde_float16x8_t val) { simde_float16x8_private val_ = simde_float16x8_to_private(val); __builtin_memcpy(ptr, &val_, sizeof(val_)); } __attribute__((__always_inline__)) inline static void simde_vst1q_f32(simde_float32_t ptr[(4)], simde_float32x4_t val) { simde_float32x4_private val_ = simde_float32x4_to_private(val); __builtin_memcpy(ptr, &val_, sizeof(val_)); } __attribute__((__always_inline__)) inline static void simde_vst1q_f64(simde_float64_t ptr[(2)], simde_float64x2_t val) { simde_float64x2_private val_ = simde_float64x2_to_private(val); __builtin_memcpy(ptr, &val_, sizeof(val_)); } __attribute__((__always_inline__)) inline static void simde_vst1q_s8(int8_t ptr[(16)], simde_int8x16_t val) { simde_int8x16_private val_ = simde_int8x16_to_private(val); __builtin_memcpy(ptr, &val_, sizeof(val_)); } __attribute__((__always_inline__)) inline static void simde_vst1q_s16(int16_t ptr[(8)], simde_int16x8_t val) { simde_int16x8_private val_ = simde_int16x8_to_private(val); __builtin_memcpy(ptr, &val_, sizeof(val_)); } __attribute__((__always_inline__)) inline static void simde_vst1q_s32(int32_t ptr[(4)], simde_int32x4_t val) { simde_int32x4_private val_ = simde_int32x4_to_private(val); __builtin_memcpy(ptr, &val_, sizeof(val_)); } __attribute__((__always_inline__)) inline static void simde_vst1q_s64(int64_t ptr[(2)], simde_int64x2_t val) { simde_int64x2_private val_ = simde_int64x2_to_private(val); __builtin_memcpy(ptr, &val_, sizeof(val_)); } __attribute__((__always_inline__)) inline static void simde_vst1q_u8(uint8_t ptr[(16)], simde_uint8x16_t val) { simde_uint8x16_private val_ = simde_uint8x16_to_private(val); __builtin_memcpy(ptr, &val_, sizeof(val_)); } __attribute__((__always_inline__)) inline static void simde_vst1q_u16(uint16_t ptr[(8)], simde_uint16x8_t val) { simde_uint16x8_private val_ = simde_uint16x8_to_private(val); __builtin_memcpy(ptr, &val_, sizeof(val_)); } __attribute__((__always_inline__)) inline static void simde_vst1q_u32(uint32_t ptr[(4)], simde_uint32x4_t val) { simde_uint32x4_private val_ = simde_uint32x4_to_private(val); __builtin_memcpy(ptr, &val_, sizeof(val_)); } __attribute__((__always_inline__)) inline static void simde_vst1q_u64(uint64_t ptr[(2)], simde_uint64x2_t val) { simde_uint64x2_private val_ = simde_uint64x2_to_private(val); __builtin_memcpy(ptr, &val_, sizeof(val_)); } __attribute__((__always_inline__)) inline static void simde_vst1_p8(simde_poly8_t ptr[(8)], simde_poly8x8_t val) { simde_poly8x8_private val_ = simde_poly8x8_to_private(val); __builtin_memcpy(ptr, &val_, sizeof(val_)); } __attribute__((__always_inline__)) inline static void simde_vst1_p16(simde_poly16_t ptr[(4)], simde_poly16x4_t val) { simde_poly16x4_private val_ = simde_poly16x4_to_private(val); __builtin_memcpy(ptr, &val_, sizeof(val_)); } __attribute__((__always_inline__)) inline static void simde_vst1_p64(simde_poly64_t ptr[(1)], simde_poly64x1_t val) { simde_poly64x1_private val_ = simde_poly64x1_to_private(val); __builtin_memcpy(ptr, &val_, sizeof(val_)); } __attribute__((__always_inline__)) inline static void simde_vst1q_p8(simde_poly8_t ptr[(16)], simde_poly8x16_t val) { simde_poly8x16_private val_ = simde_poly8x16_to_private(val); __builtin_memcpy(ptr, &val_, sizeof(val_)); } __attribute__((__always_inline__)) inline static void simde_vst1q_p16(simde_poly16_t ptr[(8)], simde_poly16x8_t val) { simde_poly16x8_private val_ = simde_poly16x8_to_private(val); __builtin_memcpy(ptr, &val_, sizeof(val_)); } __attribute__((__always_inline__)) inline static void simde_vst1q_p64(simde_poly64_t ptr[(2)], simde_poly64x2_t val) { simde_poly64x2_private val_ = simde_poly64x2_to_private(val); __builtin_memcpy(ptr, &val_, sizeof(val_)); } __attribute__((__always_inline__)) inline static void simde_vstrq_p128(simde_poly128_t ptr[(1)], simde_poly128_t val) { __builtin_memcpy(ptr, &val, sizeof(val)); } __attribute__((__always_inline__)) inline static void simde_vst1_bf16(simde_bfloat16_t ptr[(4)], simde_bfloat16x4_t val) { simde_bfloat16x4_private val_ = simde_bfloat16x4_to_private(val); __builtin_memcpy(ptr, &val_, sizeof(val_)); } __attribute__((__always_inline__)) inline static void simde_vst1q_bf16(simde_bfloat16_t ptr[(8)], simde_bfloat16x8_t val) { simde_bfloat16x8_private val_ = simde_bfloat16x8_to_private(val); __builtin_memcpy(ptr, &val_, sizeof(val_)); } # 649 "../test/arm/neon/../../../simde/arm/neon/st1.h" #pragma GCC diagnostic pop # 650 "../test/arm/neon/../../../simde/arm/neon/st1.h" #pragma GCC diagnostic pop # 7 "../test/arm/neon/test-neon.h" 2 # 9 "../test/arm/neon/test-neon.h" #pragma GCC diagnostic push # 10 "../test/arm/neon/test-neon.h" #pragma GCC diagnostic ignored "-Wunused-function" # 86 "../test/arm/neon/test-neon.h" # 86 "../test/arm/neon/test-neon.h" #pragma GCC diagnostic push static simde_int8x8_t simde_test_arm_neon_random_i8x8(void) { simde_int8x8_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_i8x8(int indent, simde_int8x8_t value, SimdeTestVecPos pos) { int8_t value_[sizeof(value) / sizeof(int8_t)]; simde_vst1_s8(value_, value); simde_test_codegen_write_vi8(indent, sizeof(value) / sizeof(int8_t), value_, pos); } static int simde_test_arm_neon_assert_equal_i8x8_(simde_int8x8_t a, simde_int8x8_t b, const char* filename, int line, const char* astr, const char* bstr) { int8_t a_[sizeof(a) / sizeof(int8_t)], b_[sizeof(b) / sizeof(int8_t)]; simde_vst1_s8(a_, a); simde_vst1_s8(b_, b); return simde_assert_equal_vi8_(8, a_, b_, filename, line, astr, bstr); } static simde_int16x4_t simde_test_arm_neon_random_i16x4(void) { simde_int16x4_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_i16x4(int indent, simde_int16x4_t value, SimdeTestVecPos pos) { int16_t value_[sizeof(value) / sizeof(int16_t)]; simde_vst1_s16(value_, value); simde_test_codegen_write_vi16(indent, sizeof(value) / sizeof(int16_t), value_, pos); } static int simde_test_arm_neon_assert_equal_i16x4_(simde_int16x4_t a, simde_int16x4_t b, const char* filename, int line, const char* astr, const char* bstr) { int16_t a_[sizeof(a) / sizeof(int16_t)], b_[sizeof(b) / sizeof(int16_t)]; simde_vst1_s16(a_, a); simde_vst1_s16(b_, b); return simde_assert_equal_vi16_(4, a_, b_, filename, line, astr, bstr); } static simde_int32x2_t simde_test_arm_neon_random_i32x2(void) { simde_int32x2_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_i32x2(int indent, simde_int32x2_t value, SimdeTestVecPos pos) { int32_t value_[sizeof(value) / sizeof(int32_t)]; simde_vst1_s32(value_, value); simde_test_codegen_write_vi32(indent, sizeof(value) / sizeof(int32_t), value_, pos); } static int simde_test_arm_neon_assert_equal_i32x2_(simde_int32x2_t a, simde_int32x2_t b, const char* filename, int line, const char* astr, const char* bstr) { int32_t a_[sizeof(a) / sizeof(int32_t)], b_[sizeof(b) / sizeof(int32_t)]; simde_vst1_s32(a_, a); simde_vst1_s32(b_, b); return simde_assert_equal_vi32_(2, a_, b_, filename, line, astr, bstr); } static simde_int64x1_t simde_test_arm_neon_random_i64x1(void) { simde_int64x1_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_i64x1(int indent, simde_int64x1_t value, SimdeTestVecPos pos) { int64_t value_[sizeof(value) / sizeof(int64_t)]; simde_vst1_s64(value_, value); simde_test_codegen_write_vi64(indent, sizeof(value) / sizeof(int64_t), value_, pos); } static int simde_test_arm_neon_assert_equal_i64x1_(simde_int64x1_t a, simde_int64x1_t b, const char* filename, int line, const char* astr, const char* bstr) { int64_t a_[sizeof(a) / sizeof(int64_t)], b_[sizeof(b) / sizeof(int64_t)]; simde_vst1_s64(a_, a); simde_vst1_s64(b_, b); return simde_assert_equal_vi64_(1, a_, b_, filename, line, astr, bstr); } static simde_uint8x8_t simde_test_arm_neon_random_u8x8(void) { simde_uint8x8_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_u8x8(int indent, simde_uint8x8_t value, SimdeTestVecPos pos) { uint8_t value_[sizeof(value) / sizeof(uint8_t)]; simde_vst1_u8(value_, value); simde_test_codegen_write_vu8(indent, sizeof(value) / sizeof(uint8_t), value_, pos); } static int simde_test_arm_neon_assert_equal_u8x8_(simde_uint8x8_t a, simde_uint8x8_t b, const char* filename, int line, const char* astr, const char* bstr) { uint8_t a_[sizeof(a) / sizeof(uint8_t)], b_[sizeof(b) / sizeof(uint8_t)]; simde_vst1_u8(a_, a); simde_vst1_u8(b_, b); return simde_assert_equal_vu8_(8, a_, b_, filename, line, astr, bstr); } static simde_uint16x4_t simde_test_arm_neon_random_u16x4(void) { simde_uint16x4_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_u16x4(int indent, simde_uint16x4_t value, SimdeTestVecPos pos) { uint16_t value_[sizeof(value) / sizeof(uint16_t)]; simde_vst1_u16(value_, value); simde_test_codegen_write_vu16(indent, sizeof(value) / sizeof(uint16_t), value_, pos); } static int simde_test_arm_neon_assert_equal_u16x4_(simde_uint16x4_t a, simde_uint16x4_t b, const char* filename, int line, const char* astr, const char* bstr) { uint16_t a_[sizeof(a) / sizeof(uint16_t)], b_[sizeof(b) / sizeof(uint16_t)]; simde_vst1_u16(a_, a); simde_vst1_u16(b_, b); return simde_assert_equal_vu16_(4, a_, b_, filename, line, astr, bstr); } static simde_uint32x2_t simde_test_arm_neon_random_u32x2(void) { simde_uint32x2_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_u32x2(int indent, simde_uint32x2_t value, SimdeTestVecPos pos) { uint32_t value_[sizeof(value) / sizeof(uint32_t)]; simde_vst1_u32(value_, value); simde_test_codegen_write_vu32(indent, sizeof(value) / sizeof(uint32_t), value_, pos); } static int simde_test_arm_neon_assert_equal_u32x2_(simde_uint32x2_t a, simde_uint32x2_t b, const char* filename, int line, const char* astr, const char* bstr) { uint32_t a_[sizeof(a) / sizeof(uint32_t)], b_[sizeof(b) / sizeof(uint32_t)]; simde_vst1_u32(a_, a); simde_vst1_u32(b_, b); return simde_assert_equal_vu32_(2, a_, b_, filename, line, astr, bstr); } static simde_uint64x1_t simde_test_arm_neon_random_u64x1(void) { simde_uint64x1_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_u64x1(int indent, simde_uint64x1_t value, SimdeTestVecPos pos) { uint64_t value_[sizeof(value) / sizeof(uint64_t)]; simde_vst1_u64(value_, value); simde_test_codegen_write_vu64(indent, sizeof(value) / sizeof(uint64_t), value_, pos); } static int simde_test_arm_neon_assert_equal_u64x1_(simde_uint64x1_t a, simde_uint64x1_t b, const char* filename, int line, const char* astr, const char* bstr) { uint64_t a_[sizeof(a) / sizeof(uint64_t)], b_[sizeof(b) / sizeof(uint64_t)]; simde_vst1_u64(a_, a); simde_vst1_u64(b_, b); return simde_assert_equal_vu64_(1, a_, b_, filename, line, astr, bstr); } static simde_float32x2_t simde_test_arm_neon_random_f32x2(simde_float32_t min, simde_float32_t max) { simde_float32 v[sizeof(simde_float32x2_t) / sizeof(simde_float32_t)]; simde_test_codegen_random_vf32(sizeof(v) / sizeof(v[0]), v, ((simde_float32) (min)), ((simde_float32) (max))); return simde_vld1_f32(((simde_float32_t*) (v))); } static void simde_test_arm_neon_write_f32x2(int indent, simde_float32x2_t value, SimdeTestVecPos pos) { simde_float32_t value_[sizeof(value) / sizeof(simde_float32_t)]; simde_vst1_f32(value_, value); simde_test_codegen_write_vf32(indent, sizeof(value_) / sizeof(value_[0]), value_, pos); } static int simde_test_arm_neon_assert_equal_f32x2_(simde_float32x2_t a, simde_float32x2_t b, simde_float32_t slop, const char* filename, int line, const char* astr, const char* bstr) { simde_float32 a_[sizeof(a) / sizeof(simde_float32_t)], b_[sizeof(b) / sizeof(simde_float32_t)]; simde_vst1_f32(a_, a); simde_vst1_f32(b_, b); return simde_assert_equal_vf32_(2, ((simde_float32*) (a_)), ((simde_float32*) (b_)), slop, filename, line, astr, bstr); } static void simde_test_arm_neon_random_f32x2_full( size_t test_sets, size_t vectors_per_set, simde_float32_t values[(test_sets * vectors_per_set * (sizeof(simde_float32x2_t) / sizeof(simde_float32_t)))], simde_float32_t min, simde_float32_t max, SimdeTestVecFloatType type) { simde_test_codegen_random_vf32_full(test_sets, vectors_per_set, sizeof(simde_float32x2_t) / sizeof(simde_float32_t), values, ((simde_float32) (min)), ((simde_float32) (max)), type); } static simde_float32x2_t simde_test_arm_neon_random_extract_f32x2(size_t set_num, size_t vectors_per_set, size_t vector_num, simde_float32_t* values) { const size_t elements_per_vector = sizeof(simde_float32x2_t) / sizeof(simde_float32_t); const size_t elements_per_set = elements_per_vector * vectors_per_set; const size_t pos = (elements_per_set * set_num) + (elements_per_vector * vector_num); return simde_vld1_f32(&(values[pos])); } static simde_float64x1_t simde_test_arm_neon_random_f64x1(simde_float64_t min, simde_float64_t max) { simde_float64 v[sizeof(simde_float64x1_t) / sizeof(simde_float64_t)]; simde_test_codegen_random_vf64(sizeof(v) / sizeof(v[0]), v, ((simde_float64) (min)), ((simde_float64) (max))); return simde_vld1_f64(((simde_float64_t*) (v))); } static void simde_test_arm_neon_write_f64x1(int indent, simde_float64x1_t value, SimdeTestVecPos pos) { simde_float64_t value_[sizeof(value) / sizeof(simde_float64_t)]; simde_vst1_f64(value_, value); simde_test_codegen_write_vf64(indent, sizeof(value_) / sizeof(value_[0]), value_, pos); } static int simde_test_arm_neon_assert_equal_f64x1_(simde_float64x1_t a, simde_float64x1_t b, simde_float64_t slop, const char* filename, int line, const char* astr, const char* bstr) { simde_float64 a_[sizeof(a) / sizeof(simde_float64_t)], b_[sizeof(b) / sizeof(simde_float64_t)]; simde_vst1_f64(a_, a); simde_vst1_f64(b_, b); return simde_assert_equal_vf64_(1, ((simde_float64*) (a_)), ((simde_float64*) (b_)), slop, filename, line, astr, bstr); } static void simde_test_arm_neon_random_f64x1_full( size_t test_sets, size_t vectors_per_set, simde_float64_t values[(test_sets * vectors_per_set * (sizeof(simde_float64x1_t) / sizeof(simde_float64_t)))], simde_float64_t min, simde_float64_t max, SimdeTestVecFloatType type) { simde_test_codegen_random_vf64_full(test_sets, vectors_per_set, sizeof(simde_float64x1_t) / sizeof(simde_float64_t), values, ((simde_float64) (min)), ((simde_float64) (max)), type); } static simde_float64x1_t simde_test_arm_neon_random_extract_f64x1(size_t set_num, size_t vectors_per_set, size_t vector_num, simde_float64_t* values) { const size_t elements_per_vector = sizeof(simde_float64x1_t) / sizeof(simde_float64_t); const size_t elements_per_set = elements_per_vector * vectors_per_set; const size_t pos = (elements_per_set * set_num) + (elements_per_vector * vector_num); return simde_vld1_f64(&(values[pos])); } static simde_poly8x8_t simde_test_arm_neon_random_p8x8(void) { simde_poly8x8_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_p8x8(int indent, simde_poly8x8_t value, SimdeTestVecPos pos) { simde_poly8_t value_[sizeof(value) / sizeof(simde_poly8_t)]; simde_vst1_p8(value_, value); simde_test_codegen_write_vp8(indent, sizeof(value) / sizeof(simde_poly8_t), value_, pos); } static int simde_test_arm_neon_assert_equal_p8x8_(simde_poly8x8_t a, simde_poly8x8_t b, const char* filename, int line, const char* astr, const char* bstr) { simde_poly8_t a_[sizeof(a) / sizeof(simde_poly8_t)], b_[sizeof(b) / sizeof(simde_poly8_t)]; simde_vst1_p8(a_, a); simde_vst1_p8(b_, b); return simde_assert_equal_vp8_(8, a_, b_, filename, line, astr, bstr); } static simde_poly16x4_t simde_test_arm_neon_random_p16x4(void) { simde_poly16x4_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_p16x4(int indent, simde_poly16x4_t value, SimdeTestVecPos pos) { simde_poly16_t value_[sizeof(value) / sizeof(simde_poly16_t)]; simde_vst1_p16(value_, value); simde_test_codegen_write_vp16(indent, sizeof(value) / sizeof(simde_poly16_t), value_, pos); } static int simde_test_arm_neon_assert_equal_p16x4_(simde_poly16x4_t a, simde_poly16x4_t b, const char* filename, int line, const char* astr, const char* bstr) { simde_poly16_t a_[sizeof(a) / sizeof(simde_poly16_t)], b_[sizeof(b) / sizeof(simde_poly16_t)]; simde_vst1_p16(a_, a); simde_vst1_p16(b_, b); return simde_assert_equal_vp16_(4, a_, b_, filename, line, astr, bstr); } static simde_poly64x1_t simde_test_arm_neon_random_p64x1(void) { simde_poly64x1_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_p64x1(int indent, simde_poly64x1_t value, SimdeTestVecPos pos) { simde_poly64_t value_[sizeof(value) / sizeof(simde_poly64_t)]; simde_vst1_p64(value_, value); simde_test_codegen_write_vp64(indent, sizeof(value) / sizeof(simde_poly64_t), value_, pos); } static int simde_test_arm_neon_assert_equal_p64x1_(simde_poly64x1_t a, simde_poly64x1_t b, const char* filename, int line, const char* astr, const char* bstr) { simde_poly64_t a_[sizeof(a) / sizeof(simde_poly64_t)], b_[sizeof(b) / sizeof(simde_poly64_t)]; simde_vst1_p64(a_, a); simde_vst1_p64(b_, b); return simde_assert_equal_vp64_(1, a_, b_, filename, line, astr, bstr); } static simde_int8x16_t simde_test_arm_neon_random_i8x16(void) { simde_int8x16_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_i8x16(int indent, simde_int8x16_t value, SimdeTestVecPos pos) { int8_t value_[sizeof(value) / sizeof(int8_t)]; simde_vst1q_s8(value_, value); simde_test_codegen_write_vi8(indent, sizeof(value) / sizeof(int8_t), value_, pos); } static int simde_test_arm_neon_assert_equal_i8x16_(simde_int8x16_t a, simde_int8x16_t b, const char* filename, int line, const char* astr, const char* bstr) { int8_t a_[sizeof(a) / sizeof(int8_t)], b_[sizeof(b) / sizeof(int8_t)]; simde_vst1q_s8(a_, a); simde_vst1q_s8(b_, b); return simde_assert_equal_vi8_(16, a_, b_, filename, line, astr, bstr); } static simde_int16x8_t simde_test_arm_neon_random_i16x8(void) { simde_int16x8_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_i16x8(int indent, simde_int16x8_t value, SimdeTestVecPos pos) { int16_t value_[sizeof(value) / sizeof(int16_t)]; simde_vst1q_s16(value_, value); simde_test_codegen_write_vi16(indent, sizeof(value) / sizeof(int16_t), value_, pos); } static int simde_test_arm_neon_assert_equal_i16x8_(simde_int16x8_t a, simde_int16x8_t b, const char* filename, int line, const char* astr, const char* bstr) { int16_t a_[sizeof(a) / sizeof(int16_t)], b_[sizeof(b) / sizeof(int16_t)]; simde_vst1q_s16(a_, a); simde_vst1q_s16(b_, b); return simde_assert_equal_vi16_(8, a_, b_, filename, line, astr, bstr); } static simde_int32x4_t simde_test_arm_neon_random_i32x4(void) { simde_int32x4_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_i32x4(int indent, simde_int32x4_t value, SimdeTestVecPos pos) { int32_t value_[sizeof(value) / sizeof(int32_t)]; simde_vst1q_s32(value_, value); simde_test_codegen_write_vi32(indent, sizeof(value) / sizeof(int32_t), value_, pos); } static int simde_test_arm_neon_assert_equal_i32x4_(simde_int32x4_t a, simde_int32x4_t b, const char* filename, int line, const char* astr, const char* bstr) { int32_t a_[sizeof(a) / sizeof(int32_t)], b_[sizeof(b) / sizeof(int32_t)]; simde_vst1q_s32(a_, a); simde_vst1q_s32(b_, b); return simde_assert_equal_vi32_(4, a_, b_, filename, line, astr, bstr); } static simde_int64x2_t simde_test_arm_neon_random_i64x2(void) { simde_int64x2_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_i64x2(int indent, simde_int64x2_t value, SimdeTestVecPos pos) { int64_t value_[sizeof(value) / sizeof(int64_t)]; simde_vst1q_s64(value_, value); simde_test_codegen_write_vi64(indent, sizeof(value) / sizeof(int64_t), value_, pos); } static int simde_test_arm_neon_assert_equal_i64x2_(simde_int64x2_t a, simde_int64x2_t b, const char* filename, int line, const char* astr, const char* bstr) { int64_t a_[sizeof(a) / sizeof(int64_t)], b_[sizeof(b) / sizeof(int64_t)]; simde_vst1q_s64(a_, a); simde_vst1q_s64(b_, b); return simde_assert_equal_vi64_(2, a_, b_, filename, line, astr, bstr); } static simde_uint8x16_t simde_test_arm_neon_random_u8x16(void) { simde_uint8x16_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_u8x16(int indent, simde_uint8x16_t value, SimdeTestVecPos pos) { uint8_t value_[sizeof(value) / sizeof(uint8_t)]; simde_vst1q_u8(value_, value); simde_test_codegen_write_vu8(indent, sizeof(value) / sizeof(uint8_t), value_, pos); } static int simde_test_arm_neon_assert_equal_u8x16_(simde_uint8x16_t a, simde_uint8x16_t b, const char* filename, int line, const char* astr, const char* bstr) { uint8_t a_[sizeof(a) / sizeof(uint8_t)], b_[sizeof(b) / sizeof(uint8_t)]; simde_vst1q_u8(a_, a); simde_vst1q_u8(b_, b); return simde_assert_equal_vu8_(16, a_, b_, filename, line, astr, bstr); } static simde_uint16x8_t simde_test_arm_neon_random_u16x8(void) { simde_uint16x8_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_u16x8(int indent, simde_uint16x8_t value, SimdeTestVecPos pos) { uint16_t value_[sizeof(value) / sizeof(uint16_t)]; simde_vst1q_u16(value_, value); simde_test_codegen_write_vu16(indent, sizeof(value) / sizeof(uint16_t), value_, pos); } static int simde_test_arm_neon_assert_equal_u16x8_(simde_uint16x8_t a, simde_uint16x8_t b, const char* filename, int line, const char* astr, const char* bstr) { uint16_t a_[sizeof(a) / sizeof(uint16_t)], b_[sizeof(b) / sizeof(uint16_t)]; simde_vst1q_u16(a_, a); simde_vst1q_u16(b_, b); return simde_assert_equal_vu16_(8, a_, b_, filename, line, astr, bstr); } static simde_uint32x4_t simde_test_arm_neon_random_u32x4(void) { simde_uint32x4_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_u32x4(int indent, simde_uint32x4_t value, SimdeTestVecPos pos) { uint32_t value_[sizeof(value) / sizeof(uint32_t)]; simde_vst1q_u32(value_, value); simde_test_codegen_write_vu32(indent, sizeof(value) / sizeof(uint32_t), value_, pos); } static int simde_test_arm_neon_assert_equal_u32x4_(simde_uint32x4_t a, simde_uint32x4_t b, const char* filename, int line, const char* astr, const char* bstr) { uint32_t a_[sizeof(a) / sizeof(uint32_t)], b_[sizeof(b) / sizeof(uint32_t)]; simde_vst1q_u32(a_, a); simde_vst1q_u32(b_, b); return simde_assert_equal_vu32_(4, a_, b_, filename, line, astr, bstr); } static simde_uint64x2_t simde_test_arm_neon_random_u64x2(void) { simde_uint64x2_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_u64x2(int indent, simde_uint64x2_t value, SimdeTestVecPos pos) { uint64_t value_[sizeof(value) / sizeof(uint64_t)]; simde_vst1q_u64(value_, value); simde_test_codegen_write_vu64(indent, sizeof(value) / sizeof(uint64_t), value_, pos); } static int simde_test_arm_neon_assert_equal_u64x2_(simde_uint64x2_t a, simde_uint64x2_t b, const char* filename, int line, const char* astr, const char* bstr) { uint64_t a_[sizeof(a) / sizeof(uint64_t)], b_[sizeof(b) / sizeof(uint64_t)]; simde_vst1q_u64(a_, a); simde_vst1q_u64(b_, b); return simde_assert_equal_vu64_(2, a_, b_, filename, line, astr, bstr); } static simde_float32x4_t simde_test_arm_neon_random_f32x4(simde_float32_t min, simde_float32_t max) { simde_float32 v[sizeof(simde_float32x4_t) / sizeof(simde_float32_t)]; simde_test_codegen_random_vf32(sizeof(v) / sizeof(v[0]), v, ((simde_float32) (min)), ((simde_float32) (max))); return simde_vld1q_f32(((simde_float32_t*) (v))); } static void simde_test_arm_neon_write_f32x4(int indent, simde_float32x4_t value, SimdeTestVecPos pos) { simde_float32_t value_[sizeof(value) / sizeof(simde_float32_t)]; simde_vst1q_f32(value_, value); simde_test_codegen_write_vf32(indent, sizeof(value_) / sizeof(value_[0]), value_, pos); } static int simde_test_arm_neon_assert_equal_f32x4_(simde_float32x4_t a, simde_float32x4_t b, simde_float32_t slop, const char* filename, int line, const char* astr, const char* bstr) { simde_float32 a_[sizeof(a) / sizeof(simde_float32_t)], b_[sizeof(b) / sizeof(simde_float32_t)]; simde_vst1q_f32(a_, a); simde_vst1q_f32(b_, b); return simde_assert_equal_vf32_(4, ((simde_float32*) (a_)), ((simde_float32*) (b_)), slop, filename, line, astr, bstr); } static void simde_test_arm_neon_random_f32x4_full( size_t test_sets, size_t vectors_per_set, simde_float32_t values[(test_sets * vectors_per_set * (sizeof(simde_float32x4_t) / sizeof(simde_float32_t)))], simde_float32_t min, simde_float32_t max, SimdeTestVecFloatType type) { simde_test_codegen_random_vf32_full(test_sets, vectors_per_set, sizeof(simde_float32x4_t) / sizeof(simde_float32_t), values, ((simde_float32) (min)), ((simde_float32) (max)), type); } static simde_float32x4_t simde_test_arm_neon_random_extract_f32x4(size_t set_num, size_t vectors_per_set, size_t vector_num, simde_float32_t* values) { const size_t elements_per_vector = sizeof(simde_float32x4_t) / sizeof(simde_float32_t); const size_t elements_per_set = elements_per_vector * vectors_per_set; const size_t pos = (elements_per_set * set_num) + (elements_per_vector * vector_num); return simde_vld1q_f32(&(values[pos])); } static simde_float64x2_t simde_test_arm_neon_random_f64x2(simde_float64_t min, simde_float64_t max) { simde_float64 v[sizeof(simde_float64x2_t) / sizeof(simde_float64_t)]; simde_test_codegen_random_vf64(sizeof(v) / sizeof(v[0]), v, ((simde_float64) (min)), ((simde_float64) (max))); return simde_vld1q_f64(((simde_float64_t*) (v))); } static void simde_test_arm_neon_write_f64x2(int indent, simde_float64x2_t value, SimdeTestVecPos pos) { simde_float64_t value_[sizeof(value) / sizeof(simde_float64_t)]; simde_vst1q_f64(value_, value); simde_test_codegen_write_vf64(indent, sizeof(value_) / sizeof(value_[0]), value_, pos); } static int simde_test_arm_neon_assert_equal_f64x2_(simde_float64x2_t a, simde_float64x2_t b, simde_float64_t slop, const char* filename, int line, const char* astr, const char* bstr) { simde_float64 a_[sizeof(a) / sizeof(simde_float64_t)], b_[sizeof(b) / sizeof(simde_float64_t)]; simde_vst1q_f64(a_, a); simde_vst1q_f64(b_, b); return simde_assert_equal_vf64_(2, ((simde_float64*) (a_)), ((simde_float64*) (b_)), slop, filename, line, astr, bstr); } static void simde_test_arm_neon_random_f64x2_full( size_t test_sets, size_t vectors_per_set, simde_float64_t values[(test_sets * vectors_per_set * (sizeof(simde_float64x2_t) / sizeof(simde_float64_t)))], simde_float64_t min, simde_float64_t max, SimdeTestVecFloatType type) { simde_test_codegen_random_vf64_full(test_sets, vectors_per_set, sizeof(simde_float64x2_t) / sizeof(simde_float64_t), values, ((simde_float64) (min)), ((simde_float64) (max)), type); } static simde_float64x2_t simde_test_arm_neon_random_extract_f64x2(size_t set_num, size_t vectors_per_set, size_t vector_num, simde_float64_t* values) { const size_t elements_per_vector = sizeof(simde_float64x2_t) / sizeof(simde_float64_t); const size_t elements_per_set = elements_per_vector * vectors_per_set; const size_t pos = (elements_per_set * set_num) + (elements_per_vector * vector_num); return simde_vld1q_f64(&(values[pos])); } static simde_poly8x16_t simde_test_arm_neon_random_p8x16(void) { simde_poly8x16_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_p8x16(int indent, simde_poly8x16_t value, SimdeTestVecPos pos) { simde_poly8_t value_[sizeof(value) / sizeof(simde_poly8_t)]; simde_vst1q_p8(value_, value); simde_test_codegen_write_vp8(indent, sizeof(value) / sizeof(simde_poly8_t), value_, pos); } static int simde_test_arm_neon_assert_equal_p8x16_(simde_poly8x16_t a, simde_poly8x16_t b, const char* filename, int line, const char* astr, const char* bstr) { simde_poly8_t a_[sizeof(a) / sizeof(simde_poly8_t)], b_[sizeof(b) / sizeof(simde_poly8_t)]; simde_vst1q_p8(a_, a); simde_vst1q_p8(b_, b); return simde_assert_equal_vp8_(16, a_, b_, filename, line, astr, bstr); } static simde_poly16x8_t simde_test_arm_neon_random_p16x8(void) { simde_poly16x8_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_p16x8(int indent, simde_poly16x8_t value, SimdeTestVecPos pos) { simde_poly16_t value_[sizeof(value) / sizeof(simde_poly16_t)]; simde_vst1q_p16(value_, value); simde_test_codegen_write_vp16(indent, sizeof(value) / sizeof(simde_poly16_t), value_, pos); } static int simde_test_arm_neon_assert_equal_p16x8_(simde_poly16x8_t a, simde_poly16x8_t b, const char* filename, int line, const char* astr, const char* bstr) { simde_poly16_t a_[sizeof(a) / sizeof(simde_poly16_t)], b_[sizeof(b) / sizeof(simde_poly16_t)]; simde_vst1q_p16(a_, a); simde_vst1q_p16(b_, b); return simde_assert_equal_vp16_(8, a_, b_, filename, line, astr, bstr); } static simde_poly64x2_t simde_test_arm_neon_random_p64x2(void) { simde_poly64x2_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_p64x2(int indent, simde_poly64x2_t value, SimdeTestVecPos pos) { simde_poly64_t value_[sizeof(value) / sizeof(simde_poly64_t)]; simde_vst1q_p64(value_, value); simde_test_codegen_write_vp64(indent, sizeof(value) / sizeof(simde_poly64_t), value_, pos); } static int simde_test_arm_neon_assert_equal_p64x2_(simde_poly64x2_t a, simde_poly64x2_t b, const char* filename, int line, const char* astr, const char* bstr) { simde_poly64_t a_[sizeof(a) / sizeof(simde_poly64_t)], b_[sizeof(b) / sizeof(simde_poly64_t)]; simde_vst1q_p64(a_, a); simde_vst1q_p64(b_, b); return simde_assert_equal_vp64_(2, a_, b_, filename, line, astr, bstr); } static int simde_test_arm_neon_assert_equal_f16x4_(simde_float16x4_t a, simde_float16x4_t b, simde_float16_t slop, const char* filename, int line, const char* astr, const char* bstr) { simde_float16 a_[sizeof(a) / sizeof(simde_float16_t)], b_[sizeof(b) / sizeof(simde_float16_t)]; simde_vst1_f16(a_, a); simde_vst1_f16(b_, b); return simde_assert_equal_vf16_(4, ((simde_float16*) (a_)), ((simde_float16*) (b_)), slop, filename, line, astr, bstr); } static int simde_test_arm_neon_assert_equal_f16x8_(simde_float16x8_t a, simde_float16x8_t b, simde_float16_t slop, const char* filename, int line, const char* astr, const char* bstr) { simde_float16 a_[sizeof(a) / sizeof(simde_float16_t)], b_[sizeof(b) / sizeof(simde_float16_t)]; simde_vst1q_f16(a_, a); simde_vst1q_f16(b_, b); return simde_assert_equal_vf16_(8, ((simde_float16*) (a_)), ((simde_float16*) (b_)), slop, filename, line, astr, bstr); } static int simde_test_arm_neon_assert_equal_bf16x4_(simde_bfloat16x4_t a, simde_bfloat16x4_t b, simde_bfloat16_t slop, const char* filename, int line, const char* astr, const char* bstr) { simde_bfloat16 a_[sizeof(a) / sizeof(simde_bfloat16_t)], b_[sizeof(b) / sizeof(simde_bfloat16_t)]; simde_vst1_bf16(a_, a); simde_vst1_bf16(b_, b); return simde_assert_equal_vbf16_(4, ((simde_bfloat16*) (a_)), ((simde_bfloat16*) (b_)), slop, filename, line, astr, bstr); } static int simde_test_arm_neon_assert_equal_bf16x8_(simde_bfloat16x8_t a, simde_bfloat16x8_t b, simde_bfloat16_t slop, const char* filename, int line, const char* astr, const char* bstr) { simde_bfloat16 a_[sizeof(a) / sizeof(simde_bfloat16_t)], b_[sizeof(b) / sizeof(simde_bfloat16_t)]; simde_vst1q_bf16(a_, a); simde_vst1q_bf16(b_, b); return simde_assert_equal_vbf16_(8, ((simde_bfloat16*) (a_)), ((simde_bfloat16*) (b_)), slop, filename, line, astr, bstr); } # 132 "../test/arm/neon/test-neon.h" #pragma GCC diagnostic pop # 229 "../test/arm/neon/test-neon.h" # 229 "../test/arm/neon/test-neon.h" #pragma GCC diagnostic push static simde_int8x8x2_t simde_test_arm_neon_random_i8x8x2(void) { simde_int8x8x2_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_i8x8x2(int indent, simde_int8x8x2_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 232 "../test/arm/neon/test-neon.h" 3 4 stderr # 232 "../test/arm/neon/test-neon.h" ); } int8_t value0_[sizeof(value) / sizeof(int8_t) / 2]; int8_t value1_[sizeof(value) / sizeof(int8_t) / 2]; simde_vst1_s8(value0_, value.val[0]); simde_vst1_s8(value1_, value.val[1]); simde_test_codegen_write_vi8(indent+2, sizeof(value0_) / sizeof(int8_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vi8(indent+2, sizeof(value1_) / sizeof(int8_t), value1_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 232 "../test/arm/neon/test-neon.h" 3 4 stderr # 232 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_i8x8x2_(simde_int8x8x2_t a, simde_int8x8x2_t b, const char* filename, int line, const char* astr, const char* bstr) { int8_t a0_[sizeof(a.val[0]) / sizeof(int8_t)], b0_[sizeof(b.val[0]) / sizeof(int8_t)]; int8_t a1_[sizeof(a.val[1]) / sizeof(int8_t)], b1_[sizeof(b.val[1]) / sizeof(int8_t)]; simde_vst1_s8(a0_, a.val[0]); simde_vst1_s8(b0_, b.val[0]); simde_vst1_s8(a1_, a.val[1]); simde_vst1_s8(b1_, b.val[1]); return simde_assert_equal_vi8_(8, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vi8_(8, a1_, b1_, filename, line, astr, bstr); } static simde_int16x4x2_t simde_test_arm_neon_random_i16x4x2(void) { simde_int16x4x2_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_i16x4x2(int indent, simde_int16x4x2_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 233 "../test/arm/neon/test-neon.h" 3 4 stderr # 233 "../test/arm/neon/test-neon.h" ); } int16_t value0_[sizeof(value) / sizeof(int16_t) / 2]; int16_t value1_[sizeof(value) / sizeof(int16_t) / 2]; simde_vst1_s16(value0_, value.val[0]); simde_vst1_s16(value1_, value.val[1]); simde_test_codegen_write_vi16(indent+2, sizeof(value0_) / sizeof(int16_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vi16(indent+2, sizeof(value1_) / sizeof(int16_t), value1_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 233 "../test/arm/neon/test-neon.h" 3 4 stderr # 233 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_i16x4x2_(simde_int16x4x2_t a, simde_int16x4x2_t b, const char* filename, int line, const char* astr, const char* bstr) { int16_t a0_[sizeof(a.val[0]) / sizeof(int16_t)], b0_[sizeof(b.val[0]) / sizeof(int16_t)]; int16_t a1_[sizeof(a.val[1]) / sizeof(int16_t)], b1_[sizeof(b.val[1]) / sizeof(int16_t)]; simde_vst1_s16(a0_, a.val[0]); simde_vst1_s16(b0_, b.val[0]); simde_vst1_s16(a1_, a.val[1]); simde_vst1_s16(b1_, b.val[1]); return simde_assert_equal_vi16_(4, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vi16_(4, a1_, b1_, filename, line, astr, bstr); } static simde_int32x2x2_t simde_test_arm_neon_random_i32x2x2(void) { simde_int32x2x2_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_i32x2x2(int indent, simde_int32x2x2_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 234 "../test/arm/neon/test-neon.h" 3 4 stderr # 234 "../test/arm/neon/test-neon.h" ); } int32_t value0_[sizeof(value) / sizeof(int32_t) / 2]; int32_t value1_[sizeof(value) / sizeof(int32_t) / 2]; simde_vst1_s32(value0_, value.val[0]); simde_vst1_s32(value1_, value.val[1]); simde_test_codegen_write_vi32(indent+2, sizeof(value0_) / sizeof(int32_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vi32(indent+2, sizeof(value1_) / sizeof(int32_t), value1_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 234 "../test/arm/neon/test-neon.h" 3 4 stderr # 234 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_i32x2x2_(simde_int32x2x2_t a, simde_int32x2x2_t b, const char* filename, int line, const char* astr, const char* bstr) { int32_t a0_[sizeof(a.val[0]) / sizeof(int32_t)], b0_[sizeof(b.val[0]) / sizeof(int32_t)]; int32_t a1_[sizeof(a.val[1]) / sizeof(int32_t)], b1_[sizeof(b.val[1]) / sizeof(int32_t)]; simde_vst1_s32(a0_, a.val[0]); simde_vst1_s32(b0_, b.val[0]); simde_vst1_s32(a1_, a.val[1]); simde_vst1_s32(b1_, b.val[1]); return simde_assert_equal_vi32_(2, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vi32_(2, a1_, b1_, filename, line, astr, bstr); } static simde_int64x1x2_t simde_test_arm_neon_random_i64x1x2(void) { simde_int64x1x2_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_i64x1x2(int indent, simde_int64x1x2_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 235 "../test/arm/neon/test-neon.h" 3 4 stderr # 235 "../test/arm/neon/test-neon.h" ); } int64_t value0_[sizeof(value) / sizeof(int64_t) / 2]; int64_t value1_[sizeof(value) / sizeof(int64_t) / 2]; simde_vst1_s64(value0_, value.val[0]); simde_vst1_s64(value1_, value.val[1]); simde_test_codegen_write_vi64(indent+2, sizeof(value0_) / sizeof(int64_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vi64(indent+2, sizeof(value1_) / sizeof(int64_t), value1_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 235 "../test/arm/neon/test-neon.h" 3 4 stderr # 235 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_i64x1x2_(simde_int64x1x2_t a, simde_int64x1x2_t b, const char* filename, int line, const char* astr, const char* bstr) { int64_t a0_[sizeof(a.val[0]) / sizeof(int64_t)], b0_[sizeof(b.val[0]) / sizeof(int64_t)]; int64_t a1_[sizeof(a.val[1]) / sizeof(int64_t)], b1_[sizeof(b.val[1]) / sizeof(int64_t)]; simde_vst1_s64(a0_, a.val[0]); simde_vst1_s64(b0_, b.val[0]); simde_vst1_s64(a1_, a.val[1]); simde_vst1_s64(b1_, b.val[1]); return simde_assert_equal_vi64_(1, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vi64_(1, a1_, b1_, filename, line, astr, bstr); } static simde_uint8x8x2_t simde_test_arm_neon_random_u8x8x2(void) { simde_uint8x8x2_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_u8x8x2(int indent, simde_uint8x8x2_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 236 "../test/arm/neon/test-neon.h" 3 4 stderr # 236 "../test/arm/neon/test-neon.h" ); } uint8_t value0_[sizeof(value) / sizeof(uint8_t) / 2]; uint8_t value1_[sizeof(value) / sizeof(uint8_t) / 2]; simde_vst1_u8(value0_, value.val[0]); simde_vst1_u8(value1_, value.val[1]); simde_test_codegen_write_vu8(indent+2, sizeof(value0_) / sizeof(uint8_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vu8(indent+2, sizeof(value1_) / sizeof(uint8_t), value1_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 236 "../test/arm/neon/test-neon.h" 3 4 stderr # 236 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_u8x8x2_(simde_uint8x8x2_t a, simde_uint8x8x2_t b, const char* filename, int line, const char* astr, const char* bstr) { uint8_t a0_[sizeof(a.val[0]) / sizeof(uint8_t)], b0_[sizeof(b.val[0]) / sizeof(uint8_t)]; uint8_t a1_[sizeof(a.val[1]) / sizeof(uint8_t)], b1_[sizeof(b.val[1]) / sizeof(uint8_t)]; simde_vst1_u8(a0_, a.val[0]); simde_vst1_u8(b0_, b.val[0]); simde_vst1_u8(a1_, a.val[1]); simde_vst1_u8(b1_, b.val[1]); return simde_assert_equal_vu8_(8, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vu8_(8, a1_, b1_, filename, line, astr, bstr); } static simde_uint16x4x2_t simde_test_arm_neon_random_u16x4x2(void) { simde_uint16x4x2_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_u16x4x2(int indent, simde_uint16x4x2_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 237 "../test/arm/neon/test-neon.h" 3 4 stderr # 237 "../test/arm/neon/test-neon.h" ); } uint16_t value0_[sizeof(value) / sizeof(uint16_t) / 2]; uint16_t value1_[sizeof(value) / sizeof(uint16_t) / 2]; simde_vst1_u16(value0_, value.val[0]); simde_vst1_u16(value1_, value.val[1]); simde_test_codegen_write_vu16(indent+2, sizeof(value0_) / sizeof(uint16_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vu16(indent+2, sizeof(value1_) / sizeof(uint16_t), value1_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 237 "../test/arm/neon/test-neon.h" 3 4 stderr # 237 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_u16x4x2_(simde_uint16x4x2_t a, simde_uint16x4x2_t b, const char* filename, int line, const char* astr, const char* bstr) { uint16_t a0_[sizeof(a.val[0]) / sizeof(uint16_t)], b0_[sizeof(b.val[0]) / sizeof(uint16_t)]; uint16_t a1_[sizeof(a.val[1]) / sizeof(uint16_t)], b1_[sizeof(b.val[1]) / sizeof(uint16_t)]; simde_vst1_u16(a0_, a.val[0]); simde_vst1_u16(b0_, b.val[0]); simde_vst1_u16(a1_, a.val[1]); simde_vst1_u16(b1_, b.val[1]); return simde_assert_equal_vu16_(4, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vu16_(4, a1_, b1_, filename, line, astr, bstr); } static simde_uint32x2x2_t simde_test_arm_neon_random_u32x2x2(void) { simde_uint32x2x2_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_u32x2x2(int indent, simde_uint32x2x2_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 238 "../test/arm/neon/test-neon.h" 3 4 stderr # 238 "../test/arm/neon/test-neon.h" ); } uint32_t value0_[sizeof(value) / sizeof(uint32_t) / 2]; uint32_t value1_[sizeof(value) / sizeof(uint32_t) / 2]; simde_vst1_u32(value0_, value.val[0]); simde_vst1_u32(value1_, value.val[1]); simde_test_codegen_write_vu32(indent+2, sizeof(value0_) / sizeof(uint32_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vu32(indent+2, sizeof(value1_) / sizeof(uint32_t), value1_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 238 "../test/arm/neon/test-neon.h" 3 4 stderr # 238 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_u32x2x2_(simde_uint32x2x2_t a, simde_uint32x2x2_t b, const char* filename, int line, const char* astr, const char* bstr) { uint32_t a0_[sizeof(a.val[0]) / sizeof(uint32_t)], b0_[sizeof(b.val[0]) / sizeof(uint32_t)]; uint32_t a1_[sizeof(a.val[1]) / sizeof(uint32_t)], b1_[sizeof(b.val[1]) / sizeof(uint32_t)]; simde_vst1_u32(a0_, a.val[0]); simde_vst1_u32(b0_, b.val[0]); simde_vst1_u32(a1_, a.val[1]); simde_vst1_u32(b1_, b.val[1]); return simde_assert_equal_vu32_(2, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vu32_(2, a1_, b1_, filename, line, astr, bstr); } static simde_uint64x1x2_t simde_test_arm_neon_random_u64x1x2(void) { simde_uint64x1x2_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_u64x1x2(int indent, simde_uint64x1x2_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 239 "../test/arm/neon/test-neon.h" 3 4 stderr # 239 "../test/arm/neon/test-neon.h" ); } uint64_t value0_[sizeof(value) / sizeof(uint64_t) / 2]; uint64_t value1_[sizeof(value) / sizeof(uint64_t) / 2]; simde_vst1_u64(value0_, value.val[0]); simde_vst1_u64(value1_, value.val[1]); simde_test_codegen_write_vu64(indent+2, sizeof(value0_) / sizeof(uint64_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vu64(indent+2, sizeof(value1_) / sizeof(uint64_t), value1_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 239 "../test/arm/neon/test-neon.h" 3 4 stderr # 239 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_u64x1x2_(simde_uint64x1x2_t a, simde_uint64x1x2_t b, const char* filename, int line, const char* astr, const char* bstr) { uint64_t a0_[sizeof(a.val[0]) / sizeof(uint64_t)], b0_[sizeof(b.val[0]) / sizeof(uint64_t)]; uint64_t a1_[sizeof(a.val[1]) / sizeof(uint64_t)], b1_[sizeof(b.val[1]) / sizeof(uint64_t)]; simde_vst1_u64(a0_, a.val[0]); simde_vst1_u64(b0_, b.val[0]); simde_vst1_u64(a1_, a.val[1]); simde_vst1_u64(b1_, b.val[1]); return simde_assert_equal_vu64_(1, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vu64_(1, a1_, b1_, filename, line, astr, bstr); } static simde_float32x2x2_t simde_test_arm_neon_random_f32x2x2(simde_float32_t min, simde_float32_t max) { simde_float32 v0[sizeof(simde_float32x2x2_t) / sizeof(simde_float32_t) / 2]; simde_float32 v1[sizeof(simde_float32x2x2_t) / sizeof(simde_float32_t) / 2]; simde_test_codegen_random_vf32(sizeof(v0) / sizeof(v0[0]), v0, ((simde_float32) (min)), ((simde_float32) (max))); simde_test_codegen_random_vf32(sizeof(v1) / sizeof(v1[0]), v1, ((simde_float32) (min)), ((simde_float32) (max))); simde_float32x2x2_t r; r.val[0] = simde_vld1_f32(((simde_float32_t*) (v0))); r.val[1] = simde_vld1_f32(((simde_float32_t*) (v1))); return r; } static void simde_test_arm_neon_write_f32x2x2(int indent, simde_float32x2x2_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 240 "../test/arm/neon/test-neon.h" 3 4 stderr # 240 "../test/arm/neon/test-neon.h" ); } simde_float32_t value0_[sizeof(value) / sizeof(simde_float32_t) / 2]; simde_float32_t value1_[sizeof(value) / sizeof(simde_float32_t) / 2]; simde_vst1_f32(value0_, value.val[0]); simde_vst1_f32(value1_, value.val[1]); simde_test_codegen_write_vf32(indent + 2, sizeof(value0_) / sizeof(value0_[0]), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vf32(indent + 2, sizeof(value1_) / sizeof(value1_[0]), value1_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 240 "../test/arm/neon/test-neon.h" 3 4 stderr # 240 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_f32x2x2_(simde_float32x2x2_t a, simde_float32x2x2_t b, simde_float32_t slop, const char* filename, int line, const char* astr, const char* bstr) { simde_float32 a0_[sizeof(a.val[0]) / sizeof(simde_float32_t)], b0_[sizeof(b.val[0]) / sizeof(simde_float32_t)]; simde_float32 a1_[sizeof(a.val[1]) / sizeof(simde_float32_t)], b1_[sizeof(b.val[1]) / sizeof(simde_float32_t)]; simde_vst1_f32(a0_, a.val[0]); simde_vst1_f32(b0_, b.val[0]); simde_vst1_f32(a1_, a.val[1]); simde_vst1_f32(b1_, b.val[1]); return simde_assert_equal_vf32_(2, ((simde_float32*) (a0_)), ((simde_float32*) (b0_)), slop, filename, line, astr, bstr) && simde_assert_equal_vf32_(2, ((simde_float32*) (a1_)), ((simde_float32*) (b1_)), slop, filename, line, astr, bstr); } static simde_float64x1x2_t simde_test_arm_neon_random_f64x1x2(simde_float64_t min, simde_float64_t max) { simde_float64 v0[sizeof(simde_float64x1x2_t) / sizeof(simde_float64_t) / 2]; simde_float64 v1[sizeof(simde_float64x1x2_t) / sizeof(simde_float64_t) / 2]; simde_test_codegen_random_vf64(sizeof(v0) / sizeof(v0[0]), v0, ((simde_float64) (min)), ((simde_float64) (max))); simde_test_codegen_random_vf64(sizeof(v1) / sizeof(v1[0]), v1, ((simde_float64) (min)), ((simde_float64) (max))); simde_float64x1x2_t r; r.val[0] = simde_vld1_f64(((simde_float64_t*) (v0))); r.val[1] = simde_vld1_f64(((simde_float64_t*) (v1))); return r; } static void simde_test_arm_neon_write_f64x1x2(int indent, simde_float64x1x2_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 241 "../test/arm/neon/test-neon.h" 3 4 stderr # 241 "../test/arm/neon/test-neon.h" ); } simde_float64_t value0_[sizeof(value) / sizeof(simde_float64_t) / 2]; simde_float64_t value1_[sizeof(value) / sizeof(simde_float64_t) / 2]; simde_vst1_f64(value0_, value.val[0]); simde_vst1_f64(value1_, value.val[1]); simde_test_codegen_write_vf64(indent + 2, sizeof(value0_) / sizeof(value0_[0]), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vf64(indent + 2, sizeof(value1_) / sizeof(value1_[0]), value1_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 241 "../test/arm/neon/test-neon.h" 3 4 stderr # 241 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_f64x1x2_(simde_float64x1x2_t a, simde_float64x1x2_t b, simde_float64_t slop, const char* filename, int line, const char* astr, const char* bstr) { simde_float64 a0_[sizeof(a.val[0]) / sizeof(simde_float64_t)], b0_[sizeof(b.val[0]) / sizeof(simde_float64_t)]; simde_float64 a1_[sizeof(a.val[1]) / sizeof(simde_float64_t)], b1_[sizeof(b.val[1]) / sizeof(simde_float64_t)]; simde_vst1_f64(a0_, a.val[0]); simde_vst1_f64(b0_, b.val[0]); simde_vst1_f64(a1_, a.val[1]); simde_vst1_f64(b1_, b.val[1]); return simde_assert_equal_vf64_(1, ((simde_float64*) (a0_)), ((simde_float64*) (b0_)), slop, filename, line, astr, bstr) && simde_assert_equal_vf64_(1, ((simde_float64*) (a1_)), ((simde_float64*) (b1_)), slop, filename, line, astr, bstr); } static simde_poly8x8x2_t simde_test_arm_neon_random_p8x8x2(void) { simde_poly8x8x2_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_p8x8x2(int indent, simde_poly8x8x2_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 242 "../test/arm/neon/test-neon.h" 3 4 stderr # 242 "../test/arm/neon/test-neon.h" ); } simde_poly8_t value0_[sizeof(value) / sizeof(simde_poly8_t) / 2]; simde_poly8_t value1_[sizeof(value) / sizeof(simde_poly8_t) / 2]; simde_vst1_p8(value0_, value.val[0]); simde_vst1_p8(value1_, value.val[1]); simde_test_codegen_write_vp8(indent+2, sizeof(value0_) / sizeof(simde_poly8_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vp8(indent+2, sizeof(value1_) / sizeof(simde_poly8_t), value1_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 242 "../test/arm/neon/test-neon.h" 3 4 stderr # 242 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_p8x8x2_(simde_poly8x8x2_t a, simde_poly8x8x2_t b, const char* filename, int line, const char* astr, const char* bstr) { simde_poly8_t a0_[sizeof(a.val[0]) / sizeof(simde_poly8_t)], b0_[sizeof(b.val[0]) / sizeof(simde_poly8_t)]; simde_poly8_t a1_[sizeof(a.val[1]) / sizeof(simde_poly8_t)], b1_[sizeof(b.val[1]) / sizeof(simde_poly8_t)]; simde_vst1_p8(a0_, a.val[0]); simde_vst1_p8(b0_, b.val[0]); simde_vst1_p8(a1_, a.val[1]); simde_vst1_p8(b1_, b.val[1]); return simde_assert_equal_vp8_(8, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vp8_(8, a1_, b1_, filename, line, astr, bstr); } static simde_poly16x4x2_t simde_test_arm_neon_random_p16x4x2(void) { simde_poly16x4x2_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_p16x4x2(int indent, simde_poly16x4x2_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 243 "../test/arm/neon/test-neon.h" 3 4 stderr # 243 "../test/arm/neon/test-neon.h" ); } simde_poly16_t value0_[sizeof(value) / sizeof(simde_poly16_t) / 2]; simde_poly16_t value1_[sizeof(value) / sizeof(simde_poly16_t) / 2]; simde_vst1_p16(value0_, value.val[0]); simde_vst1_p16(value1_, value.val[1]); simde_test_codegen_write_vp16(indent+2, sizeof(value0_) / sizeof(simde_poly16_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vp16(indent+2, sizeof(value1_) / sizeof(simde_poly16_t), value1_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 243 "../test/arm/neon/test-neon.h" 3 4 stderr # 243 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_p16x4x2_(simde_poly16x4x2_t a, simde_poly16x4x2_t b, const char* filename, int line, const char* astr, const char* bstr) { simde_poly16_t a0_[sizeof(a.val[0]) / sizeof(simde_poly16_t)], b0_[sizeof(b.val[0]) / sizeof(simde_poly16_t)]; simde_poly16_t a1_[sizeof(a.val[1]) / sizeof(simde_poly16_t)], b1_[sizeof(b.val[1]) / sizeof(simde_poly16_t)]; simde_vst1_p16(a0_, a.val[0]); simde_vst1_p16(b0_, b.val[0]); simde_vst1_p16(a1_, a.val[1]); simde_vst1_p16(b1_, b.val[1]); return simde_assert_equal_vp16_(4, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vp16_(4, a1_, b1_, filename, line, astr, bstr); } static simde_poly64x1x2_t simde_test_arm_neon_random_p64x1x2(void) { simde_poly64x1x2_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_p64x1x2(int indent, simde_poly64x1x2_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 244 "../test/arm/neon/test-neon.h" 3 4 stderr # 244 "../test/arm/neon/test-neon.h" ); } simde_poly64_t value0_[sizeof(value) / sizeof(simde_poly64_t) / 2]; simde_poly64_t value1_[sizeof(value) / sizeof(simde_poly64_t) / 2]; simde_vst1_p64(value0_, value.val[0]); simde_vst1_p64(value1_, value.val[1]); simde_test_codegen_write_vp64(indent+2, sizeof(value0_) / sizeof(simde_poly64_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vp64(indent+2, sizeof(value1_) / sizeof(simde_poly64_t), value1_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 244 "../test/arm/neon/test-neon.h" 3 4 stderr # 244 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_p64x1x2_(simde_poly64x1x2_t a, simde_poly64x1x2_t b, const char* filename, int line, const char* astr, const char* bstr) { simde_poly64_t a0_[sizeof(a.val[0]) / sizeof(simde_poly64_t)], b0_[sizeof(b.val[0]) / sizeof(simde_poly64_t)]; simde_poly64_t a1_[sizeof(a.val[1]) / sizeof(simde_poly64_t)], b1_[sizeof(b.val[1]) / sizeof(simde_poly64_t)]; simde_vst1_p64(a0_, a.val[0]); simde_vst1_p64(b0_, b.val[0]); simde_vst1_p64(a1_, a.val[1]); simde_vst1_p64(b1_, b.val[1]); return simde_assert_equal_vp64_(1, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vp64_(1, a1_, b1_, filename, line, astr, bstr); } static simde_int8x16x2_t simde_test_arm_neon_random_i8x16x2(void) { simde_int8x16x2_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_i8x16x2(int indent, simde_int8x16x2_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 246 "../test/arm/neon/test-neon.h" 3 4 stderr # 246 "../test/arm/neon/test-neon.h" ); } int8_t value0_[sizeof(value) / sizeof(int8_t) / 2]; int8_t value1_[sizeof(value) / sizeof(int8_t) / 2]; simde_vst1q_s8(value0_, value.val[0]); simde_vst1q_s8(value1_, value.val[1]); simde_test_codegen_write_vi8(indent+2, sizeof(value0_) / sizeof(int8_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vi8(indent+2, sizeof(value1_) / sizeof(int8_t), value1_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 246 "../test/arm/neon/test-neon.h" 3 4 stderr # 246 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_i8x16x2_(simde_int8x16x2_t a, simde_int8x16x2_t b, const char* filename, int line, const char* astr, const char* bstr) { int8_t a0_[sizeof(a.val[0]) / sizeof(int8_t)], b0_[sizeof(b.val[0]) / sizeof(int8_t)]; int8_t a1_[sizeof(a.val[1]) / sizeof(int8_t)], b1_[sizeof(b.val[1]) / sizeof(int8_t)]; simde_vst1q_s8(a0_, a.val[0]); simde_vst1q_s8(b0_, b.val[0]); simde_vst1q_s8(a1_, a.val[1]); simde_vst1q_s8(b1_, b.val[1]); return simde_assert_equal_vi8_(16, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vi8_(16, a1_, b1_, filename, line, astr, bstr); } static simde_int16x8x2_t simde_test_arm_neon_random_i16x8x2(void) { simde_int16x8x2_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_i16x8x2(int indent, simde_int16x8x2_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 247 "../test/arm/neon/test-neon.h" 3 4 stderr # 247 "../test/arm/neon/test-neon.h" ); } int16_t value0_[sizeof(value) / sizeof(int16_t) / 2]; int16_t value1_[sizeof(value) / sizeof(int16_t) / 2]; simde_vst1q_s16(value0_, value.val[0]); simde_vst1q_s16(value1_, value.val[1]); simde_test_codegen_write_vi16(indent+2, sizeof(value0_) / sizeof(int16_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vi16(indent+2, sizeof(value1_) / sizeof(int16_t), value1_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 247 "../test/arm/neon/test-neon.h" 3 4 stderr # 247 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_i16x8x2_(simde_int16x8x2_t a, simde_int16x8x2_t b, const char* filename, int line, const char* astr, const char* bstr) { int16_t a0_[sizeof(a.val[0]) / sizeof(int16_t)], b0_[sizeof(b.val[0]) / sizeof(int16_t)]; int16_t a1_[sizeof(a.val[1]) / sizeof(int16_t)], b1_[sizeof(b.val[1]) / sizeof(int16_t)]; simde_vst1q_s16(a0_, a.val[0]); simde_vst1q_s16(b0_, b.val[0]); simde_vst1q_s16(a1_, a.val[1]); simde_vst1q_s16(b1_, b.val[1]); return simde_assert_equal_vi16_(8, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vi16_(8, a1_, b1_, filename, line, astr, bstr); } static simde_int32x4x2_t simde_test_arm_neon_random_i32x4x2(void) { simde_int32x4x2_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_i32x4x2(int indent, simde_int32x4x2_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 248 "../test/arm/neon/test-neon.h" 3 4 stderr # 248 "../test/arm/neon/test-neon.h" ); } int32_t value0_[sizeof(value) / sizeof(int32_t) / 2]; int32_t value1_[sizeof(value) / sizeof(int32_t) / 2]; simde_vst1q_s32(value0_, value.val[0]); simde_vst1q_s32(value1_, value.val[1]); simde_test_codegen_write_vi32(indent+2, sizeof(value0_) / sizeof(int32_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vi32(indent+2, sizeof(value1_) / sizeof(int32_t), value1_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 248 "../test/arm/neon/test-neon.h" 3 4 stderr # 248 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_i32x4x2_(simde_int32x4x2_t a, simde_int32x4x2_t b, const char* filename, int line, const char* astr, const char* bstr) { int32_t a0_[sizeof(a.val[0]) / sizeof(int32_t)], b0_[sizeof(b.val[0]) / sizeof(int32_t)]; int32_t a1_[sizeof(a.val[1]) / sizeof(int32_t)], b1_[sizeof(b.val[1]) / sizeof(int32_t)]; simde_vst1q_s32(a0_, a.val[0]); simde_vst1q_s32(b0_, b.val[0]); simde_vst1q_s32(a1_, a.val[1]); simde_vst1q_s32(b1_, b.val[1]); return simde_assert_equal_vi32_(4, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vi32_(4, a1_, b1_, filename, line, astr, bstr); } static simde_int64x2x2_t simde_test_arm_neon_random_i64x2x2(void) { simde_int64x2x2_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_i64x2x2(int indent, simde_int64x2x2_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 249 "../test/arm/neon/test-neon.h" 3 4 stderr # 249 "../test/arm/neon/test-neon.h" ); } int64_t value0_[sizeof(value) / sizeof(int64_t) / 2]; int64_t value1_[sizeof(value) / sizeof(int64_t) / 2]; simde_vst1q_s64(value0_, value.val[0]); simde_vst1q_s64(value1_, value.val[1]); simde_test_codegen_write_vi64(indent+2, sizeof(value0_) / sizeof(int64_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vi64(indent+2, sizeof(value1_) / sizeof(int64_t), value1_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 249 "../test/arm/neon/test-neon.h" 3 4 stderr # 249 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_i64x2x2_(simde_int64x2x2_t a, simde_int64x2x2_t b, const char* filename, int line, const char* astr, const char* bstr) { int64_t a0_[sizeof(a.val[0]) / sizeof(int64_t)], b0_[sizeof(b.val[0]) / sizeof(int64_t)]; int64_t a1_[sizeof(a.val[1]) / sizeof(int64_t)], b1_[sizeof(b.val[1]) / sizeof(int64_t)]; simde_vst1q_s64(a0_, a.val[0]); simde_vst1q_s64(b0_, b.val[0]); simde_vst1q_s64(a1_, a.val[1]); simde_vst1q_s64(b1_, b.val[1]); return simde_assert_equal_vi64_(2, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vi64_(2, a1_, b1_, filename, line, astr, bstr); } static simde_uint8x16x2_t simde_test_arm_neon_random_u8x16x2(void) { simde_uint8x16x2_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_u8x16x2(int indent, simde_uint8x16x2_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 250 "../test/arm/neon/test-neon.h" 3 4 stderr # 250 "../test/arm/neon/test-neon.h" ); } uint8_t value0_[sizeof(value) / sizeof(uint8_t) / 2]; uint8_t value1_[sizeof(value) / sizeof(uint8_t) / 2]; simde_vst1q_u8(value0_, value.val[0]); simde_vst1q_u8(value1_, value.val[1]); simde_test_codegen_write_vu8(indent+2, sizeof(value0_) / sizeof(uint8_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vu8(indent+2, sizeof(value1_) / sizeof(uint8_t), value1_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 250 "../test/arm/neon/test-neon.h" 3 4 stderr # 250 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_u8x16x2_(simde_uint8x16x2_t a, simde_uint8x16x2_t b, const char* filename, int line, const char* astr, const char* bstr) { uint8_t a0_[sizeof(a.val[0]) / sizeof(uint8_t)], b0_[sizeof(b.val[0]) / sizeof(uint8_t)]; uint8_t a1_[sizeof(a.val[1]) / sizeof(uint8_t)], b1_[sizeof(b.val[1]) / sizeof(uint8_t)]; simde_vst1q_u8(a0_, a.val[0]); simde_vst1q_u8(b0_, b.val[0]); simde_vst1q_u8(a1_, a.val[1]); simde_vst1q_u8(b1_, b.val[1]); return simde_assert_equal_vu8_(16, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vu8_(16, a1_, b1_, filename, line, astr, bstr); } static simde_uint16x8x2_t simde_test_arm_neon_random_u16x8x2(void) { simde_uint16x8x2_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_u16x8x2(int indent, simde_uint16x8x2_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 251 "../test/arm/neon/test-neon.h" 3 4 stderr # 251 "../test/arm/neon/test-neon.h" ); } uint16_t value0_[sizeof(value) / sizeof(uint16_t) / 2]; uint16_t value1_[sizeof(value) / sizeof(uint16_t) / 2]; simde_vst1q_u16(value0_, value.val[0]); simde_vst1q_u16(value1_, value.val[1]); simde_test_codegen_write_vu16(indent+2, sizeof(value0_) / sizeof(uint16_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vu16(indent+2, sizeof(value1_) / sizeof(uint16_t), value1_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 251 "../test/arm/neon/test-neon.h" 3 4 stderr # 251 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_u16x8x2_(simde_uint16x8x2_t a, simde_uint16x8x2_t b, const char* filename, int line, const char* astr, const char* bstr) { uint16_t a0_[sizeof(a.val[0]) / sizeof(uint16_t)], b0_[sizeof(b.val[0]) / sizeof(uint16_t)]; uint16_t a1_[sizeof(a.val[1]) / sizeof(uint16_t)], b1_[sizeof(b.val[1]) / sizeof(uint16_t)]; simde_vst1q_u16(a0_, a.val[0]); simde_vst1q_u16(b0_, b.val[0]); simde_vst1q_u16(a1_, a.val[1]); simde_vst1q_u16(b1_, b.val[1]); return simde_assert_equal_vu16_(8, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vu16_(8, a1_, b1_, filename, line, astr, bstr); } static simde_uint32x4x2_t simde_test_arm_neon_random_u32x4x2(void) { simde_uint32x4x2_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_u32x4x2(int indent, simde_uint32x4x2_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 252 "../test/arm/neon/test-neon.h" 3 4 stderr # 252 "../test/arm/neon/test-neon.h" ); } uint32_t value0_[sizeof(value) / sizeof(uint32_t) / 2]; uint32_t value1_[sizeof(value) / sizeof(uint32_t) / 2]; simde_vst1q_u32(value0_, value.val[0]); simde_vst1q_u32(value1_, value.val[1]); simde_test_codegen_write_vu32(indent+2, sizeof(value0_) / sizeof(uint32_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vu32(indent+2, sizeof(value1_) / sizeof(uint32_t), value1_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 252 "../test/arm/neon/test-neon.h" 3 4 stderr # 252 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_u32x4x2_(simde_uint32x4x2_t a, simde_uint32x4x2_t b, const char* filename, int line, const char* astr, const char* bstr) { uint32_t a0_[sizeof(a.val[0]) / sizeof(uint32_t)], b0_[sizeof(b.val[0]) / sizeof(uint32_t)]; uint32_t a1_[sizeof(a.val[1]) / sizeof(uint32_t)], b1_[sizeof(b.val[1]) / sizeof(uint32_t)]; simde_vst1q_u32(a0_, a.val[0]); simde_vst1q_u32(b0_, b.val[0]); simde_vst1q_u32(a1_, a.val[1]); simde_vst1q_u32(b1_, b.val[1]); return simde_assert_equal_vu32_(4, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vu32_(4, a1_, b1_, filename, line, astr, bstr); } static simde_uint64x2x2_t simde_test_arm_neon_random_u64x2x2(void) { simde_uint64x2x2_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_u64x2x2(int indent, simde_uint64x2x2_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 253 "../test/arm/neon/test-neon.h" 3 4 stderr # 253 "../test/arm/neon/test-neon.h" ); } uint64_t value0_[sizeof(value) / sizeof(uint64_t) / 2]; uint64_t value1_[sizeof(value) / sizeof(uint64_t) / 2]; simde_vst1q_u64(value0_, value.val[0]); simde_vst1q_u64(value1_, value.val[1]); simde_test_codegen_write_vu64(indent+2, sizeof(value0_) / sizeof(uint64_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vu64(indent+2, sizeof(value1_) / sizeof(uint64_t), value1_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 253 "../test/arm/neon/test-neon.h" 3 4 stderr # 253 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_u64x2x2_(simde_uint64x2x2_t a, simde_uint64x2x2_t b, const char* filename, int line, const char* astr, const char* bstr) { uint64_t a0_[sizeof(a.val[0]) / sizeof(uint64_t)], b0_[sizeof(b.val[0]) / sizeof(uint64_t)]; uint64_t a1_[sizeof(a.val[1]) / sizeof(uint64_t)], b1_[sizeof(b.val[1]) / sizeof(uint64_t)]; simde_vst1q_u64(a0_, a.val[0]); simde_vst1q_u64(b0_, b.val[0]); simde_vst1q_u64(a1_, a.val[1]); simde_vst1q_u64(b1_, b.val[1]); return simde_assert_equal_vu64_(2, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vu64_(2, a1_, b1_, filename, line, astr, bstr); } static simde_float32x4x2_t simde_test_arm_neon_random_f32x4x2(simde_float32_t min, simde_float32_t max) { simde_float32 v0[sizeof(simde_float32x4x2_t) / sizeof(simde_float32_t) / 2]; simde_float32 v1[sizeof(simde_float32x4x2_t) / sizeof(simde_float32_t) / 2]; simde_test_codegen_random_vf32(sizeof(v0) / sizeof(v0[0]), v0, ((simde_float32) (min)), ((simde_float32) (max))); simde_test_codegen_random_vf32(sizeof(v1) / sizeof(v1[0]), v1, ((simde_float32) (min)), ((simde_float32) (max))); simde_float32x4x2_t r; r.val[0] = simde_vld1q_f32(((simde_float32_t*) (v0))); r.val[1] = simde_vld1q_f32(((simde_float32_t*) (v1))); return r; } static void simde_test_arm_neon_write_f32x4x2(int indent, simde_float32x4x2_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 254 "../test/arm/neon/test-neon.h" 3 4 stderr # 254 "../test/arm/neon/test-neon.h" ); } simde_float32_t value0_[sizeof(value) / sizeof(simde_float32_t) / 2]; simde_float32_t value1_[sizeof(value) / sizeof(simde_float32_t) / 2]; simde_vst1q_f32(value0_, value.val[0]); simde_vst1q_f32(value1_, value.val[1]); simde_test_codegen_write_vf32(indent + 2, sizeof(value0_) / sizeof(value0_[0]), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vf32(indent + 2, sizeof(value1_) / sizeof(value1_[0]), value1_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 254 "../test/arm/neon/test-neon.h" 3 4 stderr # 254 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_f32x4x2_(simde_float32x4x2_t a, simde_float32x4x2_t b, simde_float32_t slop, const char* filename, int line, const char* astr, const char* bstr) { simde_float32 a0_[sizeof(a.val[0]) / sizeof(simde_float32_t)], b0_[sizeof(b.val[0]) / sizeof(simde_float32_t)]; simde_float32 a1_[sizeof(a.val[1]) / sizeof(simde_float32_t)], b1_[sizeof(b.val[1]) / sizeof(simde_float32_t)]; simde_vst1q_f32(a0_, a.val[0]); simde_vst1q_f32(b0_, b.val[0]); simde_vst1q_f32(a1_, a.val[1]); simde_vst1q_f32(b1_, b.val[1]); return simde_assert_equal_vf32_(4, ((simde_float32*) (a0_)), ((simde_float32*) (b0_)), slop, filename, line, astr, bstr) && simde_assert_equal_vf32_(4, ((simde_float32*) (a1_)), ((simde_float32*) (b1_)), slop, filename, line, astr, bstr); } static simde_float64x2x2_t simde_test_arm_neon_random_f64x2x2(simde_float64_t min, simde_float64_t max) { simde_float64 v0[sizeof(simde_float64x2x2_t) / sizeof(simde_float64_t) / 2]; simde_float64 v1[sizeof(simde_float64x2x2_t) / sizeof(simde_float64_t) / 2]; simde_test_codegen_random_vf64(sizeof(v0) / sizeof(v0[0]), v0, ((simde_float64) (min)), ((simde_float64) (max))); simde_test_codegen_random_vf64(sizeof(v1) / sizeof(v1[0]), v1, ((simde_float64) (min)), ((simde_float64) (max))); simde_float64x2x2_t r; r.val[0] = simde_vld1q_f64(((simde_float64_t*) (v0))); r.val[1] = simde_vld1q_f64(((simde_float64_t*) (v1))); return r; } static void simde_test_arm_neon_write_f64x2x2(int indent, simde_float64x2x2_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 255 "../test/arm/neon/test-neon.h" 3 4 stderr # 255 "../test/arm/neon/test-neon.h" ); } simde_float64_t value0_[sizeof(value) / sizeof(simde_float64_t) / 2]; simde_float64_t value1_[sizeof(value) / sizeof(simde_float64_t) / 2]; simde_vst1q_f64(value0_, value.val[0]); simde_vst1q_f64(value1_, value.val[1]); simde_test_codegen_write_vf64(indent + 2, sizeof(value0_) / sizeof(value0_[0]), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vf64(indent + 2, sizeof(value1_) / sizeof(value1_[0]), value1_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 255 "../test/arm/neon/test-neon.h" 3 4 stderr # 255 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_f64x2x2_(simde_float64x2x2_t a, simde_float64x2x2_t b, simde_float64_t slop, const char* filename, int line, const char* astr, const char* bstr) { simde_float64 a0_[sizeof(a.val[0]) / sizeof(simde_float64_t)], b0_[sizeof(b.val[0]) / sizeof(simde_float64_t)]; simde_float64 a1_[sizeof(a.val[1]) / sizeof(simde_float64_t)], b1_[sizeof(b.val[1]) / sizeof(simde_float64_t)]; simde_vst1q_f64(a0_, a.val[0]); simde_vst1q_f64(b0_, b.val[0]); simde_vst1q_f64(a1_, a.val[1]); simde_vst1q_f64(b1_, b.val[1]); return simde_assert_equal_vf64_(2, ((simde_float64*) (a0_)), ((simde_float64*) (b0_)), slop, filename, line, astr, bstr) && simde_assert_equal_vf64_(2, ((simde_float64*) (a1_)), ((simde_float64*) (b1_)), slop, filename, line, astr, bstr); } static simde_poly8x16x2_t simde_test_arm_neon_random_p8x16x2(void) { simde_poly8x16x2_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_p8x16x2(int indent, simde_poly8x16x2_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 256 "../test/arm/neon/test-neon.h" 3 4 stderr # 256 "../test/arm/neon/test-neon.h" ); } simde_poly8_t value0_[sizeof(value) / sizeof(simde_poly8_t) / 2]; simde_poly8_t value1_[sizeof(value) / sizeof(simde_poly8_t) / 2]; simde_vst1q_p8(value0_, value.val[0]); simde_vst1q_p8(value1_, value.val[1]); simde_test_codegen_write_vp8(indent+2, sizeof(value0_) / sizeof(simde_poly8_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vp8(indent+2, sizeof(value1_) / sizeof(simde_poly8_t), value1_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 256 "../test/arm/neon/test-neon.h" 3 4 stderr # 256 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_p8x16x2_(simde_poly8x16x2_t a, simde_poly8x16x2_t b, const char* filename, int line, const char* astr, const char* bstr) { simde_poly8_t a0_[sizeof(a.val[0]) / sizeof(simde_poly8_t)], b0_[sizeof(b.val[0]) / sizeof(simde_poly8_t)]; simde_poly8_t a1_[sizeof(a.val[1]) / sizeof(simde_poly8_t)], b1_[sizeof(b.val[1]) / sizeof(simde_poly8_t)]; simde_vst1q_p8(a0_, a.val[0]); simde_vst1q_p8(b0_, b.val[0]); simde_vst1q_p8(a1_, a.val[1]); simde_vst1q_p8(b1_, b.val[1]); return simde_assert_equal_vp8_(16, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vp8_(16, a1_, b1_, filename, line, astr, bstr); } static simde_poly16x8x2_t simde_test_arm_neon_random_p16x8x2(void) { simde_poly16x8x2_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_p16x8x2(int indent, simde_poly16x8x2_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 257 "../test/arm/neon/test-neon.h" 3 4 stderr # 257 "../test/arm/neon/test-neon.h" ); } simde_poly16_t value0_[sizeof(value) / sizeof(simde_poly16_t) / 2]; simde_poly16_t value1_[sizeof(value) / sizeof(simde_poly16_t) / 2]; simde_vst1q_p16(value0_, value.val[0]); simde_vst1q_p16(value1_, value.val[1]); simde_test_codegen_write_vp16(indent+2, sizeof(value0_) / sizeof(simde_poly16_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vp16(indent+2, sizeof(value1_) / sizeof(simde_poly16_t), value1_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 257 "../test/arm/neon/test-neon.h" 3 4 stderr # 257 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_p16x8x2_(simde_poly16x8x2_t a, simde_poly16x8x2_t b, const char* filename, int line, const char* astr, const char* bstr) { simde_poly16_t a0_[sizeof(a.val[0]) / sizeof(simde_poly16_t)], b0_[sizeof(b.val[0]) / sizeof(simde_poly16_t)]; simde_poly16_t a1_[sizeof(a.val[1]) / sizeof(simde_poly16_t)], b1_[sizeof(b.val[1]) / sizeof(simde_poly16_t)]; simde_vst1q_p16(a0_, a.val[0]); simde_vst1q_p16(b0_, b.val[0]); simde_vst1q_p16(a1_, a.val[1]); simde_vst1q_p16(b1_, b.val[1]); return simde_assert_equal_vp16_(8, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vp16_(8, a1_, b1_, filename, line, astr, bstr); } static simde_poly64x2x2_t simde_test_arm_neon_random_p64x2x2(void) { simde_poly64x2x2_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_p64x2x2(int indent, simde_poly64x2x2_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 258 "../test/arm/neon/test-neon.h" 3 4 stderr # 258 "../test/arm/neon/test-neon.h" ); } simde_poly64_t value0_[sizeof(value) / sizeof(simde_poly64_t) / 2]; simde_poly64_t value1_[sizeof(value) / sizeof(simde_poly64_t) / 2]; simde_vst1q_p64(value0_, value.val[0]); simde_vst1q_p64(value1_, value.val[1]); simde_test_codegen_write_vp64(indent+2, sizeof(value0_) / sizeof(simde_poly64_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vp64(indent+2, sizeof(value1_) / sizeof(simde_poly64_t), value1_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 258 "../test/arm/neon/test-neon.h" 3 4 stderr # 258 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_p64x2x2_(simde_poly64x2x2_t a, simde_poly64x2x2_t b, const char* filename, int line, const char* astr, const char* bstr) { simde_poly64_t a0_[sizeof(a.val[0]) / sizeof(simde_poly64_t)], b0_[sizeof(b.val[0]) / sizeof(simde_poly64_t)]; simde_poly64_t a1_[sizeof(a.val[1]) / sizeof(simde_poly64_t)], b1_[sizeof(b.val[1]) / sizeof(simde_poly64_t)]; simde_vst1q_p64(a0_, a.val[0]); simde_vst1q_p64(b0_, b.val[0]); simde_vst1q_p64(a1_, a.val[1]); simde_vst1q_p64(b1_, b.val[1]); return simde_assert_equal_vp64_(2, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vp64_(2, a1_, b1_, filename, line, astr, bstr); } static int simde_test_arm_neon_assert_equal_f16x4x2_(simde_float16x4x2_t a, simde_float16x4x2_t b, simde_float16_t slop, const char* filename, int line, const char* astr, const char* bstr) { simde_float16 a0_[sizeof(a.val[0]) / sizeof(simde_float16_t)], b0_[sizeof(b.val[0]) / sizeof(simde_float16_t)]; simde_float16 a1_[sizeof(a.val[1]) / sizeof(simde_float16_t)], b1_[sizeof(b.val[1]) / sizeof(simde_float16_t)]; simde_vst1_f16(a0_, a.val[0]); simde_vst1_f16(b0_, b.val[0]); simde_vst1_f16(a1_, a.val[1]); simde_vst1_f16(b1_, b.val[1]); return simde_assert_equal_vf16_(4, ((simde_float16*) (a0_)), ((simde_float16*) (b0_)), slop, filename, line, astr, bstr) && simde_assert_equal_vf16_(4, ((simde_float16*) (a1_)), ((simde_float16*) (b1_)), slop, filename, line, astr, bstr); } static int simde_test_arm_neon_assert_equal_f16x8x2_(simde_float16x8x2_t a, simde_float16x8x2_t b, simde_float16_t slop, const char* filename, int line, const char* astr, const char* bstr) { simde_float16 a0_[sizeof(a.val[0]) / sizeof(simde_float16_t)], b0_[sizeof(b.val[0]) / sizeof(simde_float16_t)]; simde_float16 a1_[sizeof(a.val[1]) / sizeof(simde_float16_t)], b1_[sizeof(b.val[1]) / sizeof(simde_float16_t)]; simde_vst1q_f16(a0_, a.val[0]); simde_vst1q_f16(b0_, b.val[0]); simde_vst1q_f16(a1_, a.val[1]); simde_vst1q_f16(b1_, b.val[1]); return simde_assert_equal_vf16_(8, ((simde_float16*) (a0_)), ((simde_float16*) (b0_)), slop, filename, line, astr, bstr) && simde_assert_equal_vf16_(8, ((simde_float16*) (a1_)), ((simde_float16*) (b1_)), slop, filename, line, astr, bstr); } static int simde_test_arm_neon_assert_equal_bf16x4x2_(simde_bfloat16x4x2_t a, simde_bfloat16x4x2_t b, simde_bfloat16_t slop, const char* filename, int line, const char* astr, const char* bstr) { simde_bfloat16 a0_[sizeof(a.val[0]) / sizeof(simde_bfloat16_t)], b0_[sizeof(b.val[0]) / sizeof(simde_bfloat16_t)]; simde_bfloat16 a1_[sizeof(a.val[1]) / sizeof(simde_bfloat16_t)], b1_[sizeof(b.val[1]) / sizeof(simde_bfloat16_t)]; simde_vst1_bf16(a0_, a.val[0]); simde_vst1_bf16(b0_, b.val[0]); simde_vst1_bf16(a1_, a.val[1]); simde_vst1_bf16(b1_, b.val[1]); return simde_assert_equal_vbf16_(4, ((simde_bfloat16*) (a0_)), ((simde_bfloat16*) (b0_)), slop, filename, line, astr, bstr) && simde_assert_equal_vbf16_(4, ((simde_bfloat16*) (a1_)), ((simde_bfloat16*) (b1_)), slop, filename, line, astr, bstr); } static int simde_test_arm_neon_assert_equal_bf16x8x2_(simde_bfloat16x8x2_t a, simde_bfloat16x8x2_t b, simde_bfloat16_t slop, const char* filename, int line, const char* astr, const char* bstr) { simde_bfloat16 a0_[sizeof(a.val[0]) / sizeof(simde_bfloat16_t)], b0_[sizeof(b.val[0]) / sizeof(simde_bfloat16_t)]; simde_bfloat16 a1_[sizeof(a.val[1]) / sizeof(simde_bfloat16_t)], b1_[sizeof(b.val[1]) / sizeof(simde_bfloat16_t)]; simde_vst1q_bf16(a0_, a.val[0]); simde_vst1q_bf16(b0_, b.val[0]); simde_vst1q_bf16(a1_, a.val[1]); simde_vst1q_bf16(b1_, b.val[1]); return simde_assert_equal_vbf16_(8, ((simde_bfloat16*) (a0_)), ((simde_bfloat16*) (b0_)), slop, filename, line, astr, bstr) && simde_assert_equal_vbf16_(8, ((simde_bfloat16*) (a1_)), ((simde_bfloat16*) (b1_)), slop, filename, line, astr, bstr); } # 276 "../test/arm/neon/test-neon.h" #pragma GCC diagnostic pop # 391 "../test/arm/neon/test-neon.h" # 391 "../test/arm/neon/test-neon.h" #pragma GCC diagnostic push static simde_int8x8x3_t simde_test_arm_neon_random_i8x8x3(void) { simde_int8x8x3_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_i8x8x3(int indent, simde_int8x8x3_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 394 "../test/arm/neon/test-neon.h" 3 4 stderr # 394 "../test/arm/neon/test-neon.h" ); } int8_t value0_[sizeof(value) / sizeof(int8_t) / 3]; int8_t value1_[sizeof(value) / sizeof(int8_t) / 3]; int8_t value2_[sizeof(value) / sizeof(int8_t) / 3]; simde_vst1_s8(value0_, value.val[0]); simde_vst1_s8(value1_, value.val[1]); simde_vst1_s8(value2_, value.val[2]); simde_test_codegen_write_vi8(indent+2, sizeof(value0_) / sizeof(int8_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vi8(indent+2, sizeof(value1_) / sizeof(int8_t), value1_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vi8(indent+2, sizeof(value2_) / sizeof(int8_t), value2_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 394 "../test/arm/neon/test-neon.h" 3 4 stderr # 394 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_i8x8x3_(simde_int8x8x3_t a, simde_int8x8x3_t b, const char* filename, int line, const char* astr, const char* bstr) { int8_t a0_[sizeof(a.val[0]) / sizeof(int8_t)], b0_[sizeof(b.val[0]) / sizeof(int8_t)]; int8_t a1_[sizeof(a.val[1]) / sizeof(int8_t)], b1_[sizeof(b.val[1]) / sizeof(int8_t)]; int8_t a2_[sizeof(a.val[2]) / sizeof(int8_t)], b2_[sizeof(b.val[2]) / sizeof(int8_t)]; simde_vst1_s8(a0_, a.val[0]); simde_vst1_s8(b0_, b.val[0]); simde_vst1_s8(a1_, a.val[1]); simde_vst1_s8(b1_, b.val[1]); simde_vst1_s8(a2_, a.val[2]); simde_vst1_s8(b2_, b.val[2]); return simde_assert_equal_vi8_(8, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vi8_(8, a1_, b1_, filename, line, astr, bstr) && simde_assert_equal_vi8_(8, a2_, b2_, filename, line, astr, bstr); } static simde_int16x4x3_t simde_test_arm_neon_random_i16x4x3(void) { simde_int16x4x3_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_i16x4x3(int indent, simde_int16x4x3_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 395 "../test/arm/neon/test-neon.h" 3 4 stderr # 395 "../test/arm/neon/test-neon.h" ); } int16_t value0_[sizeof(value) / sizeof(int16_t) / 3]; int16_t value1_[sizeof(value) / sizeof(int16_t) / 3]; int16_t value2_[sizeof(value) / sizeof(int16_t) / 3]; simde_vst1_s16(value0_, value.val[0]); simde_vst1_s16(value1_, value.val[1]); simde_vst1_s16(value2_, value.val[2]); simde_test_codegen_write_vi16(indent+2, sizeof(value0_) / sizeof(int16_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vi16(indent+2, sizeof(value1_) / sizeof(int16_t), value1_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vi16(indent+2, sizeof(value2_) / sizeof(int16_t), value2_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 395 "../test/arm/neon/test-neon.h" 3 4 stderr # 395 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_i16x4x3_(simde_int16x4x3_t a, simde_int16x4x3_t b, const char* filename, int line, const char* astr, const char* bstr) { int16_t a0_[sizeof(a.val[0]) / sizeof(int16_t)], b0_[sizeof(b.val[0]) / sizeof(int16_t)]; int16_t a1_[sizeof(a.val[1]) / sizeof(int16_t)], b1_[sizeof(b.val[1]) / sizeof(int16_t)]; int16_t a2_[sizeof(a.val[2]) / sizeof(int16_t)], b2_[sizeof(b.val[2]) / sizeof(int16_t)]; simde_vst1_s16(a0_, a.val[0]); simde_vst1_s16(b0_, b.val[0]); simde_vst1_s16(a1_, a.val[1]); simde_vst1_s16(b1_, b.val[1]); simde_vst1_s16(a2_, a.val[2]); simde_vst1_s16(b2_, b.val[2]); return simde_assert_equal_vi16_(4, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vi16_(4, a1_, b1_, filename, line, astr, bstr) && simde_assert_equal_vi16_(4, a2_, b2_, filename, line, astr, bstr); } static simde_int32x2x3_t simde_test_arm_neon_random_i32x2x3(void) { simde_int32x2x3_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_i32x2x3(int indent, simde_int32x2x3_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 396 "../test/arm/neon/test-neon.h" 3 4 stderr # 396 "../test/arm/neon/test-neon.h" ); } int32_t value0_[sizeof(value) / sizeof(int32_t) / 3]; int32_t value1_[sizeof(value) / sizeof(int32_t) / 3]; int32_t value2_[sizeof(value) / sizeof(int32_t) / 3]; simde_vst1_s32(value0_, value.val[0]); simde_vst1_s32(value1_, value.val[1]); simde_vst1_s32(value2_, value.val[2]); simde_test_codegen_write_vi32(indent+2, sizeof(value0_) / sizeof(int32_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vi32(indent+2, sizeof(value1_) / sizeof(int32_t), value1_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vi32(indent+2, sizeof(value2_) / sizeof(int32_t), value2_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 396 "../test/arm/neon/test-neon.h" 3 4 stderr # 396 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_i32x2x3_(simde_int32x2x3_t a, simde_int32x2x3_t b, const char* filename, int line, const char* astr, const char* bstr) { int32_t a0_[sizeof(a.val[0]) / sizeof(int32_t)], b0_[sizeof(b.val[0]) / sizeof(int32_t)]; int32_t a1_[sizeof(a.val[1]) / sizeof(int32_t)], b1_[sizeof(b.val[1]) / sizeof(int32_t)]; int32_t a2_[sizeof(a.val[2]) / sizeof(int32_t)], b2_[sizeof(b.val[2]) / sizeof(int32_t)]; simde_vst1_s32(a0_, a.val[0]); simde_vst1_s32(b0_, b.val[0]); simde_vst1_s32(a1_, a.val[1]); simde_vst1_s32(b1_, b.val[1]); simde_vst1_s32(a2_, a.val[2]); simde_vst1_s32(b2_, b.val[2]); return simde_assert_equal_vi32_(2, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vi32_(2, a1_, b1_, filename, line, astr, bstr) && simde_assert_equal_vi32_(2, a2_, b2_, filename, line, astr, bstr); } static simde_int64x1x3_t simde_test_arm_neon_random_i64x1x3(void) { simde_int64x1x3_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_i64x1x3(int indent, simde_int64x1x3_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 397 "../test/arm/neon/test-neon.h" 3 4 stderr # 397 "../test/arm/neon/test-neon.h" ); } int64_t value0_[sizeof(value) / sizeof(int64_t) / 3]; int64_t value1_[sizeof(value) / sizeof(int64_t) / 3]; int64_t value2_[sizeof(value) / sizeof(int64_t) / 3]; simde_vst1_s64(value0_, value.val[0]); simde_vst1_s64(value1_, value.val[1]); simde_vst1_s64(value2_, value.val[2]); simde_test_codegen_write_vi64(indent+2, sizeof(value0_) / sizeof(int64_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vi64(indent+2, sizeof(value1_) / sizeof(int64_t), value1_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vi64(indent+2, sizeof(value2_) / sizeof(int64_t), value2_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 397 "../test/arm/neon/test-neon.h" 3 4 stderr # 397 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_i64x1x3_(simde_int64x1x3_t a, simde_int64x1x3_t b, const char* filename, int line, const char* astr, const char* bstr) { int64_t a0_[sizeof(a.val[0]) / sizeof(int64_t)], b0_[sizeof(b.val[0]) / sizeof(int64_t)]; int64_t a1_[sizeof(a.val[1]) / sizeof(int64_t)], b1_[sizeof(b.val[1]) / sizeof(int64_t)]; int64_t a2_[sizeof(a.val[2]) / sizeof(int64_t)], b2_[sizeof(b.val[2]) / sizeof(int64_t)]; simde_vst1_s64(a0_, a.val[0]); simde_vst1_s64(b0_, b.val[0]); simde_vst1_s64(a1_, a.val[1]); simde_vst1_s64(b1_, b.val[1]); simde_vst1_s64(a2_, a.val[2]); simde_vst1_s64(b2_, b.val[2]); return simde_assert_equal_vi64_(1, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vi64_(1, a1_, b1_, filename, line, astr, bstr) && simde_assert_equal_vi64_(1, a2_, b2_, filename, line, astr, bstr); } static simde_uint8x8x3_t simde_test_arm_neon_random_u8x8x3(void) { simde_uint8x8x3_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_u8x8x3(int indent, simde_uint8x8x3_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 398 "../test/arm/neon/test-neon.h" 3 4 stderr # 398 "../test/arm/neon/test-neon.h" ); } uint8_t value0_[sizeof(value) / sizeof(uint8_t) / 3]; uint8_t value1_[sizeof(value) / sizeof(uint8_t) / 3]; uint8_t value2_[sizeof(value) / sizeof(uint8_t) / 3]; simde_vst1_u8(value0_, value.val[0]); simde_vst1_u8(value1_, value.val[1]); simde_vst1_u8(value2_, value.val[2]); simde_test_codegen_write_vu8(indent+2, sizeof(value0_) / sizeof(uint8_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vu8(indent+2, sizeof(value1_) / sizeof(uint8_t), value1_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vu8(indent+2, sizeof(value2_) / sizeof(uint8_t), value2_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 398 "../test/arm/neon/test-neon.h" 3 4 stderr # 398 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_u8x8x3_(simde_uint8x8x3_t a, simde_uint8x8x3_t b, const char* filename, int line, const char* astr, const char* bstr) { uint8_t a0_[sizeof(a.val[0]) / sizeof(uint8_t)], b0_[sizeof(b.val[0]) / sizeof(uint8_t)]; uint8_t a1_[sizeof(a.val[1]) / sizeof(uint8_t)], b1_[sizeof(b.val[1]) / sizeof(uint8_t)]; uint8_t a2_[sizeof(a.val[2]) / sizeof(uint8_t)], b2_[sizeof(b.val[2]) / sizeof(uint8_t)]; simde_vst1_u8(a0_, a.val[0]); simde_vst1_u8(b0_, b.val[0]); simde_vst1_u8(a1_, a.val[1]); simde_vst1_u8(b1_, b.val[1]); simde_vst1_u8(a2_, a.val[2]); simde_vst1_u8(b2_, b.val[2]); return simde_assert_equal_vu8_(8, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vu8_(8, a1_, b1_, filename, line, astr, bstr) && simde_assert_equal_vu8_(8, a2_, b2_, filename, line, astr, bstr); } static simde_uint16x4x3_t simde_test_arm_neon_random_u16x4x3(void) { simde_uint16x4x3_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_u16x4x3(int indent, simde_uint16x4x3_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 399 "../test/arm/neon/test-neon.h" 3 4 stderr # 399 "../test/arm/neon/test-neon.h" ); } uint16_t value0_[sizeof(value) / sizeof(uint16_t) / 3]; uint16_t value1_[sizeof(value) / sizeof(uint16_t) / 3]; uint16_t value2_[sizeof(value) / sizeof(uint16_t) / 3]; simde_vst1_u16(value0_, value.val[0]); simde_vst1_u16(value1_, value.val[1]); simde_vst1_u16(value2_, value.val[2]); simde_test_codegen_write_vu16(indent+2, sizeof(value0_) / sizeof(uint16_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vu16(indent+2, sizeof(value1_) / sizeof(uint16_t), value1_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vu16(indent+2, sizeof(value2_) / sizeof(uint16_t), value2_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 399 "../test/arm/neon/test-neon.h" 3 4 stderr # 399 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_u16x4x3_(simde_uint16x4x3_t a, simde_uint16x4x3_t b, const char* filename, int line, const char* astr, const char* bstr) { uint16_t a0_[sizeof(a.val[0]) / sizeof(uint16_t)], b0_[sizeof(b.val[0]) / sizeof(uint16_t)]; uint16_t a1_[sizeof(a.val[1]) / sizeof(uint16_t)], b1_[sizeof(b.val[1]) / sizeof(uint16_t)]; uint16_t a2_[sizeof(a.val[2]) / sizeof(uint16_t)], b2_[sizeof(b.val[2]) / sizeof(uint16_t)]; simde_vst1_u16(a0_, a.val[0]); simde_vst1_u16(b0_, b.val[0]); simde_vst1_u16(a1_, a.val[1]); simde_vst1_u16(b1_, b.val[1]); simde_vst1_u16(a2_, a.val[2]); simde_vst1_u16(b2_, b.val[2]); return simde_assert_equal_vu16_(4, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vu16_(4, a1_, b1_, filename, line, astr, bstr) && simde_assert_equal_vu16_(4, a2_, b2_, filename, line, astr, bstr); } static simde_uint32x2x3_t simde_test_arm_neon_random_u32x2x3(void) { simde_uint32x2x3_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_u32x2x3(int indent, simde_uint32x2x3_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 400 "../test/arm/neon/test-neon.h" 3 4 stderr # 400 "../test/arm/neon/test-neon.h" ); } uint32_t value0_[sizeof(value) / sizeof(uint32_t) / 3]; uint32_t value1_[sizeof(value) / sizeof(uint32_t) / 3]; uint32_t value2_[sizeof(value) / sizeof(uint32_t) / 3]; simde_vst1_u32(value0_, value.val[0]); simde_vst1_u32(value1_, value.val[1]); simde_vst1_u32(value2_, value.val[2]); simde_test_codegen_write_vu32(indent+2, sizeof(value0_) / sizeof(uint32_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vu32(indent+2, sizeof(value1_) / sizeof(uint32_t), value1_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vu32(indent+2, sizeof(value2_) / sizeof(uint32_t), value2_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 400 "../test/arm/neon/test-neon.h" 3 4 stderr # 400 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_u32x2x3_(simde_uint32x2x3_t a, simde_uint32x2x3_t b, const char* filename, int line, const char* astr, const char* bstr) { uint32_t a0_[sizeof(a.val[0]) / sizeof(uint32_t)], b0_[sizeof(b.val[0]) / sizeof(uint32_t)]; uint32_t a1_[sizeof(a.val[1]) / sizeof(uint32_t)], b1_[sizeof(b.val[1]) / sizeof(uint32_t)]; uint32_t a2_[sizeof(a.val[2]) / sizeof(uint32_t)], b2_[sizeof(b.val[2]) / sizeof(uint32_t)]; simde_vst1_u32(a0_, a.val[0]); simde_vst1_u32(b0_, b.val[0]); simde_vst1_u32(a1_, a.val[1]); simde_vst1_u32(b1_, b.val[1]); simde_vst1_u32(a2_, a.val[2]); simde_vst1_u32(b2_, b.val[2]); return simde_assert_equal_vu32_(2, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vu32_(2, a1_, b1_, filename, line, astr, bstr) && simde_assert_equal_vu32_(2, a2_, b2_, filename, line, astr, bstr); } static simde_uint64x1x3_t simde_test_arm_neon_random_u64x1x3(void) { simde_uint64x1x3_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_u64x1x3(int indent, simde_uint64x1x3_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 401 "../test/arm/neon/test-neon.h" 3 4 stderr # 401 "../test/arm/neon/test-neon.h" ); } uint64_t value0_[sizeof(value) / sizeof(uint64_t) / 3]; uint64_t value1_[sizeof(value) / sizeof(uint64_t) / 3]; uint64_t value2_[sizeof(value) / sizeof(uint64_t) / 3]; simde_vst1_u64(value0_, value.val[0]); simde_vst1_u64(value1_, value.val[1]); simde_vst1_u64(value2_, value.val[2]); simde_test_codegen_write_vu64(indent+2, sizeof(value0_) / sizeof(uint64_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vu64(indent+2, sizeof(value1_) / sizeof(uint64_t), value1_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vu64(indent+2, sizeof(value2_) / sizeof(uint64_t), value2_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 401 "../test/arm/neon/test-neon.h" 3 4 stderr # 401 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_u64x1x3_(simde_uint64x1x3_t a, simde_uint64x1x3_t b, const char* filename, int line, const char* astr, const char* bstr) { uint64_t a0_[sizeof(a.val[0]) / sizeof(uint64_t)], b0_[sizeof(b.val[0]) / sizeof(uint64_t)]; uint64_t a1_[sizeof(a.val[1]) / sizeof(uint64_t)], b1_[sizeof(b.val[1]) / sizeof(uint64_t)]; uint64_t a2_[sizeof(a.val[2]) / sizeof(uint64_t)], b2_[sizeof(b.val[2]) / sizeof(uint64_t)]; simde_vst1_u64(a0_, a.val[0]); simde_vst1_u64(b0_, b.val[0]); simde_vst1_u64(a1_, a.val[1]); simde_vst1_u64(b1_, b.val[1]); simde_vst1_u64(a2_, a.val[2]); simde_vst1_u64(b2_, b.val[2]); return simde_assert_equal_vu64_(1, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vu64_(1, a1_, b1_, filename, line, astr, bstr) && simde_assert_equal_vu64_(1, a2_, b2_, filename, line, astr, bstr); } static simde_float32x2x3_t simde_test_arm_neon_random_f32x2x3(simde_float32_t min, simde_float32_t max) { simde_float32 v0[sizeof(simde_float32x2x3_t) / sizeof(simde_float32_t) / 3]; simde_float32 v1[sizeof(simde_float32x2x3_t) / sizeof(simde_float32_t) / 3]; simde_float32 v2[sizeof(simde_float32x2x3_t) / sizeof(simde_float32_t) / 3]; simde_test_codegen_random_vf32(sizeof(v0) / sizeof(v0[0]), v0, ((simde_float32) (min)), ((simde_float32) (max))); simde_test_codegen_random_vf32(sizeof(v1) / sizeof(v1[0]), v1, ((simde_float32) (min)), ((simde_float32) (max))); simde_test_codegen_random_vf32(sizeof(v2) / sizeof(v2[0]), v2, ((simde_float32) (min)), ((simde_float32) (max))); simde_float32x2x3_t r; r.val[0] = simde_vld1_f32(((simde_float32_t*) (v0))); r.val[1] = simde_vld1_f32(((simde_float32_t*) (v1))); r.val[2] = simde_vld1_f32(((simde_float32_t*) (v2))); return r; } static void simde_test_arm_neon_write_f32x2x3(int indent, simde_float32x2x3_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 402 "../test/arm/neon/test-neon.h" 3 4 stderr # 402 "../test/arm/neon/test-neon.h" ); } simde_float32_t value0_[sizeof(value) / sizeof(simde_float32_t) / 3]; simde_float32_t value1_[sizeof(value) / sizeof(simde_float32_t) / 3]; simde_float32_t value2_[sizeof(value) / sizeof(simde_float32_t) / 3]; simde_vst1_f32(value0_, value.val[0]); simde_vst1_f32(value1_, value.val[1]); simde_vst1_f32(value2_, value.val[2]); simde_test_codegen_write_vf32(indent + 2, sizeof(value0_) / sizeof(value0_[0]), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vf32(indent + 2, sizeof(value1_) / sizeof(value1_[0]), value1_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vf32(indent + 2, sizeof(value2_) / sizeof(value2_[0]), value2_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 402 "../test/arm/neon/test-neon.h" 3 4 stderr # 402 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_f32x2x3_(simde_float32x2x3_t a, simde_float32x2x3_t b, simde_float32_t slop, const char* filename, int line, const char* astr, const char* bstr) { simde_float32 a0_[sizeof(a.val[0]) / sizeof(simde_float32_t)], b0_[sizeof(b.val[0]) / sizeof(simde_float32_t)]; simde_float32 a1_[sizeof(a.val[1]) / sizeof(simde_float32_t)], b1_[sizeof(b.val[1]) / sizeof(simde_float32_t)]; simde_float32 a2_[sizeof(a.val[2]) / sizeof(simde_float32_t)], b2_[sizeof(b.val[2]) / sizeof(simde_float32_t)]; simde_vst1_f32(a0_, a.val[0]); simde_vst1_f32(b0_, b.val[0]); simde_vst1_f32(a1_, a.val[1]); simde_vst1_f32(b1_, b.val[1]); simde_vst1_f32(a2_, a.val[2]); simde_vst1_f32(b2_, b.val[2]); return simde_assert_equal_vf32_(2, ((simde_float32*) (a0_)), ((simde_float32*) (b0_)), slop, filename, line, astr, bstr) && simde_assert_equal_vf32_(2, ((simde_float32*) (a1_)), ((simde_float32*) (b1_)), slop, filename, line, astr, bstr) && simde_assert_equal_vf32_(2, ((simde_float32*) (a2_)), ((simde_float32*) (b2_)), slop, filename, line, astr, bstr); } static simde_float64x1x3_t simde_test_arm_neon_random_f64x1x3(simde_float64_t min, simde_float64_t max) { simde_float64 v0[sizeof(simde_float64x1x3_t) / sizeof(simde_float64_t) / 3]; simde_float64 v1[sizeof(simde_float64x1x3_t) / sizeof(simde_float64_t) / 3]; simde_float64 v2[sizeof(simde_float64x1x3_t) / sizeof(simde_float64_t) / 3]; simde_test_codegen_random_vf64(sizeof(v0) / sizeof(v0[0]), v0, ((simde_float64) (min)), ((simde_float64) (max))); simde_test_codegen_random_vf64(sizeof(v1) / sizeof(v1[0]), v1, ((simde_float64) (min)), ((simde_float64) (max))); simde_test_codegen_random_vf64(sizeof(v2) / sizeof(v2[0]), v2, ((simde_float64) (min)), ((simde_float64) (max))); simde_float64x1x3_t r; r.val[0] = simde_vld1_f64(((simde_float64_t*) (v0))); r.val[1] = simde_vld1_f64(((simde_float64_t*) (v1))); r.val[2] = simde_vld1_f64(((simde_float64_t*) (v2))); return r; } static void simde_test_arm_neon_write_f64x1x3(int indent, simde_float64x1x3_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 403 "../test/arm/neon/test-neon.h" 3 4 stderr # 403 "../test/arm/neon/test-neon.h" ); } simde_float64_t value0_[sizeof(value) / sizeof(simde_float64_t) / 3]; simde_float64_t value1_[sizeof(value) / sizeof(simde_float64_t) / 3]; simde_float64_t value2_[sizeof(value) / sizeof(simde_float64_t) / 3]; simde_vst1_f64(value0_, value.val[0]); simde_vst1_f64(value1_, value.val[1]); simde_vst1_f64(value2_, value.val[2]); simde_test_codegen_write_vf64(indent + 2, sizeof(value0_) / sizeof(value0_[0]), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vf64(indent + 2, sizeof(value1_) / sizeof(value1_[0]), value1_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vf64(indent + 2, sizeof(value2_) / sizeof(value2_[0]), value2_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 403 "../test/arm/neon/test-neon.h" 3 4 stderr # 403 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_f64x1x3_(simde_float64x1x3_t a, simde_float64x1x3_t b, simde_float64_t slop, const char* filename, int line, const char* astr, const char* bstr) { simde_float64 a0_[sizeof(a.val[0]) / sizeof(simde_float64_t)], b0_[sizeof(b.val[0]) / sizeof(simde_float64_t)]; simde_float64 a1_[sizeof(a.val[1]) / sizeof(simde_float64_t)], b1_[sizeof(b.val[1]) / sizeof(simde_float64_t)]; simde_float64 a2_[sizeof(a.val[2]) / sizeof(simde_float64_t)], b2_[sizeof(b.val[2]) / sizeof(simde_float64_t)]; simde_vst1_f64(a0_, a.val[0]); simde_vst1_f64(b0_, b.val[0]); simde_vst1_f64(a1_, a.val[1]); simde_vst1_f64(b1_, b.val[1]); simde_vst1_f64(a2_, a.val[2]); simde_vst1_f64(b2_, b.val[2]); return simde_assert_equal_vf64_(1, ((simde_float64*) (a0_)), ((simde_float64*) (b0_)), slop, filename, line, astr, bstr) && simde_assert_equal_vf64_(1, ((simde_float64*) (a1_)), ((simde_float64*) (b1_)), slop, filename, line, astr, bstr) && simde_assert_equal_vf64_(1, ((simde_float64*) (a2_)), ((simde_float64*) (b2_)), slop, filename, line, astr, bstr); } static simde_poly8x8x3_t simde_test_arm_neon_random_p8x8x3(void) { simde_poly8x8x3_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_p8x8x3(int indent, simde_poly8x8x3_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 404 "../test/arm/neon/test-neon.h" 3 4 stderr # 404 "../test/arm/neon/test-neon.h" ); } simde_poly8_t value0_[sizeof(value) / sizeof(simde_poly8_t) / 3]; simde_poly8_t value1_[sizeof(value) / sizeof(simde_poly8_t) / 3]; simde_poly8_t value2_[sizeof(value) / sizeof(simde_poly8_t) / 3]; simde_vst1_p8(value0_, value.val[0]); simde_vst1_p8(value1_, value.val[1]); simde_vst1_p8(value2_, value.val[2]); simde_test_codegen_write_vp8(indent+2, sizeof(value0_) / sizeof(simde_poly8_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vp8(indent+2, sizeof(value1_) / sizeof(simde_poly8_t), value1_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vp8(indent+2, sizeof(value2_) / sizeof(simde_poly8_t), value2_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 404 "../test/arm/neon/test-neon.h" 3 4 stderr # 404 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_p8x8x3_(simde_poly8x8x3_t a, simde_poly8x8x3_t b, const char* filename, int line, const char* astr, const char* bstr) { simde_poly8_t a0_[sizeof(a.val[0]) / sizeof(simde_poly8_t)], b0_[sizeof(b.val[0]) / sizeof(simde_poly8_t)]; simde_poly8_t a1_[sizeof(a.val[1]) / sizeof(simde_poly8_t)], b1_[sizeof(b.val[1]) / sizeof(simde_poly8_t)]; simde_poly8_t a2_[sizeof(a.val[2]) / sizeof(simde_poly8_t)], b2_[sizeof(b.val[2]) / sizeof(simde_poly8_t)]; simde_vst1_p8(a0_, a.val[0]); simde_vst1_p8(b0_, b.val[0]); simde_vst1_p8(a1_, a.val[1]); simde_vst1_p8(b1_, b.val[1]); simde_vst1_p8(a2_, a.val[2]); simde_vst1_p8(b2_, b.val[2]); return simde_assert_equal_vp8_(8, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vp8_(8, a1_, b1_, filename, line, astr, bstr) && simde_assert_equal_vp8_(8, a2_, b2_, filename, line, astr, bstr); } static simde_poly16x4x3_t simde_test_arm_neon_random_p16x4x3(void) { simde_poly16x4x3_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_p16x4x3(int indent, simde_poly16x4x3_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 405 "../test/arm/neon/test-neon.h" 3 4 stderr # 405 "../test/arm/neon/test-neon.h" ); } simde_poly16_t value0_[sizeof(value) / sizeof(simde_poly16_t) / 3]; simde_poly16_t value1_[sizeof(value) / sizeof(simde_poly16_t) / 3]; simde_poly16_t value2_[sizeof(value) / sizeof(simde_poly16_t) / 3]; simde_vst1_p16(value0_, value.val[0]); simde_vst1_p16(value1_, value.val[1]); simde_vst1_p16(value2_, value.val[2]); simde_test_codegen_write_vp16(indent+2, sizeof(value0_) / sizeof(simde_poly16_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vp16(indent+2, sizeof(value1_) / sizeof(simde_poly16_t), value1_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vp16(indent+2, sizeof(value2_) / sizeof(simde_poly16_t), value2_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 405 "../test/arm/neon/test-neon.h" 3 4 stderr # 405 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_p16x4x3_(simde_poly16x4x3_t a, simde_poly16x4x3_t b, const char* filename, int line, const char* astr, const char* bstr) { simde_poly16_t a0_[sizeof(a.val[0]) / sizeof(simde_poly16_t)], b0_[sizeof(b.val[0]) / sizeof(simde_poly16_t)]; simde_poly16_t a1_[sizeof(a.val[1]) / sizeof(simde_poly16_t)], b1_[sizeof(b.val[1]) / sizeof(simde_poly16_t)]; simde_poly16_t a2_[sizeof(a.val[2]) / sizeof(simde_poly16_t)], b2_[sizeof(b.val[2]) / sizeof(simde_poly16_t)]; simde_vst1_p16(a0_, a.val[0]); simde_vst1_p16(b0_, b.val[0]); simde_vst1_p16(a1_, a.val[1]); simde_vst1_p16(b1_, b.val[1]); simde_vst1_p16(a2_, a.val[2]); simde_vst1_p16(b2_, b.val[2]); return simde_assert_equal_vp16_(4, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vp16_(4, a1_, b1_, filename, line, astr, bstr) && simde_assert_equal_vp16_(4, a2_, b2_, filename, line, astr, bstr); } static simde_poly64x1x3_t simde_test_arm_neon_random_p64x1x3(void) { simde_poly64x1x3_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_p64x1x3(int indent, simde_poly64x1x3_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 406 "../test/arm/neon/test-neon.h" 3 4 stderr # 406 "../test/arm/neon/test-neon.h" ); } simde_poly64_t value0_[sizeof(value) / sizeof(simde_poly64_t) / 3]; simde_poly64_t value1_[sizeof(value) / sizeof(simde_poly64_t) / 3]; simde_poly64_t value2_[sizeof(value) / sizeof(simde_poly64_t) / 3]; simde_vst1_p64(value0_, value.val[0]); simde_vst1_p64(value1_, value.val[1]); simde_vst1_p64(value2_, value.val[2]); simde_test_codegen_write_vp64(indent+2, sizeof(value0_) / sizeof(simde_poly64_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vp64(indent+2, sizeof(value1_) / sizeof(simde_poly64_t), value1_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vp64(indent+2, sizeof(value2_) / sizeof(simde_poly64_t), value2_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 406 "../test/arm/neon/test-neon.h" 3 4 stderr # 406 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_p64x1x3_(simde_poly64x1x3_t a, simde_poly64x1x3_t b, const char* filename, int line, const char* astr, const char* bstr) { simde_poly64_t a0_[sizeof(a.val[0]) / sizeof(simde_poly64_t)], b0_[sizeof(b.val[0]) / sizeof(simde_poly64_t)]; simde_poly64_t a1_[sizeof(a.val[1]) / sizeof(simde_poly64_t)], b1_[sizeof(b.val[1]) / sizeof(simde_poly64_t)]; simde_poly64_t a2_[sizeof(a.val[2]) / sizeof(simde_poly64_t)], b2_[sizeof(b.val[2]) / sizeof(simde_poly64_t)]; simde_vst1_p64(a0_, a.val[0]); simde_vst1_p64(b0_, b.val[0]); simde_vst1_p64(a1_, a.val[1]); simde_vst1_p64(b1_, b.val[1]); simde_vst1_p64(a2_, a.val[2]); simde_vst1_p64(b2_, b.val[2]); return simde_assert_equal_vp64_(1, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vp64_(1, a1_, b1_, filename, line, astr, bstr) && simde_assert_equal_vp64_(1, a2_, b2_, filename, line, astr, bstr); } static simde_int8x16x3_t simde_test_arm_neon_random_i8x16x3(void) { simde_int8x16x3_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_i8x16x3(int indent, simde_int8x16x3_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 408 "../test/arm/neon/test-neon.h" 3 4 stderr # 408 "../test/arm/neon/test-neon.h" ); } int8_t value0_[sizeof(value) / sizeof(int8_t) / 3]; int8_t value1_[sizeof(value) / sizeof(int8_t) / 3]; int8_t value2_[sizeof(value) / sizeof(int8_t) / 3]; simde_vst1q_s8(value0_, value.val[0]); simde_vst1q_s8(value1_, value.val[1]); simde_vst1q_s8(value2_, value.val[2]); simde_test_codegen_write_vi8(indent+2, sizeof(value0_) / sizeof(int8_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vi8(indent+2, sizeof(value1_) / sizeof(int8_t), value1_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vi8(indent+2, sizeof(value2_) / sizeof(int8_t), value2_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 408 "../test/arm/neon/test-neon.h" 3 4 stderr # 408 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_i8x16x3_(simde_int8x16x3_t a, simde_int8x16x3_t b, const char* filename, int line, const char* astr, const char* bstr) { int8_t a0_[sizeof(a.val[0]) / sizeof(int8_t)], b0_[sizeof(b.val[0]) / sizeof(int8_t)]; int8_t a1_[sizeof(a.val[1]) / sizeof(int8_t)], b1_[sizeof(b.val[1]) / sizeof(int8_t)]; int8_t a2_[sizeof(a.val[2]) / sizeof(int8_t)], b2_[sizeof(b.val[2]) / sizeof(int8_t)]; simde_vst1q_s8(a0_, a.val[0]); simde_vst1q_s8(b0_, b.val[0]); simde_vst1q_s8(a1_, a.val[1]); simde_vst1q_s8(b1_, b.val[1]); simde_vst1q_s8(a2_, a.val[2]); simde_vst1q_s8(b2_, b.val[2]); return simde_assert_equal_vi8_(16, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vi8_(16, a1_, b1_, filename, line, astr, bstr) && simde_assert_equal_vi8_(16, a2_, b2_, filename, line, astr, bstr); } static simde_int16x8x3_t simde_test_arm_neon_random_i16x8x3(void) { simde_int16x8x3_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_i16x8x3(int indent, simde_int16x8x3_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 409 "../test/arm/neon/test-neon.h" 3 4 stderr # 409 "../test/arm/neon/test-neon.h" ); } int16_t value0_[sizeof(value) / sizeof(int16_t) / 3]; int16_t value1_[sizeof(value) / sizeof(int16_t) / 3]; int16_t value2_[sizeof(value) / sizeof(int16_t) / 3]; simde_vst1q_s16(value0_, value.val[0]); simde_vst1q_s16(value1_, value.val[1]); simde_vst1q_s16(value2_, value.val[2]); simde_test_codegen_write_vi16(indent+2, sizeof(value0_) / sizeof(int16_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vi16(indent+2, sizeof(value1_) / sizeof(int16_t), value1_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vi16(indent+2, sizeof(value2_) / sizeof(int16_t), value2_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 409 "../test/arm/neon/test-neon.h" 3 4 stderr # 409 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_i16x8x3_(simde_int16x8x3_t a, simde_int16x8x3_t b, const char* filename, int line, const char* astr, const char* bstr) { int16_t a0_[sizeof(a.val[0]) / sizeof(int16_t)], b0_[sizeof(b.val[0]) / sizeof(int16_t)]; int16_t a1_[sizeof(a.val[1]) / sizeof(int16_t)], b1_[sizeof(b.val[1]) / sizeof(int16_t)]; int16_t a2_[sizeof(a.val[2]) / sizeof(int16_t)], b2_[sizeof(b.val[2]) / sizeof(int16_t)]; simde_vst1q_s16(a0_, a.val[0]); simde_vst1q_s16(b0_, b.val[0]); simde_vst1q_s16(a1_, a.val[1]); simde_vst1q_s16(b1_, b.val[1]); simde_vst1q_s16(a2_, a.val[2]); simde_vst1q_s16(b2_, b.val[2]); return simde_assert_equal_vi16_(8, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vi16_(8, a1_, b1_, filename, line, astr, bstr) && simde_assert_equal_vi16_(8, a2_, b2_, filename, line, astr, bstr); } static simde_int32x4x3_t simde_test_arm_neon_random_i32x4x3(void) { simde_int32x4x3_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_i32x4x3(int indent, simde_int32x4x3_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 410 "../test/arm/neon/test-neon.h" 3 4 stderr # 410 "../test/arm/neon/test-neon.h" ); } int32_t value0_[sizeof(value) / sizeof(int32_t) / 3]; int32_t value1_[sizeof(value) / sizeof(int32_t) / 3]; int32_t value2_[sizeof(value) / sizeof(int32_t) / 3]; simde_vst1q_s32(value0_, value.val[0]); simde_vst1q_s32(value1_, value.val[1]); simde_vst1q_s32(value2_, value.val[2]); simde_test_codegen_write_vi32(indent+2, sizeof(value0_) / sizeof(int32_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vi32(indent+2, sizeof(value1_) / sizeof(int32_t), value1_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vi32(indent+2, sizeof(value2_) / sizeof(int32_t), value2_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 410 "../test/arm/neon/test-neon.h" 3 4 stderr # 410 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_i32x4x3_(simde_int32x4x3_t a, simde_int32x4x3_t b, const char* filename, int line, const char* astr, const char* bstr) { int32_t a0_[sizeof(a.val[0]) / sizeof(int32_t)], b0_[sizeof(b.val[0]) / sizeof(int32_t)]; int32_t a1_[sizeof(a.val[1]) / sizeof(int32_t)], b1_[sizeof(b.val[1]) / sizeof(int32_t)]; int32_t a2_[sizeof(a.val[2]) / sizeof(int32_t)], b2_[sizeof(b.val[2]) / sizeof(int32_t)]; simde_vst1q_s32(a0_, a.val[0]); simde_vst1q_s32(b0_, b.val[0]); simde_vst1q_s32(a1_, a.val[1]); simde_vst1q_s32(b1_, b.val[1]); simde_vst1q_s32(a2_, a.val[2]); simde_vst1q_s32(b2_, b.val[2]); return simde_assert_equal_vi32_(4, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vi32_(4, a1_, b1_, filename, line, astr, bstr) && simde_assert_equal_vi32_(4, a2_, b2_, filename, line, astr, bstr); } static simde_int64x2x3_t simde_test_arm_neon_random_i64x2x3(void) { simde_int64x2x3_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_i64x2x3(int indent, simde_int64x2x3_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 411 "../test/arm/neon/test-neon.h" 3 4 stderr # 411 "../test/arm/neon/test-neon.h" ); } int64_t value0_[sizeof(value) / sizeof(int64_t) / 3]; int64_t value1_[sizeof(value) / sizeof(int64_t) / 3]; int64_t value2_[sizeof(value) / sizeof(int64_t) / 3]; simde_vst1q_s64(value0_, value.val[0]); simde_vst1q_s64(value1_, value.val[1]); simde_vst1q_s64(value2_, value.val[2]); simde_test_codegen_write_vi64(indent+2, sizeof(value0_) / sizeof(int64_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vi64(indent+2, sizeof(value1_) / sizeof(int64_t), value1_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vi64(indent+2, sizeof(value2_) / sizeof(int64_t), value2_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 411 "../test/arm/neon/test-neon.h" 3 4 stderr # 411 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_i64x2x3_(simde_int64x2x3_t a, simde_int64x2x3_t b, const char* filename, int line, const char* astr, const char* bstr) { int64_t a0_[sizeof(a.val[0]) / sizeof(int64_t)], b0_[sizeof(b.val[0]) / sizeof(int64_t)]; int64_t a1_[sizeof(a.val[1]) / sizeof(int64_t)], b1_[sizeof(b.val[1]) / sizeof(int64_t)]; int64_t a2_[sizeof(a.val[2]) / sizeof(int64_t)], b2_[sizeof(b.val[2]) / sizeof(int64_t)]; simde_vst1q_s64(a0_, a.val[0]); simde_vst1q_s64(b0_, b.val[0]); simde_vst1q_s64(a1_, a.val[1]); simde_vst1q_s64(b1_, b.val[1]); simde_vst1q_s64(a2_, a.val[2]); simde_vst1q_s64(b2_, b.val[2]); return simde_assert_equal_vi64_(2, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vi64_(2, a1_, b1_, filename, line, astr, bstr) && simde_assert_equal_vi64_(2, a2_, b2_, filename, line, astr, bstr); } static simde_uint8x16x3_t simde_test_arm_neon_random_u8x16x3(void) { simde_uint8x16x3_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_u8x16x3(int indent, simde_uint8x16x3_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 412 "../test/arm/neon/test-neon.h" 3 4 stderr # 412 "../test/arm/neon/test-neon.h" ); } uint8_t value0_[sizeof(value) / sizeof(uint8_t) / 3]; uint8_t value1_[sizeof(value) / sizeof(uint8_t) / 3]; uint8_t value2_[sizeof(value) / sizeof(uint8_t) / 3]; simde_vst1q_u8(value0_, value.val[0]); simde_vst1q_u8(value1_, value.val[1]); simde_vst1q_u8(value2_, value.val[2]); simde_test_codegen_write_vu8(indent+2, sizeof(value0_) / sizeof(uint8_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vu8(indent+2, sizeof(value1_) / sizeof(uint8_t), value1_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vu8(indent+2, sizeof(value2_) / sizeof(uint8_t), value2_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 412 "../test/arm/neon/test-neon.h" 3 4 stderr # 412 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_u8x16x3_(simde_uint8x16x3_t a, simde_uint8x16x3_t b, const char* filename, int line, const char* astr, const char* bstr) { uint8_t a0_[sizeof(a.val[0]) / sizeof(uint8_t)], b0_[sizeof(b.val[0]) / sizeof(uint8_t)]; uint8_t a1_[sizeof(a.val[1]) / sizeof(uint8_t)], b1_[sizeof(b.val[1]) / sizeof(uint8_t)]; uint8_t a2_[sizeof(a.val[2]) / sizeof(uint8_t)], b2_[sizeof(b.val[2]) / sizeof(uint8_t)]; simde_vst1q_u8(a0_, a.val[0]); simde_vst1q_u8(b0_, b.val[0]); simde_vst1q_u8(a1_, a.val[1]); simde_vst1q_u8(b1_, b.val[1]); simde_vst1q_u8(a2_, a.val[2]); simde_vst1q_u8(b2_, b.val[2]); return simde_assert_equal_vu8_(16, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vu8_(16, a1_, b1_, filename, line, astr, bstr) && simde_assert_equal_vu8_(16, a2_, b2_, filename, line, astr, bstr); } static simde_uint16x8x3_t simde_test_arm_neon_random_u16x8x3(void) { simde_uint16x8x3_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_u16x8x3(int indent, simde_uint16x8x3_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 413 "../test/arm/neon/test-neon.h" 3 4 stderr # 413 "../test/arm/neon/test-neon.h" ); } uint16_t value0_[sizeof(value) / sizeof(uint16_t) / 3]; uint16_t value1_[sizeof(value) / sizeof(uint16_t) / 3]; uint16_t value2_[sizeof(value) / sizeof(uint16_t) / 3]; simde_vst1q_u16(value0_, value.val[0]); simde_vst1q_u16(value1_, value.val[1]); simde_vst1q_u16(value2_, value.val[2]); simde_test_codegen_write_vu16(indent+2, sizeof(value0_) / sizeof(uint16_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vu16(indent+2, sizeof(value1_) / sizeof(uint16_t), value1_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vu16(indent+2, sizeof(value2_) / sizeof(uint16_t), value2_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 413 "../test/arm/neon/test-neon.h" 3 4 stderr # 413 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_u16x8x3_(simde_uint16x8x3_t a, simde_uint16x8x3_t b, const char* filename, int line, const char* astr, const char* bstr) { uint16_t a0_[sizeof(a.val[0]) / sizeof(uint16_t)], b0_[sizeof(b.val[0]) / sizeof(uint16_t)]; uint16_t a1_[sizeof(a.val[1]) / sizeof(uint16_t)], b1_[sizeof(b.val[1]) / sizeof(uint16_t)]; uint16_t a2_[sizeof(a.val[2]) / sizeof(uint16_t)], b2_[sizeof(b.val[2]) / sizeof(uint16_t)]; simde_vst1q_u16(a0_, a.val[0]); simde_vst1q_u16(b0_, b.val[0]); simde_vst1q_u16(a1_, a.val[1]); simde_vst1q_u16(b1_, b.val[1]); simde_vst1q_u16(a2_, a.val[2]); simde_vst1q_u16(b2_, b.val[2]); return simde_assert_equal_vu16_(8, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vu16_(8, a1_, b1_, filename, line, astr, bstr) && simde_assert_equal_vu16_(8, a2_, b2_, filename, line, astr, bstr); } static simde_uint32x4x3_t simde_test_arm_neon_random_u32x4x3(void) { simde_uint32x4x3_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_u32x4x3(int indent, simde_uint32x4x3_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 414 "../test/arm/neon/test-neon.h" 3 4 stderr # 414 "../test/arm/neon/test-neon.h" ); } uint32_t value0_[sizeof(value) / sizeof(uint32_t) / 3]; uint32_t value1_[sizeof(value) / sizeof(uint32_t) / 3]; uint32_t value2_[sizeof(value) / sizeof(uint32_t) / 3]; simde_vst1q_u32(value0_, value.val[0]); simde_vst1q_u32(value1_, value.val[1]); simde_vst1q_u32(value2_, value.val[2]); simde_test_codegen_write_vu32(indent+2, sizeof(value0_) / sizeof(uint32_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vu32(indent+2, sizeof(value1_) / sizeof(uint32_t), value1_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vu32(indent+2, sizeof(value2_) / sizeof(uint32_t), value2_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 414 "../test/arm/neon/test-neon.h" 3 4 stderr # 414 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_u32x4x3_(simde_uint32x4x3_t a, simde_uint32x4x3_t b, const char* filename, int line, const char* astr, const char* bstr) { uint32_t a0_[sizeof(a.val[0]) / sizeof(uint32_t)], b0_[sizeof(b.val[0]) / sizeof(uint32_t)]; uint32_t a1_[sizeof(a.val[1]) / sizeof(uint32_t)], b1_[sizeof(b.val[1]) / sizeof(uint32_t)]; uint32_t a2_[sizeof(a.val[2]) / sizeof(uint32_t)], b2_[sizeof(b.val[2]) / sizeof(uint32_t)]; simde_vst1q_u32(a0_, a.val[0]); simde_vst1q_u32(b0_, b.val[0]); simde_vst1q_u32(a1_, a.val[1]); simde_vst1q_u32(b1_, b.val[1]); simde_vst1q_u32(a2_, a.val[2]); simde_vst1q_u32(b2_, b.val[2]); return simde_assert_equal_vu32_(4, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vu32_(4, a1_, b1_, filename, line, astr, bstr) && simde_assert_equal_vu32_(4, a2_, b2_, filename, line, astr, bstr); } static simde_uint64x2x3_t simde_test_arm_neon_random_u64x2x3(void) { simde_uint64x2x3_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_u64x2x3(int indent, simde_uint64x2x3_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 415 "../test/arm/neon/test-neon.h" 3 4 stderr # 415 "../test/arm/neon/test-neon.h" ); } uint64_t value0_[sizeof(value) / sizeof(uint64_t) / 3]; uint64_t value1_[sizeof(value) / sizeof(uint64_t) / 3]; uint64_t value2_[sizeof(value) / sizeof(uint64_t) / 3]; simde_vst1q_u64(value0_, value.val[0]); simde_vst1q_u64(value1_, value.val[1]); simde_vst1q_u64(value2_, value.val[2]); simde_test_codegen_write_vu64(indent+2, sizeof(value0_) / sizeof(uint64_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vu64(indent+2, sizeof(value1_) / sizeof(uint64_t), value1_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vu64(indent+2, sizeof(value2_) / sizeof(uint64_t), value2_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 415 "../test/arm/neon/test-neon.h" 3 4 stderr # 415 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_u64x2x3_(simde_uint64x2x3_t a, simde_uint64x2x3_t b, const char* filename, int line, const char* astr, const char* bstr) { uint64_t a0_[sizeof(a.val[0]) / sizeof(uint64_t)], b0_[sizeof(b.val[0]) / sizeof(uint64_t)]; uint64_t a1_[sizeof(a.val[1]) / sizeof(uint64_t)], b1_[sizeof(b.val[1]) / sizeof(uint64_t)]; uint64_t a2_[sizeof(a.val[2]) / sizeof(uint64_t)], b2_[sizeof(b.val[2]) / sizeof(uint64_t)]; simde_vst1q_u64(a0_, a.val[0]); simde_vst1q_u64(b0_, b.val[0]); simde_vst1q_u64(a1_, a.val[1]); simde_vst1q_u64(b1_, b.val[1]); simde_vst1q_u64(a2_, a.val[2]); simde_vst1q_u64(b2_, b.val[2]); return simde_assert_equal_vu64_(2, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vu64_(2, a1_, b1_, filename, line, astr, bstr) && simde_assert_equal_vu64_(2, a2_, b2_, filename, line, astr, bstr); } static simde_float32x4x3_t simde_test_arm_neon_random_f32x4x3(simde_float32_t min, simde_float32_t max) { simde_float32 v0[sizeof(simde_float32x4x3_t) / sizeof(simde_float32_t) / 3]; simde_float32 v1[sizeof(simde_float32x4x3_t) / sizeof(simde_float32_t) / 3]; simde_float32 v2[sizeof(simde_float32x4x3_t) / sizeof(simde_float32_t) / 3]; simde_test_codegen_random_vf32(sizeof(v0) / sizeof(v0[0]), v0, ((simde_float32) (min)), ((simde_float32) (max))); simde_test_codegen_random_vf32(sizeof(v1) / sizeof(v1[0]), v1, ((simde_float32) (min)), ((simde_float32) (max))); simde_test_codegen_random_vf32(sizeof(v2) / sizeof(v2[0]), v2, ((simde_float32) (min)), ((simde_float32) (max))); simde_float32x4x3_t r; r.val[0] = simde_vld1q_f32(((simde_float32_t*) (v0))); r.val[1] = simde_vld1q_f32(((simde_float32_t*) (v1))); r.val[2] = simde_vld1q_f32(((simde_float32_t*) (v2))); return r; } static void simde_test_arm_neon_write_f32x4x3(int indent, simde_float32x4x3_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 416 "../test/arm/neon/test-neon.h" 3 4 stderr # 416 "../test/arm/neon/test-neon.h" ); } simde_float32_t value0_[sizeof(value) / sizeof(simde_float32_t) / 3]; simde_float32_t value1_[sizeof(value) / sizeof(simde_float32_t) / 3]; simde_float32_t value2_[sizeof(value) / sizeof(simde_float32_t) / 3]; simde_vst1q_f32(value0_, value.val[0]); simde_vst1q_f32(value1_, value.val[1]); simde_vst1q_f32(value2_, value.val[2]); simde_test_codegen_write_vf32(indent + 2, sizeof(value0_) / sizeof(value0_[0]), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vf32(indent + 2, sizeof(value1_) / sizeof(value1_[0]), value1_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vf32(indent + 2, sizeof(value2_) / sizeof(value2_[0]), value2_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 416 "../test/arm/neon/test-neon.h" 3 4 stderr # 416 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_f32x4x3_(simde_float32x4x3_t a, simde_float32x4x3_t b, simde_float32_t slop, const char* filename, int line, const char* astr, const char* bstr) { simde_float32 a0_[sizeof(a.val[0]) / sizeof(simde_float32_t)], b0_[sizeof(b.val[0]) / sizeof(simde_float32_t)]; simde_float32 a1_[sizeof(a.val[1]) / sizeof(simde_float32_t)], b1_[sizeof(b.val[1]) / sizeof(simde_float32_t)]; simde_float32 a2_[sizeof(a.val[2]) / sizeof(simde_float32_t)], b2_[sizeof(b.val[2]) / sizeof(simde_float32_t)]; simde_vst1q_f32(a0_, a.val[0]); simde_vst1q_f32(b0_, b.val[0]); simde_vst1q_f32(a1_, a.val[1]); simde_vst1q_f32(b1_, b.val[1]); simde_vst1q_f32(a2_, a.val[2]); simde_vst1q_f32(b2_, b.val[2]); return simde_assert_equal_vf32_(4, ((simde_float32*) (a0_)), ((simde_float32*) (b0_)), slop, filename, line, astr, bstr) && simde_assert_equal_vf32_(4, ((simde_float32*) (a1_)), ((simde_float32*) (b1_)), slop, filename, line, astr, bstr) && simde_assert_equal_vf32_(4, ((simde_float32*) (a2_)), ((simde_float32*) (b2_)), slop, filename, line, astr, bstr); } static simde_float64x2x3_t simde_test_arm_neon_random_f64x2x3(simde_float64_t min, simde_float64_t max) { simde_float64 v0[sizeof(simde_float64x2x3_t) / sizeof(simde_float64_t) / 3]; simde_float64 v1[sizeof(simde_float64x2x3_t) / sizeof(simde_float64_t) / 3]; simde_float64 v2[sizeof(simde_float64x2x3_t) / sizeof(simde_float64_t) / 3]; simde_test_codegen_random_vf64(sizeof(v0) / sizeof(v0[0]), v0, ((simde_float64) (min)), ((simde_float64) (max))); simde_test_codegen_random_vf64(sizeof(v1) / sizeof(v1[0]), v1, ((simde_float64) (min)), ((simde_float64) (max))); simde_test_codegen_random_vf64(sizeof(v2) / sizeof(v2[0]), v2, ((simde_float64) (min)), ((simde_float64) (max))); simde_float64x2x3_t r; r.val[0] = simde_vld1q_f64(((simde_float64_t*) (v0))); r.val[1] = simde_vld1q_f64(((simde_float64_t*) (v1))); r.val[2] = simde_vld1q_f64(((simde_float64_t*) (v2))); return r; } static void simde_test_arm_neon_write_f64x2x3(int indent, simde_float64x2x3_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 417 "../test/arm/neon/test-neon.h" 3 4 stderr # 417 "../test/arm/neon/test-neon.h" ); } simde_float64_t value0_[sizeof(value) / sizeof(simde_float64_t) / 3]; simde_float64_t value1_[sizeof(value) / sizeof(simde_float64_t) / 3]; simde_float64_t value2_[sizeof(value) / sizeof(simde_float64_t) / 3]; simde_vst1q_f64(value0_, value.val[0]); simde_vst1q_f64(value1_, value.val[1]); simde_vst1q_f64(value2_, value.val[2]); simde_test_codegen_write_vf64(indent + 2, sizeof(value0_) / sizeof(value0_[0]), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vf64(indent + 2, sizeof(value1_) / sizeof(value1_[0]), value1_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vf64(indent + 2, sizeof(value2_) / sizeof(value2_[0]), value2_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 417 "../test/arm/neon/test-neon.h" 3 4 stderr # 417 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_f64x2x3_(simde_float64x2x3_t a, simde_float64x2x3_t b, simde_float64_t slop, const char* filename, int line, const char* astr, const char* bstr) { simde_float64 a0_[sizeof(a.val[0]) / sizeof(simde_float64_t)], b0_[sizeof(b.val[0]) / sizeof(simde_float64_t)]; simde_float64 a1_[sizeof(a.val[1]) / sizeof(simde_float64_t)], b1_[sizeof(b.val[1]) / sizeof(simde_float64_t)]; simde_float64 a2_[sizeof(a.val[2]) / sizeof(simde_float64_t)], b2_[sizeof(b.val[2]) / sizeof(simde_float64_t)]; simde_vst1q_f64(a0_, a.val[0]); simde_vst1q_f64(b0_, b.val[0]); simde_vst1q_f64(a1_, a.val[1]); simde_vst1q_f64(b1_, b.val[1]); simde_vst1q_f64(a2_, a.val[2]); simde_vst1q_f64(b2_, b.val[2]); return simde_assert_equal_vf64_(2, ((simde_float64*) (a0_)), ((simde_float64*) (b0_)), slop, filename, line, astr, bstr) && simde_assert_equal_vf64_(2, ((simde_float64*) (a1_)), ((simde_float64*) (b1_)), slop, filename, line, astr, bstr) && simde_assert_equal_vf64_(2, ((simde_float64*) (a2_)), ((simde_float64*) (b2_)), slop, filename, line, astr, bstr); } static simde_poly8x16x3_t simde_test_arm_neon_random_p8x16x3(void) { simde_poly8x16x3_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_p8x16x3(int indent, simde_poly8x16x3_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 418 "../test/arm/neon/test-neon.h" 3 4 stderr # 418 "../test/arm/neon/test-neon.h" ); } simde_poly8_t value0_[sizeof(value) / sizeof(simde_poly8_t) / 3]; simde_poly8_t value1_[sizeof(value) / sizeof(simde_poly8_t) / 3]; simde_poly8_t value2_[sizeof(value) / sizeof(simde_poly8_t) / 3]; simde_vst1q_p8(value0_, value.val[0]); simde_vst1q_p8(value1_, value.val[1]); simde_vst1q_p8(value2_, value.val[2]); simde_test_codegen_write_vp8(indent+2, sizeof(value0_) / sizeof(simde_poly8_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vp8(indent+2, sizeof(value1_) / sizeof(simde_poly8_t), value1_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vp8(indent+2, sizeof(value2_) / sizeof(simde_poly8_t), value2_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 418 "../test/arm/neon/test-neon.h" 3 4 stderr # 418 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_p8x16x3_(simde_poly8x16x3_t a, simde_poly8x16x3_t b, const char* filename, int line, const char* astr, const char* bstr) { simde_poly8_t a0_[sizeof(a.val[0]) / sizeof(simde_poly8_t)], b0_[sizeof(b.val[0]) / sizeof(simde_poly8_t)]; simde_poly8_t a1_[sizeof(a.val[1]) / sizeof(simde_poly8_t)], b1_[sizeof(b.val[1]) / sizeof(simde_poly8_t)]; simde_poly8_t a2_[sizeof(a.val[2]) / sizeof(simde_poly8_t)], b2_[sizeof(b.val[2]) / sizeof(simde_poly8_t)]; simde_vst1q_p8(a0_, a.val[0]); simde_vst1q_p8(b0_, b.val[0]); simde_vst1q_p8(a1_, a.val[1]); simde_vst1q_p8(b1_, b.val[1]); simde_vst1q_p8(a2_, a.val[2]); simde_vst1q_p8(b2_, b.val[2]); return simde_assert_equal_vp8_(16, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vp8_(16, a1_, b1_, filename, line, astr, bstr) && simde_assert_equal_vp8_(16, a2_, b2_, filename, line, astr, bstr); } static simde_poly16x8x3_t simde_test_arm_neon_random_p16x8x3(void) { simde_poly16x8x3_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_p16x8x3(int indent, simde_poly16x8x3_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 419 "../test/arm/neon/test-neon.h" 3 4 stderr # 419 "../test/arm/neon/test-neon.h" ); } simde_poly16_t value0_[sizeof(value) / sizeof(simde_poly16_t) / 3]; simde_poly16_t value1_[sizeof(value) / sizeof(simde_poly16_t) / 3]; simde_poly16_t value2_[sizeof(value) / sizeof(simde_poly16_t) / 3]; simde_vst1q_p16(value0_, value.val[0]); simde_vst1q_p16(value1_, value.val[1]); simde_vst1q_p16(value2_, value.val[2]); simde_test_codegen_write_vp16(indent+2, sizeof(value0_) / sizeof(simde_poly16_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vp16(indent+2, sizeof(value1_) / sizeof(simde_poly16_t), value1_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vp16(indent+2, sizeof(value2_) / sizeof(simde_poly16_t), value2_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 419 "../test/arm/neon/test-neon.h" 3 4 stderr # 419 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_p16x8x3_(simde_poly16x8x3_t a, simde_poly16x8x3_t b, const char* filename, int line, const char* astr, const char* bstr) { simde_poly16_t a0_[sizeof(a.val[0]) / sizeof(simde_poly16_t)], b0_[sizeof(b.val[0]) / sizeof(simde_poly16_t)]; simde_poly16_t a1_[sizeof(a.val[1]) / sizeof(simde_poly16_t)], b1_[sizeof(b.val[1]) / sizeof(simde_poly16_t)]; simde_poly16_t a2_[sizeof(a.val[2]) / sizeof(simde_poly16_t)], b2_[sizeof(b.val[2]) / sizeof(simde_poly16_t)]; simde_vst1q_p16(a0_, a.val[0]); simde_vst1q_p16(b0_, b.val[0]); simde_vst1q_p16(a1_, a.val[1]); simde_vst1q_p16(b1_, b.val[1]); simde_vst1q_p16(a2_, a.val[2]); simde_vst1q_p16(b2_, b.val[2]); return simde_assert_equal_vp16_(8, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vp16_(8, a1_, b1_, filename, line, astr, bstr) && simde_assert_equal_vp16_(8, a2_, b2_, filename, line, astr, bstr); } static simde_poly64x2x3_t simde_test_arm_neon_random_p64x2x3(void) { simde_poly64x2x3_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_p64x2x3(int indent, simde_poly64x2x3_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 420 "../test/arm/neon/test-neon.h" 3 4 stderr # 420 "../test/arm/neon/test-neon.h" ); } simde_poly64_t value0_[sizeof(value) / sizeof(simde_poly64_t) / 3]; simde_poly64_t value1_[sizeof(value) / sizeof(simde_poly64_t) / 3]; simde_poly64_t value2_[sizeof(value) / sizeof(simde_poly64_t) / 3]; simde_vst1q_p64(value0_, value.val[0]); simde_vst1q_p64(value1_, value.val[1]); simde_vst1q_p64(value2_, value.val[2]); simde_test_codegen_write_vp64(indent+2, sizeof(value0_) / sizeof(simde_poly64_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vp64(indent+2, sizeof(value1_) / sizeof(simde_poly64_t), value1_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vp64(indent+2, sizeof(value2_) / sizeof(simde_poly64_t), value2_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 420 "../test/arm/neon/test-neon.h" 3 4 stderr # 420 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_p64x2x3_(simde_poly64x2x3_t a, simde_poly64x2x3_t b, const char* filename, int line, const char* astr, const char* bstr) { simde_poly64_t a0_[sizeof(a.val[0]) / sizeof(simde_poly64_t)], b0_[sizeof(b.val[0]) / sizeof(simde_poly64_t)]; simde_poly64_t a1_[sizeof(a.val[1]) / sizeof(simde_poly64_t)], b1_[sizeof(b.val[1]) / sizeof(simde_poly64_t)]; simde_poly64_t a2_[sizeof(a.val[2]) / sizeof(simde_poly64_t)], b2_[sizeof(b.val[2]) / sizeof(simde_poly64_t)]; simde_vst1q_p64(a0_, a.val[0]); simde_vst1q_p64(b0_, b.val[0]); simde_vst1q_p64(a1_, a.val[1]); simde_vst1q_p64(b1_, b.val[1]); simde_vst1q_p64(a2_, a.val[2]); simde_vst1q_p64(b2_, b.val[2]); return simde_assert_equal_vp64_(2, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vp64_(2, a1_, b1_, filename, line, astr, bstr) && simde_assert_equal_vp64_(2, a2_, b2_, filename, line, astr, bstr); } static int simde_test_arm_neon_assert_equal_f16x4x3_(simde_float16x4x3_t a, simde_float16x4x3_t b, simde_float16_t slop, const char* filename, int line, const char* astr, const char* bstr) { simde_float16 a0_[sizeof(a.val[0]) / sizeof(simde_float16_t)], b0_[sizeof(b.val[0]) / sizeof(simde_float16_t)]; simde_float16 a1_[sizeof(a.val[1]) / sizeof(simde_float16_t)], b1_[sizeof(b.val[1]) / sizeof(simde_float16_t)]; simde_float16 a2_[sizeof(a.val[2]) / sizeof(simde_float16_t)], b2_[sizeof(b.val[2]) / sizeof(simde_float16_t)]; simde_vst1_f16(a0_, a.val[0]); simde_vst1_f16(b0_, b.val[0]); simde_vst1_f16(a1_, a.val[1]); simde_vst1_f16(b1_, b.val[1]); simde_vst1_f16(a2_, a.val[2]); simde_vst1_f16(b2_, b.val[2]); return simde_assert_equal_vf16_(4, ((simde_float16*) (a0_)), ((simde_float16*) (b0_)), slop, filename, line, astr, bstr) && simde_assert_equal_vf16_(4, ((simde_float16*) (a1_)), ((simde_float16*) (b1_)), slop, filename, line, astr, bstr) && simde_assert_equal_vf16_(4, ((simde_float16*) (a2_)), ((simde_float16*) (b2_)), slop, filename, line, astr, bstr); } static int simde_test_arm_neon_assert_equal_f16x8x3_(simde_float16x8x3_t a, simde_float16x8x3_t b, simde_float16_t slop, const char* filename, int line, const char* astr, const char* bstr) { simde_float16 a0_[sizeof(a.val[0]) / sizeof(simde_float16_t)], b0_[sizeof(b.val[0]) / sizeof(simde_float16_t)]; simde_float16 a1_[sizeof(a.val[1]) / sizeof(simde_float16_t)], b1_[sizeof(b.val[1]) / sizeof(simde_float16_t)]; simde_float16 a2_[sizeof(a.val[2]) / sizeof(simde_float16_t)], b2_[sizeof(b.val[2]) / sizeof(simde_float16_t)]; simde_vst1q_f16(a0_, a.val[0]); simde_vst1q_f16(b0_, b.val[0]); simde_vst1q_f16(a1_, a.val[1]); simde_vst1q_f16(b1_, b.val[1]); simde_vst1q_f16(a2_, a.val[2]); simde_vst1q_f16(b2_, b.val[2]); return simde_assert_equal_vf16_(8, ((simde_float16*) (a0_)), ((simde_float16*) (b0_)), slop, filename, line, astr, bstr) && simde_assert_equal_vf16_(8, ((simde_float16*) (a1_)), ((simde_float16*) (b1_)), slop, filename, line, astr, bstr) && simde_assert_equal_vf16_(8, ((simde_float16*) (a2_)), ((simde_float16*) (b2_)), slop, filename, line, astr, bstr); } static int simde_test_arm_neon_assert_equal_bf16x4x3_(simde_bfloat16x4x3_t a, simde_bfloat16x4x3_t b, simde_bfloat16_t slop, const char* filename, int line, const char* astr, const char* bstr) { simde_bfloat16 a0_[sizeof(a.val[0]) / sizeof(simde_bfloat16_t)], b0_[sizeof(b.val[0]) / sizeof(simde_bfloat16_t)]; simde_bfloat16 a1_[sizeof(a.val[1]) / sizeof(simde_bfloat16_t)], b1_[sizeof(b.val[1]) / sizeof(simde_bfloat16_t)]; simde_bfloat16 a2_[sizeof(a.val[2]) / sizeof(simde_bfloat16_t)], b2_[sizeof(b.val[2]) / sizeof(simde_bfloat16_t)]; simde_vst1_bf16(a0_, a.val[0]); simde_vst1_bf16(b0_, b.val[0]); simde_vst1_bf16(a1_, a.val[1]); simde_vst1_bf16(b1_, b.val[1]); simde_vst1_bf16(a2_, a.val[2]); simde_vst1_bf16(b2_, b.val[2]); return simde_assert_equal_vbf16_(4, ((simde_bfloat16*) (a0_)), ((simde_bfloat16*) (b0_)), slop, filename, line, astr, bstr) && simde_assert_equal_vbf16_(4, ((simde_bfloat16*) (a1_)), ((simde_bfloat16*) (b1_)), slop, filename, line, astr, bstr) && simde_assert_equal_vbf16_(4, ((simde_bfloat16*) (a2_)), ((simde_bfloat16*) (b2_)), slop, filename, line, astr, bstr); } static int simde_test_arm_neon_assert_equal_bf16x8x3_(simde_bfloat16x8x3_t a, simde_bfloat16x8x3_t b, simde_bfloat16_t slop, const char* filename, int line, const char* astr, const char* bstr) { simde_bfloat16 a0_[sizeof(a.val[0]) / sizeof(simde_bfloat16_t)], b0_[sizeof(b.val[0]) / sizeof(simde_bfloat16_t)]; simde_bfloat16 a1_[sizeof(a.val[1]) / sizeof(simde_bfloat16_t)], b1_[sizeof(b.val[1]) / sizeof(simde_bfloat16_t)]; simde_bfloat16 a2_[sizeof(a.val[2]) / sizeof(simde_bfloat16_t)], b2_[sizeof(b.val[2]) / sizeof(simde_bfloat16_t)]; simde_vst1q_bf16(a0_, a.val[0]); simde_vst1q_bf16(b0_, b.val[0]); simde_vst1q_bf16(a1_, a.val[1]); simde_vst1q_bf16(b1_, b.val[1]); simde_vst1q_bf16(a2_, a.val[2]); simde_vst1q_bf16(b2_, b.val[2]); return simde_assert_equal_vbf16_(8, ((simde_bfloat16*) (a0_)), ((simde_bfloat16*) (b0_)), slop, filename, line, astr, bstr) && simde_assert_equal_vbf16_(8, ((simde_bfloat16*) (a1_)), ((simde_bfloat16*) (b1_)), slop, filename, line, astr, bstr) && simde_assert_equal_vbf16_(8, ((simde_bfloat16*) (a2_)), ((simde_bfloat16*) (b2_)), slop, filename, line, astr, bstr); } # 438 "../test/arm/neon/test-neon.h" #pragma GCC diagnostic pop # 570 "../test/arm/neon/test-neon.h" # 570 "../test/arm/neon/test-neon.h" #pragma GCC diagnostic push static simde_int8x8x4_t simde_test_arm_neon_random_i8x8x4(void) { simde_int8x8x4_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_i8x8x4(int indent, simde_int8x8x4_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 573 "../test/arm/neon/test-neon.h" 3 4 stderr # 573 "../test/arm/neon/test-neon.h" ); } int8_t value0_[sizeof(value) / sizeof(int8_t) / 4]; int8_t value1_[sizeof(value) / sizeof(int8_t) / 4]; int8_t value2_[sizeof(value) / sizeof(int8_t) / 4]; int8_t value3_[sizeof(value) / sizeof(int8_t) / 4]; simde_vst1_s8(value0_, value.val[0]); simde_vst1_s8(value1_, value.val[1]); simde_vst1_s8(value2_, value.val[2]); simde_vst1_s8(value3_, value.val[3]); simde_test_codegen_write_vi8(indent+2, sizeof(value0_) / sizeof(int8_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vi8(indent+2, sizeof(value1_) / sizeof(int8_t), value1_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vi8(indent+2, sizeof(value2_) / sizeof(int8_t), value2_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vi8(indent+2, sizeof(value3_) / sizeof(int8_t), value3_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 573 "../test/arm/neon/test-neon.h" 3 4 stderr # 573 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_i8x8x4_(simde_int8x8x4_t a, simde_int8x8x4_t b, const char* filename, int line, const char* astr, const char* bstr) { int8_t a0_[sizeof(a.val[0]) / sizeof(int8_t)], b0_[sizeof(b.val[0]) / sizeof(int8_t)]; int8_t a1_[sizeof(a.val[1]) / sizeof(int8_t)], b1_[sizeof(b.val[1]) / sizeof(int8_t)]; int8_t a2_[sizeof(a.val[2]) / sizeof(int8_t)], b2_[sizeof(b.val[2]) / sizeof(int8_t)]; int8_t a3_[sizeof(a.val[3]) / sizeof(int8_t)], b3_[sizeof(b.val[3]) / sizeof(int8_t)]; simde_vst1_s8(a0_, a.val[0]); simde_vst1_s8(b0_, b.val[0]); simde_vst1_s8(a1_, a.val[1]); simde_vst1_s8(b1_, b.val[1]); simde_vst1_s8(a2_, a.val[2]); simde_vst1_s8(b2_, b.val[2]); simde_vst1_s8(a3_, a.val[3]); simde_vst1_s8(b3_, b.val[3]); return simde_assert_equal_vi8_(8, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vi8_(8, a1_, b1_, filename, line, astr, bstr) && simde_assert_equal_vi8_(8, a2_, b2_, filename, line, astr, bstr) && simde_assert_equal_vi8_(8, a3_, b3_, filename, line, astr, bstr); } static simde_int16x4x4_t simde_test_arm_neon_random_i16x4x4(void) { simde_int16x4x4_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_i16x4x4(int indent, simde_int16x4x4_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 574 "../test/arm/neon/test-neon.h" 3 4 stderr # 574 "../test/arm/neon/test-neon.h" ); } int16_t value0_[sizeof(value) / sizeof(int16_t) / 4]; int16_t value1_[sizeof(value) / sizeof(int16_t) / 4]; int16_t value2_[sizeof(value) / sizeof(int16_t) / 4]; int16_t value3_[sizeof(value) / sizeof(int16_t) / 4]; simde_vst1_s16(value0_, value.val[0]); simde_vst1_s16(value1_, value.val[1]); simde_vst1_s16(value2_, value.val[2]); simde_vst1_s16(value3_, value.val[3]); simde_test_codegen_write_vi16(indent+2, sizeof(value0_) / sizeof(int16_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vi16(indent+2, sizeof(value1_) / sizeof(int16_t), value1_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vi16(indent+2, sizeof(value2_) / sizeof(int16_t), value2_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vi16(indent+2, sizeof(value3_) / sizeof(int16_t), value3_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 574 "../test/arm/neon/test-neon.h" 3 4 stderr # 574 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_i16x4x4_(simde_int16x4x4_t a, simde_int16x4x4_t b, const char* filename, int line, const char* astr, const char* bstr) { int16_t a0_[sizeof(a.val[0]) / sizeof(int16_t)], b0_[sizeof(b.val[0]) / sizeof(int16_t)]; int16_t a1_[sizeof(a.val[1]) / sizeof(int16_t)], b1_[sizeof(b.val[1]) / sizeof(int16_t)]; int16_t a2_[sizeof(a.val[2]) / sizeof(int16_t)], b2_[sizeof(b.val[2]) / sizeof(int16_t)]; int16_t a3_[sizeof(a.val[3]) / sizeof(int16_t)], b3_[sizeof(b.val[3]) / sizeof(int16_t)]; simde_vst1_s16(a0_, a.val[0]); simde_vst1_s16(b0_, b.val[0]); simde_vst1_s16(a1_, a.val[1]); simde_vst1_s16(b1_, b.val[1]); simde_vst1_s16(a2_, a.val[2]); simde_vst1_s16(b2_, b.val[2]); simde_vst1_s16(a3_, a.val[3]); simde_vst1_s16(b3_, b.val[3]); return simde_assert_equal_vi16_(4, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vi16_(4, a1_, b1_, filename, line, astr, bstr) && simde_assert_equal_vi16_(4, a2_, b2_, filename, line, astr, bstr) && simde_assert_equal_vi16_(4, a3_, b3_, filename, line, astr, bstr); } static simde_int32x2x4_t simde_test_arm_neon_random_i32x2x4(void) { simde_int32x2x4_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_i32x2x4(int indent, simde_int32x2x4_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 575 "../test/arm/neon/test-neon.h" 3 4 stderr # 575 "../test/arm/neon/test-neon.h" ); } int32_t value0_[sizeof(value) / sizeof(int32_t) / 4]; int32_t value1_[sizeof(value) / sizeof(int32_t) / 4]; int32_t value2_[sizeof(value) / sizeof(int32_t) / 4]; int32_t value3_[sizeof(value) / sizeof(int32_t) / 4]; simde_vst1_s32(value0_, value.val[0]); simde_vst1_s32(value1_, value.val[1]); simde_vst1_s32(value2_, value.val[2]); simde_vst1_s32(value3_, value.val[3]); simde_test_codegen_write_vi32(indent+2, sizeof(value0_) / sizeof(int32_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vi32(indent+2, sizeof(value1_) / sizeof(int32_t), value1_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vi32(indent+2, sizeof(value2_) / sizeof(int32_t), value2_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vi32(indent+2, sizeof(value3_) / sizeof(int32_t), value3_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 575 "../test/arm/neon/test-neon.h" 3 4 stderr # 575 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_i32x2x4_(simde_int32x2x4_t a, simde_int32x2x4_t b, const char* filename, int line, const char* astr, const char* bstr) { int32_t a0_[sizeof(a.val[0]) / sizeof(int32_t)], b0_[sizeof(b.val[0]) / sizeof(int32_t)]; int32_t a1_[sizeof(a.val[1]) / sizeof(int32_t)], b1_[sizeof(b.val[1]) / sizeof(int32_t)]; int32_t a2_[sizeof(a.val[2]) / sizeof(int32_t)], b2_[sizeof(b.val[2]) / sizeof(int32_t)]; int32_t a3_[sizeof(a.val[3]) / sizeof(int32_t)], b3_[sizeof(b.val[3]) / sizeof(int32_t)]; simde_vst1_s32(a0_, a.val[0]); simde_vst1_s32(b0_, b.val[0]); simde_vst1_s32(a1_, a.val[1]); simde_vst1_s32(b1_, b.val[1]); simde_vst1_s32(a2_, a.val[2]); simde_vst1_s32(b2_, b.val[2]); simde_vst1_s32(a3_, a.val[3]); simde_vst1_s32(b3_, b.val[3]); return simde_assert_equal_vi32_(2, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vi32_(2, a1_, b1_, filename, line, astr, bstr) && simde_assert_equal_vi32_(2, a2_, b2_, filename, line, astr, bstr) && simde_assert_equal_vi32_(2, a3_, b3_, filename, line, astr, bstr); } static simde_int64x1x4_t simde_test_arm_neon_random_i64x1x4(void) { simde_int64x1x4_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_i64x1x4(int indent, simde_int64x1x4_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 576 "../test/arm/neon/test-neon.h" 3 4 stderr # 576 "../test/arm/neon/test-neon.h" ); } int64_t value0_[sizeof(value) / sizeof(int64_t) / 4]; int64_t value1_[sizeof(value) / sizeof(int64_t) / 4]; int64_t value2_[sizeof(value) / sizeof(int64_t) / 4]; int64_t value3_[sizeof(value) / sizeof(int64_t) / 4]; simde_vst1_s64(value0_, value.val[0]); simde_vst1_s64(value1_, value.val[1]); simde_vst1_s64(value2_, value.val[2]); simde_vst1_s64(value3_, value.val[3]); simde_test_codegen_write_vi64(indent+2, sizeof(value0_) / sizeof(int64_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vi64(indent+2, sizeof(value1_) / sizeof(int64_t), value1_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vi64(indent+2, sizeof(value2_) / sizeof(int64_t), value2_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vi64(indent+2, sizeof(value3_) / sizeof(int64_t), value3_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 576 "../test/arm/neon/test-neon.h" 3 4 stderr # 576 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_i64x1x4_(simde_int64x1x4_t a, simde_int64x1x4_t b, const char* filename, int line, const char* astr, const char* bstr) { int64_t a0_[sizeof(a.val[0]) / sizeof(int64_t)], b0_[sizeof(b.val[0]) / sizeof(int64_t)]; int64_t a1_[sizeof(a.val[1]) / sizeof(int64_t)], b1_[sizeof(b.val[1]) / sizeof(int64_t)]; int64_t a2_[sizeof(a.val[2]) / sizeof(int64_t)], b2_[sizeof(b.val[2]) / sizeof(int64_t)]; int64_t a3_[sizeof(a.val[3]) / sizeof(int64_t)], b3_[sizeof(b.val[3]) / sizeof(int64_t)]; simde_vst1_s64(a0_, a.val[0]); simde_vst1_s64(b0_, b.val[0]); simde_vst1_s64(a1_, a.val[1]); simde_vst1_s64(b1_, b.val[1]); simde_vst1_s64(a2_, a.val[2]); simde_vst1_s64(b2_, b.val[2]); simde_vst1_s64(a3_, a.val[3]); simde_vst1_s64(b3_, b.val[3]); return simde_assert_equal_vi64_(1, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vi64_(1, a1_, b1_, filename, line, astr, bstr) && simde_assert_equal_vi64_(1, a2_, b2_, filename, line, astr, bstr) && simde_assert_equal_vi64_(1, a3_, b3_, filename, line, astr, bstr); } static simde_uint8x8x4_t simde_test_arm_neon_random_u8x8x4(void) { simde_uint8x8x4_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_u8x8x4(int indent, simde_uint8x8x4_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 577 "../test/arm/neon/test-neon.h" 3 4 stderr # 577 "../test/arm/neon/test-neon.h" ); } uint8_t value0_[sizeof(value) / sizeof(uint8_t) / 4]; uint8_t value1_[sizeof(value) / sizeof(uint8_t) / 4]; uint8_t value2_[sizeof(value) / sizeof(uint8_t) / 4]; uint8_t value3_[sizeof(value) / sizeof(uint8_t) / 4]; simde_vst1_u8(value0_, value.val[0]); simde_vst1_u8(value1_, value.val[1]); simde_vst1_u8(value2_, value.val[2]); simde_vst1_u8(value3_, value.val[3]); simde_test_codegen_write_vu8(indent+2, sizeof(value0_) / sizeof(uint8_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vu8(indent+2, sizeof(value1_) / sizeof(uint8_t), value1_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vu8(indent+2, sizeof(value2_) / sizeof(uint8_t), value2_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vu8(indent+2, sizeof(value3_) / sizeof(uint8_t), value3_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 577 "../test/arm/neon/test-neon.h" 3 4 stderr # 577 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_u8x8x4_(simde_uint8x8x4_t a, simde_uint8x8x4_t b, const char* filename, int line, const char* astr, const char* bstr) { uint8_t a0_[sizeof(a.val[0]) / sizeof(uint8_t)], b0_[sizeof(b.val[0]) / sizeof(uint8_t)]; uint8_t a1_[sizeof(a.val[1]) / sizeof(uint8_t)], b1_[sizeof(b.val[1]) / sizeof(uint8_t)]; uint8_t a2_[sizeof(a.val[2]) / sizeof(uint8_t)], b2_[sizeof(b.val[2]) / sizeof(uint8_t)]; uint8_t a3_[sizeof(a.val[3]) / sizeof(uint8_t)], b3_[sizeof(b.val[3]) / sizeof(uint8_t)]; simde_vst1_u8(a0_, a.val[0]); simde_vst1_u8(b0_, b.val[0]); simde_vst1_u8(a1_, a.val[1]); simde_vst1_u8(b1_, b.val[1]); simde_vst1_u8(a2_, a.val[2]); simde_vst1_u8(b2_, b.val[2]); simde_vst1_u8(a3_, a.val[3]); simde_vst1_u8(b3_, b.val[3]); return simde_assert_equal_vu8_(8, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vu8_(8, a1_, b1_, filename, line, astr, bstr) && simde_assert_equal_vu8_(8, a2_, b2_, filename, line, astr, bstr) && simde_assert_equal_vu8_(8, a3_, b3_, filename, line, astr, bstr); } static simde_uint16x4x4_t simde_test_arm_neon_random_u16x4x4(void) { simde_uint16x4x4_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_u16x4x4(int indent, simde_uint16x4x4_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 578 "../test/arm/neon/test-neon.h" 3 4 stderr # 578 "../test/arm/neon/test-neon.h" ); } uint16_t value0_[sizeof(value) / sizeof(uint16_t) / 4]; uint16_t value1_[sizeof(value) / sizeof(uint16_t) / 4]; uint16_t value2_[sizeof(value) / sizeof(uint16_t) / 4]; uint16_t value3_[sizeof(value) / sizeof(uint16_t) / 4]; simde_vst1_u16(value0_, value.val[0]); simde_vst1_u16(value1_, value.val[1]); simde_vst1_u16(value2_, value.val[2]); simde_vst1_u16(value3_, value.val[3]); simde_test_codegen_write_vu16(indent+2, sizeof(value0_) / sizeof(uint16_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vu16(indent+2, sizeof(value1_) / sizeof(uint16_t), value1_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vu16(indent+2, sizeof(value2_) / sizeof(uint16_t), value2_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vu16(indent+2, sizeof(value3_) / sizeof(uint16_t), value3_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 578 "../test/arm/neon/test-neon.h" 3 4 stderr # 578 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_u16x4x4_(simde_uint16x4x4_t a, simde_uint16x4x4_t b, const char* filename, int line, const char* astr, const char* bstr) { uint16_t a0_[sizeof(a.val[0]) / sizeof(uint16_t)], b0_[sizeof(b.val[0]) / sizeof(uint16_t)]; uint16_t a1_[sizeof(a.val[1]) / sizeof(uint16_t)], b1_[sizeof(b.val[1]) / sizeof(uint16_t)]; uint16_t a2_[sizeof(a.val[2]) / sizeof(uint16_t)], b2_[sizeof(b.val[2]) / sizeof(uint16_t)]; uint16_t a3_[sizeof(a.val[3]) / sizeof(uint16_t)], b3_[sizeof(b.val[3]) / sizeof(uint16_t)]; simde_vst1_u16(a0_, a.val[0]); simde_vst1_u16(b0_, b.val[0]); simde_vst1_u16(a1_, a.val[1]); simde_vst1_u16(b1_, b.val[1]); simde_vst1_u16(a2_, a.val[2]); simde_vst1_u16(b2_, b.val[2]); simde_vst1_u16(a3_, a.val[3]); simde_vst1_u16(b3_, b.val[3]); return simde_assert_equal_vu16_(4, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vu16_(4, a1_, b1_, filename, line, astr, bstr) && simde_assert_equal_vu16_(4, a2_, b2_, filename, line, astr, bstr) && simde_assert_equal_vu16_(4, a3_, b3_, filename, line, astr, bstr); } static simde_uint32x2x4_t simde_test_arm_neon_random_u32x2x4(void) { simde_uint32x2x4_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_u32x2x4(int indent, simde_uint32x2x4_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 579 "../test/arm/neon/test-neon.h" 3 4 stderr # 579 "../test/arm/neon/test-neon.h" ); } uint32_t value0_[sizeof(value) / sizeof(uint32_t) / 4]; uint32_t value1_[sizeof(value) / sizeof(uint32_t) / 4]; uint32_t value2_[sizeof(value) / sizeof(uint32_t) / 4]; uint32_t value3_[sizeof(value) / sizeof(uint32_t) / 4]; simde_vst1_u32(value0_, value.val[0]); simde_vst1_u32(value1_, value.val[1]); simde_vst1_u32(value2_, value.val[2]); simde_vst1_u32(value3_, value.val[3]); simde_test_codegen_write_vu32(indent+2, sizeof(value0_) / sizeof(uint32_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vu32(indent+2, sizeof(value1_) / sizeof(uint32_t), value1_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vu32(indent+2, sizeof(value2_) / sizeof(uint32_t), value2_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vu32(indent+2, sizeof(value3_) / sizeof(uint32_t), value3_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 579 "../test/arm/neon/test-neon.h" 3 4 stderr # 579 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_u32x2x4_(simde_uint32x2x4_t a, simde_uint32x2x4_t b, const char* filename, int line, const char* astr, const char* bstr) { uint32_t a0_[sizeof(a.val[0]) / sizeof(uint32_t)], b0_[sizeof(b.val[0]) / sizeof(uint32_t)]; uint32_t a1_[sizeof(a.val[1]) / sizeof(uint32_t)], b1_[sizeof(b.val[1]) / sizeof(uint32_t)]; uint32_t a2_[sizeof(a.val[2]) / sizeof(uint32_t)], b2_[sizeof(b.val[2]) / sizeof(uint32_t)]; uint32_t a3_[sizeof(a.val[3]) / sizeof(uint32_t)], b3_[sizeof(b.val[3]) / sizeof(uint32_t)]; simde_vst1_u32(a0_, a.val[0]); simde_vst1_u32(b0_, b.val[0]); simde_vst1_u32(a1_, a.val[1]); simde_vst1_u32(b1_, b.val[1]); simde_vst1_u32(a2_, a.val[2]); simde_vst1_u32(b2_, b.val[2]); simde_vst1_u32(a3_, a.val[3]); simde_vst1_u32(b3_, b.val[3]); return simde_assert_equal_vu32_(2, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vu32_(2, a1_, b1_, filename, line, astr, bstr) && simde_assert_equal_vu32_(2, a2_, b2_, filename, line, astr, bstr) && simde_assert_equal_vu32_(2, a3_, b3_, filename, line, astr, bstr); } static simde_uint64x1x4_t simde_test_arm_neon_random_u64x1x4(void) { simde_uint64x1x4_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_u64x1x4(int indent, simde_uint64x1x4_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 580 "../test/arm/neon/test-neon.h" 3 4 stderr # 580 "../test/arm/neon/test-neon.h" ); } uint64_t value0_[sizeof(value) / sizeof(uint64_t) / 4]; uint64_t value1_[sizeof(value) / sizeof(uint64_t) / 4]; uint64_t value2_[sizeof(value) / sizeof(uint64_t) / 4]; uint64_t value3_[sizeof(value) / sizeof(uint64_t) / 4]; simde_vst1_u64(value0_, value.val[0]); simde_vst1_u64(value1_, value.val[1]); simde_vst1_u64(value2_, value.val[2]); simde_vst1_u64(value3_, value.val[3]); simde_test_codegen_write_vu64(indent+2, sizeof(value0_) / sizeof(uint64_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vu64(indent+2, sizeof(value1_) / sizeof(uint64_t), value1_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vu64(indent+2, sizeof(value2_) / sizeof(uint64_t), value2_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vu64(indent+2, sizeof(value3_) / sizeof(uint64_t), value3_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 580 "../test/arm/neon/test-neon.h" 3 4 stderr # 580 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_u64x1x4_(simde_uint64x1x4_t a, simde_uint64x1x4_t b, const char* filename, int line, const char* astr, const char* bstr) { uint64_t a0_[sizeof(a.val[0]) / sizeof(uint64_t)], b0_[sizeof(b.val[0]) / sizeof(uint64_t)]; uint64_t a1_[sizeof(a.val[1]) / sizeof(uint64_t)], b1_[sizeof(b.val[1]) / sizeof(uint64_t)]; uint64_t a2_[sizeof(a.val[2]) / sizeof(uint64_t)], b2_[sizeof(b.val[2]) / sizeof(uint64_t)]; uint64_t a3_[sizeof(a.val[3]) / sizeof(uint64_t)], b3_[sizeof(b.val[3]) / sizeof(uint64_t)]; simde_vst1_u64(a0_, a.val[0]); simde_vst1_u64(b0_, b.val[0]); simde_vst1_u64(a1_, a.val[1]); simde_vst1_u64(b1_, b.val[1]); simde_vst1_u64(a2_, a.val[2]); simde_vst1_u64(b2_, b.val[2]); simde_vst1_u64(a3_, a.val[3]); simde_vst1_u64(b3_, b.val[3]); return simde_assert_equal_vu64_(1, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vu64_(1, a1_, b1_, filename, line, astr, bstr) && simde_assert_equal_vu64_(1, a2_, b2_, filename, line, astr, bstr) && simde_assert_equal_vu64_(1, a3_, b3_, filename, line, astr, bstr); } static simde_float32x2x4_t simde_test_arm_neon_random_f32x2x4(simde_float32_t min, simde_float32_t max) { simde_float32 v0[sizeof(simde_float32x2x4_t) / sizeof(simde_float32_t) / 4]; simde_float32 v1[sizeof(simde_float32x2x4_t) / sizeof(simde_float32_t) / 4]; simde_float32 v2[sizeof(simde_float32x2x4_t) / sizeof(simde_float32_t) / 4]; simde_float32 v3[sizeof(simde_float32x2x4_t) / sizeof(simde_float32_t) / 4]; simde_test_codegen_random_vf32(sizeof(v0) / sizeof(v0[0]), v0, ((simde_float32) (min)), ((simde_float32) (max))); simde_test_codegen_random_vf32(sizeof(v1) / sizeof(v1[0]), v1, ((simde_float32) (min)), ((simde_float32) (max))); simde_test_codegen_random_vf32(sizeof(v2) / sizeof(v2[0]), v2, ((simde_float32) (min)), ((simde_float32) (max))); simde_test_codegen_random_vf32(sizeof(v3) / sizeof(v3[0]), v3, ((simde_float32) (min)), ((simde_float32) (max))); simde_float32x2x4_t r; r.val[0] = simde_vld1_f32(((simde_float32_t*) (v0))); r.val[1] = simde_vld1_f32(((simde_float32_t*) (v1))); r.val[2] = simde_vld1_f32(((simde_float32_t*) (v2))); r.val[3] = simde_vld1_f32(((simde_float32_t*) (v3))); return r; } static void simde_test_arm_neon_write_f32x2x4(int indent, simde_float32x2x4_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 581 "../test/arm/neon/test-neon.h" 3 4 stderr # 581 "../test/arm/neon/test-neon.h" ); } simde_float32_t value0_[sizeof(value) / sizeof(simde_float32_t) / 4]; simde_float32_t value1_[sizeof(value) / sizeof(simde_float32_t) / 4]; simde_float32_t value2_[sizeof(value) / sizeof(simde_float32_t) / 4]; simde_float32_t value3_[sizeof(value) / sizeof(simde_float32_t) / 4]; simde_vst1_f32(value0_, value.val[0]); simde_vst1_f32(value1_, value.val[1]); simde_vst1_f32(value2_, value.val[2]); simde_vst1_f32(value3_, value.val[3]); simde_test_codegen_write_vf32(indent + 2, sizeof(value0_) / sizeof(value0_[0]), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vf32(indent + 2, sizeof(value1_) / sizeof(value1_[0]), value1_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vf32(indent + 2, sizeof(value2_) / sizeof(value2_[0]), value2_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vf32(indent + 2, sizeof(value3_) / sizeof(value3_[0]), value3_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 581 "../test/arm/neon/test-neon.h" 3 4 stderr # 581 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_f32x2x4_(simde_float32x2x4_t a, simde_float32x2x4_t b, simde_float32_t slop, const char* filename, int line, const char* astr, const char* bstr) { simde_float32 a0_[sizeof(a.val[0]) / sizeof(simde_float32_t)], b0_[sizeof(b.val[0]) / sizeof(simde_float32_t)]; simde_float32 a1_[sizeof(a.val[1]) / sizeof(simde_float32_t)], b1_[sizeof(b.val[1]) / sizeof(simde_float32_t)]; simde_float32 a2_[sizeof(a.val[2]) / sizeof(simde_float32_t)], b2_[sizeof(b.val[2]) / sizeof(simde_float32_t)]; simde_float32 a3_[sizeof(a.val[3]) / sizeof(simde_float32_t)], b3_[sizeof(b.val[3]) / sizeof(simde_float32_t)]; simde_vst1_f32(a0_, a.val[0]); simde_vst1_f32(b0_, b.val[0]); simde_vst1_f32(a1_, a.val[1]); simde_vst1_f32(b1_, b.val[1]); simde_vst1_f32(a2_, a.val[2]); simde_vst1_f32(b2_, b.val[2]); simde_vst1_f32(a3_, a.val[3]); simde_vst1_f32(b3_, b.val[3]); return simde_assert_equal_vf32_(2, ((simde_float32*) (a0_)), ((simde_float32*) (b0_)), slop, filename, line, astr, bstr) && simde_assert_equal_vf32_(2, ((simde_float32*) (a1_)), ((simde_float32*) (b1_)), slop, filename, line, astr, bstr) && simde_assert_equal_vf32_(2, ((simde_float32*) (a2_)), ((simde_float32*) (b2_)), slop, filename, line, astr, bstr) && simde_assert_equal_vf32_(2, ((simde_float32*) (a3_)), ((simde_float32*) (b3_)), slop, filename, line, astr, bstr); } static simde_float64x1x4_t simde_test_arm_neon_random_f64x1x4(simde_float64_t min, simde_float64_t max) { simde_float64 v0[sizeof(simde_float64x1x4_t) / sizeof(simde_float64_t) / 4]; simde_float64 v1[sizeof(simde_float64x1x4_t) / sizeof(simde_float64_t) / 4]; simde_float64 v2[sizeof(simde_float64x1x4_t) / sizeof(simde_float64_t) / 4]; simde_float64 v3[sizeof(simde_float64x1x4_t) / sizeof(simde_float64_t) / 4]; simde_test_codegen_random_vf64(sizeof(v0) / sizeof(v0[0]), v0, ((simde_float64) (min)), ((simde_float64) (max))); simde_test_codegen_random_vf64(sizeof(v1) / sizeof(v1[0]), v1, ((simde_float64) (min)), ((simde_float64) (max))); simde_test_codegen_random_vf64(sizeof(v2) / sizeof(v2[0]), v2, ((simde_float64) (min)), ((simde_float64) (max))); simde_test_codegen_random_vf64(sizeof(v3) / sizeof(v3[0]), v3, ((simde_float64) (min)), ((simde_float64) (max))); simde_float64x1x4_t r; r.val[0] = simde_vld1_f64(((simde_float64_t*) (v0))); r.val[1] = simde_vld1_f64(((simde_float64_t*) (v1))); r.val[2] = simde_vld1_f64(((simde_float64_t*) (v2))); r.val[3] = simde_vld1_f64(((simde_float64_t*) (v3))); return r; } static void simde_test_arm_neon_write_f64x1x4(int indent, simde_float64x1x4_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 582 "../test/arm/neon/test-neon.h" 3 4 stderr # 582 "../test/arm/neon/test-neon.h" ); } simde_float64_t value0_[sizeof(value) / sizeof(simde_float64_t) / 4]; simde_float64_t value1_[sizeof(value) / sizeof(simde_float64_t) / 4]; simde_float64_t value2_[sizeof(value) / sizeof(simde_float64_t) / 4]; simde_float64_t value3_[sizeof(value) / sizeof(simde_float64_t) / 4]; simde_vst1_f64(value0_, value.val[0]); simde_vst1_f64(value1_, value.val[1]); simde_vst1_f64(value2_, value.val[2]); simde_vst1_f64(value3_, value.val[3]); simde_test_codegen_write_vf64(indent + 2, sizeof(value0_) / sizeof(value0_[0]), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vf64(indent + 2, sizeof(value1_) / sizeof(value1_[0]), value1_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vf64(indent + 2, sizeof(value2_) / sizeof(value2_[0]), value2_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vf64(indent + 2, sizeof(value3_) / sizeof(value3_[0]), value3_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 582 "../test/arm/neon/test-neon.h" 3 4 stderr # 582 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_f64x1x4_(simde_float64x1x4_t a, simde_float64x1x4_t b, simde_float64_t slop, const char* filename, int line, const char* astr, const char* bstr) { simde_float64 a0_[sizeof(a.val[0]) / sizeof(simde_float64_t)], b0_[sizeof(b.val[0]) / sizeof(simde_float64_t)]; simde_float64 a1_[sizeof(a.val[1]) / sizeof(simde_float64_t)], b1_[sizeof(b.val[1]) / sizeof(simde_float64_t)]; simde_float64 a2_[sizeof(a.val[2]) / sizeof(simde_float64_t)], b2_[sizeof(b.val[2]) / sizeof(simde_float64_t)]; simde_float64 a3_[sizeof(a.val[3]) / sizeof(simde_float64_t)], b3_[sizeof(b.val[3]) / sizeof(simde_float64_t)]; simde_vst1_f64(a0_, a.val[0]); simde_vst1_f64(b0_, b.val[0]); simde_vst1_f64(a1_, a.val[1]); simde_vst1_f64(b1_, b.val[1]); simde_vst1_f64(a2_, a.val[2]); simde_vst1_f64(b2_, b.val[2]); simde_vst1_f64(a3_, a.val[3]); simde_vst1_f64(b3_, b.val[3]); return simde_assert_equal_vf64_(1, ((simde_float64*) (a0_)), ((simde_float64*) (b0_)), slop, filename, line, astr, bstr) && simde_assert_equal_vf64_(1, ((simde_float64*) (a1_)), ((simde_float64*) (b1_)), slop, filename, line, astr, bstr) && simde_assert_equal_vf64_(1, ((simde_float64*) (a2_)), ((simde_float64*) (b2_)), slop, filename, line, astr, bstr) && simde_assert_equal_vf64_(1, ((simde_float64*) (a3_)), ((simde_float64*) (b3_)), slop, filename, line, astr, bstr); } static simde_poly8x8x4_t simde_test_arm_neon_random_p8x8x4(void) { simde_poly8x8x4_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_p8x8x4(int indent, simde_poly8x8x4_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 583 "../test/arm/neon/test-neon.h" 3 4 stderr # 583 "../test/arm/neon/test-neon.h" ); } simde_poly8_t value0_[sizeof(value) / sizeof(simde_poly8_t) / 4]; simde_poly8_t value1_[sizeof(value) / sizeof(simde_poly8_t) / 4]; simde_poly8_t value2_[sizeof(value) / sizeof(simde_poly8_t) / 4]; simde_poly8_t value3_[sizeof(value) / sizeof(simde_poly8_t) / 4]; simde_vst1_p8(value0_, value.val[0]); simde_vst1_p8(value1_, value.val[1]); simde_vst1_p8(value2_, value.val[2]); simde_vst1_p8(value3_, value.val[3]); simde_test_codegen_write_vp8(indent+2, sizeof(value0_) / sizeof(simde_poly8_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vp8(indent+2, sizeof(value1_) / sizeof(simde_poly8_t), value1_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vp8(indent+2, sizeof(value2_) / sizeof(simde_poly8_t), value2_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vp8(indent+2, sizeof(value3_) / sizeof(simde_poly8_t), value3_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 583 "../test/arm/neon/test-neon.h" 3 4 stderr # 583 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_p8x8x4_(simde_poly8x8x4_t a, simde_poly8x8x4_t b, const char* filename, int line, const char* astr, const char* bstr) { simde_poly8_t a0_[sizeof(a.val[0]) / sizeof(simde_poly8_t)], b0_[sizeof(b.val[0]) / sizeof(simde_poly8_t)]; simde_poly8_t a1_[sizeof(a.val[1]) / sizeof(simde_poly8_t)], b1_[sizeof(b.val[1]) / sizeof(simde_poly8_t)]; simde_poly8_t a2_[sizeof(a.val[2]) / sizeof(simde_poly8_t)], b2_[sizeof(b.val[2]) / sizeof(simde_poly8_t)]; simde_poly8_t a3_[sizeof(a.val[3]) / sizeof(simde_poly8_t)], b3_[sizeof(b.val[3]) / sizeof(simde_poly8_t)]; simde_vst1_p8(a0_, a.val[0]); simde_vst1_p8(b0_, b.val[0]); simde_vst1_p8(a1_, a.val[1]); simde_vst1_p8(b1_, b.val[1]); simde_vst1_p8(a2_, a.val[2]); simde_vst1_p8(b2_, b.val[2]); simde_vst1_p8(a3_, a.val[3]); simde_vst1_p8(b3_, b.val[3]); return simde_assert_equal_vp8_(8, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vp8_(8, a1_, b1_, filename, line, astr, bstr) && simde_assert_equal_vp8_(8, a2_, b2_, filename, line, astr, bstr) && simde_assert_equal_vp8_(8, a3_, b3_, filename, line, astr, bstr); } static simde_poly16x4x4_t simde_test_arm_neon_random_p16x4x4(void) { simde_poly16x4x4_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_p16x4x4(int indent, simde_poly16x4x4_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 584 "../test/arm/neon/test-neon.h" 3 4 stderr # 584 "../test/arm/neon/test-neon.h" ); } simde_poly16_t value0_[sizeof(value) / sizeof(simde_poly16_t) / 4]; simde_poly16_t value1_[sizeof(value) / sizeof(simde_poly16_t) / 4]; simde_poly16_t value2_[sizeof(value) / sizeof(simde_poly16_t) / 4]; simde_poly16_t value3_[sizeof(value) / sizeof(simde_poly16_t) / 4]; simde_vst1_p16(value0_, value.val[0]); simde_vst1_p16(value1_, value.val[1]); simde_vst1_p16(value2_, value.val[2]); simde_vst1_p16(value3_, value.val[3]); simde_test_codegen_write_vp16(indent+2, sizeof(value0_) / sizeof(simde_poly16_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vp16(indent+2, sizeof(value1_) / sizeof(simde_poly16_t), value1_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vp16(indent+2, sizeof(value2_) / sizeof(simde_poly16_t), value2_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vp16(indent+2, sizeof(value3_) / sizeof(simde_poly16_t), value3_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 584 "../test/arm/neon/test-neon.h" 3 4 stderr # 584 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_p16x4x4_(simde_poly16x4x4_t a, simde_poly16x4x4_t b, const char* filename, int line, const char* astr, const char* bstr) { simde_poly16_t a0_[sizeof(a.val[0]) / sizeof(simde_poly16_t)], b0_[sizeof(b.val[0]) / sizeof(simde_poly16_t)]; simde_poly16_t a1_[sizeof(a.val[1]) / sizeof(simde_poly16_t)], b1_[sizeof(b.val[1]) / sizeof(simde_poly16_t)]; simde_poly16_t a2_[sizeof(a.val[2]) / sizeof(simde_poly16_t)], b2_[sizeof(b.val[2]) / sizeof(simde_poly16_t)]; simde_poly16_t a3_[sizeof(a.val[3]) / sizeof(simde_poly16_t)], b3_[sizeof(b.val[3]) / sizeof(simde_poly16_t)]; simde_vst1_p16(a0_, a.val[0]); simde_vst1_p16(b0_, b.val[0]); simde_vst1_p16(a1_, a.val[1]); simde_vst1_p16(b1_, b.val[1]); simde_vst1_p16(a2_, a.val[2]); simde_vst1_p16(b2_, b.val[2]); simde_vst1_p16(a3_, a.val[3]); simde_vst1_p16(b3_, b.val[3]); return simde_assert_equal_vp16_(4, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vp16_(4, a1_, b1_, filename, line, astr, bstr) && simde_assert_equal_vp16_(4, a2_, b2_, filename, line, astr, bstr) && simde_assert_equal_vp16_(4, a3_, b3_, filename, line, astr, bstr); } static simde_poly64x1x4_t simde_test_arm_neon_random_p64x1x4(void) { simde_poly64x1x4_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_p64x1x4(int indent, simde_poly64x1x4_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 585 "../test/arm/neon/test-neon.h" 3 4 stderr # 585 "../test/arm/neon/test-neon.h" ); } simde_poly64_t value0_[sizeof(value) / sizeof(simde_poly64_t) / 4]; simde_poly64_t value1_[sizeof(value) / sizeof(simde_poly64_t) / 4]; simde_poly64_t value2_[sizeof(value) / sizeof(simde_poly64_t) / 4]; simde_poly64_t value3_[sizeof(value) / sizeof(simde_poly64_t) / 4]; simde_vst1_p64(value0_, value.val[0]); simde_vst1_p64(value1_, value.val[1]); simde_vst1_p64(value2_, value.val[2]); simde_vst1_p64(value3_, value.val[3]); simde_test_codegen_write_vp64(indent+2, sizeof(value0_) / sizeof(simde_poly64_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vp64(indent+2, sizeof(value1_) / sizeof(simde_poly64_t), value1_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vp64(indent+2, sizeof(value2_) / sizeof(simde_poly64_t), value2_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vp64(indent+2, sizeof(value3_) / sizeof(simde_poly64_t), value3_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 585 "../test/arm/neon/test-neon.h" 3 4 stderr # 585 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_p64x1x4_(simde_poly64x1x4_t a, simde_poly64x1x4_t b, const char* filename, int line, const char* astr, const char* bstr) { simde_poly64_t a0_[sizeof(a.val[0]) / sizeof(simde_poly64_t)], b0_[sizeof(b.val[0]) / sizeof(simde_poly64_t)]; simde_poly64_t a1_[sizeof(a.val[1]) / sizeof(simde_poly64_t)], b1_[sizeof(b.val[1]) / sizeof(simde_poly64_t)]; simde_poly64_t a2_[sizeof(a.val[2]) / sizeof(simde_poly64_t)], b2_[sizeof(b.val[2]) / sizeof(simde_poly64_t)]; simde_poly64_t a3_[sizeof(a.val[3]) / sizeof(simde_poly64_t)], b3_[sizeof(b.val[3]) / sizeof(simde_poly64_t)]; simde_vst1_p64(a0_, a.val[0]); simde_vst1_p64(b0_, b.val[0]); simde_vst1_p64(a1_, a.val[1]); simde_vst1_p64(b1_, b.val[1]); simde_vst1_p64(a2_, a.val[2]); simde_vst1_p64(b2_, b.val[2]); simde_vst1_p64(a3_, a.val[3]); simde_vst1_p64(b3_, b.val[3]); return simde_assert_equal_vp64_(1, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vp64_(1, a1_, b1_, filename, line, astr, bstr) && simde_assert_equal_vp64_(1, a2_, b2_, filename, line, astr, bstr) && simde_assert_equal_vp64_(1, a3_, b3_, filename, line, astr, bstr); } static simde_int8x16x4_t simde_test_arm_neon_random_i8x16x4(void) { simde_int8x16x4_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_i8x16x4(int indent, simde_int8x16x4_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 587 "../test/arm/neon/test-neon.h" 3 4 stderr # 587 "../test/arm/neon/test-neon.h" ); } int8_t value0_[sizeof(value) / sizeof(int8_t) / 4]; int8_t value1_[sizeof(value) / sizeof(int8_t) / 4]; int8_t value2_[sizeof(value) / sizeof(int8_t) / 4]; int8_t value3_[sizeof(value) / sizeof(int8_t) / 4]; simde_vst1q_s8(value0_, value.val[0]); simde_vst1q_s8(value1_, value.val[1]); simde_vst1q_s8(value2_, value.val[2]); simde_vst1q_s8(value3_, value.val[3]); simde_test_codegen_write_vi8(indent+2, sizeof(value0_) / sizeof(int8_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vi8(indent+2, sizeof(value1_) / sizeof(int8_t), value1_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vi8(indent+2, sizeof(value2_) / sizeof(int8_t), value2_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vi8(indent+2, sizeof(value3_) / sizeof(int8_t), value3_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 587 "../test/arm/neon/test-neon.h" 3 4 stderr # 587 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_i8x16x4_(simde_int8x16x4_t a, simde_int8x16x4_t b, const char* filename, int line, const char* astr, const char* bstr) { int8_t a0_[sizeof(a.val[0]) / sizeof(int8_t)], b0_[sizeof(b.val[0]) / sizeof(int8_t)]; int8_t a1_[sizeof(a.val[1]) / sizeof(int8_t)], b1_[sizeof(b.val[1]) / sizeof(int8_t)]; int8_t a2_[sizeof(a.val[2]) / sizeof(int8_t)], b2_[sizeof(b.val[2]) / sizeof(int8_t)]; int8_t a3_[sizeof(a.val[3]) / sizeof(int8_t)], b3_[sizeof(b.val[3]) / sizeof(int8_t)]; simde_vst1q_s8(a0_, a.val[0]); simde_vst1q_s8(b0_, b.val[0]); simde_vst1q_s8(a1_, a.val[1]); simde_vst1q_s8(b1_, b.val[1]); simde_vst1q_s8(a2_, a.val[2]); simde_vst1q_s8(b2_, b.val[2]); simde_vst1q_s8(a3_, a.val[3]); simde_vst1q_s8(b3_, b.val[3]); return simde_assert_equal_vi8_(16, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vi8_(16, a1_, b1_, filename, line, astr, bstr) && simde_assert_equal_vi8_(16, a2_, b2_, filename, line, astr, bstr) && simde_assert_equal_vi8_(16, a3_, b3_, filename, line, astr, bstr); } static simde_int16x8x4_t simde_test_arm_neon_random_i16x8x4(void) { simde_int16x8x4_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_i16x8x4(int indent, simde_int16x8x4_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 588 "../test/arm/neon/test-neon.h" 3 4 stderr # 588 "../test/arm/neon/test-neon.h" ); } int16_t value0_[sizeof(value) / sizeof(int16_t) / 4]; int16_t value1_[sizeof(value) / sizeof(int16_t) / 4]; int16_t value2_[sizeof(value) / sizeof(int16_t) / 4]; int16_t value3_[sizeof(value) / sizeof(int16_t) / 4]; simde_vst1q_s16(value0_, value.val[0]); simde_vst1q_s16(value1_, value.val[1]); simde_vst1q_s16(value2_, value.val[2]); simde_vst1q_s16(value3_, value.val[3]); simde_test_codegen_write_vi16(indent+2, sizeof(value0_) / sizeof(int16_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vi16(indent+2, sizeof(value1_) / sizeof(int16_t), value1_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vi16(indent+2, sizeof(value2_) / sizeof(int16_t), value2_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vi16(indent+2, sizeof(value3_) / sizeof(int16_t), value3_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 588 "../test/arm/neon/test-neon.h" 3 4 stderr # 588 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_i16x8x4_(simde_int16x8x4_t a, simde_int16x8x4_t b, const char* filename, int line, const char* astr, const char* bstr) { int16_t a0_[sizeof(a.val[0]) / sizeof(int16_t)], b0_[sizeof(b.val[0]) / sizeof(int16_t)]; int16_t a1_[sizeof(a.val[1]) / sizeof(int16_t)], b1_[sizeof(b.val[1]) / sizeof(int16_t)]; int16_t a2_[sizeof(a.val[2]) / sizeof(int16_t)], b2_[sizeof(b.val[2]) / sizeof(int16_t)]; int16_t a3_[sizeof(a.val[3]) / sizeof(int16_t)], b3_[sizeof(b.val[3]) / sizeof(int16_t)]; simde_vst1q_s16(a0_, a.val[0]); simde_vst1q_s16(b0_, b.val[0]); simde_vst1q_s16(a1_, a.val[1]); simde_vst1q_s16(b1_, b.val[1]); simde_vst1q_s16(a2_, a.val[2]); simde_vst1q_s16(b2_, b.val[2]); simde_vst1q_s16(a3_, a.val[3]); simde_vst1q_s16(b3_, b.val[3]); return simde_assert_equal_vi16_(8, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vi16_(8, a1_, b1_, filename, line, astr, bstr) && simde_assert_equal_vi16_(8, a2_, b2_, filename, line, astr, bstr) && simde_assert_equal_vi16_(8, a3_, b3_, filename, line, astr, bstr); } static simde_int32x4x4_t simde_test_arm_neon_random_i32x4x4(void) { simde_int32x4x4_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_i32x4x4(int indent, simde_int32x4x4_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 589 "../test/arm/neon/test-neon.h" 3 4 stderr # 589 "../test/arm/neon/test-neon.h" ); } int32_t value0_[sizeof(value) / sizeof(int32_t) / 4]; int32_t value1_[sizeof(value) / sizeof(int32_t) / 4]; int32_t value2_[sizeof(value) / sizeof(int32_t) / 4]; int32_t value3_[sizeof(value) / sizeof(int32_t) / 4]; simde_vst1q_s32(value0_, value.val[0]); simde_vst1q_s32(value1_, value.val[1]); simde_vst1q_s32(value2_, value.val[2]); simde_vst1q_s32(value3_, value.val[3]); simde_test_codegen_write_vi32(indent+2, sizeof(value0_) / sizeof(int32_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vi32(indent+2, sizeof(value1_) / sizeof(int32_t), value1_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vi32(indent+2, sizeof(value2_) / sizeof(int32_t), value2_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vi32(indent+2, sizeof(value3_) / sizeof(int32_t), value3_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 589 "../test/arm/neon/test-neon.h" 3 4 stderr # 589 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_i32x4x4_(simde_int32x4x4_t a, simde_int32x4x4_t b, const char* filename, int line, const char* astr, const char* bstr) { int32_t a0_[sizeof(a.val[0]) / sizeof(int32_t)], b0_[sizeof(b.val[0]) / sizeof(int32_t)]; int32_t a1_[sizeof(a.val[1]) / sizeof(int32_t)], b1_[sizeof(b.val[1]) / sizeof(int32_t)]; int32_t a2_[sizeof(a.val[2]) / sizeof(int32_t)], b2_[sizeof(b.val[2]) / sizeof(int32_t)]; int32_t a3_[sizeof(a.val[3]) / sizeof(int32_t)], b3_[sizeof(b.val[3]) / sizeof(int32_t)]; simde_vst1q_s32(a0_, a.val[0]); simde_vst1q_s32(b0_, b.val[0]); simde_vst1q_s32(a1_, a.val[1]); simde_vst1q_s32(b1_, b.val[1]); simde_vst1q_s32(a2_, a.val[2]); simde_vst1q_s32(b2_, b.val[2]); simde_vst1q_s32(a3_, a.val[3]); simde_vst1q_s32(b3_, b.val[3]); return simde_assert_equal_vi32_(4, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vi32_(4, a1_, b1_, filename, line, astr, bstr) && simde_assert_equal_vi32_(4, a2_, b2_, filename, line, astr, bstr) && simde_assert_equal_vi32_(4, a3_, b3_, filename, line, astr, bstr); } static simde_int64x2x4_t simde_test_arm_neon_random_i64x2x4(void) { simde_int64x2x4_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_i64x2x4(int indent, simde_int64x2x4_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 590 "../test/arm/neon/test-neon.h" 3 4 stderr # 590 "../test/arm/neon/test-neon.h" ); } int64_t value0_[sizeof(value) / sizeof(int64_t) / 4]; int64_t value1_[sizeof(value) / sizeof(int64_t) / 4]; int64_t value2_[sizeof(value) / sizeof(int64_t) / 4]; int64_t value3_[sizeof(value) / sizeof(int64_t) / 4]; simde_vst1q_s64(value0_, value.val[0]); simde_vst1q_s64(value1_, value.val[1]); simde_vst1q_s64(value2_, value.val[2]); simde_vst1q_s64(value3_, value.val[3]); simde_test_codegen_write_vi64(indent+2, sizeof(value0_) / sizeof(int64_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vi64(indent+2, sizeof(value1_) / sizeof(int64_t), value1_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vi64(indent+2, sizeof(value2_) / sizeof(int64_t), value2_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vi64(indent+2, sizeof(value3_) / sizeof(int64_t), value3_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 590 "../test/arm/neon/test-neon.h" 3 4 stderr # 590 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_i64x2x4_(simde_int64x2x4_t a, simde_int64x2x4_t b, const char* filename, int line, const char* astr, const char* bstr) { int64_t a0_[sizeof(a.val[0]) / sizeof(int64_t)], b0_[sizeof(b.val[0]) / sizeof(int64_t)]; int64_t a1_[sizeof(a.val[1]) / sizeof(int64_t)], b1_[sizeof(b.val[1]) / sizeof(int64_t)]; int64_t a2_[sizeof(a.val[2]) / sizeof(int64_t)], b2_[sizeof(b.val[2]) / sizeof(int64_t)]; int64_t a3_[sizeof(a.val[3]) / sizeof(int64_t)], b3_[sizeof(b.val[3]) / sizeof(int64_t)]; simde_vst1q_s64(a0_, a.val[0]); simde_vst1q_s64(b0_, b.val[0]); simde_vst1q_s64(a1_, a.val[1]); simde_vst1q_s64(b1_, b.val[1]); simde_vst1q_s64(a2_, a.val[2]); simde_vst1q_s64(b2_, b.val[2]); simde_vst1q_s64(a3_, a.val[3]); simde_vst1q_s64(b3_, b.val[3]); return simde_assert_equal_vi64_(2, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vi64_(2, a1_, b1_, filename, line, astr, bstr) && simde_assert_equal_vi64_(2, a2_, b2_, filename, line, astr, bstr) && simde_assert_equal_vi64_(2, a3_, b3_, filename, line, astr, bstr); } static simde_uint8x16x4_t simde_test_arm_neon_random_u8x16x4(void) { simde_uint8x16x4_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_u8x16x4(int indent, simde_uint8x16x4_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 591 "../test/arm/neon/test-neon.h" 3 4 stderr # 591 "../test/arm/neon/test-neon.h" ); } uint8_t value0_[sizeof(value) / sizeof(uint8_t) / 4]; uint8_t value1_[sizeof(value) / sizeof(uint8_t) / 4]; uint8_t value2_[sizeof(value) / sizeof(uint8_t) / 4]; uint8_t value3_[sizeof(value) / sizeof(uint8_t) / 4]; simde_vst1q_u8(value0_, value.val[0]); simde_vst1q_u8(value1_, value.val[1]); simde_vst1q_u8(value2_, value.val[2]); simde_vst1q_u8(value3_, value.val[3]); simde_test_codegen_write_vu8(indent+2, sizeof(value0_) / sizeof(uint8_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vu8(indent+2, sizeof(value1_) / sizeof(uint8_t), value1_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vu8(indent+2, sizeof(value2_) / sizeof(uint8_t), value2_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vu8(indent+2, sizeof(value3_) / sizeof(uint8_t), value3_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 591 "../test/arm/neon/test-neon.h" 3 4 stderr # 591 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_u8x16x4_(simde_uint8x16x4_t a, simde_uint8x16x4_t b, const char* filename, int line, const char* astr, const char* bstr) { uint8_t a0_[sizeof(a.val[0]) / sizeof(uint8_t)], b0_[sizeof(b.val[0]) / sizeof(uint8_t)]; uint8_t a1_[sizeof(a.val[1]) / sizeof(uint8_t)], b1_[sizeof(b.val[1]) / sizeof(uint8_t)]; uint8_t a2_[sizeof(a.val[2]) / sizeof(uint8_t)], b2_[sizeof(b.val[2]) / sizeof(uint8_t)]; uint8_t a3_[sizeof(a.val[3]) / sizeof(uint8_t)], b3_[sizeof(b.val[3]) / sizeof(uint8_t)]; simde_vst1q_u8(a0_, a.val[0]); simde_vst1q_u8(b0_, b.val[0]); simde_vst1q_u8(a1_, a.val[1]); simde_vst1q_u8(b1_, b.val[1]); simde_vst1q_u8(a2_, a.val[2]); simde_vst1q_u8(b2_, b.val[2]); simde_vst1q_u8(a3_, a.val[3]); simde_vst1q_u8(b3_, b.val[3]); return simde_assert_equal_vu8_(16, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vu8_(16, a1_, b1_, filename, line, astr, bstr) && simde_assert_equal_vu8_(16, a2_, b2_, filename, line, astr, bstr) && simde_assert_equal_vu8_(16, a3_, b3_, filename, line, astr, bstr); } static simde_uint16x8x4_t simde_test_arm_neon_random_u16x8x4(void) { simde_uint16x8x4_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_u16x8x4(int indent, simde_uint16x8x4_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 592 "../test/arm/neon/test-neon.h" 3 4 stderr # 592 "../test/arm/neon/test-neon.h" ); } uint16_t value0_[sizeof(value) / sizeof(uint16_t) / 4]; uint16_t value1_[sizeof(value) / sizeof(uint16_t) / 4]; uint16_t value2_[sizeof(value) / sizeof(uint16_t) / 4]; uint16_t value3_[sizeof(value) / sizeof(uint16_t) / 4]; simde_vst1q_u16(value0_, value.val[0]); simde_vst1q_u16(value1_, value.val[1]); simde_vst1q_u16(value2_, value.val[2]); simde_vst1q_u16(value3_, value.val[3]); simde_test_codegen_write_vu16(indent+2, sizeof(value0_) / sizeof(uint16_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vu16(indent+2, sizeof(value1_) / sizeof(uint16_t), value1_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vu16(indent+2, sizeof(value2_) / sizeof(uint16_t), value2_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vu16(indent+2, sizeof(value3_) / sizeof(uint16_t), value3_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 592 "../test/arm/neon/test-neon.h" 3 4 stderr # 592 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_u16x8x4_(simde_uint16x8x4_t a, simde_uint16x8x4_t b, const char* filename, int line, const char* astr, const char* bstr) { uint16_t a0_[sizeof(a.val[0]) / sizeof(uint16_t)], b0_[sizeof(b.val[0]) / sizeof(uint16_t)]; uint16_t a1_[sizeof(a.val[1]) / sizeof(uint16_t)], b1_[sizeof(b.val[1]) / sizeof(uint16_t)]; uint16_t a2_[sizeof(a.val[2]) / sizeof(uint16_t)], b2_[sizeof(b.val[2]) / sizeof(uint16_t)]; uint16_t a3_[sizeof(a.val[3]) / sizeof(uint16_t)], b3_[sizeof(b.val[3]) / sizeof(uint16_t)]; simde_vst1q_u16(a0_, a.val[0]); simde_vst1q_u16(b0_, b.val[0]); simde_vst1q_u16(a1_, a.val[1]); simde_vst1q_u16(b1_, b.val[1]); simde_vst1q_u16(a2_, a.val[2]); simde_vst1q_u16(b2_, b.val[2]); simde_vst1q_u16(a3_, a.val[3]); simde_vst1q_u16(b3_, b.val[3]); return simde_assert_equal_vu16_(8, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vu16_(8, a1_, b1_, filename, line, astr, bstr) && simde_assert_equal_vu16_(8, a2_, b2_, filename, line, astr, bstr) && simde_assert_equal_vu16_(8, a3_, b3_, filename, line, astr, bstr); } static simde_uint32x4x4_t simde_test_arm_neon_random_u32x4x4(void) { simde_uint32x4x4_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_u32x4x4(int indent, simde_uint32x4x4_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 593 "../test/arm/neon/test-neon.h" 3 4 stderr # 593 "../test/arm/neon/test-neon.h" ); } uint32_t value0_[sizeof(value) / sizeof(uint32_t) / 4]; uint32_t value1_[sizeof(value) / sizeof(uint32_t) / 4]; uint32_t value2_[sizeof(value) / sizeof(uint32_t) / 4]; uint32_t value3_[sizeof(value) / sizeof(uint32_t) / 4]; simde_vst1q_u32(value0_, value.val[0]); simde_vst1q_u32(value1_, value.val[1]); simde_vst1q_u32(value2_, value.val[2]); simde_vst1q_u32(value3_, value.val[3]); simde_test_codegen_write_vu32(indent+2, sizeof(value0_) / sizeof(uint32_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vu32(indent+2, sizeof(value1_) / sizeof(uint32_t), value1_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vu32(indent+2, sizeof(value2_) / sizeof(uint32_t), value2_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vu32(indent+2, sizeof(value3_) / sizeof(uint32_t), value3_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 593 "../test/arm/neon/test-neon.h" 3 4 stderr # 593 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_u32x4x4_(simde_uint32x4x4_t a, simde_uint32x4x4_t b, const char* filename, int line, const char* astr, const char* bstr) { uint32_t a0_[sizeof(a.val[0]) / sizeof(uint32_t)], b0_[sizeof(b.val[0]) / sizeof(uint32_t)]; uint32_t a1_[sizeof(a.val[1]) / sizeof(uint32_t)], b1_[sizeof(b.val[1]) / sizeof(uint32_t)]; uint32_t a2_[sizeof(a.val[2]) / sizeof(uint32_t)], b2_[sizeof(b.val[2]) / sizeof(uint32_t)]; uint32_t a3_[sizeof(a.val[3]) / sizeof(uint32_t)], b3_[sizeof(b.val[3]) / sizeof(uint32_t)]; simde_vst1q_u32(a0_, a.val[0]); simde_vst1q_u32(b0_, b.val[0]); simde_vst1q_u32(a1_, a.val[1]); simde_vst1q_u32(b1_, b.val[1]); simde_vst1q_u32(a2_, a.val[2]); simde_vst1q_u32(b2_, b.val[2]); simde_vst1q_u32(a3_, a.val[3]); simde_vst1q_u32(b3_, b.val[3]); return simde_assert_equal_vu32_(4, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vu32_(4, a1_, b1_, filename, line, astr, bstr) && simde_assert_equal_vu32_(4, a2_, b2_, filename, line, astr, bstr) && simde_assert_equal_vu32_(4, a3_, b3_, filename, line, astr, bstr); } static simde_uint64x2x4_t simde_test_arm_neon_random_u64x2x4(void) { simde_uint64x2x4_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_u64x2x4(int indent, simde_uint64x2x4_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 594 "../test/arm/neon/test-neon.h" 3 4 stderr # 594 "../test/arm/neon/test-neon.h" ); } uint64_t value0_[sizeof(value) / sizeof(uint64_t) / 4]; uint64_t value1_[sizeof(value) / sizeof(uint64_t) / 4]; uint64_t value2_[sizeof(value) / sizeof(uint64_t) / 4]; uint64_t value3_[sizeof(value) / sizeof(uint64_t) / 4]; simde_vst1q_u64(value0_, value.val[0]); simde_vst1q_u64(value1_, value.val[1]); simde_vst1q_u64(value2_, value.val[2]); simde_vst1q_u64(value3_, value.val[3]); simde_test_codegen_write_vu64(indent+2, sizeof(value0_) / sizeof(uint64_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vu64(indent+2, sizeof(value1_) / sizeof(uint64_t), value1_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vu64(indent+2, sizeof(value2_) / sizeof(uint64_t), value2_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vu64(indent+2, sizeof(value3_) / sizeof(uint64_t), value3_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 594 "../test/arm/neon/test-neon.h" 3 4 stderr # 594 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_u64x2x4_(simde_uint64x2x4_t a, simde_uint64x2x4_t b, const char* filename, int line, const char* astr, const char* bstr) { uint64_t a0_[sizeof(a.val[0]) / sizeof(uint64_t)], b0_[sizeof(b.val[0]) / sizeof(uint64_t)]; uint64_t a1_[sizeof(a.val[1]) / sizeof(uint64_t)], b1_[sizeof(b.val[1]) / sizeof(uint64_t)]; uint64_t a2_[sizeof(a.val[2]) / sizeof(uint64_t)], b2_[sizeof(b.val[2]) / sizeof(uint64_t)]; uint64_t a3_[sizeof(a.val[3]) / sizeof(uint64_t)], b3_[sizeof(b.val[3]) / sizeof(uint64_t)]; simde_vst1q_u64(a0_, a.val[0]); simde_vst1q_u64(b0_, b.val[0]); simde_vst1q_u64(a1_, a.val[1]); simde_vst1q_u64(b1_, b.val[1]); simde_vst1q_u64(a2_, a.val[2]); simde_vst1q_u64(b2_, b.val[2]); simde_vst1q_u64(a3_, a.val[3]); simde_vst1q_u64(b3_, b.val[3]); return simde_assert_equal_vu64_(2, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vu64_(2, a1_, b1_, filename, line, astr, bstr) && simde_assert_equal_vu64_(2, a2_, b2_, filename, line, astr, bstr) && simde_assert_equal_vu64_(2, a3_, b3_, filename, line, astr, bstr); } static simde_float32x4x4_t simde_test_arm_neon_random_f32x4x4(simde_float32_t min, simde_float32_t max) { simde_float32 v0[sizeof(simde_float32x4x4_t) / sizeof(simde_float32_t) / 4]; simde_float32 v1[sizeof(simde_float32x4x4_t) / sizeof(simde_float32_t) / 4]; simde_float32 v2[sizeof(simde_float32x4x4_t) / sizeof(simde_float32_t) / 4]; simde_float32 v3[sizeof(simde_float32x4x4_t) / sizeof(simde_float32_t) / 4]; simde_test_codegen_random_vf32(sizeof(v0) / sizeof(v0[0]), v0, ((simde_float32) (min)), ((simde_float32) (max))); simde_test_codegen_random_vf32(sizeof(v1) / sizeof(v1[0]), v1, ((simde_float32) (min)), ((simde_float32) (max))); simde_test_codegen_random_vf32(sizeof(v2) / sizeof(v2[0]), v2, ((simde_float32) (min)), ((simde_float32) (max))); simde_test_codegen_random_vf32(sizeof(v3) / sizeof(v3[0]), v3, ((simde_float32) (min)), ((simde_float32) (max))); simde_float32x4x4_t r; r.val[0] = simde_vld1q_f32(((simde_float32_t*) (v0))); r.val[1] = simde_vld1q_f32(((simde_float32_t*) (v1))); r.val[2] = simde_vld1q_f32(((simde_float32_t*) (v2))); r.val[3] = simde_vld1q_f32(((simde_float32_t*) (v3))); return r; } static void simde_test_arm_neon_write_f32x4x4(int indent, simde_float32x4x4_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 595 "../test/arm/neon/test-neon.h" 3 4 stderr # 595 "../test/arm/neon/test-neon.h" ); } simde_float32_t value0_[sizeof(value) / sizeof(simde_float32_t) / 4]; simde_float32_t value1_[sizeof(value) / sizeof(simde_float32_t) / 4]; simde_float32_t value2_[sizeof(value) / sizeof(simde_float32_t) / 4]; simde_float32_t value3_[sizeof(value) / sizeof(simde_float32_t) / 4]; simde_vst1q_f32(value0_, value.val[0]); simde_vst1q_f32(value1_, value.val[1]); simde_vst1q_f32(value2_, value.val[2]); simde_vst1q_f32(value3_, value.val[3]); simde_test_codegen_write_vf32(indent + 2, sizeof(value0_) / sizeof(value0_[0]), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vf32(indent + 2, sizeof(value1_) / sizeof(value1_[0]), value1_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vf32(indent + 2, sizeof(value2_) / sizeof(value2_[0]), value2_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vf32(indent + 2, sizeof(value3_) / sizeof(value3_[0]), value3_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 595 "../test/arm/neon/test-neon.h" 3 4 stderr # 595 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_f32x4x4_(simde_float32x4x4_t a, simde_float32x4x4_t b, simde_float32_t slop, const char* filename, int line, const char* astr, const char* bstr) { simde_float32 a0_[sizeof(a.val[0]) / sizeof(simde_float32_t)], b0_[sizeof(b.val[0]) / sizeof(simde_float32_t)]; simde_float32 a1_[sizeof(a.val[1]) / sizeof(simde_float32_t)], b1_[sizeof(b.val[1]) / sizeof(simde_float32_t)]; simde_float32 a2_[sizeof(a.val[2]) / sizeof(simde_float32_t)], b2_[sizeof(b.val[2]) / sizeof(simde_float32_t)]; simde_float32 a3_[sizeof(a.val[3]) / sizeof(simde_float32_t)], b3_[sizeof(b.val[3]) / sizeof(simde_float32_t)]; simde_vst1q_f32(a0_, a.val[0]); simde_vst1q_f32(b0_, b.val[0]); simde_vst1q_f32(a1_, a.val[1]); simde_vst1q_f32(b1_, b.val[1]); simde_vst1q_f32(a2_, a.val[2]); simde_vst1q_f32(b2_, b.val[2]); simde_vst1q_f32(a3_, a.val[3]); simde_vst1q_f32(b3_, b.val[3]); return simde_assert_equal_vf32_(4, ((simde_float32*) (a0_)), ((simde_float32*) (b0_)), slop, filename, line, astr, bstr) && simde_assert_equal_vf32_(4, ((simde_float32*) (a1_)), ((simde_float32*) (b1_)), slop, filename, line, astr, bstr) && simde_assert_equal_vf32_(4, ((simde_float32*) (a2_)), ((simde_float32*) (b2_)), slop, filename, line, astr, bstr) && simde_assert_equal_vf32_(4, ((simde_float32*) (a3_)), ((simde_float32*) (b3_)), slop, filename, line, astr, bstr); } static simde_float64x2x4_t simde_test_arm_neon_random_f64x2x4(simde_float64_t min, simde_float64_t max) { simde_float64 v0[sizeof(simde_float64x2x4_t) / sizeof(simde_float64_t) / 4]; simde_float64 v1[sizeof(simde_float64x2x4_t) / sizeof(simde_float64_t) / 4]; simde_float64 v2[sizeof(simde_float64x2x4_t) / sizeof(simde_float64_t) / 4]; simde_float64 v3[sizeof(simde_float64x2x4_t) / sizeof(simde_float64_t) / 4]; simde_test_codegen_random_vf64(sizeof(v0) / sizeof(v0[0]), v0, ((simde_float64) (min)), ((simde_float64) (max))); simde_test_codegen_random_vf64(sizeof(v1) / sizeof(v1[0]), v1, ((simde_float64) (min)), ((simde_float64) (max))); simde_test_codegen_random_vf64(sizeof(v2) / sizeof(v2[0]), v2, ((simde_float64) (min)), ((simde_float64) (max))); simde_test_codegen_random_vf64(sizeof(v3) / sizeof(v3[0]), v3, ((simde_float64) (min)), ((simde_float64) (max))); simde_float64x2x4_t r; r.val[0] = simde_vld1q_f64(((simde_float64_t*) (v0))); r.val[1] = simde_vld1q_f64(((simde_float64_t*) (v1))); r.val[2] = simde_vld1q_f64(((simde_float64_t*) (v2))); r.val[3] = simde_vld1q_f64(((simde_float64_t*) (v3))); return r; } static void simde_test_arm_neon_write_f64x2x4(int indent, simde_float64x2x4_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 596 "../test/arm/neon/test-neon.h" 3 4 stderr # 596 "../test/arm/neon/test-neon.h" ); } simde_float64_t value0_[sizeof(value) / sizeof(simde_float64_t) / 4]; simde_float64_t value1_[sizeof(value) / sizeof(simde_float64_t) / 4]; simde_float64_t value2_[sizeof(value) / sizeof(simde_float64_t) / 4]; simde_float64_t value3_[sizeof(value) / sizeof(simde_float64_t) / 4]; simde_vst1q_f64(value0_, value.val[0]); simde_vst1q_f64(value1_, value.val[1]); simde_vst1q_f64(value2_, value.val[2]); simde_vst1q_f64(value3_, value.val[3]); simde_test_codegen_write_vf64(indent + 2, sizeof(value0_) / sizeof(value0_[0]), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vf64(indent + 2, sizeof(value1_) / sizeof(value1_[0]), value1_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vf64(indent + 2, sizeof(value2_) / sizeof(value2_[0]), value2_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vf64(indent + 2, sizeof(value3_) / sizeof(value3_[0]), value3_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 596 "../test/arm/neon/test-neon.h" 3 4 stderr # 596 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_f64x2x4_(simde_float64x2x4_t a, simde_float64x2x4_t b, simde_float64_t slop, const char* filename, int line, const char* astr, const char* bstr) { simde_float64 a0_[sizeof(a.val[0]) / sizeof(simde_float64_t)], b0_[sizeof(b.val[0]) / sizeof(simde_float64_t)]; simde_float64 a1_[sizeof(a.val[1]) / sizeof(simde_float64_t)], b1_[sizeof(b.val[1]) / sizeof(simde_float64_t)]; simde_float64 a2_[sizeof(a.val[2]) / sizeof(simde_float64_t)], b2_[sizeof(b.val[2]) / sizeof(simde_float64_t)]; simde_float64 a3_[sizeof(a.val[3]) / sizeof(simde_float64_t)], b3_[sizeof(b.val[3]) / sizeof(simde_float64_t)]; simde_vst1q_f64(a0_, a.val[0]); simde_vst1q_f64(b0_, b.val[0]); simde_vst1q_f64(a1_, a.val[1]); simde_vst1q_f64(b1_, b.val[1]); simde_vst1q_f64(a2_, a.val[2]); simde_vst1q_f64(b2_, b.val[2]); simde_vst1q_f64(a3_, a.val[3]); simde_vst1q_f64(b3_, b.val[3]); return simde_assert_equal_vf64_(2, ((simde_float64*) (a0_)), ((simde_float64*) (b0_)), slop, filename, line, astr, bstr) && simde_assert_equal_vf64_(2, ((simde_float64*) (a1_)), ((simde_float64*) (b1_)), slop, filename, line, astr, bstr) && simde_assert_equal_vf64_(2, ((simde_float64*) (a2_)), ((simde_float64*) (b2_)), slop, filename, line, astr, bstr) && simde_assert_equal_vf64_(2, ((simde_float64*) (a3_)), ((simde_float64*) (b3_)), slop, filename, line, astr, bstr); } static simde_poly8x16x4_t simde_test_arm_neon_random_p8x16x4(void) { simde_poly8x16x4_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_p8x16x4(int indent, simde_poly8x16x4_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 597 "../test/arm/neon/test-neon.h" 3 4 stderr # 597 "../test/arm/neon/test-neon.h" ); } simde_poly8_t value0_[sizeof(value) / sizeof(simde_poly8_t) / 4]; simde_poly8_t value1_[sizeof(value) / sizeof(simde_poly8_t) / 4]; simde_poly8_t value2_[sizeof(value) / sizeof(simde_poly8_t) / 4]; simde_poly8_t value3_[sizeof(value) / sizeof(simde_poly8_t) / 4]; simde_vst1q_p8(value0_, value.val[0]); simde_vst1q_p8(value1_, value.val[1]); simde_vst1q_p8(value2_, value.val[2]); simde_vst1q_p8(value3_, value.val[3]); simde_test_codegen_write_vp8(indent+2, sizeof(value0_) / sizeof(simde_poly8_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vp8(indent+2, sizeof(value1_) / sizeof(simde_poly8_t), value1_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vp8(indent+2, sizeof(value2_) / sizeof(simde_poly8_t), value2_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vp8(indent+2, sizeof(value3_) / sizeof(simde_poly8_t), value3_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 597 "../test/arm/neon/test-neon.h" 3 4 stderr # 597 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_p8x16x4_(simde_poly8x16x4_t a, simde_poly8x16x4_t b, const char* filename, int line, const char* astr, const char* bstr) { simde_poly8_t a0_[sizeof(a.val[0]) / sizeof(simde_poly8_t)], b0_[sizeof(b.val[0]) / sizeof(simde_poly8_t)]; simde_poly8_t a1_[sizeof(a.val[1]) / sizeof(simde_poly8_t)], b1_[sizeof(b.val[1]) / sizeof(simde_poly8_t)]; simde_poly8_t a2_[sizeof(a.val[2]) / sizeof(simde_poly8_t)], b2_[sizeof(b.val[2]) / sizeof(simde_poly8_t)]; simde_poly8_t a3_[sizeof(a.val[3]) / sizeof(simde_poly8_t)], b3_[sizeof(b.val[3]) / sizeof(simde_poly8_t)]; simde_vst1q_p8(a0_, a.val[0]); simde_vst1q_p8(b0_, b.val[0]); simde_vst1q_p8(a1_, a.val[1]); simde_vst1q_p8(b1_, b.val[1]); simde_vst1q_p8(a2_, a.val[2]); simde_vst1q_p8(b2_, b.val[2]); simde_vst1q_p8(a3_, a.val[3]); simde_vst1q_p8(b3_, b.val[3]); return simde_assert_equal_vp8_(16, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vp8_(16, a1_, b1_, filename, line, astr, bstr) && simde_assert_equal_vp8_(16, a2_, b2_, filename, line, astr, bstr) && simde_assert_equal_vp8_(16, a3_, b3_, filename, line, astr, bstr); } static simde_poly16x8x4_t simde_test_arm_neon_random_p16x8x4(void) { simde_poly16x8x4_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_p16x8x4(int indent, simde_poly16x8x4_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 598 "../test/arm/neon/test-neon.h" 3 4 stderr # 598 "../test/arm/neon/test-neon.h" ); } simde_poly16_t value0_[sizeof(value) / sizeof(simde_poly16_t) / 4]; simde_poly16_t value1_[sizeof(value) / sizeof(simde_poly16_t) / 4]; simde_poly16_t value2_[sizeof(value) / sizeof(simde_poly16_t) / 4]; simde_poly16_t value3_[sizeof(value) / sizeof(simde_poly16_t) / 4]; simde_vst1q_p16(value0_, value.val[0]); simde_vst1q_p16(value1_, value.val[1]); simde_vst1q_p16(value2_, value.val[2]); simde_vst1q_p16(value3_, value.val[3]); simde_test_codegen_write_vp16(indent+2, sizeof(value0_) / sizeof(simde_poly16_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vp16(indent+2, sizeof(value1_) / sizeof(simde_poly16_t), value1_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vp16(indent+2, sizeof(value2_) / sizeof(simde_poly16_t), value2_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vp16(indent+2, sizeof(value3_) / sizeof(simde_poly16_t), value3_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 598 "../test/arm/neon/test-neon.h" 3 4 stderr # 598 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_p16x8x4_(simde_poly16x8x4_t a, simde_poly16x8x4_t b, const char* filename, int line, const char* astr, const char* bstr) { simde_poly16_t a0_[sizeof(a.val[0]) / sizeof(simde_poly16_t)], b0_[sizeof(b.val[0]) / sizeof(simde_poly16_t)]; simde_poly16_t a1_[sizeof(a.val[1]) / sizeof(simde_poly16_t)], b1_[sizeof(b.val[1]) / sizeof(simde_poly16_t)]; simde_poly16_t a2_[sizeof(a.val[2]) / sizeof(simde_poly16_t)], b2_[sizeof(b.val[2]) / sizeof(simde_poly16_t)]; simde_poly16_t a3_[sizeof(a.val[3]) / sizeof(simde_poly16_t)], b3_[sizeof(b.val[3]) / sizeof(simde_poly16_t)]; simde_vst1q_p16(a0_, a.val[0]); simde_vst1q_p16(b0_, b.val[0]); simde_vst1q_p16(a1_, a.val[1]); simde_vst1q_p16(b1_, b.val[1]); simde_vst1q_p16(a2_, a.val[2]); simde_vst1q_p16(b2_, b.val[2]); simde_vst1q_p16(a3_, a.val[3]); simde_vst1q_p16(b3_, b.val[3]); return simde_assert_equal_vp16_(8, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vp16_(8, a1_, b1_, filename, line, astr, bstr) && simde_assert_equal_vp16_(8, a2_, b2_, filename, line, astr, bstr) && simde_assert_equal_vp16_(8, a3_, b3_, filename, line, astr, bstr); } static simde_poly64x2x4_t simde_test_arm_neon_random_p64x2x4(void) { simde_poly64x2x4_t v; simde_test_codegen_random_memory(sizeof(v), ((uint8_t*) (&v))); return v; } static void simde_test_arm_neon_write_p64x2x4(int indent, simde_poly64x2x4_t value, SimdeTestVecPos pos) { if (pos == SIMDE_TEST_VEC_POS_FIRST) { simde_test_codegen_write_indent(indent); fputs("{\n", # 599 "../test/arm/neon/test-neon.h" 3 4 stderr # 599 "../test/arm/neon/test-neon.h" ); } simde_poly64_t value0_[sizeof(value) / sizeof(simde_poly64_t) / 4]; simde_poly64_t value1_[sizeof(value) / sizeof(simde_poly64_t) / 4]; simde_poly64_t value2_[sizeof(value) / sizeof(simde_poly64_t) / 4]; simde_poly64_t value3_[sizeof(value) / sizeof(simde_poly64_t) / 4]; simde_vst1q_p64(value0_, value.val[0]); simde_vst1q_p64(value1_, value.val[1]); simde_vst1q_p64(value2_, value.val[2]); simde_vst1q_p64(value3_, value.val[3]); simde_test_codegen_write_vp64(indent+2, sizeof(value0_) / sizeof(simde_poly64_t), value0_, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_vp64(indent+2, sizeof(value1_) / sizeof(simde_poly64_t), value1_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vp64(indent+2, sizeof(value2_) / sizeof(simde_poly64_t), value2_, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_codegen_write_vp64(indent+2, sizeof(value3_) / sizeof(simde_poly64_t), value3_, SIMDE_TEST_VEC_POS_LAST); if (pos == SIMDE_TEST_VEC_POS_LAST) { simde_test_codegen_write_indent(indent); fputs("},\n", # 599 "../test/arm/neon/test-neon.h" 3 4 stderr # 599 "../test/arm/neon/test-neon.h" ); } } static int simde_test_arm_neon_assert_equal_p64x2x4_(simde_poly64x2x4_t a, simde_poly64x2x4_t b, const char* filename, int line, const char* astr, const char* bstr) { simde_poly64_t a0_[sizeof(a.val[0]) / sizeof(simde_poly64_t)], b0_[sizeof(b.val[0]) / sizeof(simde_poly64_t)]; simde_poly64_t a1_[sizeof(a.val[1]) / sizeof(simde_poly64_t)], b1_[sizeof(b.val[1]) / sizeof(simde_poly64_t)]; simde_poly64_t a2_[sizeof(a.val[2]) / sizeof(simde_poly64_t)], b2_[sizeof(b.val[2]) / sizeof(simde_poly64_t)]; simde_poly64_t a3_[sizeof(a.val[3]) / sizeof(simde_poly64_t)], b3_[sizeof(b.val[3]) / sizeof(simde_poly64_t)]; simde_vst1q_p64(a0_, a.val[0]); simde_vst1q_p64(b0_, b.val[0]); simde_vst1q_p64(a1_, a.val[1]); simde_vst1q_p64(b1_, b.val[1]); simde_vst1q_p64(a2_, a.val[2]); simde_vst1q_p64(b2_, b.val[2]); simde_vst1q_p64(a3_, a.val[3]); simde_vst1q_p64(b3_, b.val[3]); return simde_assert_equal_vp64_(2, a0_, b0_, filename, line, astr, bstr) && simde_assert_equal_vp64_(2, a1_, b1_, filename, line, astr, bstr) && simde_assert_equal_vp64_(2, a2_, b2_, filename, line, astr, bstr) && simde_assert_equal_vp64_(2, a3_, b3_, filename, line, astr, bstr); } static int simde_test_arm_neon_assert_equal_f16x4x4_(simde_float16x4x4_t a, simde_float16x4x4_t b, simde_float16_t slop, const char* filename, int line, const char* astr, const char* bstr) { simde_float16 a0_[sizeof(a.val[0]) / sizeof(simde_float16_t)], b0_[sizeof(b.val[0]) / sizeof(simde_float16_t)]; simde_float16 a1_[sizeof(a.val[1]) / sizeof(simde_float16_t)], b1_[sizeof(b.val[1]) / sizeof(simde_float16_t)]; simde_float16 a2_[sizeof(a.val[2]) / sizeof(simde_float16_t)], b2_[sizeof(b.val[2]) / sizeof(simde_float16_t)]; simde_float16 a3_[sizeof(a.val[3]) / sizeof(simde_float16_t)], b3_[sizeof(b.val[3]) / sizeof(simde_float16_t)]; simde_vst1_f16(a0_, a.val[0]); simde_vst1_f16(b0_, b.val[0]); simde_vst1_f16(a1_, a.val[1]); simde_vst1_f16(b1_, b.val[1]); simde_vst1_f16(a2_, a.val[2]); simde_vst1_f16(b2_, b.val[2]); simde_vst1_f16(a3_, a.val[3]); simde_vst1_f16(b3_, b.val[3]); return simde_assert_equal_vf16_(4, ((simde_float16*) (a0_)), ((simde_float16*) (b0_)), slop, filename, line, astr, bstr) && simde_assert_equal_vf16_(4, ((simde_float16*) (a1_)), ((simde_float16*) (b1_)), slop, filename, line, astr, bstr) && simde_assert_equal_vf16_(4, ((simde_float16*) (a2_)), ((simde_float16*) (b2_)), slop, filename, line, astr, bstr) && simde_assert_equal_vf16_(4, ((simde_float16*) (a3_)), ((simde_float16*) (b3_)), slop, filename, line, astr, bstr); } static int simde_test_arm_neon_assert_equal_f16x8x4_(simde_float16x8x4_t a, simde_float16x8x4_t b, simde_float16_t slop, const char* filename, int line, const char* astr, const char* bstr) { simde_float16 a0_[sizeof(a.val[0]) / sizeof(simde_float16_t)], b0_[sizeof(b.val[0]) / sizeof(simde_float16_t)]; simde_float16 a1_[sizeof(a.val[1]) / sizeof(simde_float16_t)], b1_[sizeof(b.val[1]) / sizeof(simde_float16_t)]; simde_float16 a2_[sizeof(a.val[2]) / sizeof(simde_float16_t)], b2_[sizeof(b.val[2]) / sizeof(simde_float16_t)]; simde_float16 a3_[sizeof(a.val[3]) / sizeof(simde_float16_t)], b3_[sizeof(b.val[3]) / sizeof(simde_float16_t)]; simde_vst1q_f16(a0_, a.val[0]); simde_vst1q_f16(b0_, b.val[0]); simde_vst1q_f16(a1_, a.val[1]); simde_vst1q_f16(b1_, b.val[1]); simde_vst1q_f16(a2_, a.val[2]); simde_vst1q_f16(b2_, b.val[2]); simde_vst1q_f16(a3_, a.val[3]); simde_vst1q_f16(b3_, b.val[3]); return simde_assert_equal_vf16_(8, ((simde_float16*) (a0_)), ((simde_float16*) (b0_)), slop, filename, line, astr, bstr) && simde_assert_equal_vf16_(8, ((simde_float16*) (a1_)), ((simde_float16*) (b1_)), slop, filename, line, astr, bstr) && simde_assert_equal_vf16_(8, ((simde_float16*) (a2_)), ((simde_float16*) (b2_)), slop, filename, line, astr, bstr) && simde_assert_equal_vf16_(8, ((simde_float16*) (a3_)), ((simde_float16*) (b3_)), slop, filename, line, astr, bstr); } static int simde_test_arm_neon_assert_equal_bf16x4x4_(simde_bfloat16x4x4_t a, simde_bfloat16x4x4_t b, simde_bfloat16_t slop, const char* filename, int line, const char* astr, const char* bstr) { simde_bfloat16 a0_[sizeof(a.val[0]) / sizeof(simde_bfloat16_t)], b0_[sizeof(b.val[0]) / sizeof(simde_bfloat16_t)]; simde_bfloat16 a1_[sizeof(a.val[1]) / sizeof(simde_bfloat16_t)], b1_[sizeof(b.val[1]) / sizeof(simde_bfloat16_t)]; simde_bfloat16 a2_[sizeof(a.val[2]) / sizeof(simde_bfloat16_t)], b2_[sizeof(b.val[2]) / sizeof(simde_bfloat16_t)]; simde_bfloat16 a3_[sizeof(a.val[3]) / sizeof(simde_bfloat16_t)], b3_[sizeof(b.val[3]) / sizeof(simde_bfloat16_t)]; simde_vst1_bf16(a0_, a.val[0]); simde_vst1_bf16(b0_, b.val[0]); simde_vst1_bf16(a1_, a.val[1]); simde_vst1_bf16(b1_, b.val[1]); simde_vst1_bf16(a2_, a.val[2]); simde_vst1_bf16(b2_, b.val[2]); simde_vst1_bf16(a3_, a.val[3]); simde_vst1_bf16(b3_, b.val[3]); return simde_assert_equal_vbf16_(4, ((simde_bfloat16*) (a0_)), ((simde_bfloat16*) (b0_)), slop, filename, line, astr, bstr) && simde_assert_equal_vbf16_(4, ((simde_bfloat16*) (a1_)), ((simde_bfloat16*) (b1_)), slop, filename, line, astr, bstr) && simde_assert_equal_vbf16_(4, ((simde_bfloat16*) (a2_)), ((simde_bfloat16*) (b2_)), slop, filename, line, astr, bstr) && simde_assert_equal_vbf16_(4, ((simde_bfloat16*) (a3_)), ((simde_bfloat16*) (b3_)), slop, filename, line, astr, bstr); } static int simde_test_arm_neon_assert_equal_bf16x8x4_(simde_bfloat16x8x4_t a, simde_bfloat16x8x4_t b, simde_bfloat16_t slop, const char* filename, int line, const char* astr, const char* bstr) { simde_bfloat16 a0_[sizeof(a.val[0]) / sizeof(simde_bfloat16_t)], b0_[sizeof(b.val[0]) / sizeof(simde_bfloat16_t)]; simde_bfloat16 a1_[sizeof(a.val[1]) / sizeof(simde_bfloat16_t)], b1_[sizeof(b.val[1]) / sizeof(simde_bfloat16_t)]; simde_bfloat16 a2_[sizeof(a.val[2]) / sizeof(simde_bfloat16_t)], b2_[sizeof(b.val[2]) / sizeof(simde_bfloat16_t)]; simde_bfloat16 a3_[sizeof(a.val[3]) / sizeof(simde_bfloat16_t)], b3_[sizeof(b.val[3]) / sizeof(simde_bfloat16_t)]; simde_vst1q_bf16(a0_, a.val[0]); simde_vst1q_bf16(b0_, b.val[0]); simde_vst1q_bf16(a1_, a.val[1]); simde_vst1q_bf16(b1_, b.val[1]); simde_vst1q_bf16(a2_, a.val[2]); simde_vst1q_bf16(b2_, b.val[2]); simde_vst1q_bf16(a3_, a.val[3]); simde_vst1q_bf16(b3_, b.val[3]); return simde_assert_equal_vbf16_(8, ((simde_bfloat16*) (a0_)), ((simde_bfloat16*) (b0_)), slop, filename, line, astr, bstr) && simde_assert_equal_vbf16_(8, ((simde_bfloat16*) (a1_)), ((simde_bfloat16*) (b1_)), slop, filename, line, astr, bstr) && simde_assert_equal_vbf16_(8, ((simde_bfloat16*) (a2_)), ((simde_bfloat16*) (b2_)), slop, filename, line, astr, bstr) && simde_assert_equal_vbf16_(8, ((simde_bfloat16*) (a3_)), ((simde_bfloat16*) (b3_)), slop, filename, line, astr, bstr); } # 617 "../test/arm/neon/test-neon.h" #pragma GCC diagnostic pop # 750 "../test/arm/neon/test-neon.h" # 750 "../test/arm/neon/test-neon.h" #pragma GCC diagnostic pop # 4 "../test/arm/neon/addv.c" 2 # 1 "../test/arm/neon/../../../simde/arm/neon/addv.h" 1 # 32 "../test/arm/neon/../../../simde/arm/neon/addv.h" # 32 "../test/arm/neon/../../../simde/arm/neon/addv.h" #pragma GCC diagnostic push # 33 "../test/arm/neon/../../../simde/arm/neon/addv.h" #pragma GCC diagnostic ignored "-Wunused-function" # 33 "../test/arm/neon/../../../simde/arm/neon/addv.h" # 33 "../test/arm/neon/../../../simde/arm/neon/addv.h" #pragma GCC diagnostic ignored "-Wpsabi" # 33 "../test/arm/neon/../../../simde/arm/neon/addv.h" # 33 "../test/arm/neon/../../../simde/arm/neon/addv.h" #pragma GCC diagnostic ignored "-Wfloat-equal" # 33 "../test/arm/neon/../../../simde/arm/neon/addv.h" # 33 "../test/arm/neon/../../../simde/arm/neon/addv.h" #pragma GCC diagnostic ignored "-Wvla" # 34 "../test/arm/neon/../../../simde/arm/neon/addv.h" #pragma GCC diagnostic push __attribute__((__always_inline__)) inline static simde_float32_t simde_vaddv_f32(simde_float32x2_t a) { simde_float32_t r; simde_float32x2_private a_ = simde_float32x2_to_private(a); r = 0; # 47 "../test/arm/neon/../../../simde/arm/neon/addv.h" #pragma omp simd reduction(+:r) for (size_t i = 0 ; i < (sizeof(a_.values) / sizeof(a_.values[0])) ; i++) { r += a_.values[i]; } return r; } __attribute__((__always_inline__)) inline static int8_t simde_vaddv_s8(simde_int8x8_t a) { int8_t r; simde_int8x8_private a_ = simde_int8x8_to_private(a); r = 0; # 71 "../test/arm/neon/../../../simde/arm/neon/addv.h" #pragma omp simd reduction(+:r) for (size_t i = 0 ; i < (sizeof(a_.values) / sizeof(a_.values[0])) ; i++) { r += a_.values[i]; } return r; } __attribute__((__always_inline__)) inline static int16_t simde_vaddv_s16(simde_int16x4_t a) { int16_t r; simde_int16x4_private a_ = simde_int16x4_to_private(a); r = 0; # 95 "../test/arm/neon/../../../simde/arm/neon/addv.h" #pragma omp simd reduction(+:r) for (size_t i = 0 ; i < (sizeof(a_.values) / sizeof(a_.values[0])) ; i++) { r += a_.values[i]; } return r; } __attribute__((__always_inline__)) inline static int32_t simde_vaddv_s32(simde_int32x2_t a) { int32_t r; simde_int32x2_private a_ = simde_int32x2_to_private(a); r = 0; # 119 "../test/arm/neon/../../../simde/arm/neon/addv.h" #pragma omp simd reduction(+:r) for (size_t i = 0 ; i < (sizeof(a_.values) / sizeof(a_.values[0])) ; i++) { r += a_.values[i]; } return r; } __attribute__((__always_inline__)) inline static uint8_t simde_vaddv_u8(simde_uint8x8_t a) { uint8_t r; simde_uint8x8_private a_ = simde_uint8x8_to_private(a); r = 0; # 143 "../test/arm/neon/../../../simde/arm/neon/addv.h" #pragma omp simd reduction(+:r) for (size_t i = 0 ; i < (sizeof(a_.values) / sizeof(a_.values[0])) ; i++) { r += a_.values[i]; } return r; } __attribute__((__always_inline__)) inline static uint16_t simde_vaddv_u16(simde_uint16x4_t a) { uint16_t r; simde_uint16x4_private a_ = simde_uint16x4_to_private(a); r = 0; # 167 "../test/arm/neon/../../../simde/arm/neon/addv.h" #pragma omp simd reduction(+:r) for (size_t i = 0 ; i < (sizeof(a_.values) / sizeof(a_.values[0])) ; i++) { r += a_.values[i]; } return r; } __attribute__((__always_inline__)) inline static uint32_t simde_vaddv_u32(simde_uint32x2_t a) { uint32_t r; simde_uint32x2_private a_ = simde_uint32x2_to_private(a); r = 0; # 191 "../test/arm/neon/../../../simde/arm/neon/addv.h" #pragma omp simd reduction(+:r) for (size_t i = 0 ; i < (sizeof(a_.values) / sizeof(a_.values[0])) ; i++) { r += a_.values[i]; } return r; } __attribute__((__always_inline__)) inline static simde_float32_t simde_vaddvq_f32(simde_float32x4_t a) { simde_float32_t r; simde_float32x4_private a_ = simde_float32x4_to_private(a); r = 0; # 215 "../test/arm/neon/../../../simde/arm/neon/addv.h" #pragma omp simd reduction(+:r) for (size_t i = 0 ; i < (sizeof(a_.values) / sizeof(a_.values[0])) ; i++) { r += a_.values[i]; } return r; } __attribute__((__always_inline__)) inline static simde_float64_t simde_vaddvq_f64(simde_float64x2_t a) { simde_float64_t r; simde_float64x2_private a_ = simde_float64x2_to_private(a); r = 0; # 239 "../test/arm/neon/../../../simde/arm/neon/addv.h" #pragma omp simd reduction(+:r) for (size_t i = 0 ; i < (sizeof(a_.values) / sizeof(a_.values[0])) ; i++) { r += a_.values[i]; } return r; } __attribute__((__always_inline__)) inline static int8_t simde_vaddvq_s8(simde_int8x16_t a) { int8_t r; simde_int8x16_private a_ = simde_int8x16_to_private(a); r = 0; # 263 "../test/arm/neon/../../../simde/arm/neon/addv.h" #pragma omp simd reduction(+:r) for (size_t i = 0 ; i < (sizeof(a_.values) / sizeof(a_.values[0])) ; i++) { r += a_.values[i]; } return r; } __attribute__((__always_inline__)) inline static int16_t simde_vaddvq_s16(simde_int16x8_t a) { int16_t r; simde_int16x8_private a_ = simde_int16x8_to_private(a); r = 0; # 287 "../test/arm/neon/../../../simde/arm/neon/addv.h" #pragma omp simd reduction(+:r) for (size_t i = 0 ; i < (sizeof(a_.values) / sizeof(a_.values[0])) ; i++) { r += a_.values[i]; } return r; } __attribute__((__always_inline__)) inline static int32_t simde_vaddvq_s32(simde_int32x4_t a) { int32_t r; simde_int32x4_private a_ = simde_int32x4_to_private(a); r = 0; # 311 "../test/arm/neon/../../../simde/arm/neon/addv.h" #pragma omp simd reduction(+:r) for (size_t i = 0 ; i < (sizeof(a_.values) / sizeof(a_.values[0])) ; i++) { r += a_.values[i]; } return r; } __attribute__((__always_inline__)) inline static int64_t simde_vaddvq_s64(simde_int64x2_t a) { int64_t r; simde_int64x2_private a_ = simde_int64x2_to_private(a); r = 0; # 335 "../test/arm/neon/../../../simde/arm/neon/addv.h" #pragma omp simd reduction(+:r) for (size_t i = 0 ; i < (sizeof(a_.values) / sizeof(a_.values[0])) ; i++) { r += a_.values[i]; } return r; } __attribute__((__always_inline__)) inline static uint8_t simde_vaddvq_u8(simde_uint8x16_t a) { uint8_t r; # 361 "../test/arm/neon/../../../simde/arm/neon/addv.h" simde_uint8x16_private a_ = simde_uint8x16_to_private(a); r = 0; # 364 "../test/arm/neon/../../../simde/arm/neon/addv.h" #pragma omp simd reduction(+:r) for (size_t i = 0 ; i < (sizeof(a_.values) / sizeof(a_.values[0])) ; i++) { r += a_.values[i]; } return r; } __attribute__((__always_inline__)) inline static uint16_t simde_vaddvq_u16(simde_uint16x8_t a) { uint16_t r; simde_uint16x8_private a_ = simde_uint16x8_to_private(a); r = 0; # 388 "../test/arm/neon/../../../simde/arm/neon/addv.h" #pragma omp simd reduction(+:r) for (size_t i = 0 ; i < (sizeof(a_.values) / sizeof(a_.values[0])) ; i++) { r += a_.values[i]; } return r; } __attribute__((__always_inline__)) inline static uint32_t simde_vaddvq_u32(simde_uint32x4_t a) { uint32_t r; simde_uint32x4_private a_ = simde_uint32x4_to_private(a); r = 0; # 412 "../test/arm/neon/../../../simde/arm/neon/addv.h" #pragma omp simd reduction(+:r) for (size_t i = 0 ; i < (sizeof(a_.values) / sizeof(a_.values[0])) ; i++) { r += a_.values[i]; } return r; } __attribute__((__always_inline__)) inline static uint64_t simde_vaddvq_u64(simde_uint64x2_t a) { uint64_t r; simde_uint64x2_private a_ = simde_uint64x2_to_private(a); r = 0; # 436 "../test/arm/neon/../../../simde/arm/neon/addv.h" #pragma omp simd reduction(+:r) for (size_t i = 0 ; i < (sizeof(a_.values) / sizeof(a_.values[0])) ; i++) { r += a_.values[i]; } return r; } # 449 "../test/arm/neon/../../../simde/arm/neon/addv.h" #pragma GCC diagnostic pop # 450 "../test/arm/neon/../../../simde/arm/neon/addv.h" #pragma GCC diagnostic pop # 5 "../test/arm/neon/addv.c" 2 static int test_simde_vaddv_f32 (void) { static const struct { simde_float32_t a[2]; simde_float32_t r; } test_vec[] = { { { -235.05f, -904.04f }, -1139.09f }, { { 272.68f, 622.28f }, 894.96f }, { { -525.30f, -528.82f }, -1054.12f }, { { 29.65f, -351.94f }, -322.29f }, { { 961.57f, 223.98f }, 1185.55f }, { { -664.36f, 112.82f }, -551.54f }, { { -605.37f, -434.90f }, -1040.27f }, { { -227.61f, -769.47f }, -997.08f } }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_float32x2_t a = simde_vld1_f32(test_vec[i].a); simde_float32_t r = simde_vaddv_f32(a); do { if (simde_assert_equal_f32_(r, test_vec[i].r, simde_test_f32_precision_to_slop(1), "../test/arm/neon/addv.c", 35, "r", "test_vec[i].r")) { return 1; } } while (0); } return 0; # 50 "../test/arm/neon/addv.c" } static int test_simde_vaddv_s8 (void) { static const struct { int8_t a[8]; int8_t r; } test_vec[] = { { { -38, -113, -89, 100, 121, 62, 96, 114 }, -3 }, { { 54, 22, 118, 46, 72, 40, 123, -76 }, -113 }, { { -45, 36, 32, -99, 35, 22, -20, 18 }, -21 }, { { 24, 119, 80, -27, 57, 66, 123, 20 }, -50 }, { { -46, 35, 120, 75, 97, -40, -67, -104 }, 70 }, { { -17, 51, -58, 55, 91, 65, -20, 46 }, -43 }, { { 102, 12, -52, -119, 34, -72, -100, 58 }, 119 }, { { 48, -20, 31, 105, 47, -101, 125, 1 }, -20 } }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_int8x8_t a = simde_vld1_s8(test_vec[i].a); int8_t r = simde_vaddv_s8(a); do { if (simde_assert_equal_i8_(r, test_vec[i].r, "../test/arm/neon/addv.c", 81, "r", "test_vec[i].r")) { return 1; } } while (0); } return 0; # 96 "../test/arm/neon/addv.c" } static int test_simde_vaddv_s16 (void) { static const struct { int16_t a[4]; int16_t r; } test_vec[] = { { { -2626, 8012, 2510, -16969 }, -9073 }, { { 32060, -26380, -8001, 9670 }, 7349 }, { { -27923, 4014, 19019, 31562 }, 26672 }, { { 26935, 26340, 25092, -15769 }, -2938 }, { { -19625, 9698, -26180, -1822 }, 27607 }, { { -10473, -10608, 22455, -23301 }, -21927 }, { { -22039, 13492, -268, 11183 }, 2368 }, { { -27545, 27793, -1802, 19758 }, 18204 } }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_int16x4_t a = simde_vld1_s16(test_vec[i].a); int16_t r = simde_vaddv_s16(a); do { if (simde_assert_equal_i16_(r, test_vec[i].r, "../test/arm/neon/addv.c", 127, "r", "test_vec[i].r")) { return 1; } } while (0); } return 0; # 142 "../test/arm/neon/addv.c" } static int test_simde_vaddv_s32 (void) { static const struct { int32_t a[2]; int32_t r; } test_vec[] = { { { 1735594155, -1050716758 }, 684877397 }, { { -459804628, 814256711 }, 354452083 }, { { 795163707, -1571154886 }, -775991179 }, { { -1643189336, -1897120541 }, 754657419 }, { { -134914227, -508013132 }, -642927359 }, { { -1933226171, 482102753 }, -1451123418 }, { { -1001643638, -563698122 }, -1565341760 }, { { 1971156114, -33265231 }, 1937890883 } }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_int32x2_t a = simde_vld1_s32(test_vec[i].a); int32_t r = simde_vaddv_s32(a); do { if (simde_assert_equal_i32_(r, test_vec[i].r, "../test/arm/neon/addv.c", 173, "r", "test_vec[i].r")) { return 1; } } while (0); } return 0; # 188 "../test/arm/neon/addv.c" } static int test_simde_vaddv_u8 (void) { static const struct { uint8_t a[8]; uint8_t r; } test_vec[] = { { { 200, 249, 245, 124, 78, 173, 93, 147 }, 29 }, { { 252, 34, 31, 221, 112, 220, 249, 250 }, 89 }, { { 253, 69, 190, 51, 236, 37, 18, 126 }, 212 }, { { 153, 143, 243, 74, 248, 247, 72, 192 }, 92 }, { { 241, 61, 60, 63, 234, 154, 211, 230 }, 230 }, { { 188, 242, 195, 44, 206, 189, 38, 204 }, 26 }, { { 2, 229, # 209 "../test/arm/neon/addv.c" 3 4 (255) # 209 "../test/arm/neon/addv.c" , 238, 10, 17, 108, 163 }, 254 }, { { 160, 96, 238, 152, 87, 54, 88, 72 }, 179 } }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_uint8x8_t a = simde_vld1_u8(test_vec[i].a); uint8_t r = simde_vaddv_u8(a); do { if (simde_assert_equal_u8_(r, test_vec[i].r, "../test/arm/neon/addv.c", 219, "r", "test_vec[i].r")) { return 1; } } while (0); } return 0; # 234 "../test/arm/neon/addv.c" } static int test_simde_vaddv_u16 (void) { static const struct { uint16_t a[4]; uint16_t r; } test_vec[] = { { { 38260, 24200, 23343, 60229 }, 14960 }, { { 2125, 7192, 16069, 51432 }, 11282 }, { { 59171, 11702, 9209, 39377 }, 53923 }, { { 49027, 55858, 35573, 26915 }, 36301 }, { { 43807, 20168, 3334, 21306 }, 23079 }, { { 21013, 56175, 22416, 46243 }, 14775 }, { { 22847, 14561, 45692, 65489 }, 17517 }, { { 881, 26586, 64910, 44496 }, 5801 } }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_uint16x4_t a = simde_vld1_u16(test_vec[i].a); uint16_t r = simde_vaddv_u16(a); do { if (simde_assert_equal_u16_(r, test_vec[i].r, "../test/arm/neon/addv.c", 265, "r", "test_vec[i].r")) { return 1; } } while (0); } return 0; # 280 "../test/arm/neon/addv.c" } static int test_simde_vaddv_u32 (void) { static const struct { uint32_t a[2]; uint32_t r; } test_vec[] = { { { 2935789736U, 3137418917U }, 1778241357U }, { { 412512648U, 130824648U }, 543337296U }, { { 255831698U, 3524137312U }, 3779969010U }, { { 2721703956U, 2370832869U }, 797569529U }, { { 1195068578U, 167918978U }, 1362987556U }, { { 1981978798U, 1686040529U }, 3668019327U }, { { 4252220829U, 3822027214U }, 3779280747U }, { { 1334118506U, 3034436882U }, 73588092U } }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_uint32x2_t a = simde_vld1_u32(test_vec[i].a); uint32_t r = simde_vaddv_u32(a); do { if (simde_assert_equal_u32_(r, test_vec[i].r, "../test/arm/neon/addv.c", 311, "r", "test_vec[i].r")) { return 1; } } while (0); } return 0; # 326 "../test/arm/neon/addv.c" } static int test_simde_vaddvq_f32 (void) { static const struct { simde_float32_t a[4]; simde_float32_t r; } test_vec[] = { { { -654.47f, -946.98f, -606.16f, 426.64f }, -1780.97f }, { { 868.73f, -655.12f, -15.45f, 495.29f }, 693.45f }, { { -337.86f, -244.89f, 98.86f, 743.11f }, 259.22f }, { { -546.07f, 748.90f, -734.79f, 726.97f }, 195.01f }, { { -248.73f, 463.88f, 495.61f, -608.95f }, 101.81f }, { { 490.96f, 76.01f, -900.59f, 34.68f }, -298.94f }, { { 663.94f, 660.23f, 682.64f, -644.47f }, 1362.34f }, { { -909.10f, 23.60f, -382.13f, -563.57f }, -1831.20f } }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_float32x4_t a = simde_vld1q_f32(test_vec[i].a); simde_float32_t r = simde_vaddvq_f32(a); do { if (simde_assert_equal_f32_(r, test_vec[i].r, simde_test_f32_precision_to_slop(1), "../test/arm/neon/addv.c", 357, "r", "test_vec[i].r")) { return 1; } } while (0); } return 0; # 372 "../test/arm/neon/addv.c" } static int test_simde_vaddvq_f64 (void) { static const struct { simde_float64_t a[4]; simde_float64_t r; } test_vec[] = { { { -439.88, 593.77 }, 153.89 }, { { 555.36, -41.81 }, 513.55 }, { { -578.35, -756.91 }, -1335.26 }, { { 564.48, -445.40 }, 119.08 }, { { 762.82, -204.54 }, 558.28 }, { { 674.09, 291.13 }, 965.22 }, { { -929.06, 684.47 }, -244.59 }, { { -72.52, 177.81 }, 105.29 } }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_float64x2_t a = simde_vld1q_f64(test_vec[i].a); simde_float64_t r = simde_vaddvq_f64(a); do { if (simde_assert_equal_f64_(r, test_vec[i].r, simde_test_f64_precision_to_slop(1), "../test/arm/neon/addv.c", 403, "r", "test_vec[i].r")) { return 1; } } while (0); } return 0; # 418 "../test/arm/neon/addv.c" } static int test_simde_vaddvq_s8 (void) { static const struct { int8_t a[16]; int8_t r; } test_vec[] = { { { 16, 76, 79, 9, -28, 2, -67, -45, 62, -12, 22, -28, 114, -59, # 428 "../test/arm/neon/addv.c" 3 4 (-128) # 428 "../test/arm/neon/addv.c" , -11 }, 2 }, { { 88, 56, -101, -108, -120, -73, 121, 8, -108, 83, -27, 113, 120, -59, -31, -120 }, 98 }, { { 17, 48, -111, -11, 50, 79, -55, 112, 67, -33, 84, -75, -92, -44, -85, -3 }, -52 }, { { 13, 70, -111, -107, -3, 11, -99, -111, 94, -125, 2, -42, 72, -29, 94, 89 }, 74 }, { { 20, -17, 79, 70, 62, 24, -73, -126, -9, 11, 55, -101, -32, -30, -104, -19 }, 66 }, { { 40, 42, -126, 37, 53, 32, -74, -109, -93, -72, 105, -21, -100, -57, 68, -80 }, -99 }, { { -74, -109, -10, -11, -85, -83, 119, -94, -71, -82, 62, -103, -111, -42, -122, -71 }, -119 }, { { 0, 8, -33, 53, 40, -107, -56, -53, 78, 49, -74, -22, -8, -5, -102, -81 }, -57 } }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_int8x16_t a = simde_vld1q_s8(test_vec[i].a); int8_t r = simde_vaddvq_s8(a); do { if (simde_assert_equal_i8_(r, test_vec[i].r, "../test/arm/neon/addv.c", 457, "r", "test_vec[i].r")) { return 1; } } while (0); } return 0; # 472 "../test/arm/neon/addv.c" } static int test_simde_vaddvq_s16 (void) { static const struct { int16_t a[8]; int16_t r; } test_vec[] = { { { -3794, -24556, 21790, 24512, 18139, 27136, 20420, -27241 }, -9130 }, { { -10776, -29256, 21382, 1930, 27942, 13973, -28904, 17957 }, 14248 }, { { 14720, -24858, -22898, 27134, -275, -20013, 27214, 13894 }, 14918 }, { { -448, -14652, 20049, 30669, 25275, -11091, -11535, 28954 }, 1685 }, { { 268, -26097, 3495, -27644, -10484, 23109, -29886, -32112 }, 31721 }, { { 21642, -9400, 5538, 24147, 119, 26674, 19667, -8231 }, 14620 }, { { -6067, -2695, 32246, 649, -12459, -26788, -5030, -7143 }, -27287 }, { { 24897, -7232, 4982, -4799, 29459, -6571, 11968, 3525 }, -9307 } }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_int16x8_t a = simde_vld1q_s16(test_vec[i].a); int16_t r = simde_vaddvq_s16(a); do { if (simde_assert_equal_i16_(r, test_vec[i].r, "../test/arm/neon/addv.c", 503, "r", "test_vec[i].r")) { return 1; } } while (0); } return 0; # 518 "../test/arm/neon/addv.c" } static int test_simde_vaddvq_s32 (void) { static const struct { int32_t a[4]; int32_t r; } test_vec[] = { { { 409309617, 703009121, 1805496451, 168549695 }, -1208602412 }, { { -1162156857, 605475000, -1732960282, -349401798 }, 1655923359 }, { { 2130940190, 631827106, -644856422, -354116829 }, 1763794045 }, { { 950312575, 1432140399, 334303705, -1107420770 }, 1609335909 }, { { 1279001002, -2039290389, 1298072106, 490161054 }, 1027943773 }, { { 1364581346, 1873195414, 1636013250, 1478394285 }, 2057216999 }, { { 1856264835, 1794381375, -1212722151, 2043998103 }, 186954866 }, { { 1623861962, -1630506533, -1291889915, 1460280788 }, 161746302 } }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_int32x4_t a = simde_vld1q_s32(test_vec[i].a); int32_t r = simde_vaddvq_s32(a); do { if (simde_assert_equal_i32_(r, test_vec[i].r, "../test/arm/neon/addv.c", 549, "r", "test_vec[i].r")) { return 1; } } while (0); } return 0; # 564 "../test/arm/neon/addv.c" } static int test_simde_vaddvq_s64 (void) { static const struct { int64_t a[8]; int64_t r; } test_vec[] = { { { -3175282498865185383L, -6685163521795333907L }, 8586298053049032326L }, { { 4743869010420501684L, 3259920673574755233L }, 8003789683995256917L }, { { -1439710424467513906L, 4491054795359323006L }, 3051344370891809100L }, { { -6235463451047990149L, 3894372779454748490L }, -2341090671593241659L }, { { -2927499906595145100L, 9095823207579489649L }, 6168323300984344549L }, { { 1006603734084785223L, 6746945194881143043L }, 7753548928965928266L }, { { -1630249770841798095L, 740594489963636933L }, -889655280878161162L }, { { 3135157520517692338L, -7644798362971640413L }, -4509640842453948075L } }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_int64x2_t a = simde_vld1q_s64(test_vec[i].a); int64_t r = simde_vaddvq_s64(a); do { if (simde_assert_equal_i64_(r, test_vec[i].r, "../test/arm/neon/addv.c", 595, "r", "test_vec[i].r")) { return 1; } } while (0); } return 0; # 610 "../test/arm/neon/addv.c" } static int test_simde_vaddvq_u8 (void) { static const struct { uint8_t a[16]; uint8_t r; } test_vec[] = { { { 32, 30, 162, 114, 14, 107, 223, 214, 123, 157, 124, 64, 165, 90, 91, 44 }, 218 }, { { 60, 50, 179, 217, 36, 73, 187, 120, 132, 216, 31, 214, 17, 72, 168, 49 }, 29 }, { { 102, 74, 163, 116, 181, 131, 74, 48, 32, 198, 113, 197, 33, 204, 242, 93 }, 209 }, { { # 628 "../test/arm/neon/addv.c" 3 4 (255) # 628 "../test/arm/neon/addv.c" , 165, 54, 35, 238, 241, 155, 115, 201, 186, 73, 218, 2, 242, 12, 105 }, 249 }, { { 60, 175, 221, 242, 50, 40, 34, 82, 238, 147, 24, 15, 96, 10, 109, 95 }, 102 }, { { 175, 163, 130, 157, 149, 29, 16, 94, 215, 90, 57, 217, 76, 69, 66, 136 }, 47 }, { { 244, 32, 122, 39, 72, 157, 121, 54, 48, 145, 70, 144, 155, 179, 239, 74 }, 103 }, { { 86, 113, 232, 235, 142, 248, 74, 101, 82, 131, 63, 158, 200, 129, 39, 188 }, 173 } }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_uint8x16_t a = simde_vld1q_u8(test_vec[i].a); uint8_t r = simde_vaddvq_u8(a); do { if (simde_assert_equal_u8_(r, test_vec[i].r, "../test/arm/neon/addv.c", 649, "r", "test_vec[i].r")) { return 1; } } while (0); } return 0; # 664 "../test/arm/neon/addv.c" } static int test_simde_vaddvq_u16 (void) { static const struct { uint16_t a[8]; uint16_t r; } test_vec[] = { { { 41377, 59875, 23870, 28448, 26350, 35583, 61209, 28628 }, 43196 }, { { 48224, 61275, 42421, 1876, 37672, 61606, 52501, 46764 }, 24659 }, { { 36974, 44448, 49389, 56092, 6950, 16229, 14858, 27566 }, 55898 }, { { 2550, 43866, 44718, 54963, 22850, 22470, 29478, 37901 }, 62188 }, { { 44291, 61505, 23917, 37835, 12665, 33746, 33131, 25070 }, 10016 }, { { 18570, 14605, 49399, 14607, 54809, 16272, 40265, 19667 }, 31586 }, { { 5451, 47164, 1906, 60236, 7736, 41839, 23967, 10757 }, 2448 }, { { 4774, 40291, 29394, 60374, 26184, 37162, 64771, 20189 }, 20995 } }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_uint16x8_t a = simde_vld1q_u16(test_vec[i].a); uint16_t r = simde_vaddvq_u16(a); do { if (simde_assert_equal_u16_(r, test_vec[i].r, "../test/arm/neon/addv.c", 695, "r", "test_vec[i].r")) { return 1; } } while (0); } return 0; # 710 "../test/arm/neon/addv.c" } static int test_simde_vaddvq_u32 (void) { static const struct { uint32_t a[4]; uint32_t r; } test_vec[] = { { { 2231834898U, 1500533537U, 301850481U, 3812295229U }, 3551546849U }, { { 3867188756U, 1506891280U, 3219848124U, 185518328U }, 189511896U }, { { 42997217U, 3646685288U, 501897696U, 1862280539U }, 1758893444U }, { { 3562373315U, 2452432598U, 424744737U, 3240386527U }, 1090002585U }, { { 3703813236U, 2511740853U, 3551699064U, 2302849734U }, 3480168295U }, { { 140351282U, 3734670013U, 2180574114U, 3208780875U }, 674441692U }, { { 2258372305U, 2652590629U, 3094466034U, 2973938815U }, 2389433191U }, { { 163159883U, 3437712170U, 2303582014U, 3444150524U }, 758669999U } }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_uint32x4_t a = simde_vld1q_u32(test_vec[i].a); uint32_t r = simde_vaddvq_u32(a); do { if (simde_assert_equal_u32_(r, test_vec[i].r, "../test/arm/neon/addv.c", 741, "r", "test_vec[i].r")) { return 1; } } while (0); } return 0; # 756 "../test/arm/neon/addv.c" } static int test_simde_vaddvq_u64 (void) { static const struct { uint64_t a[8]; uint64_t r; } test_vec[] = { { { 2979533814127388054UL, 14585791949184355131UL }, 17565325763311743185UL }, { { 13094703515321967811UL, 3270607939043264410UL }, 16365311454365232221UL }, { { 6903246528981808749UL, 10905049591847694093UL }, 17808296120829502842UL }, { { 9211337766653405864UL, 651185335746040901UL }, 9862523102399446765UL }, { { 4662485875117912368UL, 18056095645387509034UL }, 4271837446795869786UL }, { { 11291068898576308557UL, 8189938041221596931UL }, 1034262866088353872UL }, { { 18007214092850648434UL, 2563546366726353735UL }, 2124016385867450553UL }, { { 11499667444815211940UL, 252455085538152398UL }, 11752122530353364338UL } }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_uint64x2_t a = simde_vld1q_u64(test_vec[i].a); uint64_t r = simde_vaddvq_u64(a); do { if (simde_assert_equal_u64_(r, test_vec[i].r, "../test/arm/neon/addv.c", 787, "r", "test_vec[i].r")) { return 1; } } while (0); } return 0; # 802 "../test/arm/neon/addv.c" } static const struct { int (* func)(void); const char* name; } test_suite_tests[] = { { test_simde_vaddv_f32, "vaddv_f32" }, { test_simde_vaddv_s8, "vaddv_s8" }, { test_simde_vaddv_s16, "vaddv_s16" }, { test_simde_vaddv_s32, "vaddv_s32" }, { test_simde_vaddv_u8, "vaddv_u8" }, { test_simde_vaddv_u16, "vaddv_u16" }, { test_simde_vaddv_u32, "vaddv_u32" }, { test_simde_vaddvq_f32, "vaddvq_f32" }, { test_simde_vaddvq_f64, "vaddvq_f64" }, { test_simde_vaddvq_s8, "vaddvq_s8" }, { test_simde_vaddvq_s16, "vaddvq_s16" }, { test_simde_vaddvq_s32, "vaddvq_s32" }, { test_simde_vaddvq_s64, "vaddvq_s64" }, { test_simde_vaddvq_u8, "vaddvq_u8" }, { test_simde_vaddvq_u16, "vaddvq_u16" }, { test_simde_vaddvq_u32, "vaddvq_u32" }, { test_simde_vaddvq_u64, "vaddvq_u64" }, }; # 1 "../test/arm/neon/test-neon-footer.h" 1 int main(void) { int retval = # 3 "../test/arm/neon/test-neon-footer.h" 3 4 0 # 3 "../test/arm/neon/test-neon-footer.h" ; fprintf( # 5 "../test/arm/neon/test-neon-footer.h" 3 4 stdout # 5 "../test/arm/neon/test-neon-footer.h" , "1..%zu\n", (sizeof(test_suite_tests) / sizeof(test_suite_tests[0]))); for (size_t i = 0 ; i < (sizeof(test_suite_tests) / sizeof(test_suite_tests[0])) ; i++) { int res = test_suite_tests[i].func(); if (res != 0) { retval = # 9 "../test/arm/neon/test-neon-footer.h" 3 4 1 # 9 "../test/arm/neon/test-neon-footer.h" ; fprintf( # 10 "../test/arm/neon/test-neon-footer.h" 3 4 stdout # 10 "../test/arm/neon/test-neon-footer.h" , "not ok %zu " "addv" "/%s\n", i + 1, test_suite_tests[i].name); } else { fprintf( # 12 "../test/arm/neon/test-neon-footer.h" 3 4 stdout # 12 "../test/arm/neon/test-neon-footer.h" , "ok %zu " "addv" "/%s\n", i + 1, test_suite_tests[i].name); } } return retval; } # 826 "../test/arm/neon/addv.c" 2
Become a Patron
Sponsor on GitHub
Donate via PayPal
Source on GitHub
Mailing list
Installed libraries
Wiki
Report an issue
How it works
Contact the author
CE on Mastodon
About the author
Statistics
Changelog
Version tree