All Projects → VectorChief → Unisimd Assembler

VectorChief / Unisimd Assembler

Licence: mit
SIMD macro assembler unified for ARM, MIPS, PPC and x86

Programming Languages

assembler
53 projects

Projects that are alternatives of or similar to Unisimd Assembler

Simd
C++ image processing and machine learning library with using of SIMD: SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX-512, VMX(Altivec) and VSX(Power7), NEON for ARM.
Stars: ✭ 1,263 (+1904.76%)
Mutual labels:  simd, sse, powerpc, neon, avx2, avx512, avx
Simde
Implementations of SIMD instruction sets for systems which don't natively support them.
Stars: ✭ 1,012 (+1506.35%)
Mutual labels:  simd, sse, powerpc, neon, avx2, avx512, avx
Boost.simd
Boost SIMD
Stars: ✭ 238 (+277.78%)
Mutual labels:  simd, aarch64, sse, neon, avx2, avx512, avx
Nsimd
Agenium Scale vectorization library for CPUs and GPUs
Stars: ✭ 138 (+119.05%)
Mutual labels:  simd, aarch64, neon, avx2, avx512, avx
Sleef
SIMD Library for Evaluating Elementary Functions, vectorized libm and DFT
Stars: ✭ 353 (+460.32%)
Mutual labels:  simd, aarch64, powerpc, neon, avx512, avx
Vc
SIMD Vector Classes for C++
Stars: ✭ 985 (+1463.49%)
Mutual labels:  simd, sse, neon, avx2, avx512, avx
Quadray Engine
Realtime raytracer using SIMD on ARM, MIPS, PPC and x86
Stars: ✭ 13 (-79.37%)
Mutual labels:  simd, sse, neon, avx2, avx512, avx
Sse2neon
A translator from Intel SSE intrinsics to Arm/Aarch64 NEON implementation
Stars: ✭ 316 (+401.59%)
Mutual labels:  x86, simd, aarch64, sse, neon
Directxmath
DirectXMath is an all inline SIMD C++ linear algebra library for use in games and graphics apps
Stars: ✭ 859 (+1263.49%)
Mutual labels:  simd, sse, neon, avx2, avx
Libsimdpp
Portable header-only C++ low level SIMD library
Stars: ✭ 914 (+1350.79%)
Mutual labels:  simd, sse, neon, avx2, avx512
Base64simd
Base64 coding and decoding with SIMD instructions (SSE/AVX2/AVX512F/AVX512BW/AVX512VBMI/ARM Neon)
Stars: ✭ 115 (+82.54%)
Mutual labels:  simd, sse, neon, avx2, avx512
Xsimd
C++ wrappers for SIMD intrinsics and parallelized, optimized mathematical functions (SSE, AVX, NEON, AVX512)
Stars: ✭ 964 (+1430.16%)
Mutual labels:  simd, sse, neon, avx512, avx
Umesimd
UME::SIMD A library for explicit simd vectorization.
Stars: ✭ 66 (+4.76%)
Mutual labels:  simd, neon, avx2, avx512, avx
ternary-logic
Support for ternary logic in SSE, XOP, AVX2 and x86 programs
Stars: ✭ 21 (-66.67%)
Mutual labels:  avx, sse, simd, avx2, avx512
cpuwhat
Nim utilities for advanced CPU operations: CPU identification, ISA extension detection, bindings to assorted intrinsics
Stars: ✭ 25 (-60.32%)
Mutual labels:  avx, sse, simd, x86, avx2
Std Simd
std::experimental::simd for GCC [ISO/IEC TS 19570:2018]
Stars: ✭ 275 (+336.51%)
Mutual labels:  simd, sse, neon, avx512, avx
Libxsmm
Library for specialized dense and sparse matrix operations, and deep learning primitives.
Stars: ✭ 518 (+722.22%)
Mutual labels:  simd, sse, avx2, avx512, avx
Keypatch
Multi-architecture assembler for IDA Pro. Powered by Keystone Engine.
Stars: ✭ 939 (+1390.48%)
Mutual labels:  x86, x86-64, mips, powerpc
Capstone
Capstone disassembly/disassembler framework: Core (Arm, Arm64, BPF, EVM, M68K, M680X, MOS65xx, Mips, PPC, RISCV, Sparc, SystemZ, TMS320C64x, Web Assembly, X86, X86_64, XCore) + bindings.
Stars: ✭ 5,374 (+8430.16%)
Mutual labels:  x86, x86-64, mips, powerpc
Fastnoisesimd
C++ SIMD Noise Library
Stars: ✭ 542 (+760.32%)
Mutual labels:  simd, sse, neon, avx2

UniSIMD assembler is a high-level C/C++ macro assembler framework unified across ARM, MIPS, POWER and x86 architectures. It establishes a subset of both BASE and SIMD instruction sets with clearly defined common API, so that application logic can be written and maintained in one place without code replication. The assembler itself isn't a separate tool, but rather a collection of C/C++ header files, which applications need to include directly in order to use.

Initial documentation for the assembler is provided in core/config/rtdocs.h.

At present, Intel SSE/SSE2/SSE4 and AVX/AVX2/AVX-512 (32/64-bit x86 ISAs), ARMv7 NEON/NEONv2, ARMv8 AArch32 and AArch64 NEON, SVE (32/64-bit ARM ISAs), MIPS 32/64-bit r5/r6 MSA and POWER 32/64-bit VMX/VSX (little/big-endian ISAs) are mostly implemented (w/ horizontal reductions) although scalar improvements, wider SIMD vectors with zeroing/merging predicates in 3/4-operand instructions, cross-precision fp-converters as well as sub-word (byte/half) integer SIMD ops are planned as extensions to current 2/3-operand SPMD-driven vertical SIMD ISA.

The project has a test framework for Linux/GCC/Clang and Windows/VC++/TDM64-GCC. Support for macOS is provided via Command Line Tools with GCC and Clang options. Instructions for resolving dependencies and building the binaries for supported platforms can be found in the accompanying INSTALL file.

UniSIMD core features:

  • Unified, Universal, Portable, Compatible code
  • Explicit register-allocation, predictable performance
  • Three register-sets for code: 8, 16, 32 (free: 8, 15, 30)
  • High-level SIMD registers/ops as singles, pairs and quads
  • SIMD-aligned backend structures with offsets/factors
  • Vector-length agnostic vertical SIMD ISA, configurable
  • Simultaneous scalar+128/256-bit+configurable SIMD ops
  • ISA reservation for fp16/fp128 (half/quad) SIMD ops
  • C/C++, Compute, SPMD on 4 major archs
  • Intel SSE/SSE2/SSE4 and AVX/AVX2/AVX-512
  • ARMv7 NEON/NEONv2, ARMv8 AArch32/AArch64 NEON, SVE
  • MIPS r5/r6 MSA (Warrior P5600, I6400/P6600)
  • POWER VMX/VSX (PowerPC G4/G5, POWER6/7/8/9)
  • CISC, RISC, CISC on RISC, little/big-endian ISA
  • Support for reg-reg, load/store, load-op instructions
  • FMA3 support (native or higher-precision emulation)
  • 32/64-bit hybrid mode for native 64-bit ABI
  • 32/64-bit addressing for BASE and SIMD ops
  • 32/64-bit configurable SIMD elements (fp+int)
  • Simultaneous 32/64-bit BASE (with rules) and SIMD ops
  • ISA reservation for int8/int16 (byte/half) BASE ops
  • Full control over code, compiler steps out of the way
  • Potential for bit-exact fp-compute across modern targets
  • Used in QuadRay engine
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].