; ; SIMD instruction support check ; ; Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB ; Copyright (C) 2016, D. R. Commander. ; Copyright (C) 2023, Aliaksiej Kandracienka. ; ; Based on ; x86 SIMD extension for IJG JPEG library ; Copyright (C) 1999-2006, MIYASAKA Masaru. ; For conditions of distribution and use, see copyright notice in jsimdext.inc ; ; This file should be assembled with NASM (Netwide Assembler) or Yasm.
; Assume that all x86-64 processors support SSE & SSE2 instructions or rdi, JSIMD_SSE2 or rdi, JSIMD_SSE
; Check whether CPUID leaf 07H is supported ; (leaf 07H is used to check for AVX2 instruction support)
mov rax, 0
cpuid cmp rax, 7 jl short .return ; Maximum leaf < 07H
; Check for AVX2 O/S support
mov rax, 1 xor rcx, rcx
cpuid
test rcx, 1 << 27 jz short .return ; O/S does not support XSAVE
test rcx, 1 << 28 jz short .return ; CPU does not support AVX2
xor rcx, rcx
xgetbv and rax, 6 cmp rax, 6; O/S does not manage XMM/YMM state ; using XSAVE jnz short .return
or rdi, JSIMD_AVX2
.return:
mov rax, rdi
pop rdi
pop rbx
pop rbp
ret
; For some reason, the OS X linker does not honor the request to align the ; segment unless we do this. align32
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.