Thanks for using Compiler Explorer
Sponsors
Jakt
C++
Ada
Algol68
Analysis
Android Java
Android Kotlin
Assembly
C
C3
Carbon
C with Coccinelle
C++ with Coccinelle
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
Mojo
Nim
Numba
Nix
Objective-C
Objective-C++
OCaml
Odin
OpenCL C
Pascal
Pony
PTX
Python
Racket
Raku
Ruby
Rust
Sail
Snowball
Scala
Slang
Solidity
Spice
SPIR-V
Swift
LLVM TableGen
Toit
TypeScript Native
V
Vala
Visual Basic
Vyper
WASM
Zig
Javascript
GIMPLE
Ygen
sway
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 13.4.0
ARM GCC 13.4.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 14.3.0
ARM GCC 14.3.0 (unknown-eabi)
ARM GCC 15.1.0
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 13.4.0
ARM64 GCC 14.1.0
ARM64 GCC 14.2.0
ARM64 GCC 14.3.0
ARM64 GCC 15.1.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 13.4.0
AVR gcc 14.1.0
AVR gcc 14.2.0
AVR gcc 14.3.0
AVR gcc 15.1.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 clang 19.1.0
BPF clang 20.1.0
BPF gcc 13.1.0
BPF gcc 13.2.0
BPF gcc 13.3.0
BPF gcc 13.4.0
BPF gcc 14.1.0
BPF gcc 14.2.0
BPF gcc 14.3.0
BPF gcc 15.1.0
BPF gcc trunk
C2Rust (master)
Chibicc 2020-12-07
FRC 2019
FRC 2020
FRC 2023
HPPA gcc 14.2.0
HPPA gcc 14.3.0
HPPA gcc 15.1.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)
KVX ACB 5.2.0 (GCC 13.2.1)
LC3 (trunk)
M68K clang (trunk)
M68K gcc 13.1.0
M68K gcc 13.2.0
M68K gcc 13.3.0
M68K gcc 13.4.0
M68K gcc 14.1.0
M68K gcc 14.2.0
M68K gcc 14.3.0
M68K gcc 15.1.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 13.4.0
MSP430 gcc 14.1.0
MSP430 gcc 14.2.0
MSP430 gcc 14.3.0
MSP430 gcc 15.1.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
ORCA/C 2.1.0
ORCA/C 2.2.0
ORCA/C 2.2.1
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 13.4.0
POWER64 gcc 14.1.0
POWER64 gcc 14.2.0
POWER64 gcc 14.3.0
POWER64 gcc 15.1.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 13.4.0
RISC-V (32-bits) gcc 14.1.0
RISC-V (32-bits) gcc 14.2.0
RISC-V (32-bits) gcc 14.3.0
RISC-V (32-bits) gcc 15.1.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 13.4.0
RISC-V (64-bits) gcc 14.1.0
RISC-V (64-bits) gcc 14.2.0
RISC-V (64-bits) gcc 14.3.0
RISC-V (64-bits) gcc 15.1.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 19.1.0
RISC-V rv32gc clang 20.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 19.1.0
RISC-V rv64gc clang 20.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
SDCC 4.5.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 13.4.0
SPARC LEON gcc 14.1.0
SPARC LEON gcc 14.2.0
SPARC LEON gcc 14.3.0
SPARC LEON gcc 15.1.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 13.4.0
SPARC gcc 14.1.0
SPARC gcc 14.2.0
SPARC gcc 14.3.0
SPARC gcc 15.1.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 13.4.0
SPARC64 gcc 14.1.0
SPARC64 gcc 14.2.0
SPARC64 gcc 14.3.0
SPARC64 gcc 15.1.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 13.4.0
TI C6x gcc 14.1.0
TI C6x gcc 14.2.0
TI C6x gcc 14.3.0
TI C6x gcc 15.1.0
TI CL430 21.6.1
Tricore gcc 11.3.0 (EEESlab)
VAX gcc NetBSDELF 10.4.0
VAX gcc NetBSDELF 10.5.0 (Nov 15 03:50:22 2023)
VAX gcc NetBSDELF 12.4.0 (Apr 16 05:27 2025)
WebAssembly clang (trunk)
Xtensa ESP32 gcc 11.2.0 (2022r1)
Xtensa ESP32 gcc 12.2.0 (20230208)
Xtensa ESP32 gcc 14.2.0 (20241119)
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 14.2.0 (20241119)
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 14.2.0 (20241119)
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.41 VS17.11
arm64 msvc v19.42 VS17.12
arm64 msvc v19.43 VS17.13
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 19.1.0
armv7-a clang 20.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 19.1.0
armv8-a clang 20.1.0
armv8-a clang 9.0.0
armv8-a clang 9.0.1
clang 12 for DPU (rel 2023.2.0)
cproc-master
ez80-clang 15.0.0
ez80-clang 15.0.7
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 13.4.0
loongarch64 gcc 14.1.0
loongarch64 gcc 14.2.0
loongarch64 gcc 14.3.0
loongarch64 gcc 15.1.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 13.4.0
mips (el) gcc 14.1.0
mips (el) gcc 14.2.0
mips (el) gcc 14.3.0
mips (el) gcc 15.1.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 clang 19.1.0
mips clang 20.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 13.4.0
mips gcc 14.1.0
mips gcc 14.2.0
mips gcc 14.3.0
mips gcc 15.1.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 13.4.0
mips64 (el) gcc 14.1.0
mips64 (el) gcc 14.2.0
mips64 (el) gcc 14.3.0
mips64 (el) gcc 15.1.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 clang 19.1.0
mips64 clang 20.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 13.4.0
mips64 gcc 14.1.0
mips64 gcc 14.2.0
mips64 gcc 14.3.0
mips64 gcc 15.1.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
mips64el clang 19.1.0
mips64el clang 20.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
mipsel clang 19.1.0
mipsel clang 20.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 13.4.0
power gcc 14.1.0
power gcc 14.2.0
power gcc 14.3.0
power gcc 15.1.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 13.4.0
power64le gcc 14.1.0
power64le gcc 14.2.0
power64le gcc 14.3.0
power64le gcc 15.1.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 13.4.0
s390x gcc 14.1.0
s390x gcc 14.2.0
s390x gcc 14.3.0
s390x gcc 15.1.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 13.4.0
sh gcc 14.1.0
sh gcc 14.2.0
sh gcc 14.3.0
sh gcc 15.1.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.41 VS17.11
x64 msvc v19.42 VS17.12
x64 msvc v19.43 VS17.13
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.41 VS17.11
x86 msvc v19.42 VS17.12
x86 msvc v19.43 VS17.13
x86 msvc v19.latest
x86 nvc 24.11
x86 nvc 24.9
x86 nvc 25.1
x86 nvc 25.3
x86 nvc 25.5
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 20.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.3 (assertions)
x86-64 gcc 10.4
x86-64 gcc 10.4 (assertions)
x86-64 gcc 10.5
x86-64 gcc 10.5 (assertions)
x86-64 gcc 11.1
x86-64 gcc 11.1 (assertions)
x86-64 gcc 11.2
x86-64 gcc 11.2 (assertions)
x86-64 gcc 11.3
x86-64 gcc 11.3 (assertions)
x86-64 gcc 11.4
x86-64 gcc 11.4 (assertions)
x86-64 gcc 12.1
x86-64 gcc 12.1 (assertions)
x86-64 gcc 12.2
x86-64 gcc 12.2 (assertions)
x86-64 gcc 12.3
x86-64 gcc 12.3 (assertions)
x86-64 gcc 12.4
x86-64 gcc 12.4 (assertions)
x86-64 gcc 13.1
x86-64 gcc 13.1 (assertions)
x86-64 gcc 13.2
x86-64 gcc 13.2 (assertions)
x86-64 gcc 13.3
x86-64 gcc 13.3 (assertions)
x86-64 gcc 13.4
x86-64 gcc 13.4 (assertions)
x86-64 gcc 14.1
x86-64 gcc 14.1 (assertions)
x86-64 gcc 14.2
x86-64 gcc 14.2 (assertions)
x86-64 gcc 14.3
x86-64 gcc 14.3 (assertions)
x86-64 gcc 15.1
x86-64 gcc 15.1 (assertions)
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
z180-clang 15.0.0
z180-clang 15.0.7
z80-clang 15.0.0
z80-clang 15.0.7
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.14.0
zig cc 0.14.1
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
#include<stdint.h> #include<stdbool.h> #include<riscv_vector.h> #include<stdio.h> #include<inttypes.h> // fn(dst, arg1, arg2, number_of_u64s); returns carry, probably static bool si_f0_exp_8_2u64(uint64_t* v0_rp, uint64_t* v1_ap, uint64_t* v2_bp, uint64_t v3_n) { bool v4_c = ((bool)0ull); uint64_t v5 = v3_n / ((uint64_t)8ull); bool v6 = v5 < ((uint64_t)32ull); uint64_t v7_res = ((uint64_t)32ull); if (!(v6)) goto l0; v7_res = v5; l0:; uint64_t v8_currvl = v7_res; vuint64m1x8_t v9 = __riscv_vlseg8e64_v_u64m1x8(v1_ap, v8_currvl); vuint64m1_t v10 = __riscv_vget_v_u64m1x8_u64m1(v9, 0); vuint64m1_t v11 = __riscv_vget_v_u64m1x8_u64m1(v9, 1); vuint64m1_t v12 = __riscv_vget_v_u64m1x8_u64m1(v9, 2); vuint64m1_t v13 = __riscv_vget_v_u64m1x8_u64m1(v9, 3); vuint64m1_t v14 = __riscv_vget_v_u64m1x8_u64m1(v9, 4); vuint64m1_t v15 = __riscv_vget_v_u64m1x8_u64m1(v9, 5); vuint64m1_t v16 = __riscv_vget_v_u64m1x8_u64m1(v9, 6); vuint64m1_t v17 = __riscv_vget_v_u64m1x8_u64m1(v9, 7); vuint64m1x8_t v18 = __riscv_vlseg8e64_v_u64m1x8(v2_bp, v8_currvl); vuint64m1_t v19 = __riscv_vget_v_u64m1x8_u64m1(v18, 0); vuint64m1_t v20 = __riscv_vget_v_u64m1x8_u64m1(v18, 1); vuint64m1_t v21 = __riscv_vget_v_u64m1x8_u64m1(v18, 2); vuint64m1_t v22 = __riscv_vget_v_u64m1x8_u64m1(v18, 3); vuint64m1_t v23 = __riscv_vget_v_u64m1x8_u64m1(v18, 4); vuint64m1_t v24 = __riscv_vget_v_u64m1x8_u64m1(v18, 5); vuint64m1_t v25 = __riscv_vget_v_u64m1x8_u64m1(v18, 6); vuint64m1_t v26 = __riscv_vget_v_u64m1x8_u64m1(v18, 7); vbool64_t v27_c0 = __riscv_vmclr_m_b64(v8_currvl); vbool64_t v28_c1 = __riscv_vmset_m_b64(v8_currvl); vuint64m1_t v29 = __riscv_vadc_vvm_u64m1(v10, v19, v27_c0, v8_currvl); v27_c0 = __riscv_vmadc_vvm_u64m1_b64(v10, v19, v27_c0, v8_currvl); vuint64m1_t v30 = __riscv_vadc_vvm_u64m1(v10, v19, v28_c1, v8_currvl); v28_c1 = __riscv_vmadc_vvm_u64m1_b64(v10, v19, v28_c1, v8_currvl); vuint64m1_t v31 = __riscv_vadc_vvm_u64m1(v11, v20, v27_c0, v8_currvl); v27_c0 = __riscv_vmadc_vvm_u64m1_b64(v11, v20, v27_c0, v8_currvl); vuint64m1_t v32 = __riscv_vadc_vvm_u64m1(v11, v20, v28_c1, v8_currvl); v28_c1 = __riscv_vmadc_vvm_u64m1_b64(v11, v20, v28_c1, v8_currvl); vuint64m1_t v33 = __riscv_vadc_vvm_u64m1(v12, v21, v27_c0, v8_currvl); v27_c0 = __riscv_vmadc_vvm_u64m1_b64(v12, v21, v27_c0, v8_currvl); vuint64m1_t v34 = __riscv_vadc_vvm_u64m1(v12, v21, v28_c1, v8_currvl); v28_c1 = __riscv_vmadc_vvm_u64m1_b64(v12, v21, v28_c1, v8_currvl); vuint64m1_t v35 = __riscv_vadc_vvm_u64m1(v13, v22, v27_c0, v8_currvl); v27_c0 = __riscv_vmadc_vvm_u64m1_b64(v13, v22, v27_c0, v8_currvl); vuint64m1_t v36 = __riscv_vadc_vvm_u64m1(v13, v22, v28_c1, v8_currvl); v28_c1 = __riscv_vmadc_vvm_u64m1_b64(v13, v22, v28_c1, v8_currvl); vuint64m1_t v37 = __riscv_vadc_vvm_u64m1(v14, v23, v27_c0, v8_currvl); v27_c0 = __riscv_vmadc_vvm_u64m1_b64(v14, v23, v27_c0, v8_currvl); vuint64m1_t v38 = __riscv_vadc_vvm_u64m1(v14, v23, v28_c1, v8_currvl); v28_c1 = __riscv_vmadc_vvm_u64m1_b64(v14, v23, v28_c1, v8_currvl); vuint64m1_t v39 = __riscv_vadc_vvm_u64m1(v15, v24, v27_c0, v8_currvl); v27_c0 = __riscv_vmadc_vvm_u64m1_b64(v15, v24, v27_c0, v8_currvl); vuint64m1_t v40 = __riscv_vadc_vvm_u64m1(v15, v24, v28_c1, v8_currvl); v28_c1 = __riscv_vmadc_vvm_u64m1_b64(v15, v24, v28_c1, v8_currvl); vuint64m1_t v41 = __riscv_vadc_vvm_u64m1(v16, v25, v27_c0, v8_currvl); v27_c0 = __riscv_vmadc_vvm_u64m1_b64(v16, v25, v27_c0, v8_currvl); vuint64m1_t v42 = __riscv_vadc_vvm_u64m1(v16, v25, v28_c1, v8_currvl); v28_c1 = __riscv_vmadc_vvm_u64m1_b64(v16, v25, v28_c1, v8_currvl); vuint64m1_t v43 = __riscv_vadc_vvm_u64m1(v17, v26, v27_c0, v8_currvl); v27_c0 = __riscv_vmadc_vvm_u64m1_b64(v17, v26, v27_c0, v8_currvl); vuint64m1_t v44 = __riscv_vadc_vvm_u64m1(v17, v26, v28_c1, v8_currvl); v28_c1 = __riscv_vmadc_vvm_u64m1_b64(v17, v26, v28_c1, v8_currvl); bool v45 = v7_res <= ((uint64_t)64ull); if (v45) goto l1; __builtin_unreachable(); l1:; vuint64m1_t v47 = __riscv_vreinterpret_v_b64_u64m1(v27_c0); uint64_t v48 = __riscv_vmv_x_s_u64m1_u64(v47); vuint64m1_t v49 = __riscv_vreinterpret_v_b64_u64m1(v28_c1); uint64_t v50 = __riscv_vmv_x_s_u64m1_u64(v49); uint64_t v51 = (uint64_t)v4_c; uint64_t v52 = ((uint64_t)1ull) << v7_res; uint64_t v53 = v52 - ((uint64_t)1ull); uint64_t v54 = v48 & v53; uint64_t v55 = v50 & v53; uint64_t v56 = v54 + v55; uint64_t v57 = v56 + v51; uint64_t v58 = v57 >> v7_res; v4_c = v58 != ((uint64_t)0ull); uint64_t v59 = ~(v57); uint64_t v60 = v59 | v48; uint64_t v61 = v60 << ((uint64_t)1ull); uint64_t v62 = v61 | v51; vuint64m1_t v63 = __riscv_vmv_s_x_u64m1(v62, v8_currvl); vbool64_t v64 = __riscv_vreinterpret_v_u64m1_b64(v63); vuint64m1_t v65 = __riscv_vmerge_vvm_u64m1(v29, v30, v64, v8_currvl); vuint64m1_t v66 = __riscv_vmerge_vvm_u64m1(v31, v32, v64, v8_currvl); vuint64m1_t v67 = __riscv_vmerge_vvm_u64m1(v33, v34, v64, v8_currvl); vuint64m1_t v68 = __riscv_vmerge_vvm_u64m1(v35, v36, v64, v8_currvl); vuint64m1_t v69 = __riscv_vmerge_vvm_u64m1(v37, v38, v64, v8_currvl); vuint64m1_t v70 = __riscv_vmerge_vvm_u64m1(v39, v40, v64, v8_currvl); vuint64m1_t v71 = __riscv_vmerge_vvm_u64m1(v41, v42, v64, v8_currvl); vuint64m1_t v72 = __riscv_vmerge_vvm_u64m1(v43, v44, v64, v8_currvl); vuint64m1x8_t v73 = __riscv_vcreate_v_u64m1x8(v65, v66, v67, v68, v69, v70, v71, v72); __riscv_vsseg8e64_v_u64m1x8(v0_rp, v73, v8_currvl); return v4_c; } static bool si_f1_exp_4_4u64(uint64_t* v0_rp, uint64_t* v1_ap, uint64_t* v2_bp, uint64_t v3_n) { bool v4_c = ((bool)0ull); uint64_t v5 = v3_n / ((uint64_t)4ull); bool v6 = v5 < ((uint64_t)32ull); uint64_t v7_res = ((uint64_t)32ull); if (!(v6)) goto l0; v7_res = v5; l0:; uint64_t v8_currvl = v7_res; vuint64m2x4_t v9 = __riscv_vlseg4e64_v_u64m2x4(v1_ap, v8_currvl); vuint64m2_t v10 = __riscv_vget_v_u64m2x4_u64m2(v9, 0); vuint64m2_t v11 = __riscv_vget_v_u64m2x4_u64m2(v9, 1); vuint64m2_t v12 = __riscv_vget_v_u64m2x4_u64m2(v9, 2); vuint64m2_t v13 = __riscv_vget_v_u64m2x4_u64m2(v9, 3); vuint64m2x4_t v14 = __riscv_vlseg4e64_v_u64m2x4(v2_bp, v8_currvl); vuint64m2_t v15 = __riscv_vget_v_u64m2x4_u64m2(v14, 0); vuint64m2_t v16 = __riscv_vget_v_u64m2x4_u64m2(v14, 1); vuint64m2_t v17 = __riscv_vget_v_u64m2x4_u64m2(v14, 2); vuint64m2_t v18 = __riscv_vget_v_u64m2x4_u64m2(v14, 3); vbool32_t v19_c0 = __riscv_vmclr_m_b32(v8_currvl); vbool32_t v20_c1 = __riscv_vmset_m_b32(v8_currvl); vuint64m2_t v21 = __riscv_vadc_vvm_u64m2(v10, v15, v19_c0, v8_currvl); v19_c0 = __riscv_vmadc_vvm_u64m2_b32(v10, v15, v19_c0, v8_currvl); vuint64m2_t v22 = __riscv_vadc_vvm_u64m2(v10, v15, v20_c1, v8_currvl); v20_c1 = __riscv_vmadc_vvm_u64m2_b32(v10, v15, v20_c1, v8_currvl); vuint64m2_t v23 = __riscv_vadc_vvm_u64m2(v11, v16, v19_c0, v8_currvl); v19_c0 = __riscv_vmadc_vvm_u64m2_b32(v11, v16, v19_c0, v8_currvl); vuint64m2_t v24 = __riscv_vadc_vvm_u64m2(v11, v16, v20_c1, v8_currvl); v20_c1 = __riscv_vmadc_vvm_u64m2_b32(v11, v16, v20_c1, v8_currvl); vuint64m2_t v25 = __riscv_vadc_vvm_u64m2(v12, v17, v19_c0, v8_currvl); v19_c0 = __riscv_vmadc_vvm_u64m2_b32(v12, v17, v19_c0, v8_currvl); vuint64m2_t v26 = __riscv_vadc_vvm_u64m2(v12, v17, v20_c1, v8_currvl); v20_c1 = __riscv_vmadc_vvm_u64m2_b32(v12, v17, v20_c1, v8_currvl); vuint64m2_t v27 = __riscv_vadc_vvm_u64m2(v13, v18, v19_c0, v8_currvl); v19_c0 = __riscv_vmadc_vvm_u64m2_b32(v13, v18, v19_c0, v8_currvl); vuint64m2_t v28 = __riscv_vadc_vvm_u64m2(v13, v18, v20_c1, v8_currvl); v20_c1 = __riscv_vmadc_vvm_u64m2_b32(v13, v18, v20_c1, v8_currvl); bool v29 = v7_res <= ((uint64_t)64ull); if (v29) goto l1; __builtin_unreachable(); l1:; vuint64m1_t v31 = __riscv_vreinterpret_v_b32_u64m1(v19_c0); uint64_t v32 = __riscv_vmv_x_s_u64m1_u64(v31); vuint64m1_t v33 = __riscv_vreinterpret_v_b32_u64m1(v20_c1); uint64_t v34 = __riscv_vmv_x_s_u64m1_u64(v33); uint64_t v35 = (uint64_t)v4_c; uint64_t v36 = ((uint64_t)1ull) << v7_res; uint64_t v37 = v36 - ((uint64_t)1ull); uint64_t v38 = v32 & v37; uint64_t v39 = v34 & v37; uint64_t v40 = v38 + v39; uint64_t v41 = v40 + v35; uint64_t v42 = v41 >> v7_res; v4_c = v42 != ((uint64_t)0ull); uint64_t v43 = ~(v41); uint64_t v44 = v43 | v32; uint64_t v45 = v44 << ((uint64_t)1ull); uint64_t v46 = v45 | v35; vuint64m1_t v47 = __riscv_vmv_s_x_u64m1(v46, v8_currvl); vbool32_t v48 = __riscv_vreinterpret_v_u64m1_b32(v47); vuint64m2_t v49 = __riscv_vmerge_vvm_u64m2(v21, v22, v48, v8_currvl); vuint64m2_t v50 = __riscv_vmerge_vvm_u64m2(v23, v24, v48, v8_currvl); vuint64m2_t v51 = __riscv_vmerge_vvm_u64m2(v25, v26, v48, v8_currvl); vuint64m2_t v52 = __riscv_vmerge_vvm_u64m2(v27, v28, v48, v8_currvl); vuint64m2x4_t v53 = __riscv_vcreate_v_u64m2x4(v49, v50, v51, v52); __riscv_vsseg4e64_v_u64m2x4(v0_rp, v53, v8_currvl); return v4_c; } static bool si_f2_exp_2_8u64(uint64_t* v0_rp, uint64_t* v1_ap, uint64_t* v2_bp, uint64_t v3_n) { bool v4_c = ((bool)0ull); uint64_t v5 = v3_n / ((uint64_t)2ull); bool v6 = v5 < ((uint64_t)32ull); uint64_t v7_res = ((uint64_t)32ull); if (!(v6)) goto l0; v7_res = v5; l0:; uint64_t v8_currvl = v7_res; vuint64m4x2_t v9 = __riscv_vlseg2e64_v_u64m4x2(v1_ap, v8_currvl); vuint64m4_t v10 = __riscv_vget_v_u64m4x2_u64m4(v9, 0); vuint64m4_t v11 = __riscv_vget_v_u64m4x2_u64m4(v9, 1); vuint64m4x2_t v12 = __riscv_vlseg2e64_v_u64m4x2(v2_bp, v8_currvl); vuint64m4_t v13 = __riscv_vget_v_u64m4x2_u64m4(v12, 0); vuint64m4_t v14 = __riscv_vget_v_u64m4x2_u64m4(v12, 1); vbool16_t v15_c0 = __riscv_vmclr_m_b16(v8_currvl); vbool16_t v16_c1 = __riscv_vmset_m_b16(v8_currvl); vuint64m4_t v17 = __riscv_vadc_vvm_u64m4(v10, v13, v15_c0, v8_currvl); v15_c0 = __riscv_vmadc_vvm_u64m4_b16(v10, v13, v15_c0, v8_currvl); vuint64m4_t v18 = __riscv_vadc_vvm_u64m4(v10, v13, v16_c1, v8_currvl); v16_c1 = __riscv_vmadc_vvm_u64m4_b16(v10, v13, v16_c1, v8_currvl); vuint64m4_t v19 = __riscv_vadc_vvm_u64m4(v11, v14, v15_c0, v8_currvl); v15_c0 = __riscv_vmadc_vvm_u64m4_b16(v11, v14, v15_c0, v8_currvl); vuint64m4_t v20 = __riscv_vadc_vvm_u64m4(v11, v14, v16_c1, v8_currvl); v16_c1 = __riscv_vmadc_vvm_u64m4_b16(v11, v14, v16_c1, v8_currvl); bool v21 = v7_res <= ((uint64_t)64ull); if (v21) goto l1; __builtin_unreachable(); l1:; vuint64m1_t v23 = __riscv_vreinterpret_v_b16_u64m1(v15_c0); uint64_t v24 = __riscv_vmv_x_s_u64m1_u64(v23); vuint64m1_t v25 = __riscv_vreinterpret_v_b16_u64m1(v16_c1); uint64_t v26 = __riscv_vmv_x_s_u64m1_u64(v25); uint64_t v27 = (uint64_t)v4_c; uint64_t v28 = ((uint64_t)1ull) << v7_res; uint64_t v29 = v28 - ((uint64_t)1ull); uint64_t v30 = v24 & v29; uint64_t v31 = v26 & v29; uint64_t v32 = v30 + v31; uint64_t v33 = v32 + v27; uint64_t v34 = v33 >> v7_res; v4_c = v34 != ((uint64_t)0ull); uint64_t v35 = ~(v33); uint64_t v36 = v35 | v24; uint64_t v37 = v36 << ((uint64_t)1ull); uint64_t v38 = v37 | v27; vuint64m1_t v39 = __riscv_vmv_s_x_u64m1(v38, v8_currvl); vbool16_t v40 = __riscv_vreinterpret_v_u64m1_b16(v39); vuint64m4_t v41 = __riscv_vmerge_vvm_u64m4(v17, v18, v40, v8_currvl); vuint64m4_t v42 = __riscv_vmerge_vvm_u64m4(v19, v20, v40, v8_currvl); vuint64m4x2_t v43 = __riscv_vcreate_v_u64m4x2(v41, v42); __riscv_vsseg2e64_v_u64m4x2(v0_rp, v43, v8_currvl); return v4_c; } static bool si_f3_exp_1_16u64(uint64_t* v0_rp, uint64_t* v1_ap, uint64_t* v2_bp, uint64_t v3_n) { bool v4_c = ((bool)0ull); uint64_t v5 = v3_n / ((uint64_t)1ull); bool v6 = v5 < ((uint64_t)32ull); uint64_t v7_res = ((uint64_t)32ull); if (!(v6)) goto l0; v7_res = v5; l0:; uint64_t v8_currvl = v7_res; vuint64m8_t v9 = __riscv_vle64_v_u64m8(v1_ap, v8_currvl); vuint64m8_t v10 = __riscv_vle64_v_u64m8(v2_bp, v8_currvl); vbool8_t v11_c0 = __riscv_vmclr_m_b8(v8_currvl); vbool8_t v12_c1 = __riscv_vmset_m_b8(v8_currvl); vuint64m8_t v13 = __riscv_vadc_vvm_u64m8(v9, v10, v11_c0, v8_currvl); v11_c0 = __riscv_vmadc_vvm_u64m8_b8(v9, v10, v11_c0, v8_currvl); vuint64m8_t v14 = __riscv_vadc_vvm_u64m8(v9, v10, v12_c1, v8_currvl); v12_c1 = __riscv_vmadc_vvm_u64m8_b8(v9, v10, v12_c1, v8_currvl); bool v15 = v7_res <= ((uint64_t)64ull); if (v15) goto l1; __builtin_unreachable(); l1:; vuint64m1_t v17 = __riscv_vreinterpret_v_b8_u64m1(v11_c0); uint64_t v18 = __riscv_vmv_x_s_u64m1_u64(v17); vuint64m1_t v19 = __riscv_vreinterpret_v_b8_u64m1(v12_c1); uint64_t v20 = __riscv_vmv_x_s_u64m1_u64(v19); uint64_t v21 = (uint64_t)v4_c; uint64_t v22 = ((uint64_t)1ull) << v7_res; uint64_t v23 = v22 - ((uint64_t)1ull); uint64_t v24 = v18 & v23; uint64_t v25 = v20 & v23; uint64_t v26 = v24 + v25; uint64_t v27 = v26 + v21; uint64_t v28 = v27 >> v7_res; v4_c = v28 != ((uint64_t)0ull); uint64_t v29 = ~(v27); uint64_t v30 = v29 | v18; uint64_t v31 = v30 << ((uint64_t)1ull); uint64_t v32 = v31 | v21; vuint64m1_t v33 = __riscv_vmv_s_x_u64m1(v32, v8_currvl); vbool8_t v34 = __riscv_vreinterpret_v_u64m1_b8(v33); vuint64m8_t v35 = __riscv_vmerge_vvm_u64m8(v13, v14, v34, v8_currvl); __riscv_vse64_v_u64m8(v0_rp, v35, v8_currvl); return v4_c; } bool (*const cadd_seg8_u64m1)(uint64_t*,uint64_t*,uint64_t*,uint64_t) = si_f0_exp_8_2u64; bool (*const cadd_seg4_u64m2)(uint64_t*,uint64_t*,uint64_t*,uint64_t) = si_f1_exp_4_4u64; bool (*const cadd_seg2_u64m4)(uint64_t*,uint64_t*,uint64_t*,uint64_t) = si_f2_exp_2_8u64; bool (*const cadd_seg1_u64m2)(uint64_t*,uint64_t*,uint64_t*,uint64_t) = si_f3_exp_1_16u64;
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
CE on Bluesky
About the author
Statistics
Changelog
Version tree