@cpp-linter/clang-tidy-linux-arm64 18.1.5 → 20.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/bin/clang-tidy +2 -2
- package/lib/clang/{18 → 20}/include/__clang_cuda_device_functions.h +14 -0
- package/lib/clang/{18 → 20}/include/__clang_cuda_intrinsics.h +1 -3
- package/lib/clang/{18 → 20}/include/__clang_cuda_math.h +5 -0
- package/lib/clang/{18 → 20}/include/__clang_hip_cmath.h +6 -1
- package/lib/clang/{18 → 20}/include/__clang_hip_math.h +5 -0
- package/lib/clang/20/include/__stdarg_header_macro.h +12 -0
- package/lib/clang/20/include/__stddef_header_macro.h +12 -0
- package/lib/clang/{18 → 20}/include/adcintrin.h +5 -0
- package/lib/clang/{18 → 20}/include/adxintrin.h +5 -0
- package/lib/clang/{18 → 20}/include/altivec.h +8 -8
- package/lib/clang/20/include/amdgpuintrin.h +194 -0
- package/lib/clang/20/include/amxavx512intrin.h +382 -0
- package/lib/clang/20/include/amxbf16transposeintrin.h +94 -0
- package/lib/clang/20/include/amxcomplextransposeintrin.h +303 -0
- package/lib/clang/{18 → 20}/include/amxfp16intrin.h +35 -0
- package/lib/clang/20/include/amxfp16transposeintrin.h +94 -0
- package/lib/clang/20/include/amxfp8intrin.h +230 -0
- package/lib/clang/{18 → 20}/include/amxintrin.h +5 -35
- package/lib/clang/20/include/amxmovrsintrin.h +48 -0
- package/lib/clang/20/include/amxmovrstransposeintrin.h +200 -0
- package/lib/clang/20/include/amxtf32intrin.h +108 -0
- package/lib/clang/20/include/amxtf32transposeintrin.h +105 -0
- package/lib/clang/20/include/amxtransposeintrin.h +248 -0
- package/lib/clang/{18 → 20}/include/arm_acle.h +49 -26
- package/lib/clang/{18 → 20}/include/arm_fp16.h +1 -1
- package/lib/clang/{18 → 20}/include/arm_neon.h +45631 -43745
- package/lib/clang/{18 → 20}/include/arm_sme.h +641 -6
- package/lib/clang/{18 → 20}/include/arm_sve.h +28311 -27738
- package/lib/clang/{18 → 20}/include/arm_vector_types.h +92 -5
- package/lib/clang/20/include/avx10_2_512bf16intrin.h +561 -0
- package/lib/clang/20/include/avx10_2_512convertintrin.h +320 -0
- package/lib/clang/20/include/avx10_2_512minmaxintrin.h +127 -0
- package/lib/clang/20/include/avx10_2_512niintrin.h +314 -0
- package/lib/clang/20/include/avx10_2_512satcvtdsintrin.h +303 -0
- package/lib/clang/20/include/avx10_2_512satcvtintrin.h +301 -0
- package/lib/clang/20/include/avx10_2bf16intrin.h +1085 -0
- package/lib/clang/20/include/avx10_2convertintrin.h +589 -0
- package/lib/clang/20/include/avx10_2copyintrin.h +66 -0
- package/lib/clang/20/include/avx10_2minmaxintrin.h +277 -0
- package/lib/clang/20/include/avx10_2niintrin.h +2075 -0
- package/lib/clang/20/include/avx10_2satcvtdsintrin.h +496 -0
- package/lib/clang/20/include/avx10_2satcvtintrin.h +444 -0
- package/lib/clang/{18 → 20}/include/avx2intrin.h +9 -0
- package/lib/clang/{18 → 20}/include/avx512bitalgintrin.h +2 -2
- package/lib/clang/{18 → 20}/include/avx512fintrin.h +22 -14
- package/lib/clang/{18 → 20}/include/avx512fp16intrin.h +38 -38
- package/lib/clang/{18 → 20}/include/avx512vlbitalgintrin.h +4 -4
- package/lib/clang/{18 → 20}/include/avx512vpopcntdqintrin.h +12 -4
- package/lib/clang/{18 → 20}/include/avx512vpopcntdqvlintrin.h +16 -8
- package/lib/clang/{18 → 20}/include/avxintrin.h +88 -60
- package/lib/clang/{18 → 20}/include/avxvnniint16intrin.h +36 -77
- package/lib/clang/{18 → 20}/include/avxvnniint8intrin.h +36 -77
- package/lib/clang/{18 → 20}/include/bmi2intrin.h +15 -17
- package/lib/clang/{18 → 20}/include/bmiintrin.h +33 -41
- package/lib/clang/{18 → 20}/include/builtins.h +3 -0
- package/lib/clang/{18 → 20}/include/cmpccxaddintrin.h +1 -1
- package/lib/clang/{18 → 20}/include/cpuid.h +35 -14
- package/lib/clang/{18 → 20}/include/cuda_wrappers/algorithm +1 -1
- package/lib/clang/{18 → 20}/include/cuda_wrappers/cmath +4 -0
- package/lib/clang/{18 → 20}/include/cuda_wrappers/new +2 -0
- package/lib/clang/{18 → 20}/include/emmintrin.h +442 -277
- package/lib/clang/{18 → 20}/include/float.h +28 -0
- package/lib/clang/{18 → 20}/include/fmaintrin.h +32 -16
- package/lib/clang/{18 → 20}/include/gfniintrin.h +32 -10
- package/lib/clang/20/include/gpuintrin.h +224 -0
- package/lib/clang/{18 → 20}/include/hexagon_types.h +8 -4
- package/lib/clang/{18 → 20}/include/hlsl/hlsl_basic_types.h +57 -4
- package/lib/clang/20/include/hlsl/hlsl_detail.h +84 -0
- package/lib/clang/20/include/hlsl/hlsl_intrinsics.h +2814 -0
- package/lib/clang/{18 → 20}/include/hlsl.h +11 -0
- package/lib/clang/{18 → 20}/include/hvx_hexagon_protos.h +427 -0
- package/lib/clang/{18 → 20}/include/ia32intrin.h +36 -36
- package/lib/clang/{18 → 20}/include/immintrin.h +171 -161
- package/lib/clang/{18 → 20}/include/intrin.h +62 -228
- package/lib/clang/20/include/intrin0.h +256 -0
- package/lib/clang/{18 → 20}/include/inttypes.h +4 -0
- package/lib/clang/{18 → 20}/include/iso646.h +4 -0
- package/lib/clang/{18 → 20}/include/keylockerintrin.h +5 -8
- package/lib/clang/{18 → 20}/include/larchintrin.h +22 -8
- package/lib/clang/{18 → 20}/include/lasxintrin.h +27 -25
- package/lib/clang/{18 → 20}/include/limits.h +12 -4
- package/lib/clang/{18 → 20}/include/llvm_libc_wrappers/assert.h +1 -1
- package/lib/clang/{18 → 20}/include/llvm_libc_wrappers/ctype.h +38 -0
- package/lib/clang/{18 → 20}/include/llvm_libc_wrappers/stdlib.h +8 -0
- package/lib/clang/20/include/llvm_offload_wrappers/__llvm_offload.h +31 -0
- package/lib/clang/20/include/llvm_offload_wrappers/__llvm_offload_device.h +10 -0
- package/lib/clang/20/include/llvm_offload_wrappers/__llvm_offload_host.h +15 -0
- package/lib/clang/{18 → 20}/include/lsxintrin.h +27 -25
- package/lib/clang/{18 → 20}/include/lzcntintrin.h +10 -7
- package/lib/clang/20/include/mm3dnow.h +22 -0
- package/lib/clang/{18 → 20}/include/mmintrin.h +285 -239
- package/lib/clang/{18 → 20}/include/module.modulemap +16 -5
- package/lib/clang/20/include/movrs_avx10_2_512intrin.h +98 -0
- package/lib/clang/20/include/movrs_avx10_2intrin.h +174 -0
- package/lib/clang/20/include/movrsintrin.h +59 -0
- package/lib/clang/20/include/nvptxintrin.h +202 -0
- package/lib/clang/{18 → 20}/include/opencl-c-base.h +8 -0
- package/lib/clang/{18 → 20}/include/opencl-c.h +15 -0
- package/lib/clang/{18 → 20}/include/openmp_wrappers/__clang_openmp_device_functions.h +4 -5
- package/lib/clang/{18 → 20}/include/openmp_wrappers/complex_cmath.h +7 -2
- package/lib/clang/{18 → 20}/include/pmmintrin.h +16 -3
- package/lib/clang/{18 → 20}/include/popcntintrin.h +7 -7
- package/lib/clang/{18 → 20}/include/prfchwintrin.h +10 -8
- package/lib/clang/20/include/ptrauth.h +336 -0
- package/lib/clang/20/include/riscv_corev_alu.h +128 -0
- package/lib/clang/{18 → 20}/include/riscv_vector.h +0 -5
- package/lib/clang/20/include/sifive_vector.h +118 -0
- package/lib/clang/20/include/sm4evexintrin.h +32 -0
- package/lib/clang/{18 → 20}/include/smmintrin.h +18 -12
- package/lib/clang/{18 → 20}/include/stdarg.h +15 -19
- package/lib/clang/{18 → 20}/include/stdatomic.h +11 -1
- package/lib/clang/{18 → 20}/include/stdbool.h +5 -0
- package/lib/clang/{18 → 20}/include/stddef.h +38 -22
- package/lib/clang/{18 → 20}/include/stdint.h +5 -0
- package/lib/clang/{18 → 20}/include/stdnoreturn.h +6 -0
- package/lib/clang/{18 → 20}/include/tbmintrin.h +25 -37
- package/lib/clang/{18 → 20}/include/tmmintrin.h +84 -54
- package/lib/clang/{18 → 20}/include/varargs.h +5 -1
- package/lib/clang/{18 → 20}/include/vecintrin.h +1778 -60
- package/lib/clang/{18 → 20}/include/wasm_simd128.h +167 -21
- package/lib/clang/{18 → 20}/include/x86gprintrin.h +7 -14
- package/lib/clang/20/include/x86intrin.h +53 -0
- package/lib/clang/{18 → 20}/include/xmmintrin.h +455 -276
- package/lib/clang/20/include/yvals_core.h +25 -0
- package/lib/clang/20/include/zos_wrappers/builtins.h +18 -0
- package/package.json +6 -6
- package/lib/clang/18/include/avx512erintrin.h +0 -271
- package/lib/clang/18/include/avx512pfintrin.h +0 -92
- package/lib/clang/18/include/hlsl/hlsl_intrinsics.h +0 -624
- package/lib/clang/18/include/mm3dnow.h +0 -157
- package/lib/clang/18/include/sifive_vector.h +0 -16
- package/lib/clang/18/include/x86intrin.h +0 -67
- /package/lib/clang/{18 → 20}/include/__clang_cuda_builtin_vars.h +0 -0
- /package/lib/clang/{18 → 20}/include/__clang_cuda_cmath.h +0 -0
- /package/lib/clang/{18 → 20}/include/__clang_cuda_complex_builtins.h +0 -0
- /package/lib/clang/{18 → 20}/include/__clang_cuda_libdevice_declares.h +0 -0
- /package/lib/clang/{18 → 20}/include/__clang_cuda_math_forward_declares.h +0 -0
- /package/lib/clang/{18 → 20}/include/__clang_cuda_runtime_wrapper.h +0 -0
- /package/lib/clang/{18 → 20}/include/__clang_cuda_texture_intrinsics.h +0 -0
- /package/lib/clang/{18 → 20}/include/__clang_hip_libdevice_declares.h +0 -0
- /package/lib/clang/{18 → 20}/include/__clang_hip_runtime_wrapper.h +0 -0
- /package/lib/clang/{18 → 20}/include/__clang_hip_stdlib.h +0 -0
- /package/lib/clang/{18 → 20}/include/__stdarg___gnuc_va_list.h +0 -0
- /package/lib/clang/{18 → 20}/include/__stdarg___va_copy.h +0 -0
- /package/lib/clang/{18 → 20}/include/__stdarg_va_arg.h +0 -0
- /package/lib/clang/{18 → 20}/include/__stdarg_va_copy.h +0 -0
- /package/lib/clang/{18 → 20}/include/__stdarg_va_list.h +0 -0
- /package/lib/clang/{18 → 20}/include/__stddef_max_align_t.h +0 -0
- /package/lib/clang/{18 → 20}/include/__stddef_null.h +0 -0
- /package/lib/clang/{18 → 20}/include/__stddef_nullptr_t.h +0 -0
- /package/lib/clang/{18 → 20}/include/__stddef_offsetof.h +0 -0
- /package/lib/clang/{18 → 20}/include/__stddef_ptrdiff_t.h +0 -0
- /package/lib/clang/{18 → 20}/include/__stddef_rsize_t.h +0 -0
- /package/lib/clang/{18 → 20}/include/__stddef_size_t.h +0 -0
- /package/lib/clang/{18 → 20}/include/__stddef_unreachable.h +0 -0
- /package/lib/clang/{18 → 20}/include/__stddef_wchar_t.h +0 -0
- /package/lib/clang/{18 → 20}/include/__stddef_wint_t.h +0 -0
- /package/lib/clang/{18 → 20}/include/__wmmintrin_aes.h +0 -0
- /package/lib/clang/{18 → 20}/include/__wmmintrin_pclmul.h +0 -0
- /package/lib/clang/{18 → 20}/include/ammintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/amxcomplexintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/arm64intr.h +0 -0
- /package/lib/clang/{18 → 20}/include/arm_bf16.h +0 -0
- /package/lib/clang/{18 → 20}/include/arm_cde.h +0 -0
- /package/lib/clang/{18 → 20}/include/arm_cmse.h +0 -0
- /package/lib/clang/{18 → 20}/include/arm_mve.h +0 -0
- /package/lib/clang/{18 → 20}/include/arm_neon_sve_bridge.h +0 -0
- /package/lib/clang/{18 → 20}/include/armintr.h +0 -0
- /package/lib/clang/{18 → 20}/include/avx512bf16intrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/avx512bwintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/avx512cdintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/avx512dqintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/avx512ifmaintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/avx512ifmavlintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/avx512vbmi2intrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/avx512vbmiintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/avx512vbmivlintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/avx512vlbf16intrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/avx512vlbwintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/avx512vlcdintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/avx512vldqintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/avx512vlfp16intrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/avx512vlintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/avx512vlvbmi2intrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/avx512vlvnniintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/avx512vlvp2intersectintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/avx512vnniintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/avx512vp2intersectintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/avxifmaintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/avxneconvertintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/avxvnniintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/cet.h +0 -0
- /package/lib/clang/{18 → 20}/include/cetintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/cldemoteintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/clflushoptintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/clwbintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/clzerointrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/crc32intrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/cuda_wrappers/bits/basic_string.h +0 -0
- /package/lib/clang/{18 → 20}/include/cuda_wrappers/bits/basic_string.tcc +0 -0
- /package/lib/clang/{18 → 20}/include/cuda_wrappers/bits/shared_ptr_base.h +0 -0
- /package/lib/clang/{18 → 20}/include/cuda_wrappers/complex +0 -0
- /package/lib/clang/{18 → 20}/include/enqcmdintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/f16cintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/fma4intrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/fxsrintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/hexagon_circ_brev_intrinsics.h +0 -0
- /package/lib/clang/{18 → 20}/include/hexagon_protos.h +0 -0
- /package/lib/clang/{18 → 20}/include/hresetintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/htmintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/htmxlintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/invpcidintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/llvm_libc_wrappers/inttypes.h +0 -0
- /package/lib/clang/{18 → 20}/include/llvm_libc_wrappers/stdio.h +0 -0
- /package/lib/clang/{18 → 20}/include/llvm_libc_wrappers/string.h +0 -0
- /package/lib/clang/{18 → 20}/include/llvm_libc_wrappers/time.h +0 -0
- /package/lib/clang/{18 → 20}/include/lwpintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/mm_malloc.h +0 -0
- /package/lib/clang/{18 → 20}/include/movdirintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/msa.h +0 -0
- /package/lib/clang/{18 → 20}/include/mwaitxintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/nmmintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/openmp_wrappers/cmath +0 -0
- /package/lib/clang/{18 → 20}/include/openmp_wrappers/complex +0 -0
- /package/lib/clang/{18 → 20}/include/openmp_wrappers/complex.h +0 -0
- /package/lib/clang/{18 → 20}/include/openmp_wrappers/math.h +0 -0
- /package/lib/clang/{18 → 20}/include/openmp_wrappers/new +0 -0
- /package/lib/clang/{18 → 20}/include/pconfigintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/pkuintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/ppc_wrappers/bmi2intrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/ppc_wrappers/bmiintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/ppc_wrappers/emmintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/ppc_wrappers/immintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/ppc_wrappers/mm_malloc.h +0 -0
- /package/lib/clang/{18 → 20}/include/ppc_wrappers/mmintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/ppc_wrappers/nmmintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/ppc_wrappers/pmmintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/ppc_wrappers/smmintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/ppc_wrappers/tmmintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/ppc_wrappers/x86gprintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/ppc_wrappers/x86intrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/ppc_wrappers/xmmintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/prfchiintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/ptwriteintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/raointintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/rdpruintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/rdseedintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/riscv_bitmanip.h +0 -0
- /package/lib/clang/{18 → 20}/include/riscv_crypto.h +0 -0
- /package/lib/clang/{18 → 20}/include/riscv_ntlh.h +0 -0
- /package/lib/clang/{18 → 20}/include/rtmintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/s390intrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/serializeintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/sgxintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/sha512intrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/shaintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/sm3intrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/sm4intrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/stdalign.h +0 -0
- /package/lib/clang/{18 → 20}/include/stdckdint.h +0 -0
- /package/lib/clang/{18 → 20}/include/tgmath.h +0 -0
- /package/lib/clang/{18 → 20}/include/tsxldtrkintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/uintrintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/unwind.h +0 -0
- /package/lib/clang/{18 → 20}/include/usermsrintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/vadefs.h +0 -0
- /package/lib/clang/{18 → 20}/include/vaesintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/velintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/velintrin_approx.h +0 -0
- /package/lib/clang/{18 → 20}/include/velintrin_gen.h +0 -0
- /package/lib/clang/{18 → 20}/include/vpclmulqdqintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/waitpkgintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/wbnoinvdintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/wmmintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/xopintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/xsavecintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/xsaveintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/xsaveoptintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/xsavesintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/xtestintrin.h +0 -0
|
@@ -49,12 +49,27 @@ typedef __bf16 __m128bh __attribute__((__vector_size__(16), __aligned__(16)));
|
|
|
49
49
|
#endif
|
|
50
50
|
|
|
51
51
|
/* Define the default attributes for the functions in this file. */
|
|
52
|
+
#if defined(__EVEX512__) && !defined(__AVX10_1_512__)
|
|
52
53
|
#define __DEFAULT_FN_ATTRS \
|
|
53
54
|
__attribute__((__always_inline__, __nodebug__, \
|
|
54
55
|
__target__("sse2,no-evex512"), __min_vector_width__(128)))
|
|
55
|
-
#
|
|
56
|
-
|
|
57
|
-
|
|
56
|
+
#else
|
|
57
|
+
#define __DEFAULT_FN_ATTRS \
|
|
58
|
+
__attribute__((__always_inline__, __nodebug__, __target__("sse2"), \
|
|
59
|
+
__min_vector_width__(128)))
|
|
60
|
+
#endif
|
|
61
|
+
|
|
62
|
+
#if defined(__cplusplus) && (__cplusplus >= 201103L)
|
|
63
|
+
#define __DEFAULT_FN_ATTRS_CONSTEXPR __DEFAULT_FN_ATTRS constexpr
|
|
64
|
+
#else
|
|
65
|
+
#define __DEFAULT_FN_ATTRS_CONSTEXPR __DEFAULT_FN_ATTRS
|
|
66
|
+
#endif
|
|
67
|
+
|
|
68
|
+
#define __trunc64(x) \
|
|
69
|
+
(__m64) __builtin_shufflevector((__v2di)(x), __extension__(__v2di){}, 0)
|
|
70
|
+
#define __anyext128(x) \
|
|
71
|
+
(__m128i) __builtin_shufflevector((__v2si)(x), __extension__(__v2si){}, 0, \
|
|
72
|
+
1, -1, -1)
|
|
58
73
|
|
|
59
74
|
/// Adds lower double-precision values in both operands and returns the
|
|
60
75
|
/// sum in the lower 64 bits of the result. The upper 64 bits of the result
|
|
@@ -71,8 +86,8 @@ typedef __bf16 __m128bh __attribute__((__vector_size__(16), __aligned__(16)));
|
|
|
71
86
|
/// \returns A 128-bit vector of [2 x double] whose lower 64 bits contain the
|
|
72
87
|
/// sum of the lower 64 bits of both operands. The upper 64 bits are copied
|
|
73
88
|
/// from the upper 64 bits of the first source operand.
|
|
74
|
-
static __inline__ __m128d
|
|
75
|
-
|
|
89
|
+
static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR _mm_add_sd(__m128d __a,
|
|
90
|
+
__m128d __b) {
|
|
76
91
|
__a[0] += __b[0];
|
|
77
92
|
return __a;
|
|
78
93
|
}
|
|
@@ -89,8 +104,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_add_sd(__m128d __a,
|
|
|
89
104
|
/// A 128-bit vector of [2 x double] containing one of the source operands.
|
|
90
105
|
/// \returns A 128-bit vector of [2 x double] containing the sums of both
|
|
91
106
|
/// operands.
|
|
92
|
-
static __inline__ __m128d
|
|
93
|
-
|
|
107
|
+
static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR _mm_add_pd(__m128d __a,
|
|
108
|
+
__m128d __b) {
|
|
94
109
|
return (__m128d)((__v2df)__a + (__v2df)__b);
|
|
95
110
|
}
|
|
96
111
|
|
|
@@ -111,8 +126,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_add_pd(__m128d __a,
|
|
|
111
126
|
/// \returns A 128-bit vector of [2 x double] whose lower 64 bits contain the
|
|
112
127
|
/// difference of the lower 64 bits of both operands. The upper 64 bits are
|
|
113
128
|
/// copied from the upper 64 bits of the first source operand.
|
|
114
|
-
static __inline__ __m128d
|
|
115
|
-
|
|
129
|
+
static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR _mm_sub_sd(__m128d __a,
|
|
130
|
+
__m128d __b) {
|
|
116
131
|
__a[0] -= __b[0];
|
|
117
132
|
return __a;
|
|
118
133
|
}
|
|
@@ -129,8 +144,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_sub_sd(__m128d __a,
|
|
|
129
144
|
/// A 128-bit vector of [2 x double] containing the subtrahend.
|
|
130
145
|
/// \returns A 128-bit vector of [2 x double] containing the differences between
|
|
131
146
|
/// both operands.
|
|
132
|
-
static __inline__ __m128d
|
|
133
|
-
|
|
147
|
+
static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR _mm_sub_pd(__m128d __a,
|
|
148
|
+
__m128d __b) {
|
|
134
149
|
return (__m128d)((__v2df)__a - (__v2df)__b);
|
|
135
150
|
}
|
|
136
151
|
|
|
@@ -150,8 +165,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_sub_pd(__m128d __a,
|
|
|
150
165
|
/// \returns A 128-bit vector of [2 x double] whose lower 64 bits contain the
|
|
151
166
|
/// product of the lower 64 bits of both operands. The upper 64 bits are
|
|
152
167
|
/// copied from the upper 64 bits of the first source operand.
|
|
153
|
-
static __inline__ __m128d
|
|
154
|
-
|
|
168
|
+
static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR _mm_mul_sd(__m128d __a,
|
|
169
|
+
__m128d __b) {
|
|
155
170
|
__a[0] *= __b[0];
|
|
156
171
|
return __a;
|
|
157
172
|
}
|
|
@@ -168,8 +183,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_mul_sd(__m128d __a,
|
|
|
168
183
|
/// A 128-bit vector of [2 x double] containing one of the operands.
|
|
169
184
|
/// \returns A 128-bit vector of [2 x double] containing the products of both
|
|
170
185
|
/// operands.
|
|
171
|
-
static __inline__ __m128d
|
|
172
|
-
|
|
186
|
+
static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR _mm_mul_pd(__m128d __a,
|
|
187
|
+
__m128d __b) {
|
|
173
188
|
return (__m128d)((__v2df)__a * (__v2df)__b);
|
|
174
189
|
}
|
|
175
190
|
|
|
@@ -190,8 +205,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_mul_pd(__m128d __a,
|
|
|
190
205
|
/// \returns A 128-bit vector of [2 x double] whose lower 64 bits contain the
|
|
191
206
|
/// quotient of the lower 64 bits of both operands. The upper 64 bits are
|
|
192
207
|
/// copied from the upper 64 bits of the first source operand.
|
|
193
|
-
static __inline__ __m128d
|
|
194
|
-
|
|
208
|
+
static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR _mm_div_sd(__m128d __a,
|
|
209
|
+
__m128d __b) {
|
|
195
210
|
__a[0] /= __b[0];
|
|
196
211
|
return __a;
|
|
197
212
|
}
|
|
@@ -209,8 +224,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_div_sd(__m128d __a,
|
|
|
209
224
|
/// A 128-bit vector of [2 x double] containing the divisor.
|
|
210
225
|
/// \returns A 128-bit vector of [2 x double] containing the quotients of both
|
|
211
226
|
/// operands.
|
|
212
|
-
static __inline__ __m128d
|
|
213
|
-
|
|
227
|
+
static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR _mm_div_pd(__m128d __a,
|
|
228
|
+
__m128d __b) {
|
|
214
229
|
return (__m128d)((__v2df)__a / (__v2df)__b);
|
|
215
230
|
}
|
|
216
231
|
|
|
@@ -259,6 +274,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_sqrt_pd(__m128d __a) {
|
|
|
259
274
|
/// result. The upper 64 bits of the result are copied from the upper
|
|
260
275
|
/// double-precision value of the first operand.
|
|
261
276
|
///
|
|
277
|
+
/// If either value in a comparison is NaN, returns the value from \a __b.
|
|
278
|
+
///
|
|
262
279
|
/// \headerfile <x86intrin.h>
|
|
263
280
|
///
|
|
264
281
|
/// This intrinsic corresponds to the <c> VMINSD / MINSD </c> instruction.
|
|
@@ -278,9 +295,11 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_min_sd(__m128d __a,
|
|
|
278
295
|
}
|
|
279
296
|
|
|
280
297
|
/// Performs element-by-element comparison of the two 128-bit vectors of
|
|
281
|
-
/// [2 x double] and returns
|
|
298
|
+
/// [2 x double] and returns a vector containing the lesser of each pair of
|
|
282
299
|
/// values.
|
|
283
300
|
///
|
|
301
|
+
/// If either value in a comparison is NaN, returns the value from \a __b.
|
|
302
|
+
///
|
|
284
303
|
/// \headerfile <x86intrin.h>
|
|
285
304
|
///
|
|
286
305
|
/// This intrinsic corresponds to the <c> VMINPD / MINPD </c> instruction.
|
|
@@ -301,6 +320,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_min_pd(__m128d __a,
|
|
|
301
320
|
/// result. The upper 64 bits of the result are copied from the upper
|
|
302
321
|
/// double-precision value of the first operand.
|
|
303
322
|
///
|
|
323
|
+
/// If either value in a comparison is NaN, returns the value from \a __b.
|
|
324
|
+
///
|
|
304
325
|
/// \headerfile <x86intrin.h>
|
|
305
326
|
///
|
|
306
327
|
/// This intrinsic corresponds to the <c> VMAXSD / MAXSD </c> instruction.
|
|
@@ -320,9 +341,11 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_max_sd(__m128d __a,
|
|
|
320
341
|
}
|
|
321
342
|
|
|
322
343
|
/// Performs element-by-element comparison of the two 128-bit vectors of
|
|
323
|
-
/// [2 x double] and returns
|
|
344
|
+
/// [2 x double] and returns a vector containing the greater of each pair
|
|
324
345
|
/// of values.
|
|
325
346
|
///
|
|
347
|
+
/// If either value in a comparison is NaN, returns the value from \a __b.
|
|
348
|
+
///
|
|
326
349
|
/// \headerfile <x86intrin.h>
|
|
327
350
|
///
|
|
328
351
|
/// This intrinsic corresponds to the <c> VMAXPD / MAXPD </c> instruction.
|
|
@@ -350,8 +373,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_max_pd(__m128d __a,
|
|
|
350
373
|
/// A 128-bit vector of [2 x double] containing one of the source operands.
|
|
351
374
|
/// \returns A 128-bit vector of [2 x double] containing the bitwise AND of the
|
|
352
375
|
/// values between both operands.
|
|
353
|
-
static __inline__ __m128d
|
|
354
|
-
|
|
376
|
+
static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR _mm_and_pd(__m128d __a,
|
|
377
|
+
__m128d __b) {
|
|
355
378
|
return (__m128d)((__v2du)__a & (__v2du)__b);
|
|
356
379
|
}
|
|
357
380
|
|
|
@@ -370,8 +393,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_and_pd(__m128d __a,
|
|
|
370
393
|
/// \returns A 128-bit vector of [2 x double] containing the bitwise AND of the
|
|
371
394
|
/// values in the second operand and the one's complement of the first
|
|
372
395
|
/// operand.
|
|
373
|
-
static __inline__ __m128d
|
|
374
|
-
|
|
396
|
+
static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
397
|
+
_mm_andnot_pd(__m128d __a, __m128d __b) {
|
|
375
398
|
return (__m128d)(~(__v2du)__a & (__v2du)__b);
|
|
376
399
|
}
|
|
377
400
|
|
|
@@ -387,8 +410,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_andnot_pd(__m128d __a,
|
|
|
387
410
|
/// A 128-bit vector of [2 x double] containing one of the source operands.
|
|
388
411
|
/// \returns A 128-bit vector of [2 x double] containing the bitwise OR of the
|
|
389
412
|
/// values between both operands.
|
|
390
|
-
static __inline__ __m128d
|
|
391
|
-
|
|
413
|
+
static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR _mm_or_pd(__m128d __a,
|
|
414
|
+
__m128d __b) {
|
|
392
415
|
return (__m128d)((__v2du)__a | (__v2du)__b);
|
|
393
416
|
}
|
|
394
417
|
|
|
@@ -404,14 +427,16 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_or_pd(__m128d __a,
|
|
|
404
427
|
/// A 128-bit vector of [2 x double] containing one of the source operands.
|
|
405
428
|
/// \returns A 128-bit vector of [2 x double] containing the bitwise XOR of the
|
|
406
429
|
/// values between both operands.
|
|
407
|
-
static __inline__ __m128d
|
|
408
|
-
|
|
430
|
+
static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR _mm_xor_pd(__m128d __a,
|
|
431
|
+
__m128d __b) {
|
|
409
432
|
return (__m128d)((__v2du)__a ^ (__v2du)__b);
|
|
410
433
|
}
|
|
411
434
|
|
|
412
435
|
/// Compares each of the corresponding double-precision values of the
|
|
413
|
-
/// 128-bit vectors of [2 x double] for equality.
|
|
414
|
-
///
|
|
436
|
+
/// 128-bit vectors of [2 x double] for equality.
|
|
437
|
+
///
|
|
438
|
+
/// Each comparison returns 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
|
|
439
|
+
/// If either value in a comparison is NaN, returns false.
|
|
415
440
|
///
|
|
416
441
|
/// \headerfile <x86intrin.h>
|
|
417
442
|
///
|
|
@@ -429,8 +454,10 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cmpeq_pd(__m128d __a,
|
|
|
429
454
|
|
|
430
455
|
/// Compares each of the corresponding double-precision values of the
|
|
431
456
|
/// 128-bit vectors of [2 x double] to determine if the values in the first
|
|
432
|
-
/// operand are less than those in the second operand.
|
|
433
|
-
///
|
|
457
|
+
/// operand are less than those in the second operand.
|
|
458
|
+
///
|
|
459
|
+
/// Each comparison returns 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
|
|
460
|
+
/// If either value in a comparison is NaN, returns false.
|
|
434
461
|
///
|
|
435
462
|
/// \headerfile <x86intrin.h>
|
|
436
463
|
///
|
|
@@ -450,7 +477,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cmplt_pd(__m128d __a,
|
|
|
450
477
|
/// 128-bit vectors of [2 x double] to determine if the values in the first
|
|
451
478
|
/// operand are less than or equal to those in the second operand.
|
|
452
479
|
///
|
|
453
|
-
/// Each comparison
|
|
480
|
+
/// Each comparison returns 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
|
|
481
|
+
/// If either value in a comparison is NaN, returns false.
|
|
454
482
|
///
|
|
455
483
|
/// \headerfile <x86intrin.h>
|
|
456
484
|
///
|
|
@@ -470,7 +498,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cmple_pd(__m128d __a,
|
|
|
470
498
|
/// 128-bit vectors of [2 x double] to determine if the values in the first
|
|
471
499
|
/// operand are greater than those in the second operand.
|
|
472
500
|
///
|
|
473
|
-
/// Each comparison
|
|
501
|
+
/// Each comparison returns 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
|
|
502
|
+
/// If either value in a comparison is NaN, returns false.
|
|
474
503
|
///
|
|
475
504
|
/// \headerfile <x86intrin.h>
|
|
476
505
|
///
|
|
@@ -490,7 +519,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cmpgt_pd(__m128d __a,
|
|
|
490
519
|
/// 128-bit vectors of [2 x double] to determine if the values in the first
|
|
491
520
|
/// operand are greater than or equal to those in the second operand.
|
|
492
521
|
///
|
|
493
|
-
/// Each comparison
|
|
522
|
+
/// Each comparison returns 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
|
|
523
|
+
/// If either value in a comparison is NaN, returns false.
|
|
494
524
|
///
|
|
495
525
|
/// \headerfile <x86intrin.h>
|
|
496
526
|
///
|
|
@@ -510,8 +540,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cmpge_pd(__m128d __a,
|
|
|
510
540
|
/// 128-bit vectors of [2 x double] to determine if the values in the first
|
|
511
541
|
/// operand are ordered with respect to those in the second operand.
|
|
512
542
|
///
|
|
513
|
-
/// A pair of double-precision values are
|
|
514
|
-
/// other if neither value is a NaN. Each comparison
|
|
543
|
+
/// A pair of double-precision values are ordered with respect to each
|
|
544
|
+
/// other if neither value is a NaN. Each comparison returns 0x0 for false,
|
|
515
545
|
/// 0xFFFFFFFFFFFFFFFF for true.
|
|
516
546
|
///
|
|
517
547
|
/// \headerfile <x86intrin.h>
|
|
@@ -532,8 +562,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cmpord_pd(__m128d __a,
|
|
|
532
562
|
/// 128-bit vectors of [2 x double] to determine if the values in the first
|
|
533
563
|
/// operand are unordered with respect to those in the second operand.
|
|
534
564
|
///
|
|
535
|
-
/// A pair of double-precision values are
|
|
536
|
-
/// other if one or both values are NaN. Each comparison
|
|
565
|
+
/// A pair of double-precision values are unordered with respect to each
|
|
566
|
+
/// other if one or both values are NaN. Each comparison returns 0x0 for
|
|
537
567
|
/// false, 0xFFFFFFFFFFFFFFFF for true.
|
|
538
568
|
///
|
|
539
569
|
/// \headerfile <x86intrin.h>
|
|
@@ -555,7 +585,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cmpunord_pd(__m128d __a,
|
|
|
555
585
|
/// 128-bit vectors of [2 x double] to determine if the values in the first
|
|
556
586
|
/// operand are unequal to those in the second operand.
|
|
557
587
|
///
|
|
558
|
-
/// Each comparison
|
|
588
|
+
/// Each comparison returns 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
|
|
589
|
+
/// If either value in a comparison is NaN, returns true.
|
|
559
590
|
///
|
|
560
591
|
/// \headerfile <x86intrin.h>
|
|
561
592
|
///
|
|
@@ -575,7 +606,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cmpneq_pd(__m128d __a,
|
|
|
575
606
|
/// 128-bit vectors of [2 x double] to determine if the values in the first
|
|
576
607
|
/// operand are not less than those in the second operand.
|
|
577
608
|
///
|
|
578
|
-
/// Each comparison
|
|
609
|
+
/// Each comparison returns 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
|
|
610
|
+
/// If either value in a comparison is NaN, returns true.
|
|
579
611
|
///
|
|
580
612
|
/// \headerfile <x86intrin.h>
|
|
581
613
|
///
|
|
@@ -595,7 +627,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cmpnlt_pd(__m128d __a,
|
|
|
595
627
|
/// 128-bit vectors of [2 x double] to determine if the values in the first
|
|
596
628
|
/// operand are not less than or equal to those in the second operand.
|
|
597
629
|
///
|
|
598
|
-
/// Each comparison
|
|
630
|
+
/// Each comparison returns 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
|
|
631
|
+
/// If either value in a comparison is NaN, returns true.
|
|
599
632
|
///
|
|
600
633
|
/// \headerfile <x86intrin.h>
|
|
601
634
|
///
|
|
@@ -615,7 +648,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cmpnle_pd(__m128d __a,
|
|
|
615
648
|
/// 128-bit vectors of [2 x double] to determine if the values in the first
|
|
616
649
|
/// operand are not greater than those in the second operand.
|
|
617
650
|
///
|
|
618
|
-
/// Each comparison
|
|
651
|
+
/// Each comparison returns 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
|
|
652
|
+
/// If either value in a comparison is NaN, returns true.
|
|
619
653
|
///
|
|
620
654
|
/// \headerfile <x86intrin.h>
|
|
621
655
|
///
|
|
@@ -635,7 +669,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cmpngt_pd(__m128d __a,
|
|
|
635
669
|
/// 128-bit vectors of [2 x double] to determine if the values in the first
|
|
636
670
|
/// operand are not greater than or equal to those in the second operand.
|
|
637
671
|
///
|
|
638
|
-
/// Each comparison
|
|
672
|
+
/// Each comparison returns 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
|
|
673
|
+
/// If either value in a comparison is NaN, returns true.
|
|
639
674
|
///
|
|
640
675
|
/// \headerfile <x86intrin.h>
|
|
641
676
|
///
|
|
@@ -654,7 +689,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cmpnge_pd(__m128d __a,
|
|
|
654
689
|
/// Compares the lower double-precision floating-point values in each of
|
|
655
690
|
/// the two 128-bit floating-point vectors of [2 x double] for equality.
|
|
656
691
|
///
|
|
657
|
-
/// The comparison
|
|
692
|
+
/// The comparison returns 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
|
|
693
|
+
/// If either value in a comparison is NaN, returns false.
|
|
658
694
|
///
|
|
659
695
|
/// \headerfile <x86intrin.h>
|
|
660
696
|
///
|
|
@@ -678,7 +714,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cmpeq_sd(__m128d __a,
|
|
|
678
714
|
/// the value in the first parameter is less than the corresponding value in
|
|
679
715
|
/// the second parameter.
|
|
680
716
|
///
|
|
681
|
-
/// The comparison
|
|
717
|
+
/// The comparison returns 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
|
|
718
|
+
/// If either value in a comparison is NaN, returns false.
|
|
682
719
|
///
|
|
683
720
|
/// \headerfile <x86intrin.h>
|
|
684
721
|
///
|
|
@@ -702,7 +739,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cmplt_sd(__m128d __a,
|
|
|
702
739
|
/// the value in the first parameter is less than or equal to the
|
|
703
740
|
/// corresponding value in the second parameter.
|
|
704
741
|
///
|
|
705
|
-
/// The comparison
|
|
742
|
+
/// The comparison returns 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
|
|
743
|
+
/// If either value in a comparison is NaN, returns false.
|
|
706
744
|
///
|
|
707
745
|
/// \headerfile <x86intrin.h>
|
|
708
746
|
///
|
|
@@ -726,7 +764,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cmple_sd(__m128d __a,
|
|
|
726
764
|
/// the value in the first parameter is greater than the corresponding value
|
|
727
765
|
/// in the second parameter.
|
|
728
766
|
///
|
|
729
|
-
/// The comparison
|
|
767
|
+
/// The comparison returns 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
|
|
768
|
+
/// If either value in a comparison is NaN, returns false.
|
|
730
769
|
///
|
|
731
770
|
/// \headerfile <x86intrin.h>
|
|
732
771
|
///
|
|
@@ -751,7 +790,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cmpgt_sd(__m128d __a,
|
|
|
751
790
|
/// the value in the first parameter is greater than or equal to the
|
|
752
791
|
/// corresponding value in the second parameter.
|
|
753
792
|
///
|
|
754
|
-
/// The comparison
|
|
793
|
+
/// The comparison returns 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
|
|
794
|
+
/// If either value in a comparison is NaN, returns false.
|
|
755
795
|
///
|
|
756
796
|
/// \headerfile <x86intrin.h>
|
|
757
797
|
///
|
|
@@ -773,11 +813,11 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cmpge_sd(__m128d __a,
|
|
|
773
813
|
|
|
774
814
|
/// Compares the lower double-precision floating-point values in each of
|
|
775
815
|
/// the two 128-bit floating-point vectors of [2 x double] to determine if
|
|
776
|
-
/// the value in the first parameter is
|
|
816
|
+
/// the value in the first parameter is ordered with respect to the
|
|
777
817
|
/// corresponding value in the second parameter.
|
|
778
818
|
///
|
|
779
|
-
/// The comparison
|
|
780
|
-
/// of double-precision values are
|
|
819
|
+
/// The comparison returns 0x0 for false, 0xFFFFFFFFFFFFFFFF for true. A pair
|
|
820
|
+
/// of double-precision values are ordered with respect to each other if
|
|
781
821
|
/// neither value is a NaN.
|
|
782
822
|
///
|
|
783
823
|
/// \headerfile <x86intrin.h>
|
|
@@ -799,11 +839,11 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cmpord_sd(__m128d __a,
|
|
|
799
839
|
|
|
800
840
|
/// Compares the lower double-precision floating-point values in each of
|
|
801
841
|
/// the two 128-bit floating-point vectors of [2 x double] to determine if
|
|
802
|
-
/// the value in the first parameter is
|
|
842
|
+
/// the value in the first parameter is unordered with respect to the
|
|
803
843
|
/// corresponding value in the second parameter.
|
|
804
844
|
///
|
|
805
|
-
/// The comparison
|
|
806
|
-
/// of double-precision values are
|
|
845
|
+
/// The comparison returns 0x0 for false, 0xFFFFFFFFFFFFFFFF for true. A pair
|
|
846
|
+
/// of double-precision values are unordered with respect to each other if
|
|
807
847
|
/// one or both values are NaN.
|
|
808
848
|
///
|
|
809
849
|
/// \headerfile <x86intrin.h>
|
|
@@ -829,7 +869,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cmpunord_sd(__m128d __a,
|
|
|
829
869
|
/// the value in the first parameter is unequal to the corresponding value in
|
|
830
870
|
/// the second parameter.
|
|
831
871
|
///
|
|
832
|
-
/// The comparison
|
|
872
|
+
/// The comparison returns 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
|
|
873
|
+
/// If either value in a comparison is NaN, returns true.
|
|
833
874
|
///
|
|
834
875
|
/// \headerfile <x86intrin.h>
|
|
835
876
|
///
|
|
@@ -853,7 +894,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cmpneq_sd(__m128d __a,
|
|
|
853
894
|
/// the value in the first parameter is not less than the corresponding
|
|
854
895
|
/// value in the second parameter.
|
|
855
896
|
///
|
|
856
|
-
/// The comparison
|
|
897
|
+
/// The comparison returns 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
|
|
898
|
+
/// If either value in a comparison is NaN, returns true.
|
|
857
899
|
///
|
|
858
900
|
/// \headerfile <x86intrin.h>
|
|
859
901
|
///
|
|
@@ -877,7 +919,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cmpnlt_sd(__m128d __a,
|
|
|
877
919
|
/// the value in the first parameter is not less than or equal to the
|
|
878
920
|
/// corresponding value in the second parameter.
|
|
879
921
|
///
|
|
880
|
-
/// The comparison
|
|
922
|
+
/// The comparison returns 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
|
|
923
|
+
/// If either value in a comparison is NaN, returns true.
|
|
881
924
|
///
|
|
882
925
|
/// \headerfile <x86intrin.h>
|
|
883
926
|
///
|
|
@@ -901,7 +944,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cmpnle_sd(__m128d __a,
|
|
|
901
944
|
/// the value in the first parameter is not greater than the corresponding
|
|
902
945
|
/// value in the second parameter.
|
|
903
946
|
///
|
|
904
|
-
/// The comparison
|
|
947
|
+
/// The comparison returns 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
|
|
948
|
+
/// If either value in a comparison is NaN, returns true.
|
|
905
949
|
///
|
|
906
950
|
/// \headerfile <x86intrin.h>
|
|
907
951
|
///
|
|
@@ -926,7 +970,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cmpngt_sd(__m128d __a,
|
|
|
926
970
|
/// the value in the first parameter is not greater than or equal to the
|
|
927
971
|
/// corresponding value in the second parameter.
|
|
928
972
|
///
|
|
929
|
-
/// The comparison
|
|
973
|
+
/// The comparison returns 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
|
|
974
|
+
/// If either value in a comparison is NaN, returns true.
|
|
930
975
|
///
|
|
931
976
|
/// \headerfile <x86intrin.h>
|
|
932
977
|
///
|
|
@@ -949,8 +994,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cmpnge_sd(__m128d __a,
|
|
|
949
994
|
/// Compares the lower double-precision floating-point values in each of
|
|
950
995
|
/// the two 128-bit floating-point vectors of [2 x double] for equality.
|
|
951
996
|
///
|
|
952
|
-
/// The comparison
|
|
953
|
-
///
|
|
997
|
+
/// The comparison returns 0 for false, 1 for true. If either value in a
|
|
998
|
+
/// comparison is NaN, returns 0.
|
|
954
999
|
///
|
|
955
1000
|
/// \headerfile <x86intrin.h>
|
|
956
1001
|
///
|
|
@@ -962,8 +1007,7 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cmpnge_sd(__m128d __a,
|
|
|
962
1007
|
/// \param __b
|
|
963
1008
|
/// A 128-bit vector of [2 x double]. The lower double-precision value is
|
|
964
1009
|
/// compared to the lower double-precision value of \a __a.
|
|
965
|
-
/// \returns An integer containing the comparison results.
|
|
966
|
-
/// lower double-precision values is NaN, 0 is returned.
|
|
1010
|
+
/// \returns An integer containing the comparison results.
|
|
967
1011
|
static __inline__ int __DEFAULT_FN_ATTRS _mm_comieq_sd(__m128d __a,
|
|
968
1012
|
__m128d __b) {
|
|
969
1013
|
return __builtin_ia32_comisdeq((__v2df)__a, (__v2df)__b);
|
|
@@ -974,8 +1018,8 @@ static __inline__ int __DEFAULT_FN_ATTRS _mm_comieq_sd(__m128d __a,
|
|
|
974
1018
|
/// the value in the first parameter is less than the corresponding value in
|
|
975
1019
|
/// the second parameter.
|
|
976
1020
|
///
|
|
977
|
-
/// The comparison
|
|
978
|
-
///
|
|
1021
|
+
/// The comparison returns 0 for false, 1 for true. If either value in a
|
|
1022
|
+
/// comparison is NaN, returns 0.
|
|
979
1023
|
///
|
|
980
1024
|
/// \headerfile <x86intrin.h>
|
|
981
1025
|
///
|
|
@@ -987,8 +1031,7 @@ static __inline__ int __DEFAULT_FN_ATTRS _mm_comieq_sd(__m128d __a,
|
|
|
987
1031
|
/// \param __b
|
|
988
1032
|
/// A 128-bit vector of [2 x double]. The lower double-precision value is
|
|
989
1033
|
/// compared to the lower double-precision value of \a __a.
|
|
990
|
-
/// \returns An integer containing the comparison results.
|
|
991
|
-
/// lower double-precision values is NaN, 0 is returned.
|
|
1034
|
+
/// \returns An integer containing the comparison results.
|
|
992
1035
|
static __inline__ int __DEFAULT_FN_ATTRS _mm_comilt_sd(__m128d __a,
|
|
993
1036
|
__m128d __b) {
|
|
994
1037
|
return __builtin_ia32_comisdlt((__v2df)__a, (__v2df)__b);
|
|
@@ -999,8 +1042,8 @@ static __inline__ int __DEFAULT_FN_ATTRS _mm_comilt_sd(__m128d __a,
|
|
|
999
1042
|
/// the value in the first parameter is less than or equal to the
|
|
1000
1043
|
/// corresponding value in the second parameter.
|
|
1001
1044
|
///
|
|
1002
|
-
/// The comparison
|
|
1003
|
-
///
|
|
1045
|
+
/// The comparison returns 0 for false, 1 for true. If either value in a
|
|
1046
|
+
/// comparison is NaN, returns 0.
|
|
1004
1047
|
///
|
|
1005
1048
|
/// \headerfile <x86intrin.h>
|
|
1006
1049
|
///
|
|
@@ -1012,8 +1055,7 @@ static __inline__ int __DEFAULT_FN_ATTRS _mm_comilt_sd(__m128d __a,
|
|
|
1012
1055
|
/// \param __b
|
|
1013
1056
|
/// A 128-bit vector of [2 x double]. The lower double-precision value is
|
|
1014
1057
|
/// compared to the lower double-precision value of \a __a.
|
|
1015
|
-
/// \returns An integer containing the comparison results.
|
|
1016
|
-
/// lower double-precision values is NaN, 0 is returned.
|
|
1058
|
+
/// \returns An integer containing the comparison results.
|
|
1017
1059
|
static __inline__ int __DEFAULT_FN_ATTRS _mm_comile_sd(__m128d __a,
|
|
1018
1060
|
__m128d __b) {
|
|
1019
1061
|
return __builtin_ia32_comisdle((__v2df)__a, (__v2df)__b);
|
|
@@ -1024,8 +1066,8 @@ static __inline__ int __DEFAULT_FN_ATTRS _mm_comile_sd(__m128d __a,
|
|
|
1024
1066
|
/// the value in the first parameter is greater than the corresponding value
|
|
1025
1067
|
/// in the second parameter.
|
|
1026
1068
|
///
|
|
1027
|
-
/// The comparison
|
|
1028
|
-
///
|
|
1069
|
+
/// The comparison returns 0 for false, 1 for true. If either value in a
|
|
1070
|
+
/// comparison is NaN, returns 0.
|
|
1029
1071
|
///
|
|
1030
1072
|
/// \headerfile <x86intrin.h>
|
|
1031
1073
|
///
|
|
@@ -1037,8 +1079,7 @@ static __inline__ int __DEFAULT_FN_ATTRS _mm_comile_sd(__m128d __a,
|
|
|
1037
1079
|
/// \param __b
|
|
1038
1080
|
/// A 128-bit vector of [2 x double]. The lower double-precision value is
|
|
1039
1081
|
/// compared to the lower double-precision value of \a __a.
|
|
1040
|
-
/// \returns An integer containing the comparison results.
|
|
1041
|
-
/// lower double-precision values is NaN, 0 is returned.
|
|
1082
|
+
/// \returns An integer containing the comparison results.
|
|
1042
1083
|
static __inline__ int __DEFAULT_FN_ATTRS _mm_comigt_sd(__m128d __a,
|
|
1043
1084
|
__m128d __b) {
|
|
1044
1085
|
return __builtin_ia32_comisdgt((__v2df)__a, (__v2df)__b);
|
|
@@ -1049,8 +1090,8 @@ static __inline__ int __DEFAULT_FN_ATTRS _mm_comigt_sd(__m128d __a,
|
|
|
1049
1090
|
/// the value in the first parameter is greater than or equal to the
|
|
1050
1091
|
/// corresponding value in the second parameter.
|
|
1051
1092
|
///
|
|
1052
|
-
/// The comparison
|
|
1053
|
-
///
|
|
1093
|
+
/// The comparison returns 0 for false, 1 for true. If either value in a
|
|
1094
|
+
/// comparison is NaN, returns 0.
|
|
1054
1095
|
///
|
|
1055
1096
|
/// \headerfile <x86intrin.h>
|
|
1056
1097
|
///
|
|
@@ -1062,8 +1103,7 @@ static __inline__ int __DEFAULT_FN_ATTRS _mm_comigt_sd(__m128d __a,
|
|
|
1062
1103
|
/// \param __b
|
|
1063
1104
|
/// A 128-bit vector of [2 x double]. The lower double-precision value is
|
|
1064
1105
|
/// compared to the lower double-precision value of \a __a.
|
|
1065
|
-
/// \returns An integer containing the comparison results.
|
|
1066
|
-
/// lower double-precision values is NaN, 0 is returned.
|
|
1106
|
+
/// \returns An integer containing the comparison results.
|
|
1067
1107
|
static __inline__ int __DEFAULT_FN_ATTRS _mm_comige_sd(__m128d __a,
|
|
1068
1108
|
__m128d __b) {
|
|
1069
1109
|
return __builtin_ia32_comisdge((__v2df)__a, (__v2df)__b);
|
|
@@ -1074,8 +1114,8 @@ static __inline__ int __DEFAULT_FN_ATTRS _mm_comige_sd(__m128d __a,
|
|
|
1074
1114
|
/// the value in the first parameter is unequal to the corresponding value in
|
|
1075
1115
|
/// the second parameter.
|
|
1076
1116
|
///
|
|
1077
|
-
/// The comparison
|
|
1078
|
-
///
|
|
1117
|
+
/// The comparison returns 0 for false, 1 for true. If either value in a
|
|
1118
|
+
/// comparison is NaN, returns 1.
|
|
1079
1119
|
///
|
|
1080
1120
|
/// \headerfile <x86intrin.h>
|
|
1081
1121
|
///
|
|
@@ -1087,18 +1127,17 @@ static __inline__ int __DEFAULT_FN_ATTRS _mm_comige_sd(__m128d __a,
|
|
|
1087
1127
|
/// \param __b
|
|
1088
1128
|
/// A 128-bit vector of [2 x double]. The lower double-precision value is
|
|
1089
1129
|
/// compared to the lower double-precision value of \a __a.
|
|
1090
|
-
/// \returns An integer containing the comparison results.
|
|
1091
|
-
/// lower double-precision values is NaN, 1 is returned.
|
|
1130
|
+
/// \returns An integer containing the comparison results.
|
|
1092
1131
|
static __inline__ int __DEFAULT_FN_ATTRS _mm_comineq_sd(__m128d __a,
|
|
1093
1132
|
__m128d __b) {
|
|
1094
1133
|
return __builtin_ia32_comisdneq((__v2df)__a, (__v2df)__b);
|
|
1095
1134
|
}
|
|
1096
1135
|
|
|
1097
1136
|
/// Compares the lower double-precision floating-point values in each of
|
|
1098
|
-
/// the two 128-bit floating-point vectors of [2 x double] for equality.
|
|
1099
|
-
/// comparison yields 0 for false, 1 for true.
|
|
1137
|
+
/// the two 128-bit floating-point vectors of [2 x double] for equality.
|
|
1100
1138
|
///
|
|
1101
|
-
///
|
|
1139
|
+
/// The comparison returns 0 for false, 1 for true. If either value in a
|
|
1140
|
+
/// comparison is NaN, returns 0.
|
|
1102
1141
|
///
|
|
1103
1142
|
/// \headerfile <x86intrin.h>
|
|
1104
1143
|
///
|
|
@@ -1110,8 +1149,7 @@ static __inline__ int __DEFAULT_FN_ATTRS _mm_comineq_sd(__m128d __a,
|
|
|
1110
1149
|
/// \param __b
|
|
1111
1150
|
/// A 128-bit vector of [2 x double]. The lower double-precision value is
|
|
1112
1151
|
/// compared to the lower double-precision value of \a __a.
|
|
1113
|
-
/// \returns An integer containing the comparison results.
|
|
1114
|
-
/// lower double-precision values is NaN, 0 is returned.
|
|
1152
|
+
/// \returns An integer containing the comparison results.
|
|
1115
1153
|
static __inline__ int __DEFAULT_FN_ATTRS _mm_ucomieq_sd(__m128d __a,
|
|
1116
1154
|
__m128d __b) {
|
|
1117
1155
|
return __builtin_ia32_ucomisdeq((__v2df)__a, (__v2df)__b);
|
|
@@ -1122,8 +1160,8 @@ static __inline__ int __DEFAULT_FN_ATTRS _mm_ucomieq_sd(__m128d __a,
|
|
|
1122
1160
|
/// the value in the first parameter is less than the corresponding value in
|
|
1123
1161
|
/// the second parameter.
|
|
1124
1162
|
///
|
|
1125
|
-
/// The comparison
|
|
1126
|
-
///
|
|
1163
|
+
/// The comparison returns 0 for false, 1 for true. If either value in a
|
|
1164
|
+
/// comparison is NaN, returns 0.
|
|
1127
1165
|
///
|
|
1128
1166
|
/// \headerfile <x86intrin.h>
|
|
1129
1167
|
///
|
|
@@ -1135,8 +1173,7 @@ static __inline__ int __DEFAULT_FN_ATTRS _mm_ucomieq_sd(__m128d __a,
|
|
|
1135
1173
|
/// \param __b
|
|
1136
1174
|
/// A 128-bit vector of [2 x double]. The lower double-precision value is
|
|
1137
1175
|
/// compared to the lower double-precision value of \a __a.
|
|
1138
|
-
/// \returns An integer containing the comparison results.
|
|
1139
|
-
/// lower double-precision values is NaN, 0 is returned.
|
|
1176
|
+
/// \returns An integer containing the comparison results.
|
|
1140
1177
|
static __inline__ int __DEFAULT_FN_ATTRS _mm_ucomilt_sd(__m128d __a,
|
|
1141
1178
|
__m128d __b) {
|
|
1142
1179
|
return __builtin_ia32_ucomisdlt((__v2df)__a, (__v2df)__b);
|
|
@@ -1147,8 +1184,8 @@ static __inline__ int __DEFAULT_FN_ATTRS _mm_ucomilt_sd(__m128d __a,
|
|
|
1147
1184
|
/// the value in the first parameter is less than or equal to the
|
|
1148
1185
|
/// corresponding value in the second parameter.
|
|
1149
1186
|
///
|
|
1150
|
-
/// The comparison
|
|
1151
|
-
///
|
|
1187
|
+
/// The comparison returns 0 for false, 1 for true. If either value in a
|
|
1188
|
+
/// comparison is NaN, returns 0.
|
|
1152
1189
|
///
|
|
1153
1190
|
/// \headerfile <x86intrin.h>
|
|
1154
1191
|
///
|
|
@@ -1160,8 +1197,7 @@ static __inline__ int __DEFAULT_FN_ATTRS _mm_ucomilt_sd(__m128d __a,
|
|
|
1160
1197
|
/// \param __b
|
|
1161
1198
|
/// A 128-bit vector of [2 x double]. The lower double-precision value is
|
|
1162
1199
|
/// compared to the lower double-precision value of \a __a.
|
|
1163
|
-
/// \returns An integer containing the comparison results.
|
|
1164
|
-
/// lower double-precision values is NaN, 0 is returned.
|
|
1200
|
+
/// \returns An integer containing the comparison results.
|
|
1165
1201
|
static __inline__ int __DEFAULT_FN_ATTRS _mm_ucomile_sd(__m128d __a,
|
|
1166
1202
|
__m128d __b) {
|
|
1167
1203
|
return __builtin_ia32_ucomisdle((__v2df)__a, (__v2df)__b);
|
|
@@ -1172,8 +1208,8 @@ static __inline__ int __DEFAULT_FN_ATTRS _mm_ucomile_sd(__m128d __a,
|
|
|
1172
1208
|
/// the value in the first parameter is greater than the corresponding value
|
|
1173
1209
|
/// in the second parameter.
|
|
1174
1210
|
///
|
|
1175
|
-
/// The comparison
|
|
1176
|
-
///
|
|
1211
|
+
/// The comparison returns 0 for false, 1 for true. If either value in a
|
|
1212
|
+
/// comparison is NaN, returns 0.
|
|
1177
1213
|
///
|
|
1178
1214
|
/// \headerfile <x86intrin.h>
|
|
1179
1215
|
///
|
|
@@ -1185,8 +1221,7 @@ static __inline__ int __DEFAULT_FN_ATTRS _mm_ucomile_sd(__m128d __a,
|
|
|
1185
1221
|
/// \param __b
|
|
1186
1222
|
/// A 128-bit vector of [2 x double]. The lower double-precision value is
|
|
1187
1223
|
/// compared to the lower double-precision value of \a __a.
|
|
1188
|
-
/// \returns An integer containing the comparison results.
|
|
1189
|
-
/// lower double-precision values is NaN, 0 is returned.
|
|
1224
|
+
/// \returns An integer containing the comparison results.
|
|
1190
1225
|
static __inline__ int __DEFAULT_FN_ATTRS _mm_ucomigt_sd(__m128d __a,
|
|
1191
1226
|
__m128d __b) {
|
|
1192
1227
|
return __builtin_ia32_ucomisdgt((__v2df)__a, (__v2df)__b);
|
|
@@ -1197,8 +1232,8 @@ static __inline__ int __DEFAULT_FN_ATTRS _mm_ucomigt_sd(__m128d __a,
|
|
|
1197
1232
|
/// the value in the first parameter is greater than or equal to the
|
|
1198
1233
|
/// corresponding value in the second parameter.
|
|
1199
1234
|
///
|
|
1200
|
-
/// The comparison
|
|
1201
|
-
///
|
|
1235
|
+
/// The comparison returns 0 for false, 1 for true. If either value in a
|
|
1236
|
+
/// comparison is NaN, returns 0.
|
|
1202
1237
|
///
|
|
1203
1238
|
/// \headerfile <x86intrin.h>
|
|
1204
1239
|
///
|
|
@@ -1210,8 +1245,7 @@ static __inline__ int __DEFAULT_FN_ATTRS _mm_ucomigt_sd(__m128d __a,
|
|
|
1210
1245
|
/// \param __b
|
|
1211
1246
|
/// A 128-bit vector of [2 x double]. The lower double-precision value is
|
|
1212
1247
|
/// compared to the lower double-precision value of \a __a.
|
|
1213
|
-
/// \returns An integer containing the comparison results.
|
|
1214
|
-
/// lower double-precision values is NaN, 0 is returned.
|
|
1248
|
+
/// \returns An integer containing the comparison results.
|
|
1215
1249
|
static __inline__ int __DEFAULT_FN_ATTRS _mm_ucomige_sd(__m128d __a,
|
|
1216
1250
|
__m128d __b) {
|
|
1217
1251
|
return __builtin_ia32_ucomisdge((__v2df)__a, (__v2df)__b);
|
|
@@ -1222,8 +1256,8 @@ static __inline__ int __DEFAULT_FN_ATTRS _mm_ucomige_sd(__m128d __a,
|
|
|
1222
1256
|
/// the value in the first parameter is unequal to the corresponding value in
|
|
1223
1257
|
/// the second parameter.
|
|
1224
1258
|
///
|
|
1225
|
-
/// The comparison
|
|
1226
|
-
///
|
|
1259
|
+
/// The comparison returns 0 for false, 1 for true. If either value in a
|
|
1260
|
+
/// comparison is NaN, returns 1.
|
|
1227
1261
|
///
|
|
1228
1262
|
/// \headerfile <x86intrin.h>
|
|
1229
1263
|
///
|
|
@@ -1235,8 +1269,7 @@ static __inline__ int __DEFAULT_FN_ATTRS _mm_ucomige_sd(__m128d __a,
|
|
|
1235
1269
|
/// \param __b
|
|
1236
1270
|
/// A 128-bit vector of [2 x double]. The lower double-precision value is
|
|
1237
1271
|
/// compared to the lower double-precision value of \a __a.
|
|
1238
|
-
/// \returns An integer containing the comparison result.
|
|
1239
|
-
/// lower double-precision values is NaN, 1 is returned.
|
|
1272
|
+
/// \returns An integer containing the comparison result.
|
|
1240
1273
|
static __inline__ int __DEFAULT_FN_ATTRS _mm_ucomineq_sd(__m128d __a,
|
|
1241
1274
|
__m128d __b) {
|
|
1242
1275
|
return __builtin_ia32_ucomisdneq((__v2df)__a, (__v2df)__b);
|
|
@@ -1273,7 +1306,8 @@ static __inline__ __m128 __DEFAULT_FN_ATTRS _mm_cvtpd_ps(__m128d __a) {
|
|
|
1273
1306
|
/// floating-point elements are converted to double-precision values. The
|
|
1274
1307
|
/// upper two elements are unused.
|
|
1275
1308
|
/// \returns A 128-bit vector of [2 x double] containing the converted values.
|
|
1276
|
-
static __inline__ __m128d
|
|
1309
|
+
static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
1310
|
+
_mm_cvtps_pd(__m128 __a) {
|
|
1277
1311
|
return (__m128d) __builtin_convertvector(
|
|
1278
1312
|
__builtin_shufflevector((__v4sf)__a, (__v4sf)__a, 0, 1), __v2df);
|
|
1279
1313
|
}
|
|
@@ -1294,7 +1328,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cvtps_pd(__m128 __a) {
|
|
|
1294
1328
|
///
|
|
1295
1329
|
/// The upper two elements are unused.
|
|
1296
1330
|
/// \returns A 128-bit vector of [2 x double] containing the converted values.
|
|
1297
|
-
static __inline__ __m128d
|
|
1331
|
+
static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
1332
|
+
_mm_cvtepi32_pd(__m128i __a) {
|
|
1298
1333
|
return (__m128d) __builtin_convertvector(
|
|
1299
1334
|
__builtin_shufflevector((__v4si)__a, (__v4si)__a, 0, 1), __v2df);
|
|
1300
1335
|
}
|
|
@@ -1304,6 +1339,10 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cvtepi32_pd(__m128i __a) {
|
|
|
1304
1339
|
/// returned in the lower 64 bits of a 128-bit vector of [4 x i32]. The upper
|
|
1305
1340
|
/// 64 bits of the result vector are set to zero.
|
|
1306
1341
|
///
|
|
1342
|
+
/// If a converted value does not fit in a 32-bit integer, raises a
|
|
1343
|
+
/// floating-point invalid exception. If the exception is masked, returns
|
|
1344
|
+
/// the most negative integer.
|
|
1345
|
+
///
|
|
1307
1346
|
/// \headerfile <x86intrin.h>
|
|
1308
1347
|
///
|
|
1309
1348
|
/// This intrinsic corresponds to the <c> VCVTPD2DQ / CVTPD2DQ </c> instruction.
|
|
@@ -1319,6 +1358,10 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cvtpd_epi32(__m128d __a) {
|
|
|
1319
1358
|
/// Converts the low-order element of a 128-bit vector of [2 x double]
|
|
1320
1359
|
/// into a 32-bit signed integer value.
|
|
1321
1360
|
///
|
|
1361
|
+
/// If the converted value does not fit in a 32-bit integer, raises a
|
|
1362
|
+
/// floating-point invalid exception. If the exception is masked, returns
|
|
1363
|
+
/// the most negative integer.
|
|
1364
|
+
///
|
|
1322
1365
|
/// \headerfile <x86intrin.h>
|
|
1323
1366
|
///
|
|
1324
1367
|
/// This intrinsic corresponds to the <c> VCVTSD2SI / CVTSD2SI </c> instruction.
|
|
@@ -1372,8 +1415,8 @@ static __inline__ __m128 __DEFAULT_FN_ATTRS _mm_cvtsd_ss(__m128 __a,
|
|
|
1372
1415
|
/// \returns A 128-bit vector of [2 x double]. The lower 64 bits contain the
|
|
1373
1416
|
/// converted value from the second parameter. The upper 64 bits are copied
|
|
1374
1417
|
/// from the upper 64 bits of the first parameter.
|
|
1375
|
-
static __inline__ __m128d
|
|
1376
|
-
|
|
1418
|
+
static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
1419
|
+
_mm_cvtsi32_sd(__m128d __a, int __b) {
|
|
1377
1420
|
__a[0] = __b;
|
|
1378
1421
|
return __a;
|
|
1379
1422
|
}
|
|
@@ -1397,19 +1440,20 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cvtsi32_sd(__m128d __a,
|
|
|
1397
1440
|
/// \returns A 128-bit vector of [2 x double]. The lower 64 bits contain the
|
|
1398
1441
|
/// converted value from the second parameter. The upper 64 bits are copied
|
|
1399
1442
|
/// from the upper 64 bits of the first parameter.
|
|
1400
|
-
static __inline__ __m128d
|
|
1401
|
-
|
|
1443
|
+
static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
1444
|
+
_mm_cvtss_sd(__m128d __a, __m128 __b) {
|
|
1402
1445
|
__a[0] = __b[0];
|
|
1403
1446
|
return __a;
|
|
1404
1447
|
}
|
|
1405
1448
|
|
|
1406
1449
|
/// Converts the two double-precision floating-point elements of a
|
|
1407
|
-
/// 128-bit vector of [2 x double] into two signed
|
|
1408
|
-
/// returned in the lower 64 bits
|
|
1450
|
+
/// 128-bit vector of [2 x double] into two signed truncated (rounded
|
|
1451
|
+
/// toward zero) 32-bit integer values, returned in the lower 64 bits
|
|
1452
|
+
/// of a 128-bit vector of [4 x i32].
|
|
1409
1453
|
///
|
|
1410
|
-
/// If
|
|
1411
|
-
///
|
|
1412
|
-
///
|
|
1454
|
+
/// If a converted value does not fit in a 32-bit integer, raises a
|
|
1455
|
+
/// floating-point invalid exception. If the exception is masked, returns
|
|
1456
|
+
/// the most negative integer.
|
|
1413
1457
|
///
|
|
1414
1458
|
/// \headerfile <x86intrin.h>
|
|
1415
1459
|
///
|
|
@@ -1425,7 +1469,11 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cvttpd_epi32(__m128d __a) {
|
|
|
1425
1469
|
}
|
|
1426
1470
|
|
|
1427
1471
|
/// Converts the low-order element of a [2 x double] vector into a 32-bit
|
|
1428
|
-
/// signed
|
|
1472
|
+
/// signed truncated (rounded toward zero) integer value.
|
|
1473
|
+
///
|
|
1474
|
+
/// If the converted value does not fit in a 32-bit integer, raises a
|
|
1475
|
+
/// floating-point invalid exception. If the exception is masked, returns
|
|
1476
|
+
/// the most negative integer.
|
|
1429
1477
|
///
|
|
1430
1478
|
/// \headerfile <x86intrin.h>
|
|
1431
1479
|
///
|
|
@@ -1444,6 +1492,10 @@ static __inline__ int __DEFAULT_FN_ATTRS _mm_cvttsd_si32(__m128d __a) {
|
|
|
1444
1492
|
/// 128-bit vector of [2 x double] into two signed 32-bit integer values,
|
|
1445
1493
|
/// returned in a 64-bit vector of [2 x i32].
|
|
1446
1494
|
///
|
|
1495
|
+
/// If a converted value does not fit in a 32-bit integer, raises a
|
|
1496
|
+
/// floating-point invalid exception. If the exception is masked, returns
|
|
1497
|
+
/// the most negative integer.
|
|
1498
|
+
///
|
|
1447
1499
|
/// \headerfile <x86intrin.h>
|
|
1448
1500
|
///
|
|
1449
1501
|
/// This intrinsic corresponds to the <c> CVTPD2PI </c> instruction.
|
|
@@ -1451,16 +1503,17 @@ static __inline__ int __DEFAULT_FN_ATTRS _mm_cvttsd_si32(__m128d __a) {
|
|
|
1451
1503
|
/// \param __a
|
|
1452
1504
|
/// A 128-bit vector of [2 x double].
|
|
1453
1505
|
/// \returns A 64-bit vector of [2 x i32] containing the converted values.
|
|
1454
|
-
static __inline__ __m64
|
|
1455
|
-
return (
|
|
1506
|
+
static __inline__ __m64 __DEFAULT_FN_ATTRS _mm_cvtpd_pi32(__m128d __a) {
|
|
1507
|
+
return __trunc64(__builtin_ia32_cvtpd2dq((__v2df)__a));
|
|
1456
1508
|
}
|
|
1457
1509
|
|
|
1458
1510
|
/// Converts the two double-precision floating-point elements of a
|
|
1459
|
-
/// 128-bit vector of [2 x double] into two signed
|
|
1460
|
-
/// returned in a 64-bit vector of [2 x i32].
|
|
1511
|
+
/// 128-bit vector of [2 x double] into two signed truncated (rounded toward
|
|
1512
|
+
/// zero) 32-bit integer values, returned in a 64-bit vector of [2 x i32].
|
|
1461
1513
|
///
|
|
1462
|
-
/// If
|
|
1463
|
-
///
|
|
1514
|
+
/// If a converted value does not fit in a 32-bit integer, raises a
|
|
1515
|
+
/// floating-point invalid exception. If the exception is masked, returns
|
|
1516
|
+
/// the most negative integer.
|
|
1464
1517
|
///
|
|
1465
1518
|
/// \headerfile <x86intrin.h>
|
|
1466
1519
|
///
|
|
@@ -1469,8 +1522,8 @@ static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX _mm_cvtpd_pi32(__m128d __a) {
|
|
|
1469
1522
|
/// \param __a
|
|
1470
1523
|
/// A 128-bit vector of [2 x double].
|
|
1471
1524
|
/// \returns A 64-bit vector of [2 x i32] containing the converted values.
|
|
1472
|
-
static __inline__ __m64
|
|
1473
|
-
return (
|
|
1525
|
+
static __inline__ __m64 __DEFAULT_FN_ATTRS _mm_cvttpd_pi32(__m128d __a) {
|
|
1526
|
+
return __trunc64(__builtin_ia32_cvttpd2dq((__v2df)__a));
|
|
1474
1527
|
}
|
|
1475
1528
|
|
|
1476
1529
|
/// Converts the two signed 32-bit integer elements of a 64-bit vector of
|
|
@@ -1484,8 +1537,9 @@ static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX _mm_cvttpd_pi32(__m128d __a) {
|
|
|
1484
1537
|
/// \param __a
|
|
1485
1538
|
/// A 64-bit vector of [2 x i32].
|
|
1486
1539
|
/// \returns A 128-bit vector of [2 x double] containing the converted values.
|
|
1487
|
-
static __inline__ __m128d
|
|
1488
|
-
|
|
1540
|
+
static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
1541
|
+
_mm_cvtpi32_pd(__m64 __a) {
|
|
1542
|
+
return (__m128d) __builtin_convertvector((__v2si)__a, __v2df);
|
|
1489
1543
|
}
|
|
1490
1544
|
|
|
1491
1545
|
/// Returns the low-order element of a 128-bit vector of [2 x double] as
|
|
@@ -1499,7 +1553,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS_MMX _mm_cvtpi32_pd(__m64 __a) {
|
|
|
1499
1553
|
/// A 128-bit vector of [2 x double]. The lower 64 bits are returned.
|
|
1500
1554
|
/// \returns A double-precision floating-point value copied from the lower 64
|
|
1501
1555
|
/// bits of \a __a.
|
|
1502
|
-
static __inline__ double
|
|
1556
|
+
static __inline__ double __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
1557
|
+
_mm_cvtsd_f64(__m128d __a) {
|
|
1503
1558
|
return __a[0];
|
|
1504
1559
|
}
|
|
1505
1560
|
|
|
@@ -1734,8 +1789,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_undefined_pd(void) {
|
|
|
1734
1789
|
/// \returns An initialized 128-bit floating-point vector of [2 x double]. The
|
|
1735
1790
|
/// lower 64 bits contain the value of the parameter. The upper 64 bits are
|
|
1736
1791
|
/// set to zero.
|
|
1737
|
-
static __inline__ __m128d
|
|
1738
|
-
return __extension__(__m128d){__w, 0};
|
|
1792
|
+
static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR _mm_set_sd(double __w) {
|
|
1793
|
+
return __extension__(__m128d){__w, 0.0};
|
|
1739
1794
|
}
|
|
1740
1795
|
|
|
1741
1796
|
/// Constructs a 128-bit floating-point vector of [2 x double], with each
|
|
@@ -1750,7 +1805,7 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_set_sd(double __w) {
|
|
|
1750
1805
|
/// A double-precision floating-point value used to initialize each vector
|
|
1751
1806
|
/// element of the result.
|
|
1752
1807
|
/// \returns An initialized 128-bit floating-point vector of [2 x double].
|
|
1753
|
-
static __inline__ __m128d
|
|
1808
|
+
static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR _mm_set1_pd(double __w) {
|
|
1754
1809
|
return __extension__(__m128d){__w, __w};
|
|
1755
1810
|
}
|
|
1756
1811
|
|
|
@@ -1766,7 +1821,7 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_set1_pd(double __w) {
|
|
|
1766
1821
|
/// A double-precision floating-point value used to initialize each vector
|
|
1767
1822
|
/// element of the result.
|
|
1768
1823
|
/// \returns An initialized 128-bit floating-point vector of [2 x double].
|
|
1769
|
-
static __inline__ __m128d
|
|
1824
|
+
static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR _mm_set_pd1(double __w) {
|
|
1770
1825
|
return _mm_set1_pd(__w);
|
|
1771
1826
|
}
|
|
1772
1827
|
|
|
@@ -1784,8 +1839,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_set_pd1(double __w) {
|
|
|
1784
1839
|
/// A double-precision floating-point value used to initialize the lower 64
|
|
1785
1840
|
/// bits of the result.
|
|
1786
1841
|
/// \returns An initialized 128-bit floating-point vector of [2 x double].
|
|
1787
|
-
static __inline__ __m128d
|
|
1788
|
-
|
|
1842
|
+
static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR _mm_set_pd(double __w,
|
|
1843
|
+
double __x) {
|
|
1789
1844
|
return __extension__(__m128d){__x, __w};
|
|
1790
1845
|
}
|
|
1791
1846
|
|
|
@@ -1804,8 +1859,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_set_pd(double __w,
|
|
|
1804
1859
|
/// A double-precision floating-point value used to initialize the upper 64
|
|
1805
1860
|
/// bits of the result.
|
|
1806
1861
|
/// \returns An initialized 128-bit floating-point vector of [2 x double].
|
|
1807
|
-
static __inline__ __m128d
|
|
1808
|
-
|
|
1862
|
+
static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR _mm_setr_pd(double __w,
|
|
1863
|
+
double __x) {
|
|
1809
1864
|
return __extension__(__m128d){__w, __x};
|
|
1810
1865
|
}
|
|
1811
1866
|
|
|
@@ -1818,7 +1873,7 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_setr_pd(double __w,
|
|
|
1818
1873
|
///
|
|
1819
1874
|
/// \returns An initialized 128-bit floating-point vector of [2 x double] with
|
|
1820
1875
|
/// all elements set to zero.
|
|
1821
|
-
static __inline__ __m128d
|
|
1876
|
+
static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR _mm_setzero_pd(void) {
|
|
1822
1877
|
return __extension__(__m128d){0.0, 0.0};
|
|
1823
1878
|
}
|
|
1824
1879
|
|
|
@@ -1837,8 +1892,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_setzero_pd(void) {
|
|
|
1837
1892
|
/// A 128-bit vector of [2 x double]. The lower 64 bits are written to the
|
|
1838
1893
|
/// lower 64 bits of the result.
|
|
1839
1894
|
/// \returns A 128-bit vector of [2 x double] containing the moved values.
|
|
1840
|
-
static __inline__ __m128d
|
|
1841
|
-
|
|
1895
|
+
static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
1896
|
+
_mm_move_sd(__m128d __a, __m128d __b) {
|
|
1842
1897
|
__a[0] = __b[0];
|
|
1843
1898
|
return __a;
|
|
1844
1899
|
}
|
|
@@ -2055,8 +2110,8 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_add_epi16(__m128i __a,
|
|
|
2055
2110
|
/// A 128-bit vector of [4 x i32].
|
|
2056
2111
|
/// \returns A 128-bit vector of [4 x i32] containing the sums of both
|
|
2057
2112
|
/// parameters.
|
|
2058
|
-
static __inline__ __m128i
|
|
2059
|
-
|
|
2113
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
2114
|
+
_mm_add_epi32(__m128i __a, __m128i __b) {
|
|
2060
2115
|
return (__m128i)((__v4su)__a + (__v4su)__b);
|
|
2061
2116
|
}
|
|
2062
2117
|
|
|
@@ -2072,9 +2127,8 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_add_epi32(__m128i __a,
|
|
|
2072
2127
|
/// \param __b
|
|
2073
2128
|
/// A 64-bit integer.
|
|
2074
2129
|
/// \returns A 64-bit integer containing the sum of both parameters.
|
|
2075
|
-
static __inline__ __m64
|
|
2076
|
-
|
|
2077
|
-
return (__m64)__builtin_ia32_paddq((__v1di)__a, (__v1di)__b);
|
|
2130
|
+
static __inline__ __m64 __DEFAULT_FN_ATTRS _mm_add_si64(__m64 __a, __m64 __b) {
|
|
2131
|
+
return (__m64)(((unsigned long long)__a) + ((unsigned long long)__b));
|
|
2078
2132
|
}
|
|
2079
2133
|
|
|
2080
2134
|
/// Adds the corresponding elements of two 128-bit vectors of [2 x i64],
|
|
@@ -2093,15 +2147,17 @@ static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX _mm_add_si64(__m64 __a,
|
|
|
2093
2147
|
/// A 128-bit vector of [2 x i64].
|
|
2094
2148
|
/// \returns A 128-bit vector of [2 x i64] containing the sums of both
|
|
2095
2149
|
/// parameters.
|
|
2096
|
-
static __inline__ __m128i
|
|
2097
|
-
|
|
2150
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
2151
|
+
_mm_add_epi64(__m128i __a, __m128i __b) {
|
|
2098
2152
|
return (__m128i)((__v2du)__a + (__v2du)__b);
|
|
2099
2153
|
}
|
|
2100
2154
|
|
|
2101
2155
|
/// Adds, with saturation, the corresponding elements of two 128-bit
|
|
2102
|
-
/// signed [16 x i8] vectors, saving each sum in the corresponding element
|
|
2103
|
-
/// a 128-bit result vector of [16 x i8].
|
|
2104
|
-
///
|
|
2156
|
+
/// signed [16 x i8] vectors, saving each sum in the corresponding element
|
|
2157
|
+
/// of a 128-bit result vector of [16 x i8].
|
|
2158
|
+
///
|
|
2159
|
+
/// Positive sums greater than 0x7F are saturated to 0x7F. Negative sums
|
|
2160
|
+
/// less than 0x80 are saturated to 0x80.
|
|
2105
2161
|
///
|
|
2106
2162
|
/// \headerfile <x86intrin.h>
|
|
2107
2163
|
///
|
|
@@ -2119,10 +2175,11 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_adds_epi8(__m128i __a,
|
|
|
2119
2175
|
}
|
|
2120
2176
|
|
|
2121
2177
|
/// Adds, with saturation, the corresponding elements of two 128-bit
|
|
2122
|
-
/// signed [8 x i16] vectors, saving each sum in the corresponding element
|
|
2123
|
-
/// a 128-bit result vector of [8 x i16].
|
|
2124
|
-
///
|
|
2125
|
-
///
|
|
2178
|
+
/// signed [8 x i16] vectors, saving each sum in the corresponding element
|
|
2179
|
+
/// of a 128-bit result vector of [8 x i16].
|
|
2180
|
+
///
|
|
2181
|
+
/// Positive sums greater than 0x7FFF are saturated to 0x7FFF. Negative sums
|
|
2182
|
+
/// less than 0x8000 are saturated to 0x8000.
|
|
2126
2183
|
///
|
|
2127
2184
|
/// \headerfile <x86intrin.h>
|
|
2128
2185
|
///
|
|
@@ -2141,8 +2198,10 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_adds_epi16(__m128i __a,
|
|
|
2141
2198
|
|
|
2142
2199
|
/// Adds, with saturation, the corresponding elements of two 128-bit
|
|
2143
2200
|
/// unsigned [16 x i8] vectors, saving each sum in the corresponding element
|
|
2144
|
-
/// of a 128-bit result vector of [16 x i8].
|
|
2145
|
-
///
|
|
2201
|
+
/// of a 128-bit result vector of [16 x i8].
|
|
2202
|
+
///
|
|
2203
|
+
/// Positive sums greater than 0xFF are saturated to 0xFF. Negative sums are
|
|
2204
|
+
/// saturated to 0x00.
|
|
2146
2205
|
///
|
|
2147
2206
|
/// \headerfile <x86intrin.h>
|
|
2148
2207
|
///
|
|
@@ -2161,8 +2220,10 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_adds_epu8(__m128i __a,
|
|
|
2161
2220
|
|
|
2162
2221
|
/// Adds, with saturation, the corresponding elements of two 128-bit
|
|
2163
2222
|
/// unsigned [8 x i16] vectors, saving each sum in the corresponding element
|
|
2164
|
-
/// of a 128-bit result vector of [8 x i16].
|
|
2165
|
-
///
|
|
2223
|
+
/// of a 128-bit result vector of [8 x i16].
|
|
2224
|
+
///
|
|
2225
|
+
/// Positive sums greater than 0xFFFF are saturated to 0xFFFF. Negative sums
|
|
2226
|
+
/// are saturated to 0x0000.
|
|
2166
2227
|
///
|
|
2167
2228
|
/// \headerfile <x86intrin.h>
|
|
2168
2229
|
///
|
|
@@ -2388,9 +2449,9 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_mullo_epi16(__m128i __a,
|
|
|
2388
2449
|
/// \param __b
|
|
2389
2450
|
/// A 64-bit integer containing one of the source operands.
|
|
2390
2451
|
/// \returns A 64-bit integer vector containing the product of both operands.
|
|
2391
|
-
static __inline__ __m64
|
|
2392
|
-
|
|
2393
|
-
|
|
2452
|
+
static __inline__ __m64 __DEFAULT_FN_ATTRS _mm_mul_su32(__m64 __a, __m64 __b) {
|
|
2453
|
+
return __trunc64(__builtin_ia32_pmuludq128((__v4si)__anyext128(__a),
|
|
2454
|
+
(__v4si)__anyext128(__b)));
|
|
2394
2455
|
}
|
|
2395
2456
|
|
|
2396
2457
|
/// Multiplies 32-bit unsigned integer values contained in the lower
|
|
@@ -2478,8 +2539,8 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_sub_epi16(__m128i __a,
|
|
|
2478
2539
|
/// A 128-bit integer vector containing the subtrahends.
|
|
2479
2540
|
/// \returns A 128-bit integer vector containing the differences of the values
|
|
2480
2541
|
/// in the operands.
|
|
2481
|
-
static __inline__ __m128i
|
|
2482
|
-
|
|
2542
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
2543
|
+
_mm_sub_epi32(__m128i __a, __m128i __b) {
|
|
2483
2544
|
return (__m128i)((__v4su)__a - (__v4su)__b);
|
|
2484
2545
|
}
|
|
2485
2546
|
|
|
@@ -2496,9 +2557,8 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_sub_epi32(__m128i __a,
|
|
|
2496
2557
|
/// A 64-bit integer vector containing the subtrahend.
|
|
2497
2558
|
/// \returns A 64-bit integer vector containing the difference of the values in
|
|
2498
2559
|
/// the operands.
|
|
2499
|
-
static __inline__ __m64
|
|
2500
|
-
|
|
2501
|
-
return (__m64)__builtin_ia32_psubq((__v1di)__a, (__v1di)__b);
|
|
2560
|
+
static __inline__ __m64 __DEFAULT_FN_ATTRS _mm_sub_si64(__m64 __a, __m64 __b) {
|
|
2561
|
+
return (__m64)((unsigned long long)__a - (unsigned long long)__b);
|
|
2502
2562
|
}
|
|
2503
2563
|
|
|
2504
2564
|
/// Subtracts the corresponding elements of two [2 x i64] vectors.
|
|
@@ -2513,15 +2573,17 @@ static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX _mm_sub_si64(__m64 __a,
|
|
|
2513
2573
|
/// A 128-bit integer vector containing the subtrahends.
|
|
2514
2574
|
/// \returns A 128-bit integer vector containing the differences of the values
|
|
2515
2575
|
/// in the operands.
|
|
2516
|
-
static __inline__ __m128i
|
|
2517
|
-
|
|
2576
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
2577
|
+
_mm_sub_epi64(__m128i __a, __m128i __b) {
|
|
2518
2578
|
return (__m128i)((__v2du)__a - (__v2du)__b);
|
|
2519
2579
|
}
|
|
2520
2580
|
|
|
2521
|
-
/// Subtracts corresponding 8-bit signed integer values in
|
|
2522
|
-
/// returns the differences in the corresponding bytes in the
|
|
2523
|
-
///
|
|
2524
|
-
///
|
|
2581
|
+
/// Subtracts, with saturation, corresponding 8-bit signed integer values in
|
|
2582
|
+
/// the input and returns the differences in the corresponding bytes in the
|
|
2583
|
+
/// destination.
|
|
2584
|
+
///
|
|
2585
|
+
/// Differences greater than 0x7F are saturated to 0x7F, and differences
|
|
2586
|
+
/// less than 0x80 are saturated to 0x80.
|
|
2525
2587
|
///
|
|
2526
2588
|
/// \headerfile <x86intrin.h>
|
|
2527
2589
|
///
|
|
@@ -2538,8 +2600,10 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_subs_epi8(__m128i __a,
|
|
|
2538
2600
|
return (__m128i)__builtin_elementwise_sub_sat((__v16qs)__a, (__v16qs)__b);
|
|
2539
2601
|
}
|
|
2540
2602
|
|
|
2541
|
-
/// Subtracts corresponding 16-bit signed integer values in
|
|
2542
|
-
/// returns the differences in the corresponding bytes in the
|
|
2603
|
+
/// Subtracts, with saturation, corresponding 16-bit signed integer values in
|
|
2604
|
+
/// the input and returns the differences in the corresponding bytes in the
|
|
2605
|
+
/// destination.
|
|
2606
|
+
///
|
|
2543
2607
|
/// Differences greater than 0x7FFF are saturated to 0x7FFF, and values less
|
|
2544
2608
|
/// than 0x8000 are saturated to 0x8000.
|
|
2545
2609
|
///
|
|
@@ -2558,9 +2622,11 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_subs_epi16(__m128i __a,
|
|
|
2558
2622
|
return (__m128i)__builtin_elementwise_sub_sat((__v8hi)__a, (__v8hi)__b);
|
|
2559
2623
|
}
|
|
2560
2624
|
|
|
2561
|
-
/// Subtracts corresponding 8-bit unsigned integer values in
|
|
2562
|
-
/// and returns the differences in the corresponding bytes in the
|
|
2563
|
-
/// destination.
|
|
2625
|
+
/// Subtracts, with saturation, corresponding 8-bit unsigned integer values in
|
|
2626
|
+
/// the input and returns the differences in the corresponding bytes in the
|
|
2627
|
+
/// destination.
|
|
2628
|
+
///
|
|
2629
|
+
/// Differences less than 0x00 are saturated to 0x00.
|
|
2564
2630
|
///
|
|
2565
2631
|
/// \headerfile <x86intrin.h>
|
|
2566
2632
|
///
|
|
@@ -2577,9 +2643,11 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_subs_epu8(__m128i __a,
|
|
|
2577
2643
|
return (__m128i)__builtin_elementwise_sub_sat((__v16qu)__a, (__v16qu)__b);
|
|
2578
2644
|
}
|
|
2579
2645
|
|
|
2580
|
-
/// Subtracts corresponding 16-bit unsigned integer values in
|
|
2581
|
-
/// and returns the differences in the corresponding bytes in the
|
|
2582
|
-
/// destination.
|
|
2646
|
+
/// Subtracts, with saturation, corresponding 16-bit unsigned integer values in
|
|
2647
|
+
/// the input and returns the differences in the corresponding bytes in the
|
|
2648
|
+
/// destination.
|
|
2649
|
+
///
|
|
2650
|
+
/// Differences less than 0x0000 are saturated to 0x0000.
|
|
2583
2651
|
///
|
|
2584
2652
|
/// \headerfile <x86intrin.h>
|
|
2585
2653
|
///
|
|
@@ -3008,8 +3076,9 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_srl_epi64(__m128i __a,
|
|
|
3008
3076
|
}
|
|
3009
3077
|
|
|
3010
3078
|
/// Compares each of the corresponding 8-bit values of the 128-bit
|
|
3011
|
-
/// integer vectors for equality.
|
|
3012
|
-
///
|
|
3079
|
+
/// integer vectors for equality.
|
|
3080
|
+
///
|
|
3081
|
+
/// Each comparison returns 0x0 for false, 0xFF for true.
|
|
3013
3082
|
///
|
|
3014
3083
|
/// \headerfile <x86intrin.h>
|
|
3015
3084
|
///
|
|
@@ -3026,8 +3095,9 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cmpeq_epi8(__m128i __a,
|
|
|
3026
3095
|
}
|
|
3027
3096
|
|
|
3028
3097
|
/// Compares each of the corresponding 16-bit values of the 128-bit
|
|
3029
|
-
/// integer vectors for equality.
|
|
3030
|
-
///
|
|
3098
|
+
/// integer vectors for equality.
|
|
3099
|
+
///
|
|
3100
|
+
/// Each comparison returns 0x0 for false, 0xFFFF for true.
|
|
3031
3101
|
///
|
|
3032
3102
|
/// \headerfile <x86intrin.h>
|
|
3033
3103
|
///
|
|
@@ -3044,8 +3114,9 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cmpeq_epi16(__m128i __a,
|
|
|
3044
3114
|
}
|
|
3045
3115
|
|
|
3046
3116
|
/// Compares each of the corresponding 32-bit values of the 128-bit
|
|
3047
|
-
/// integer vectors for equality.
|
|
3048
|
-
///
|
|
3117
|
+
/// integer vectors for equality.
|
|
3118
|
+
///
|
|
3119
|
+
/// Each comparison returns 0x0 for false, 0xFFFFFFFF for true.
|
|
3049
3120
|
///
|
|
3050
3121
|
/// \headerfile <x86intrin.h>
|
|
3051
3122
|
///
|
|
@@ -3063,8 +3134,9 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cmpeq_epi32(__m128i __a,
|
|
|
3063
3134
|
|
|
3064
3135
|
/// Compares each of the corresponding signed 8-bit values of the 128-bit
|
|
3065
3136
|
/// integer vectors to determine if the values in the first operand are
|
|
3066
|
-
/// greater than those in the second operand.
|
|
3067
|
-
///
|
|
3137
|
+
/// greater than those in the second operand.
|
|
3138
|
+
///
|
|
3139
|
+
/// Each comparison returns 0x0 for false, 0xFF for true.
|
|
3068
3140
|
///
|
|
3069
3141
|
/// \headerfile <x86intrin.h>
|
|
3070
3142
|
///
|
|
@@ -3086,7 +3158,7 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cmpgt_epi8(__m128i __a,
|
|
|
3086
3158
|
/// 128-bit integer vectors to determine if the values in the first operand
|
|
3087
3159
|
/// are greater than those in the second operand.
|
|
3088
3160
|
///
|
|
3089
|
-
/// Each comparison
|
|
3161
|
+
/// Each comparison returns 0x0 for false, 0xFFFF for true.
|
|
3090
3162
|
///
|
|
3091
3163
|
/// \headerfile <x86intrin.h>
|
|
3092
3164
|
///
|
|
@@ -3106,7 +3178,7 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cmpgt_epi16(__m128i __a,
|
|
|
3106
3178
|
/// 128-bit integer vectors to determine if the values in the first operand
|
|
3107
3179
|
/// are greater than those in the second operand.
|
|
3108
3180
|
///
|
|
3109
|
-
/// Each comparison
|
|
3181
|
+
/// Each comparison returns 0x0 for false, 0xFFFFFFFF for true.
|
|
3110
3182
|
///
|
|
3111
3183
|
/// \headerfile <x86intrin.h>
|
|
3112
3184
|
///
|
|
@@ -3126,7 +3198,7 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cmpgt_epi32(__m128i __a,
|
|
|
3126
3198
|
/// integer vectors to determine if the values in the first operand are less
|
|
3127
3199
|
/// than those in the second operand.
|
|
3128
3200
|
///
|
|
3129
|
-
/// Each comparison
|
|
3201
|
+
/// Each comparison returns 0x0 for false, 0xFF for true.
|
|
3130
3202
|
///
|
|
3131
3203
|
/// \headerfile <x86intrin.h>
|
|
3132
3204
|
///
|
|
@@ -3146,7 +3218,7 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cmplt_epi8(__m128i __a,
|
|
|
3146
3218
|
/// 128-bit integer vectors to determine if the values in the first operand
|
|
3147
3219
|
/// are less than those in the second operand.
|
|
3148
3220
|
///
|
|
3149
|
-
/// Each comparison
|
|
3221
|
+
/// Each comparison returns 0x0 for false, 0xFFFF for true.
|
|
3150
3222
|
///
|
|
3151
3223
|
/// \headerfile <x86intrin.h>
|
|
3152
3224
|
///
|
|
@@ -3166,7 +3238,7 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cmplt_epi16(__m128i __a,
|
|
|
3166
3238
|
/// 128-bit integer vectors to determine if the values in the first operand
|
|
3167
3239
|
/// are less than those in the second operand.
|
|
3168
3240
|
///
|
|
3169
|
-
/// Each comparison
|
|
3241
|
+
/// Each comparison returns 0x0 for false, 0xFFFFFFFF for true.
|
|
3170
3242
|
///
|
|
3171
3243
|
/// \headerfile <x86intrin.h>
|
|
3172
3244
|
///
|
|
@@ -3200,14 +3272,18 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cmplt_epi32(__m128i __a,
|
|
|
3200
3272
|
/// \returns A 128-bit vector of [2 x double] whose lower 64 bits contain the
|
|
3201
3273
|
/// converted value of the second operand. The upper 64 bits are copied from
|
|
3202
3274
|
/// the upper 64 bits of the first operand.
|
|
3203
|
-
static __inline__ __m128d
|
|
3204
|
-
|
|
3275
|
+
static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
3276
|
+
_mm_cvtsi64_sd(__m128d __a, long long __b) {
|
|
3205
3277
|
__a[0] = __b;
|
|
3206
3278
|
return __a;
|
|
3207
3279
|
}
|
|
3208
3280
|
|
|
3209
3281
|
/// Converts the first (lower) element of a vector of [2 x double] into a
|
|
3210
|
-
/// 64-bit signed integer value
|
|
3282
|
+
/// 64-bit signed integer value.
|
|
3283
|
+
///
|
|
3284
|
+
/// If the converted value does not fit in a 64-bit integer, raises a
|
|
3285
|
+
/// floating-point invalid exception. If the exception is masked, returns
|
|
3286
|
+
/// the most negative integer.
|
|
3211
3287
|
///
|
|
3212
3288
|
/// \headerfile <x86intrin.h>
|
|
3213
3289
|
///
|
|
@@ -3222,7 +3298,11 @@ static __inline__ long long __DEFAULT_FN_ATTRS _mm_cvtsd_si64(__m128d __a) {
|
|
|
3222
3298
|
}
|
|
3223
3299
|
|
|
3224
3300
|
/// Converts the first (lower) element of a vector of [2 x double] into a
|
|
3225
|
-
/// 64-bit signed
|
|
3301
|
+
/// 64-bit signed truncated (rounded toward zero) integer value.
|
|
3302
|
+
///
|
|
3303
|
+
/// If a converted value does not fit in a 64-bit integer, raises a
|
|
3304
|
+
/// floating-point invalid exception. If the exception is masked, returns
|
|
3305
|
+
/// the most negative integer.
|
|
3226
3306
|
///
|
|
3227
3307
|
/// \headerfile <x86intrin.h>
|
|
3228
3308
|
///
|
|
@@ -3247,12 +3327,17 @@ static __inline__ long long __DEFAULT_FN_ATTRS _mm_cvttsd_si64(__m128d __a) {
|
|
|
3247
3327
|
/// \param __a
|
|
3248
3328
|
/// A 128-bit integer vector.
|
|
3249
3329
|
/// \returns A 128-bit vector of [4 x float] containing the converted values.
|
|
3250
|
-
static __inline__ __m128
|
|
3330
|
+
static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
3331
|
+
_mm_cvtepi32_ps(__m128i __a) {
|
|
3251
3332
|
return (__m128) __builtin_convertvector((__v4si)__a, __v4sf);
|
|
3252
3333
|
}
|
|
3253
3334
|
|
|
3254
3335
|
/// Converts a vector of [4 x float] into a vector of [4 x i32].
|
|
3255
3336
|
///
|
|
3337
|
+
/// If a converted value does not fit in a 32-bit integer, raises a
|
|
3338
|
+
/// floating-point invalid exception. If the exception is masked, returns
|
|
3339
|
+
/// the most negative integer.
|
|
3340
|
+
///
|
|
3256
3341
|
/// \headerfile <x86intrin.h>
|
|
3257
3342
|
///
|
|
3258
3343
|
/// This intrinsic corresponds to the <c> VCVTPS2DQ / CVTPS2DQ </c> instruction.
|
|
@@ -3265,8 +3350,12 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cvtps_epi32(__m128 __a) {
|
|
|
3265
3350
|
return (__m128i)__builtin_ia32_cvtps2dq((__v4sf)__a);
|
|
3266
3351
|
}
|
|
3267
3352
|
|
|
3268
|
-
/// Converts a vector of [4 x float] into
|
|
3269
|
-
///
|
|
3353
|
+
/// Converts a vector of [4 x float] into four signed truncated (rounded toward
|
|
3354
|
+
/// zero) 32-bit integers, returned in a vector of [4 x i32].
|
|
3355
|
+
///
|
|
3356
|
+
/// If a converted value does not fit in a 32-bit integer, raises a
|
|
3357
|
+
/// floating-point invalid exception. If the exception is masked, returns
|
|
3358
|
+
/// the most negative integer.
|
|
3270
3359
|
///
|
|
3271
3360
|
/// \headerfile <x86intrin.h>
|
|
3272
3361
|
///
|
|
@@ -3423,8 +3512,8 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_undefined_si128(void) {
|
|
|
3423
3512
|
/// destination vector of [2 x i64].
|
|
3424
3513
|
/// \returns An initialized 128-bit vector of [2 x i64] containing the values
|
|
3425
3514
|
/// provided in the operands.
|
|
3426
|
-
static __inline__ __m128i
|
|
3427
|
-
|
|
3515
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
3516
|
+
_mm_set_epi64x(long long __q1, long long __q0) {
|
|
3428
3517
|
return __extension__(__m128i)(__v2di){__q0, __q1};
|
|
3429
3518
|
}
|
|
3430
3519
|
|
|
@@ -3444,9 +3533,9 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_set_epi64x(long long __q1,
|
|
|
3444
3533
|
/// destination vector of [2 x i64].
|
|
3445
3534
|
/// \returns An initialized 128-bit vector of [2 x i64] containing the values
|
|
3446
3535
|
/// provided in the operands.
|
|
3447
|
-
static __inline__ __m128i
|
|
3448
|
-
|
|
3449
|
-
return _mm_set_epi64x((long long)__q1, (long long)__q0);
|
|
3536
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
3537
|
+
_mm_set_epi64(__m64 __q1, __m64 __q0) {
|
|
3538
|
+
return _mm_set_epi64x((long long)__q1[0], (long long)__q0[0]);
|
|
3450
3539
|
}
|
|
3451
3540
|
|
|
3452
3541
|
/// Initializes the 32-bit values in a 128-bit vector of [4 x i32] with
|
|
@@ -3471,8 +3560,10 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_set_epi64(__m64 __q1,
|
|
|
3471
3560
|
/// vector.
|
|
3472
3561
|
/// \returns An initialized 128-bit vector of [4 x i32] containing the values
|
|
3473
3562
|
/// provided in the operands.
|
|
3474
|
-
static __inline__ __m128i
|
|
3475
|
-
|
|
3563
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR _mm_set_epi32(int __i3,
|
|
3564
|
+
int __i2,
|
|
3565
|
+
int __i1,
|
|
3566
|
+
int __i0) {
|
|
3476
3567
|
return __extension__(__m128i)(__v4si){__i0, __i1, __i2, __i3};
|
|
3477
3568
|
}
|
|
3478
3569
|
|
|
@@ -3510,7 +3601,7 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_set_epi32(int __i3, int __i2,
|
|
|
3510
3601
|
/// vector.
|
|
3511
3602
|
/// \returns An initialized 128-bit vector of [8 x i16] containing the values
|
|
3512
3603
|
/// provided in the operands.
|
|
3513
|
-
static __inline__ __m128i
|
|
3604
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
3514
3605
|
_mm_set_epi16(short __w7, short __w6, short __w5, short __w4, short __w3,
|
|
3515
3606
|
short __w2, short __w1, short __w0) {
|
|
3516
3607
|
return __extension__(__m128i)(__v8hi){__w0, __w1, __w2, __w3,
|
|
@@ -3559,7 +3650,7 @@ _mm_set_epi16(short __w7, short __w6, short __w5, short __w4, short __w3,
|
|
|
3559
3650
|
/// Initializes bits [7:0] of the destination vector.
|
|
3560
3651
|
/// \returns An initialized 128-bit vector of [16 x i8] containing the values
|
|
3561
3652
|
/// provided in the operands.
|
|
3562
|
-
static __inline__ __m128i
|
|
3653
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
3563
3654
|
_mm_set_epi8(char __b15, char __b14, char __b13, char __b12, char __b11,
|
|
3564
3655
|
char __b10, char __b9, char __b8, char __b7, char __b6, char __b5,
|
|
3565
3656
|
char __b4, char __b3, char __b2, char __b1, char __b0) {
|
|
@@ -3581,7 +3672,8 @@ _mm_set_epi8(char __b15, char __b14, char __b13, char __b12, char __b11,
|
|
|
3581
3672
|
/// vector.
|
|
3582
3673
|
/// \returns An initialized 128-bit integer vector of [2 x i64] with both
|
|
3583
3674
|
/// elements containing the value provided in the operand.
|
|
3584
|
-
static __inline__ __m128i
|
|
3675
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
3676
|
+
_mm_set1_epi64x(long long __q) {
|
|
3585
3677
|
return _mm_set_epi64x(__q, __q);
|
|
3586
3678
|
}
|
|
3587
3679
|
|
|
@@ -3598,7 +3690,8 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_set1_epi64x(long long __q) {
|
|
|
3598
3690
|
/// vector.
|
|
3599
3691
|
/// \returns An initialized 128-bit vector of [2 x i64] with all elements
|
|
3600
3692
|
/// containing the value provided in the operand.
|
|
3601
|
-
static __inline__ __m128i
|
|
3693
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
3694
|
+
_mm_set1_epi64(__m64 __q) {
|
|
3602
3695
|
return _mm_set_epi64(__q, __q);
|
|
3603
3696
|
}
|
|
3604
3697
|
|
|
@@ -3615,7 +3708,7 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_set1_epi64(__m64 __q) {
|
|
|
3615
3708
|
/// vector.
|
|
3616
3709
|
/// \returns An initialized 128-bit vector of [4 x i32] with all elements
|
|
3617
3710
|
/// containing the value provided in the operand.
|
|
3618
|
-
static __inline__ __m128i
|
|
3711
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR _mm_set1_epi32(int __i) {
|
|
3619
3712
|
return _mm_set_epi32(__i, __i, __i, __i);
|
|
3620
3713
|
}
|
|
3621
3714
|
|
|
@@ -3632,7 +3725,8 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_set1_epi32(int __i) {
|
|
|
3632
3725
|
/// vector.
|
|
3633
3726
|
/// \returns An initialized 128-bit vector of [8 x i16] with all elements
|
|
3634
3727
|
/// containing the value provided in the operand.
|
|
3635
|
-
static __inline__ __m128i
|
|
3728
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
3729
|
+
_mm_set1_epi16(short __w) {
|
|
3636
3730
|
return _mm_set_epi16(__w, __w, __w, __w, __w, __w, __w, __w);
|
|
3637
3731
|
}
|
|
3638
3732
|
|
|
@@ -3649,7 +3743,7 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_set1_epi16(short __w) {
|
|
|
3649
3743
|
/// vector.
|
|
3650
3744
|
/// \returns An initialized 128-bit vector of [16 x i8] with all elements
|
|
3651
3745
|
/// containing the value provided in the operand.
|
|
3652
|
-
static __inline__ __m128i
|
|
3746
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR _mm_set1_epi8(char __b) {
|
|
3653
3747
|
return _mm_set_epi8(__b, __b, __b, __b, __b, __b, __b, __b, __b, __b, __b,
|
|
3654
3748
|
__b, __b, __b, __b, __b);
|
|
3655
3749
|
}
|
|
@@ -3668,8 +3762,8 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_set1_epi8(char __b) {
|
|
|
3668
3762
|
/// A 64-bit integral value used to initialize the upper 64 bits of the
|
|
3669
3763
|
/// result.
|
|
3670
3764
|
/// \returns An initialized 128-bit integer vector.
|
|
3671
|
-
static __inline__ __m128i
|
|
3672
|
-
|
|
3765
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
3766
|
+
_mm_setr_epi64(__m64 __q0, __m64 __q1) {
|
|
3673
3767
|
return _mm_set_epi64(__q1, __q0);
|
|
3674
3768
|
}
|
|
3675
3769
|
|
|
@@ -3690,9 +3784,8 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_setr_epi64(__m64 __q0,
|
|
|
3690
3784
|
/// \param __i3
|
|
3691
3785
|
/// A 32-bit integral value used to initialize bits [127:96] of the result.
|
|
3692
3786
|
/// \returns An initialized 128-bit integer vector.
|
|
3693
|
-
static __inline__ __m128i
|
|
3694
|
-
|
|
3695
|
-
int __i3) {
|
|
3787
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
3788
|
+
_mm_setr_epi32(int __i0, int __i1, int __i2, int __i3) {
|
|
3696
3789
|
return _mm_set_epi32(__i3, __i2, __i1, __i0);
|
|
3697
3790
|
}
|
|
3698
3791
|
|
|
@@ -3721,7 +3814,7 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_setr_epi32(int __i0, int __i1,
|
|
|
3721
3814
|
/// \param __w7
|
|
3722
3815
|
/// A 16-bit integral value used to initialize bits [127:112] of the result.
|
|
3723
3816
|
/// \returns An initialized 128-bit integer vector.
|
|
3724
|
-
static __inline__ __m128i
|
|
3817
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
3725
3818
|
_mm_setr_epi16(short __w0, short __w1, short __w2, short __w3, short __w4,
|
|
3726
3819
|
short __w5, short __w6, short __w7) {
|
|
3727
3820
|
return _mm_set_epi16(__w7, __w6, __w5, __w4, __w3, __w2, __w1, __w0);
|
|
@@ -3768,7 +3861,7 @@ _mm_setr_epi16(short __w0, short __w1, short __w2, short __w3, short __w4,
|
|
|
3768
3861
|
/// \param __b15
|
|
3769
3862
|
/// An 8-bit integral value used to initialize bits [127:120] of the result.
|
|
3770
3863
|
/// \returns An initialized 128-bit integer vector.
|
|
3771
|
-
static __inline__ __m128i
|
|
3864
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
3772
3865
|
_mm_setr_epi8(char __b0, char __b1, char __b2, char __b3, char __b4, char __b5,
|
|
3773
3866
|
char __b6, char __b7, char __b8, char __b9, char __b10,
|
|
3774
3867
|
char __b11, char __b12, char __b13, char __b14, char __b15) {
|
|
@@ -3784,7 +3877,7 @@ _mm_setr_epi8(char __b0, char __b1, char __b2, char __b3, char __b4, char __b5,
|
|
|
3784
3877
|
///
|
|
3785
3878
|
/// \returns An initialized 128-bit integer vector with all elements set to
|
|
3786
3879
|
/// zero.
|
|
3787
|
-
static __inline__ __m128i
|
|
3880
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR _mm_setzero_si128(void) {
|
|
3788
3881
|
return __extension__(__m128i)(__v2di){0LL, 0LL};
|
|
3789
3882
|
}
|
|
3790
3883
|
|
|
@@ -4050,26 +4143,22 @@ void _mm_mfence(void);
|
|
|
4050
4143
|
} // extern "C"
|
|
4051
4144
|
#endif
|
|
4052
4145
|
|
|
4053
|
-
/// Converts 16-bit signed integers from both 128-bit integer
|
|
4054
|
-
/// operands into 8-bit signed integers, and packs the results into
|
|
4055
|
-
/// destination.
|
|
4056
|
-
///
|
|
4146
|
+
/// Converts, with saturation, 16-bit signed integers from both 128-bit integer
|
|
4147
|
+
/// vector operands into 8-bit signed integers, and packs the results into
|
|
4148
|
+
/// the destination.
|
|
4149
|
+
///
|
|
4150
|
+
/// Positive values greater than 0x7F are saturated to 0x7F. Negative values
|
|
4151
|
+
/// less than 0x80 are saturated to 0x80.
|
|
4057
4152
|
///
|
|
4058
4153
|
/// \headerfile <x86intrin.h>
|
|
4059
4154
|
///
|
|
4060
4155
|
/// This intrinsic corresponds to the <c> VPACKSSWB / PACKSSWB </c> instruction.
|
|
4061
4156
|
///
|
|
4062
4157
|
/// \param __a
|
|
4063
|
-
/// A 128-bit integer vector of [8 x i16].
|
|
4064
|
-
/// a signed integer and is converted to a 8-bit signed integer with
|
|
4065
|
-
/// saturation. Values greater than 0x7F are saturated to 0x7F. Values less
|
|
4066
|
-
/// than 0x80 are saturated to 0x80. The converted [8 x i8] values are
|
|
4158
|
+
/// A 128-bit integer vector of [8 x i16]. The converted [8 x i8] values are
|
|
4067
4159
|
/// written to the lower 64 bits of the result.
|
|
4068
4160
|
/// \param __b
|
|
4069
|
-
/// A 128-bit integer vector of [8 x i16].
|
|
4070
|
-
/// a signed integer and is converted to a 8-bit signed integer with
|
|
4071
|
-
/// saturation. Values greater than 0x7F are saturated to 0x7F. Values less
|
|
4072
|
-
/// than 0x80 are saturated to 0x80. The converted [8 x i8] values are
|
|
4161
|
+
/// A 128-bit integer vector of [8 x i16]. The converted [8 x i8] values are
|
|
4073
4162
|
/// written to the higher 64 bits of the result.
|
|
4074
4163
|
/// \returns A 128-bit vector of [16 x i8] containing the converted values.
|
|
4075
4164
|
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_packs_epi16(__m128i __a,
|
|
@@ -4077,26 +4166,22 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_packs_epi16(__m128i __a,
|
|
|
4077
4166
|
return (__m128i)__builtin_ia32_packsswb128((__v8hi)__a, (__v8hi)__b);
|
|
4078
4167
|
}
|
|
4079
4168
|
|
|
4080
|
-
/// Converts 32-bit signed integers from both 128-bit integer
|
|
4081
|
-
/// operands into 16-bit signed integers, and packs the results into
|
|
4082
|
-
/// destination.
|
|
4083
|
-
///
|
|
4169
|
+
/// Converts, with saturation, 32-bit signed integers from both 128-bit integer
|
|
4170
|
+
/// vector operands into 16-bit signed integers, and packs the results into
|
|
4171
|
+
/// the destination.
|
|
4172
|
+
///
|
|
4173
|
+
/// Positive values greater than 0x7FFF are saturated to 0x7FFF. Negative
|
|
4174
|
+
/// values less than 0x8000 are saturated to 0x8000.
|
|
4084
4175
|
///
|
|
4085
4176
|
/// \headerfile <x86intrin.h>
|
|
4086
4177
|
///
|
|
4087
4178
|
/// This intrinsic corresponds to the <c> VPACKSSDW / PACKSSDW </c> instruction.
|
|
4088
4179
|
///
|
|
4089
4180
|
/// \param __a
|
|
4090
|
-
/// A 128-bit integer vector of [4 x i32].
|
|
4091
|
-
/// a signed integer and is converted to a 16-bit signed integer with
|
|
4092
|
-
/// saturation. Values greater than 0x7FFF are saturated to 0x7FFF. Values
|
|
4093
|
-
/// less than 0x8000 are saturated to 0x8000. The converted [4 x i16] values
|
|
4181
|
+
/// A 128-bit integer vector of [4 x i32]. The converted [4 x i16] values
|
|
4094
4182
|
/// are written to the lower 64 bits of the result.
|
|
4095
4183
|
/// \param __b
|
|
4096
|
-
/// A 128-bit integer vector of [4 x i32].
|
|
4097
|
-
/// a signed integer and is converted to a 16-bit signed integer with
|
|
4098
|
-
/// saturation. Values greater than 0x7FFF are saturated to 0x7FFF. Values
|
|
4099
|
-
/// less than 0x8000 are saturated to 0x8000. The converted [4 x i16] values
|
|
4184
|
+
/// A 128-bit integer vector of [4 x i32]. The converted [4 x i16] values
|
|
4100
4185
|
/// are written to the higher 64 bits of the result.
|
|
4101
4186
|
/// \returns A 128-bit vector of [8 x i16] containing the converted values.
|
|
4102
4187
|
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_packs_epi32(__m128i __a,
|
|
@@ -4104,26 +4189,22 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_packs_epi32(__m128i __a,
|
|
|
4104
4189
|
return (__m128i)__builtin_ia32_packssdw128((__v4si)__a, (__v4si)__b);
|
|
4105
4190
|
}
|
|
4106
4191
|
|
|
4107
|
-
/// Converts 16-bit signed integers from both 128-bit integer
|
|
4108
|
-
/// operands into 8-bit unsigned integers, and packs the results into
|
|
4109
|
-
/// destination.
|
|
4110
|
-
///
|
|
4192
|
+
/// Converts, with saturation, 16-bit signed integers from both 128-bit integer
|
|
4193
|
+
/// vector operands into 8-bit unsigned integers, and packs the results into
|
|
4194
|
+
/// the destination.
|
|
4195
|
+
///
|
|
4196
|
+
/// Values greater than 0xFF are saturated to 0xFF. Values less than 0x00
|
|
4197
|
+
/// are saturated to 0x00.
|
|
4111
4198
|
///
|
|
4112
4199
|
/// \headerfile <x86intrin.h>
|
|
4113
4200
|
///
|
|
4114
4201
|
/// This intrinsic corresponds to the <c> VPACKUSWB / PACKUSWB </c> instruction.
|
|
4115
4202
|
///
|
|
4116
4203
|
/// \param __a
|
|
4117
|
-
/// A 128-bit integer vector of [8 x i16].
|
|
4118
|
-
/// a signed integer and is converted to an 8-bit unsigned integer with
|
|
4119
|
-
/// saturation. Values greater than 0xFF are saturated to 0xFF. Values less
|
|
4120
|
-
/// than 0x00 are saturated to 0x00. The converted [8 x i8] values are
|
|
4204
|
+
/// A 128-bit integer vector of [8 x i16]. The converted [8 x i8] values are
|
|
4121
4205
|
/// written to the lower 64 bits of the result.
|
|
4122
4206
|
/// \param __b
|
|
4123
|
-
/// A 128-bit integer vector of [8 x i16].
|
|
4124
|
-
/// a signed integer and is converted to an 8-bit unsigned integer with
|
|
4125
|
-
/// saturation. Values greater than 0xFF are saturated to 0xFF. Values less
|
|
4126
|
-
/// than 0x00 are saturated to 0x00. The converted [8 x i8] values are
|
|
4207
|
+
/// A 128-bit integer vector of [8 x i16]. The converted [8 x i8] values are
|
|
4127
4208
|
/// written to the higher 64 bits of the result.
|
|
4128
4209
|
/// \returns A 128-bit vector of [16 x i8] containing the converted values.
|
|
4129
4210
|
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_packus_epi16(__m128i __a,
|
|
@@ -4529,7 +4610,8 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_unpacklo_epi64(__m128i __a,
|
|
|
4529
4610
|
/// A 128-bit integer vector operand. The lower 64 bits are moved to the
|
|
4530
4611
|
/// destination.
|
|
4531
4612
|
/// \returns A 64-bit integer containing the lower 64 bits of the parameter.
|
|
4532
|
-
static __inline__ __m64
|
|
4613
|
+
static __inline__ __m64 __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
4614
|
+
_mm_movepi64_pi64(__m128i __a) {
|
|
4533
4615
|
return (__m64)__a[0];
|
|
4534
4616
|
}
|
|
4535
4617
|
|
|
@@ -4544,8 +4626,9 @@ static __inline__ __m64 __DEFAULT_FN_ATTRS _mm_movepi64_pi64(__m128i __a) {
|
|
|
4544
4626
|
/// A 64-bit value.
|
|
4545
4627
|
/// \returns A 128-bit integer vector. The lower 64 bits contain the value from
|
|
4546
4628
|
/// the operand. The upper 64 bits are assigned zeros.
|
|
4547
|
-
static __inline__ __m128i
|
|
4548
|
-
|
|
4629
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
4630
|
+
_mm_movpi64_epi64(__m64 __a) {
|
|
4631
|
+
return __builtin_shufflevector((__v1di)__a, _mm_setzero_si64(), 0, 1);
|
|
4549
4632
|
}
|
|
4550
4633
|
|
|
4551
4634
|
/// Moves the lower 64 bits of a 128-bit integer vector to a 128-bit
|
|
@@ -4560,7 +4643,8 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_movpi64_epi64(__m64 __a) {
|
|
|
4560
4643
|
/// destination.
|
|
4561
4644
|
/// \returns A 128-bit integer vector. The lower 64 bits contain the value from
|
|
4562
4645
|
/// the operand. The upper 64 bits are assigned zeros.
|
|
4563
|
-
static __inline__ __m128i
|
|
4646
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
4647
|
+
_mm_move_epi64(__m128i __a) {
|
|
4564
4648
|
return __builtin_shufflevector((__v2di)__a, _mm_setzero_si128(), 0, 2);
|
|
4565
4649
|
}
|
|
4566
4650
|
|
|
@@ -4579,8 +4663,8 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_move_epi64(__m128i __a) {
|
|
|
4579
4663
|
/// A 128-bit vector of [2 x double]. \n
|
|
4580
4664
|
/// Bits [127:64] are written to bits [127:64] of the destination.
|
|
4581
4665
|
/// \returns A 128-bit vector of [2 x double] containing the interleaved values.
|
|
4582
|
-
static __inline__ __m128d
|
|
4583
|
-
|
|
4666
|
+
static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
4667
|
+
_mm_unpackhi_pd(__m128d __a, __m128d __b) {
|
|
4584
4668
|
return __builtin_shufflevector((__v2df)__a, (__v2df)__b, 1, 2 + 1);
|
|
4585
4669
|
}
|
|
4586
4670
|
|
|
@@ -4599,8 +4683,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_unpackhi_pd(__m128d __a,
|
|
|
4599
4683
|
/// A 128-bit vector of [2 x double]. \n
|
|
4600
4684
|
/// Bits [63:0] are written to bits [127:64] of the destination.
|
|
4601
4685
|
/// \returns A 128-bit vector of [2 x double] containing the interleaved values.
|
|
4602
|
-
static __inline__ __m128d
|
|
4603
|
-
|
|
4686
|
+
static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
4687
|
+
_mm_unpacklo_pd(__m128d __a, __m128d __b) {
|
|
4604
4688
|
return __builtin_shufflevector((__v2df)__a, (__v2df)__b, 0, 2 + 0);
|
|
4605
4689
|
}
|
|
4606
4690
|
|
|
@@ -4663,7 +4747,8 @@ static __inline__ int __DEFAULT_FN_ATTRS _mm_movemask_pd(__m128d __a) {
|
|
|
4663
4747
|
/// A 128-bit floating-point vector of [2 x double].
|
|
4664
4748
|
/// \returns A 128-bit floating-point vector of [4 x float] containing the same
|
|
4665
4749
|
/// bitwise pattern as the parameter.
|
|
4666
|
-
static __inline__ __m128
|
|
4750
|
+
static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
4751
|
+
_mm_castpd_ps(__m128d __a) {
|
|
4667
4752
|
return (__m128)__a;
|
|
4668
4753
|
}
|
|
4669
4754
|
|
|
@@ -4678,7 +4763,8 @@ static __inline__ __m128 __DEFAULT_FN_ATTRS _mm_castpd_ps(__m128d __a) {
|
|
|
4678
4763
|
/// A 128-bit floating-point vector of [2 x double].
|
|
4679
4764
|
/// \returns A 128-bit integer vector containing the same bitwise pattern as the
|
|
4680
4765
|
/// parameter.
|
|
4681
|
-
static __inline__ __m128i
|
|
4766
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
4767
|
+
_mm_castpd_si128(__m128d __a) {
|
|
4682
4768
|
return (__m128i)__a;
|
|
4683
4769
|
}
|
|
4684
4770
|
|
|
@@ -4693,7 +4779,8 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_castpd_si128(__m128d __a) {
|
|
|
4693
4779
|
/// A 128-bit floating-point vector of [4 x float].
|
|
4694
4780
|
/// \returns A 128-bit floating-point vector of [2 x double] containing the same
|
|
4695
4781
|
/// bitwise pattern as the parameter.
|
|
4696
|
-
static __inline__ __m128d
|
|
4782
|
+
static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
4783
|
+
_mm_castps_pd(__m128 __a) {
|
|
4697
4784
|
return (__m128d)__a;
|
|
4698
4785
|
}
|
|
4699
4786
|
|
|
@@ -4708,7 +4795,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_castps_pd(__m128 __a) {
|
|
|
4708
4795
|
/// A 128-bit floating-point vector of [4 x float].
|
|
4709
4796
|
/// \returns A 128-bit integer vector containing the same bitwise pattern as the
|
|
4710
4797
|
/// parameter.
|
|
4711
|
-
static __inline__ __m128i
|
|
4798
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
4799
|
+
_mm_castps_si128(__m128 __a) {
|
|
4712
4800
|
return (__m128i)__a;
|
|
4713
4801
|
}
|
|
4714
4802
|
|
|
@@ -4723,7 +4811,8 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_castps_si128(__m128 __a) {
|
|
|
4723
4811
|
/// A 128-bit integer vector.
|
|
4724
4812
|
/// \returns A 128-bit floating-point vector of [4 x float] containing the same
|
|
4725
4813
|
/// bitwise pattern as the parameter.
|
|
4726
|
-
static __inline__ __m128
|
|
4814
|
+
static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
4815
|
+
_mm_castsi128_ps(__m128i __a) {
|
|
4727
4816
|
return (__m128)__a;
|
|
4728
4817
|
}
|
|
4729
4818
|
|
|
@@ -4738,10 +4827,83 @@ static __inline__ __m128 __DEFAULT_FN_ATTRS _mm_castsi128_ps(__m128i __a) {
|
|
|
4738
4827
|
/// A 128-bit integer vector.
|
|
4739
4828
|
/// \returns A 128-bit floating-point vector of [2 x double] containing the same
|
|
4740
4829
|
/// bitwise pattern as the parameter.
|
|
4741
|
-
static __inline__ __m128d
|
|
4830
|
+
static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
4831
|
+
_mm_castsi128_pd(__m128i __a) {
|
|
4742
4832
|
return (__m128d)__a;
|
|
4743
4833
|
}
|
|
4744
4834
|
|
|
4835
|
+
/// Compares each of the corresponding double-precision values of two
|
|
4836
|
+
/// 128-bit vectors of [2 x double], using the operation specified by the
|
|
4837
|
+
/// immediate integer operand.
|
|
4838
|
+
///
|
|
4839
|
+
/// Each comparison returns 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
|
|
4840
|
+
/// If either value in a comparison is NaN, comparisons that are ordered
|
|
4841
|
+
/// return false, and comparisons that are unordered return true.
|
|
4842
|
+
///
|
|
4843
|
+
/// \headerfile <x86intrin.h>
|
|
4844
|
+
///
|
|
4845
|
+
/// \code
|
|
4846
|
+
/// __m128d _mm_cmp_pd(__m128d a, __m128d b, const int c);
|
|
4847
|
+
/// \endcode
|
|
4848
|
+
///
|
|
4849
|
+
/// This intrinsic corresponds to the <c> (V)CMPPD </c> instruction.
|
|
4850
|
+
///
|
|
4851
|
+
/// \param a
|
|
4852
|
+
/// A 128-bit vector of [2 x double].
|
|
4853
|
+
/// \param b
|
|
4854
|
+
/// A 128-bit vector of [2 x double].
|
|
4855
|
+
/// \param c
|
|
4856
|
+
/// An immediate integer operand, with bits [4:0] specifying which comparison
|
|
4857
|
+
/// operation to use: \n
|
|
4858
|
+
/// 0x00: Equal (ordered, non-signaling) \n
|
|
4859
|
+
/// 0x01: Less-than (ordered, signaling) \n
|
|
4860
|
+
/// 0x02: Less-than-or-equal (ordered, signaling) \n
|
|
4861
|
+
/// 0x03: Unordered (non-signaling) \n
|
|
4862
|
+
/// 0x04: Not-equal (unordered, non-signaling) \n
|
|
4863
|
+
/// 0x05: Not-less-than (unordered, signaling) \n
|
|
4864
|
+
/// 0x06: Not-less-than-or-equal (unordered, signaling) \n
|
|
4865
|
+
/// 0x07: Ordered (non-signaling) \n
|
|
4866
|
+
/// \returns A 128-bit vector of [2 x double] containing the comparison results.
|
|
4867
|
+
#define _mm_cmp_pd(a, b, c) \
|
|
4868
|
+
((__m128d)__builtin_ia32_cmppd((__v2df)(__m128d)(a), (__v2df)(__m128d)(b), \
|
|
4869
|
+
(c)))
|
|
4870
|
+
|
|
4871
|
+
/// Compares each of the corresponding scalar double-precision values of
|
|
4872
|
+
/// two 128-bit vectors of [2 x double], using the operation specified by the
|
|
4873
|
+
/// immediate integer operand.
|
|
4874
|
+
///
|
|
4875
|
+
/// Each comparison returns 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
|
|
4876
|
+
/// If either value in a comparison is NaN, comparisons that are ordered
|
|
4877
|
+
/// return false, and comparisons that are unordered return true.
|
|
4878
|
+
///
|
|
4879
|
+
/// \headerfile <x86intrin.h>
|
|
4880
|
+
///
|
|
4881
|
+
/// \code
|
|
4882
|
+
/// __m128d _mm_cmp_sd(__m128d a, __m128d b, const int c);
|
|
4883
|
+
/// \endcode
|
|
4884
|
+
///
|
|
4885
|
+
/// This intrinsic corresponds to the <c> (V)CMPSD </c> instruction.
|
|
4886
|
+
///
|
|
4887
|
+
/// \param a
|
|
4888
|
+
/// A 128-bit vector of [2 x double].
|
|
4889
|
+
/// \param b
|
|
4890
|
+
/// A 128-bit vector of [2 x double].
|
|
4891
|
+
/// \param c
|
|
4892
|
+
/// An immediate integer operand, with bits [4:0] specifying which comparison
|
|
4893
|
+
/// operation to use: \n
|
|
4894
|
+
/// 0x00: Equal (ordered, non-signaling) \n
|
|
4895
|
+
/// 0x01: Less-than (ordered, signaling) \n
|
|
4896
|
+
/// 0x02: Less-than-or-equal (ordered, signaling) \n
|
|
4897
|
+
/// 0x03: Unordered (non-signaling) \n
|
|
4898
|
+
/// 0x04: Not-equal (unordered, non-signaling) \n
|
|
4899
|
+
/// 0x05: Not-less-than (unordered, signaling) \n
|
|
4900
|
+
/// 0x06: Not-less-than-or-equal (unordered, signaling) \n
|
|
4901
|
+
/// 0x07: Ordered (non-signaling) \n
|
|
4902
|
+
/// \returns A 128-bit vector of [2 x double] containing the comparison results.
|
|
4903
|
+
#define _mm_cmp_sd(a, b, c) \
|
|
4904
|
+
((__m128d)__builtin_ia32_cmpsd((__v2df)(__m128d)(a), (__v2df)(__m128d)(b), \
|
|
4905
|
+
(c)))
|
|
4906
|
+
|
|
4745
4907
|
#if defined(__cplusplus)
|
|
4746
4908
|
extern "C" {
|
|
4747
4909
|
#endif
|
|
@@ -4758,8 +4920,11 @@ void _mm_pause(void);
|
|
|
4758
4920
|
#if defined(__cplusplus)
|
|
4759
4921
|
} // extern "C"
|
|
4760
4922
|
#endif
|
|
4923
|
+
|
|
4924
|
+
#undef __anyext128
|
|
4925
|
+
#undef __trunc64
|
|
4761
4926
|
#undef __DEFAULT_FN_ATTRS
|
|
4762
|
-
#undef
|
|
4927
|
+
#undef __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
4763
4928
|
|
|
4764
4929
|
#define _MM_SHUFFLE2(x, y) (((x) << 1) | (y))
|
|
4765
4930
|
|