@cpp-linter/clang-tidy-linux-arm64 19.1.0 → 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/{19 → 20}/include/__clang_cuda_device_functions.h +14 -0
- package/lib/clang/{19 → 20}/include/__clang_cuda_math.h +5 -0
- package/lib/clang/{19 → 20}/include/__clang_hip_cmath.h +6 -1
- package/lib/clang/{19 → 20}/include/__clang_hip_math.h +5 -0
- package/lib/clang/{19 → 20}/include/adcintrin.h +5 -0
- package/lib/clang/{19 → 20}/include/adxintrin.h +5 -0
- package/lib/clang/{19 → 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/{19 → 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/{19 → 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/{19 → 20}/include/arm_acle.h +18 -21
- package/lib/clang/{19 → 20}/include/arm_neon.h +3587 -1696
- package/lib/clang/{19 → 20}/include/arm_sme.h +322 -94
- package/lib/clang/{19 → 20}/include/arm_sve.h +1105 -84
- package/lib/clang/{19 → 20}/include/arm_vector_types.h +87 -0
- 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/{19 → 20}/include/avx2intrin.h +9 -0
- package/lib/clang/{19 → 20}/include/avx512bitalgintrin.h +2 -2
- package/lib/clang/{19 → 20}/include/avx512fintrin.h +22 -14
- package/lib/clang/{19 → 20}/include/avx512vlbitalgintrin.h +4 -4
- package/lib/clang/{19 → 20}/include/avx512vpopcntdqintrin.h +12 -4
- package/lib/clang/{19 → 20}/include/avx512vpopcntdqvlintrin.h +16 -8
- package/lib/clang/{19 → 20}/include/avxintrin.h +30 -16
- package/lib/clang/{19 → 20}/include/avxvnniint16intrin.h +36 -77
- package/lib/clang/{19 → 20}/include/avxvnniint8intrin.h +36 -77
- package/lib/clang/{19 → 20}/include/bmi2intrin.h +15 -17
- package/lib/clang/{19 → 20}/include/bmiintrin.h +31 -37
- package/lib/clang/{19 → 20}/include/cmpccxaddintrin.h +1 -1
- package/lib/clang/{19 → 20}/include/cpuid.h +12 -11
- package/lib/clang/{19 → 20}/include/cuda_wrappers/cmath +4 -0
- package/lib/clang/{19 → 20}/include/cuda_wrappers/new +2 -0
- package/lib/clang/{19 → 20}/include/emmintrin.h +141 -107
- package/lib/clang/{19 → 20}/include/gfniintrin.h +32 -10
- package/lib/clang/20/include/gpuintrin.h +224 -0
- package/lib/clang/{19 → 20}/include/hexagon_types.h +8 -4
- package/lib/clang/{19 → 20}/include/hlsl/hlsl_basic_types.h +47 -1
- package/lib/clang/20/include/hlsl/hlsl_detail.h +84 -0
- package/lib/clang/{19 → 20}/include/hlsl/hlsl_intrinsics.h +1199 -82
- package/lib/clang/{19 → 20}/include/hlsl.h +11 -0
- package/lib/clang/{19 → 20}/include/hvx_hexagon_protos.h +427 -0
- package/lib/clang/{19 → 20}/include/immintrin.h +87 -3
- package/lib/clang/{19 → 20}/include/intrin.h +20 -10
- package/lib/clang/{19 → 20}/include/intrin0.h +10 -1
- package/lib/clang/{19 → 20}/include/larchintrin.h +22 -8
- package/lib/clang/{19 → 20}/include/lasxintrin.h +27 -25
- package/lib/clang/{19 → 20}/include/limits.h +7 -4
- package/lib/clang/{19 → 20}/include/llvm_libc_wrappers/ctype.h +38 -0
- package/lib/clang/{19 → 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/{19 → 20}/include/lsxintrin.h +27 -25
- package/lib/clang/{19 → 20}/include/lzcntintrin.h +10 -7
- package/lib/clang/{19 → 20}/include/mmintrin.h +209 -155
- package/lib/clang/{19 → 20}/include/module.modulemap +2 -4
- 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/{19 → 20}/include/opencl-c-base.h +4 -0
- package/lib/clang/{19 → 20}/include/openmp_wrappers/__clang_openmp_device_functions.h +4 -5
- package/lib/clang/{19 → 20}/include/openmp_wrappers/complex_cmath.h +7 -2
- package/lib/clang/{19 → 20}/include/pmmintrin.h +16 -3
- package/lib/clang/{19 → 20}/include/popcntintrin.h +7 -7
- package/lib/clang/{19 → 20}/include/ptrauth.h +6 -0
- package/lib/clang/20/include/riscv_corev_alu.h +128 -0
- package/lib/clang/{19 → 20}/include/riscv_vector.h +0 -1
- package/lib/clang/20/include/sm4evexintrin.h +32 -0
- package/lib/clang/{19 → 20}/include/smmintrin.h +6 -0
- package/lib/clang/{19 → 20}/include/stdalign.h +0 -5
- package/lib/clang/{19 → 20}/include/tbmintrin.h +25 -37
- package/lib/clang/{19 → 20}/include/tmmintrin.h +64 -38
- package/lib/clang/{19 → 20}/include/vecintrin.h +1778 -60
- package/lib/clang/{19 → 20}/include/wasm_simd128.h +167 -21
- package/lib/clang/{19 → 20}/include/xmmintrin.h +170 -177
- package/package.json +6 -6
- /package/lib/clang/{19 → 20}/include/__clang_cuda_builtin_vars.h +0 -0
- /package/lib/clang/{19 → 20}/include/__clang_cuda_cmath.h +0 -0
- /package/lib/clang/{19 → 20}/include/__clang_cuda_complex_builtins.h +0 -0
- /package/lib/clang/{19 → 20}/include/__clang_cuda_intrinsics.h +0 -0
- /package/lib/clang/{19 → 20}/include/__clang_cuda_libdevice_declares.h +0 -0
- /package/lib/clang/{19 → 20}/include/__clang_cuda_math_forward_declares.h +0 -0
- /package/lib/clang/{19 → 20}/include/__clang_cuda_runtime_wrapper.h +0 -0
- /package/lib/clang/{19 → 20}/include/__clang_cuda_texture_intrinsics.h +0 -0
- /package/lib/clang/{19 → 20}/include/__clang_hip_libdevice_declares.h +0 -0
- /package/lib/clang/{19 → 20}/include/__clang_hip_runtime_wrapper.h +0 -0
- /package/lib/clang/{19 → 20}/include/__clang_hip_stdlib.h +0 -0
- /package/lib/clang/{19 → 20}/include/__stdarg___gnuc_va_list.h +0 -0
- /package/lib/clang/{19 → 20}/include/__stdarg___va_copy.h +0 -0
- /package/lib/clang/{19 → 20}/include/__stdarg_header_macro.h +0 -0
- /package/lib/clang/{19 → 20}/include/__stdarg_va_arg.h +0 -0
- /package/lib/clang/{19 → 20}/include/__stdarg_va_copy.h +0 -0
- /package/lib/clang/{19 → 20}/include/__stdarg_va_list.h +0 -0
- /package/lib/clang/{19 → 20}/include/__stddef_header_macro.h +0 -0
- /package/lib/clang/{19 → 20}/include/__stddef_max_align_t.h +0 -0
- /package/lib/clang/{19 → 20}/include/__stddef_null.h +0 -0
- /package/lib/clang/{19 → 20}/include/__stddef_nullptr_t.h +0 -0
- /package/lib/clang/{19 → 20}/include/__stddef_offsetof.h +0 -0
- /package/lib/clang/{19 → 20}/include/__stddef_ptrdiff_t.h +0 -0
- /package/lib/clang/{19 → 20}/include/__stddef_rsize_t.h +0 -0
- /package/lib/clang/{19 → 20}/include/__stddef_size_t.h +0 -0
- /package/lib/clang/{19 → 20}/include/__stddef_unreachable.h +0 -0
- /package/lib/clang/{19 → 20}/include/__stddef_wchar_t.h +0 -0
- /package/lib/clang/{19 → 20}/include/__stddef_wint_t.h +0 -0
- /package/lib/clang/{19 → 20}/include/__wmmintrin_aes.h +0 -0
- /package/lib/clang/{19 → 20}/include/__wmmintrin_pclmul.h +0 -0
- /package/lib/clang/{19 → 20}/include/ammintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/amxcomplexintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/arm64intr.h +0 -0
- /package/lib/clang/{19 → 20}/include/arm_bf16.h +0 -0
- /package/lib/clang/{19 → 20}/include/arm_cde.h +0 -0
- /package/lib/clang/{19 → 20}/include/arm_cmse.h +0 -0
- /package/lib/clang/{19 → 20}/include/arm_fp16.h +0 -0
- /package/lib/clang/{19 → 20}/include/arm_mve.h +0 -0
- /package/lib/clang/{19 → 20}/include/arm_neon_sve_bridge.h +0 -0
- /package/lib/clang/{19 → 20}/include/armintr.h +0 -0
- /package/lib/clang/{19 → 20}/include/avx512bf16intrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/avx512bwintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/avx512cdintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/avx512dqintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/avx512fp16intrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/avx512ifmaintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/avx512ifmavlintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/avx512vbmi2intrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/avx512vbmiintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/avx512vbmivlintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/avx512vlbf16intrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/avx512vlbwintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/avx512vlcdintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/avx512vldqintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/avx512vlfp16intrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/avx512vlintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/avx512vlvbmi2intrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/avx512vlvnniintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/avx512vlvp2intersectintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/avx512vnniintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/avx512vp2intersectintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/avxifmaintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/avxneconvertintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/avxvnniintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/builtins.h +0 -0
- /package/lib/clang/{19 → 20}/include/cet.h +0 -0
- /package/lib/clang/{19 → 20}/include/cetintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/cldemoteintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/clflushoptintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/clwbintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/clzerointrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/crc32intrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/cuda_wrappers/algorithm +0 -0
- /package/lib/clang/{19 → 20}/include/cuda_wrappers/bits/basic_string.h +0 -0
- /package/lib/clang/{19 → 20}/include/cuda_wrappers/bits/basic_string.tcc +0 -0
- /package/lib/clang/{19 → 20}/include/cuda_wrappers/bits/shared_ptr_base.h +0 -0
- /package/lib/clang/{19 → 20}/include/cuda_wrappers/complex +0 -0
- /package/lib/clang/{19 → 20}/include/enqcmdintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/f16cintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/float.h +0 -0
- /package/lib/clang/{19 → 20}/include/fma4intrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/fmaintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/fxsrintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/hexagon_circ_brev_intrinsics.h +0 -0
- /package/lib/clang/{19 → 20}/include/hexagon_protos.h +0 -0
- /package/lib/clang/{19 → 20}/include/hresetintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/htmintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/htmxlintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/ia32intrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/inttypes.h +0 -0
- /package/lib/clang/{19 → 20}/include/invpcidintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/iso646.h +0 -0
- /package/lib/clang/{19 → 20}/include/keylockerintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/llvm_libc_wrappers/assert.h +0 -0
- /package/lib/clang/{19 → 20}/include/llvm_libc_wrappers/inttypes.h +0 -0
- /package/lib/clang/{19 → 20}/include/llvm_libc_wrappers/stdio.h +0 -0
- /package/lib/clang/{19 → 20}/include/llvm_libc_wrappers/string.h +0 -0
- /package/lib/clang/{19 → 20}/include/llvm_libc_wrappers/time.h +0 -0
- /package/lib/clang/{19 → 20}/include/lwpintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/mm3dnow.h +0 -0
- /package/lib/clang/{19 → 20}/include/mm_malloc.h +0 -0
- /package/lib/clang/{19 → 20}/include/movdirintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/msa.h +0 -0
- /package/lib/clang/{19 → 20}/include/mwaitxintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/nmmintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/opencl-c.h +0 -0
- /package/lib/clang/{19 → 20}/include/openmp_wrappers/cmath +0 -0
- /package/lib/clang/{19 → 20}/include/openmp_wrappers/complex +0 -0
- /package/lib/clang/{19 → 20}/include/openmp_wrappers/complex.h +0 -0
- /package/lib/clang/{19 → 20}/include/openmp_wrappers/math.h +0 -0
- /package/lib/clang/{19 → 20}/include/openmp_wrappers/new +0 -0
- /package/lib/clang/{19 → 20}/include/pconfigintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/pkuintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/ppc_wrappers/bmi2intrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/ppc_wrappers/bmiintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/ppc_wrappers/emmintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/ppc_wrappers/immintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/ppc_wrappers/mm_malloc.h +0 -0
- /package/lib/clang/{19 → 20}/include/ppc_wrappers/mmintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/ppc_wrappers/nmmintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/ppc_wrappers/pmmintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/ppc_wrappers/smmintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/ppc_wrappers/tmmintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/ppc_wrappers/x86gprintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/ppc_wrappers/x86intrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/ppc_wrappers/xmmintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/prfchiintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/prfchwintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/ptwriteintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/raointintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/rdpruintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/rdseedintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/riscv_bitmanip.h +0 -0
- /package/lib/clang/{19 → 20}/include/riscv_crypto.h +0 -0
- /package/lib/clang/{19 → 20}/include/riscv_ntlh.h +0 -0
- /package/lib/clang/{19 → 20}/include/rtmintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/s390intrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/serializeintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/sgxintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/sha512intrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/shaintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/sifive_vector.h +0 -0
- /package/lib/clang/{19 → 20}/include/sm3intrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/sm4intrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/stdarg.h +0 -0
- /package/lib/clang/{19 → 20}/include/stdatomic.h +0 -0
- /package/lib/clang/{19 → 20}/include/stdbool.h +0 -0
- /package/lib/clang/{19 → 20}/include/stdckdint.h +0 -0
- /package/lib/clang/{19 → 20}/include/stddef.h +0 -0
- /package/lib/clang/{19 → 20}/include/stdint.h +0 -0
- /package/lib/clang/{19 → 20}/include/stdnoreturn.h +0 -0
- /package/lib/clang/{19 → 20}/include/tgmath.h +0 -0
- /package/lib/clang/{19 → 20}/include/tsxldtrkintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/uintrintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/unwind.h +0 -0
- /package/lib/clang/{19 → 20}/include/usermsrintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/vadefs.h +0 -0
- /package/lib/clang/{19 → 20}/include/vaesintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/varargs.h +0 -0
- /package/lib/clang/{19 → 20}/include/velintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/velintrin_approx.h +0 -0
- /package/lib/clang/{19 → 20}/include/velintrin_gen.h +0 -0
- /package/lib/clang/{19 → 20}/include/vpclmulqdqintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/waitpkgintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/wbnoinvdintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/wmmintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/x86gprintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/x86intrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/xopintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/xsavecintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/xsaveintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/xsaveoptintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/xsavesintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/xtestintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/yvals_core.h +0 -0
- /package/lib/clang/{19 → 20}/include/zos_wrappers/builtins.h +0 -0
|
@@ -32,12 +32,41 @@ typedef unsigned int __v4su __attribute__((__vector_size__(16)));
|
|
|
32
32
|
#endif
|
|
33
33
|
|
|
34
34
|
/* Define the default attributes for the functions in this file. */
|
|
35
|
+
#if defined(__EVEX512__) && !defined(__AVX10_1_512__)
|
|
35
36
|
#define __DEFAULT_FN_ATTRS \
|
|
36
37
|
__attribute__((__always_inline__, __nodebug__, __target__("sse,no-evex512"), \
|
|
37
38
|
__min_vector_width__(128)))
|
|
38
|
-
#define
|
|
39
|
+
#define __DEFAULT_FN_ATTRS_SSE2 \
|
|
39
40
|
__attribute__((__always_inline__, __nodebug__, \
|
|
40
|
-
__target__("
|
|
41
|
+
__target__("sse2,no-evex512"), __min_vector_width__(128)))
|
|
42
|
+
#else
|
|
43
|
+
#define __DEFAULT_FN_ATTRS \
|
|
44
|
+
__attribute__((__always_inline__, __nodebug__, __target__("sse"), \
|
|
45
|
+
__min_vector_width__(128)))
|
|
46
|
+
#define __DEFAULT_FN_ATTRS_SSE2 \
|
|
47
|
+
__attribute__((__always_inline__, __nodebug__, __target__("sse2"), \
|
|
48
|
+
__min_vector_width__(128)))
|
|
49
|
+
#endif
|
|
50
|
+
|
|
51
|
+
#if defined(__cplusplus) && (__cplusplus >= 201103L)
|
|
52
|
+
#define __DEFAULT_FN_ATTRS_CONSTEXPR __DEFAULT_FN_ATTRS constexpr
|
|
53
|
+
#define __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR __DEFAULT_FN_ATTRS_SSE2 constexpr
|
|
54
|
+
#else
|
|
55
|
+
#define __DEFAULT_FN_ATTRS_CONSTEXPR __DEFAULT_FN_ATTRS
|
|
56
|
+
#define __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR __DEFAULT_FN_ATTRS_SSE2
|
|
57
|
+
#endif
|
|
58
|
+
|
|
59
|
+
#define __trunc64(x) \
|
|
60
|
+
(__m64) __builtin_shufflevector((__v2di)(x), __extension__(__v2di){}, 0)
|
|
61
|
+
#define __zext128(x) \
|
|
62
|
+
(__m128i) __builtin_shufflevector((__v2si)(x), __extension__(__v2si){}, 0, \
|
|
63
|
+
1, 2, 3)
|
|
64
|
+
#define __anyext128(x) \
|
|
65
|
+
(__m128i) __builtin_shufflevector((__v2si)(x), __extension__(__v2si){}, 0, \
|
|
66
|
+
1, -1, -1)
|
|
67
|
+
#define __zeroupper64(x) \
|
|
68
|
+
(__m128i) __builtin_shufflevector((__v4si)(x), __extension__(__v4si){}, 0, \
|
|
69
|
+
1, 4, 5)
|
|
41
70
|
|
|
42
71
|
/// Adds the 32-bit float values in the low-order bits of the operands.
|
|
43
72
|
///
|
|
@@ -54,9 +83,8 @@ typedef unsigned int __v4su __attribute__((__vector_size__(16)));
|
|
|
54
83
|
/// \returns A 128-bit vector of [4 x float] whose lower 32 bits contain the sum
|
|
55
84
|
/// of the lower 32 bits of both operands. The upper 96 bits are copied from
|
|
56
85
|
/// the upper 96 bits of the first source operand.
|
|
57
|
-
static __inline__ __m128
|
|
58
|
-
_mm_add_ss(__m128 __a, __m128 __b)
|
|
59
|
-
{
|
|
86
|
+
static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
87
|
+
_mm_add_ss(__m128 __a, __m128 __b) {
|
|
60
88
|
__a[0] += __b[0];
|
|
61
89
|
return __a;
|
|
62
90
|
}
|
|
@@ -74,9 +102,8 @@ _mm_add_ss(__m128 __a, __m128 __b)
|
|
|
74
102
|
/// A 128-bit vector of [4 x float] containing one of the source operands.
|
|
75
103
|
/// \returns A 128-bit vector of [4 x float] containing the sums of both
|
|
76
104
|
/// operands.
|
|
77
|
-
static __inline__ __m128
|
|
78
|
-
_mm_add_ps(__m128 __a, __m128 __b)
|
|
79
|
-
{
|
|
105
|
+
static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
106
|
+
_mm_add_ps(__m128 __a, __m128 __b) {
|
|
80
107
|
return (__m128)((__v4sf)__a + (__v4sf)__b);
|
|
81
108
|
}
|
|
82
109
|
|
|
@@ -96,9 +123,8 @@ _mm_add_ps(__m128 __a, __m128 __b)
|
|
|
96
123
|
/// \returns A 128-bit vector of [4 x float] whose lower 32 bits contain the
|
|
97
124
|
/// difference of the lower 32 bits of both operands. The upper 96 bits are
|
|
98
125
|
/// copied from the upper 96 bits of the first source operand.
|
|
99
|
-
static __inline__ __m128
|
|
100
|
-
_mm_sub_ss(__m128 __a, __m128 __b)
|
|
101
|
-
{
|
|
126
|
+
static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
127
|
+
_mm_sub_ss(__m128 __a, __m128 __b) {
|
|
102
128
|
__a[0] -= __b[0];
|
|
103
129
|
return __a;
|
|
104
130
|
}
|
|
@@ -117,9 +143,8 @@ _mm_sub_ss(__m128 __a, __m128 __b)
|
|
|
117
143
|
/// A 128-bit vector of [4 x float] containing the subtrahend.
|
|
118
144
|
/// \returns A 128-bit vector of [4 x float] containing the differences between
|
|
119
145
|
/// both operands.
|
|
120
|
-
static __inline__ __m128
|
|
121
|
-
_mm_sub_ps(__m128 __a, __m128 __b)
|
|
122
|
-
{
|
|
146
|
+
static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
147
|
+
_mm_sub_ps(__m128 __a, __m128 __b) {
|
|
123
148
|
return (__m128)((__v4sf)__a - (__v4sf)__b);
|
|
124
149
|
}
|
|
125
150
|
|
|
@@ -139,9 +164,8 @@ _mm_sub_ps(__m128 __a, __m128 __b)
|
|
|
139
164
|
/// \returns A 128-bit vector of [4 x float] containing the product of the lower
|
|
140
165
|
/// 32 bits of both operands. The upper 96 bits are copied from the upper 96
|
|
141
166
|
/// bits of the first source operand.
|
|
142
|
-
static __inline__ __m128
|
|
143
|
-
_mm_mul_ss(__m128 __a, __m128 __b)
|
|
144
|
-
{
|
|
167
|
+
static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
168
|
+
_mm_mul_ss(__m128 __a, __m128 __b) {
|
|
145
169
|
__a[0] *= __b[0];
|
|
146
170
|
return __a;
|
|
147
171
|
}
|
|
@@ -159,9 +183,8 @@ _mm_mul_ss(__m128 __a, __m128 __b)
|
|
|
159
183
|
/// A 128-bit vector of [4 x float] containing one of the source operands.
|
|
160
184
|
/// \returns A 128-bit vector of [4 x float] containing the products of both
|
|
161
185
|
/// operands.
|
|
162
|
-
static __inline__ __m128
|
|
163
|
-
_mm_mul_ps(__m128 __a, __m128 __b)
|
|
164
|
-
{
|
|
186
|
+
static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
187
|
+
_mm_mul_ps(__m128 __a, __m128 __b) {
|
|
165
188
|
return (__m128)((__v4sf)__a * (__v4sf)__b);
|
|
166
189
|
}
|
|
167
190
|
|
|
@@ -181,9 +204,8 @@ _mm_mul_ps(__m128 __a, __m128 __b)
|
|
|
181
204
|
/// \returns A 128-bit vector of [4 x float] containing the quotients of the
|
|
182
205
|
/// lower 32 bits of both operands. The upper 96 bits are copied from the
|
|
183
206
|
/// upper 96 bits of the first source operand.
|
|
184
|
-
static __inline__ __m128
|
|
185
|
-
_mm_div_ss(__m128 __a, __m128 __b)
|
|
186
|
-
{
|
|
207
|
+
static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
208
|
+
_mm_div_ss(__m128 __a, __m128 __b) {
|
|
187
209
|
__a[0] /= __b[0];
|
|
188
210
|
return __a;
|
|
189
211
|
}
|
|
@@ -200,9 +222,8 @@ _mm_div_ss(__m128 __a, __m128 __b)
|
|
|
200
222
|
/// A 128-bit vector of [4 x float] containing the divisor.
|
|
201
223
|
/// \returns A 128-bit vector of [4 x float] containing the quotients of both
|
|
202
224
|
/// operands.
|
|
203
|
-
static __inline__ __m128
|
|
204
|
-
_mm_div_ps(__m128 __a, __m128 __b)
|
|
205
|
-
{
|
|
225
|
+
static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
226
|
+
_mm_div_ps(__m128 __a, __m128 __b) {
|
|
206
227
|
return (__m128)((__v4sf)__a / (__v4sf)__b);
|
|
207
228
|
}
|
|
208
229
|
|
|
@@ -416,9 +437,8 @@ _mm_max_ps(__m128 __a, __m128 __b)
|
|
|
416
437
|
/// A 128-bit vector containing one of the source operands.
|
|
417
438
|
/// \returns A 128-bit vector of [4 x float] containing the bitwise AND of the
|
|
418
439
|
/// values between both operands.
|
|
419
|
-
static __inline__ __m128
|
|
420
|
-
_mm_and_ps(__m128 __a, __m128 __b)
|
|
421
|
-
{
|
|
440
|
+
static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
441
|
+
_mm_and_ps(__m128 __a, __m128 __b) {
|
|
422
442
|
return (__m128)((__v4su)__a & (__v4su)__b);
|
|
423
443
|
}
|
|
424
444
|
|
|
@@ -438,9 +458,8 @@ _mm_and_ps(__m128 __a, __m128 __b)
|
|
|
438
458
|
/// \returns A 128-bit vector of [4 x float] containing the bitwise AND of the
|
|
439
459
|
/// one's complement of the first operand and the values in the second
|
|
440
460
|
/// operand.
|
|
441
|
-
static __inline__ __m128
|
|
442
|
-
_mm_andnot_ps(__m128 __a, __m128 __b)
|
|
443
|
-
{
|
|
461
|
+
static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
462
|
+
_mm_andnot_ps(__m128 __a, __m128 __b) {
|
|
444
463
|
return (__m128)(~(__v4su)__a & (__v4su)__b);
|
|
445
464
|
}
|
|
446
465
|
|
|
@@ -456,9 +475,8 @@ _mm_andnot_ps(__m128 __a, __m128 __b)
|
|
|
456
475
|
/// A 128-bit vector of [4 x float] containing one of the source operands.
|
|
457
476
|
/// \returns A 128-bit vector of [4 x float] containing the bitwise OR of the
|
|
458
477
|
/// values between both operands.
|
|
459
|
-
static __inline__ __m128
|
|
460
|
-
_mm_or_ps(__m128 __a, __m128 __b)
|
|
461
|
-
{
|
|
478
|
+
static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
479
|
+
_mm_or_ps(__m128 __a, __m128 __b) {
|
|
462
480
|
return (__m128)((__v4su)__a | (__v4su)__b);
|
|
463
481
|
}
|
|
464
482
|
|
|
@@ -475,9 +493,8 @@ _mm_or_ps(__m128 __a, __m128 __b)
|
|
|
475
493
|
/// A 128-bit vector of [4 x float] containing one of the source operands.
|
|
476
494
|
/// \returns A 128-bit vector of [4 x float] containing the bitwise exclusive OR
|
|
477
495
|
/// of the values between both operands.
|
|
478
|
-
static __inline__ __m128
|
|
479
|
-
_mm_xor_ps(__m128 __a, __m128 __b)
|
|
480
|
-
{
|
|
496
|
+
static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
497
|
+
_mm_xor_ps(__m128 __a, __m128 __b) {
|
|
481
498
|
return (__m128)((__v4su)__a ^ (__v4su)__b);
|
|
482
499
|
}
|
|
483
500
|
|
|
@@ -1448,10 +1465,10 @@ _mm_cvtss_si64(__m128 __a)
|
|
|
1448
1465
|
/// \param __a
|
|
1449
1466
|
/// A 128-bit vector of [4 x float].
|
|
1450
1467
|
/// \returns A 64-bit integer vector containing the converted values.
|
|
1451
|
-
static __inline__ __m64
|
|
1468
|
+
static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2
|
|
1452
1469
|
_mm_cvtps_pi32(__m128 __a)
|
|
1453
1470
|
{
|
|
1454
|
-
return (
|
|
1471
|
+
return __trunc64(__builtin_ia32_cvtps2dq((__v4sf)__zeroupper64(__a)));
|
|
1455
1472
|
}
|
|
1456
1473
|
|
|
1457
1474
|
/// Converts two low-order float values in a 128-bit vector of
|
|
@@ -1468,7 +1485,7 @@ _mm_cvtps_pi32(__m128 __a)
|
|
|
1468
1485
|
/// \param __a
|
|
1469
1486
|
/// A 128-bit vector of [4 x float].
|
|
1470
1487
|
/// \returns A 64-bit integer vector containing the converted values.
|
|
1471
|
-
static __inline__ __m64
|
|
1488
|
+
static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2
|
|
1472
1489
|
_mm_cvt_ps2pi(__m128 __a)
|
|
1473
1490
|
{
|
|
1474
1491
|
return _mm_cvtps_pi32(__a);
|
|
@@ -1558,10 +1575,10 @@ _mm_cvttss_si64(__m128 __a)
|
|
|
1558
1575
|
/// \param __a
|
|
1559
1576
|
/// A 128-bit vector of [4 x float].
|
|
1560
1577
|
/// \returns A 64-bit integer vector containing the converted values.
|
|
1561
|
-
static __inline__ __m64
|
|
1578
|
+
static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2
|
|
1562
1579
|
_mm_cvttps_pi32(__m128 __a)
|
|
1563
1580
|
{
|
|
1564
|
-
return (
|
|
1581
|
+
return __trunc64(__builtin_ia32_cvttps2dq((__v4sf)__zeroupper64(__a)));
|
|
1565
1582
|
}
|
|
1566
1583
|
|
|
1567
1584
|
/// Converts the lower (first) two elements of a 128-bit vector of [4 x float]
|
|
@@ -1579,7 +1596,7 @@ _mm_cvttps_pi32(__m128 __a)
|
|
|
1579
1596
|
/// \param __a
|
|
1580
1597
|
/// A 128-bit vector of [4 x float].
|
|
1581
1598
|
/// \returns A 64-bit integer vector containing the converted values.
|
|
1582
|
-
static __inline__ __m64
|
|
1599
|
+
static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2
|
|
1583
1600
|
_mm_cvtt_ps2pi(__m128 __a)
|
|
1584
1601
|
{
|
|
1585
1602
|
return _mm_cvttps_pi32(__a);
|
|
@@ -1601,9 +1618,8 @@ _mm_cvtt_ps2pi(__m128 __a)
|
|
|
1601
1618
|
/// \returns A 128-bit vector of [4 x float] whose lower 32 bits contain the
|
|
1602
1619
|
/// converted value of the second operand. The upper 96 bits are copied from
|
|
1603
1620
|
/// the upper 96 bits of the first operand.
|
|
1604
|
-
static __inline__ __m128
|
|
1605
|
-
|
|
1606
|
-
{
|
|
1621
|
+
static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR _mm_cvtsi32_ss(__m128 __a,
|
|
1622
|
+
int __b) {
|
|
1607
1623
|
__a[0] = __b;
|
|
1608
1624
|
return __a;
|
|
1609
1625
|
}
|
|
@@ -1624,9 +1640,8 @@ _mm_cvtsi32_ss(__m128 __a, int __b)
|
|
|
1624
1640
|
/// \returns A 128-bit vector of [4 x float] whose lower 32 bits contain the
|
|
1625
1641
|
/// converted value of the second operand. The upper 96 bits are copied from
|
|
1626
1642
|
/// the upper 96 bits of the first operand.
|
|
1627
|
-
static __inline__ __m128
|
|
1628
|
-
|
|
1629
|
-
{
|
|
1643
|
+
static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR _mm_cvt_si2ss(__m128 __a,
|
|
1644
|
+
int __b) {
|
|
1630
1645
|
return _mm_cvtsi32_ss(__a, __b);
|
|
1631
1646
|
}
|
|
1632
1647
|
|
|
@@ -1648,9 +1663,8 @@ _mm_cvt_si2ss(__m128 __a, int __b)
|
|
|
1648
1663
|
/// \returns A 128-bit vector of [4 x float] whose lower 32 bits contain the
|
|
1649
1664
|
/// converted value of the second operand. The upper 96 bits are copied from
|
|
1650
1665
|
/// the upper 96 bits of the first operand.
|
|
1651
|
-
static __inline__ __m128
|
|
1652
|
-
_mm_cvtsi64_ss(__m128 __a, long long __b)
|
|
1653
|
-
{
|
|
1666
|
+
static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
1667
|
+
_mm_cvtsi64_ss(__m128 __a, long long __b) {
|
|
1654
1668
|
__a[0] = __b;
|
|
1655
1669
|
return __a;
|
|
1656
1670
|
}
|
|
@@ -1674,10 +1688,13 @@ _mm_cvtsi64_ss(__m128 __a, long long __b)
|
|
|
1674
1688
|
/// \returns A 128-bit vector of [4 x float] whose lower 64 bits contain the
|
|
1675
1689
|
/// converted value of the second operand. The upper 64 bits are copied from
|
|
1676
1690
|
/// the upper 64 bits of the first operand.
|
|
1677
|
-
static __inline__ __m128
|
|
1691
|
+
static __inline__ __m128 __DEFAULT_FN_ATTRS_SSE2
|
|
1678
1692
|
_mm_cvtpi32_ps(__m128 __a, __m64 __b)
|
|
1679
1693
|
{
|
|
1680
|
-
return
|
|
1694
|
+
return (__m128)__builtin_shufflevector(
|
|
1695
|
+
(__v4sf)__a,
|
|
1696
|
+
__builtin_convertvector((__v4si)__zext128(__b), __v4sf),
|
|
1697
|
+
4, 5, 2, 3);
|
|
1681
1698
|
}
|
|
1682
1699
|
|
|
1683
1700
|
/// Converts two elements of a 64-bit vector of [2 x i32] into two
|
|
@@ -1697,7 +1714,7 @@ _mm_cvtpi32_ps(__m128 __a, __m64 __b)
|
|
|
1697
1714
|
/// \returns A 128-bit vector of [4 x float] whose lower 64 bits contain the
|
|
1698
1715
|
/// converted value from the second operand. The upper 64 bits are copied
|
|
1699
1716
|
/// from the upper 64 bits of the first operand.
|
|
1700
|
-
static __inline__ __m128
|
|
1717
|
+
static __inline__ __m128 __DEFAULT_FN_ATTRS_SSE2
|
|
1701
1718
|
_mm_cvt_pi2ps(__m128 __a, __m64 __b)
|
|
1702
1719
|
{
|
|
1703
1720
|
return _mm_cvtpi32_ps(__a, __b);
|
|
@@ -1714,9 +1731,8 @@ _mm_cvt_pi2ps(__m128 __a, __m64 __b)
|
|
|
1714
1731
|
/// A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
|
|
1715
1732
|
/// used in the extraction.
|
|
1716
1733
|
/// \returns A 32-bit float containing the extracted value.
|
|
1717
|
-
static __inline__ float
|
|
1718
|
-
_mm_cvtss_f32(__m128 __a)
|
|
1719
|
-
{
|
|
1734
|
+
static __inline__ float __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
1735
|
+
_mm_cvtss_f32(__m128 __a) {
|
|
1720
1736
|
return __a[0];
|
|
1721
1737
|
}
|
|
1722
1738
|
|
|
@@ -1907,9 +1923,8 @@ _mm_undefined_ps(void)
|
|
|
1907
1923
|
/// \returns An initialized 128-bit floating-point vector of [4 x float]. The
|
|
1908
1924
|
/// lower 32 bits contain the value provided in the source operand. The
|
|
1909
1925
|
/// upper 96 bits are set to zero.
|
|
1910
|
-
static __inline__ __m128
|
|
1911
|
-
_mm_set_ss(float __w)
|
|
1912
|
-
{
|
|
1926
|
+
static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
1927
|
+
_mm_set_ss(float __w) {
|
|
1913
1928
|
return __extension__ (__m128){ __w, 0.0f, 0.0f, 0.0f };
|
|
1914
1929
|
}
|
|
1915
1930
|
|
|
@@ -1925,9 +1940,8 @@ _mm_set_ss(float __w)
|
|
|
1925
1940
|
/// A single-precision floating-point value used to initialize each vector
|
|
1926
1941
|
/// element of the result.
|
|
1927
1942
|
/// \returns An initialized 128-bit floating-point vector of [4 x float].
|
|
1928
|
-
static __inline__ __m128
|
|
1929
|
-
_mm_set1_ps(float __w)
|
|
1930
|
-
{
|
|
1943
|
+
static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
1944
|
+
_mm_set1_ps(float __w) {
|
|
1931
1945
|
return __extension__ (__m128){ __w, __w, __w, __w };
|
|
1932
1946
|
}
|
|
1933
1947
|
|
|
@@ -1944,9 +1958,8 @@ _mm_set1_ps(float __w)
|
|
|
1944
1958
|
/// A single-precision floating-point value used to initialize each vector
|
|
1945
1959
|
/// element of the result.
|
|
1946
1960
|
/// \returns An initialized 128-bit floating-point vector of [4 x float].
|
|
1947
|
-
static __inline__ __m128
|
|
1948
|
-
_mm_set_ps1(float __w)
|
|
1949
|
-
{
|
|
1961
|
+
static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
1962
|
+
_mm_set_ps1(float __w) {
|
|
1950
1963
|
return _mm_set1_ps(__w);
|
|
1951
1964
|
}
|
|
1952
1965
|
|
|
@@ -1971,9 +1984,8 @@ _mm_set_ps1(float __w)
|
|
|
1971
1984
|
/// A single-precision floating-point value used to initialize bits [31:0]
|
|
1972
1985
|
/// of the result.
|
|
1973
1986
|
/// \returns An initialized 128-bit floating-point vector of [4 x float].
|
|
1974
|
-
static __inline__ __m128
|
|
1975
|
-
_mm_set_ps(float __z, float __y, float __x, float __w)
|
|
1976
|
-
{
|
|
1987
|
+
static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
1988
|
+
_mm_set_ps(float __z, float __y, float __x, float __w) {
|
|
1977
1989
|
return __extension__ (__m128){ __w, __x, __y, __z };
|
|
1978
1990
|
}
|
|
1979
1991
|
|
|
@@ -1999,9 +2011,8 @@ _mm_set_ps(float __z, float __y, float __x, float __w)
|
|
|
1999
2011
|
/// A single-precision floating-point value used to initialize bits [127:96]
|
|
2000
2012
|
/// of the result.
|
|
2001
2013
|
/// \returns An initialized 128-bit floating-point vector of [4 x float].
|
|
2002
|
-
static __inline__ __m128
|
|
2003
|
-
_mm_setr_ps(float __z, float __y, float __x, float __w)
|
|
2004
|
-
{
|
|
2014
|
+
static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
2015
|
+
_mm_setr_ps(float __z, float __y, float __x, float __w) {
|
|
2005
2016
|
return __extension__ (__m128){ __z, __y, __x, __w };
|
|
2006
2017
|
}
|
|
2007
2018
|
|
|
@@ -2014,9 +2025,8 @@ _mm_setr_ps(float __z, float __y, float __x, float __w)
|
|
|
2014
2025
|
///
|
|
2015
2026
|
/// \returns An initialized 128-bit floating-point vector of [4 x float] with
|
|
2016
2027
|
/// all elements set to zero.
|
|
2017
|
-
static __inline__ __m128
|
|
2018
|
-
_mm_setzero_ps(void)
|
|
2019
|
-
{
|
|
2028
|
+
static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
2029
|
+
_mm_setzero_ps(void) {
|
|
2020
2030
|
return __extension__ (__m128){ 0.0f, 0.0f, 0.0f, 0.0f };
|
|
2021
2031
|
}
|
|
2022
2032
|
|
|
@@ -2231,10 +2241,10 @@ _mm_storer_ps(float *__p, __m128 __a)
|
|
|
2231
2241
|
/// A pointer to an aligned memory location used to store the register value.
|
|
2232
2242
|
/// \param __a
|
|
2233
2243
|
/// A 64-bit integer containing the value to be stored.
|
|
2234
|
-
static __inline__ void
|
|
2244
|
+
static __inline__ void __DEFAULT_FN_ATTRS
|
|
2235
2245
|
_mm_stream_pi(void *__p, __m64 __a)
|
|
2236
2246
|
{
|
|
2237
|
-
|
|
2247
|
+
__builtin_nontemporal_store(__a, (__m64 *)__p);
|
|
2238
2248
|
}
|
|
2239
2249
|
|
|
2240
2250
|
/// Moves packed float values from a 128-bit vector of [4 x float] to a
|
|
@@ -2296,7 +2306,7 @@ void _mm_sfence(void);
|
|
|
2296
2306
|
/// 3: Bits [63:48] are copied to the destination.
|
|
2297
2307
|
/// \returns A 16-bit integer containing the extracted 16 bits of packed data.
|
|
2298
2308
|
#define _mm_extract_pi16(a, n) \
|
|
2299
|
-
((int)__builtin_ia32_vec_ext_v4hi((__v4hi)a, (int)n))
|
|
2309
|
+
((int)(unsigned short)__builtin_ia32_vec_ext_v4hi((__v4hi)a, (int)n))
|
|
2300
2310
|
|
|
2301
2311
|
/// Copies data from the 64-bit vector of [4 x i16] to the destination,
|
|
2302
2312
|
/// and inserts the lower 16-bits of an integer operand at the 16-bit offset
|
|
@@ -2342,10 +2352,10 @@ void _mm_sfence(void);
|
|
|
2342
2352
|
/// \param __b
|
|
2343
2353
|
/// A 64-bit integer vector containing one of the source operands.
|
|
2344
2354
|
/// \returns A 64-bit integer vector containing the comparison results.
|
|
2345
|
-
static __inline__ __m64
|
|
2355
|
+
static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2
|
|
2346
2356
|
_mm_max_pi16(__m64 __a, __m64 __b)
|
|
2347
2357
|
{
|
|
2348
|
-
return (__m64)
|
|
2358
|
+
return (__m64)__builtin_elementwise_max((__v4hi)__a, (__v4hi)__b);
|
|
2349
2359
|
}
|
|
2350
2360
|
|
|
2351
2361
|
/// Compares each of the corresponding packed 8-bit unsigned integer
|
|
@@ -2361,10 +2371,10 @@ _mm_max_pi16(__m64 __a, __m64 __b)
|
|
|
2361
2371
|
/// \param __b
|
|
2362
2372
|
/// A 64-bit integer vector containing one of the source operands.
|
|
2363
2373
|
/// \returns A 64-bit integer vector containing the comparison results.
|
|
2364
|
-
static __inline__ __m64
|
|
2374
|
+
static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2
|
|
2365
2375
|
_mm_max_pu8(__m64 __a, __m64 __b)
|
|
2366
2376
|
{
|
|
2367
|
-
return (__m64)
|
|
2377
|
+
return (__m64)__builtin_elementwise_max((__v8qu)__a, (__v8qu)__b);
|
|
2368
2378
|
}
|
|
2369
2379
|
|
|
2370
2380
|
/// Compares each of the corresponding packed 16-bit integer values of
|
|
@@ -2380,10 +2390,10 @@ _mm_max_pu8(__m64 __a, __m64 __b)
|
|
|
2380
2390
|
/// \param __b
|
|
2381
2391
|
/// A 64-bit integer vector containing one of the source operands.
|
|
2382
2392
|
/// \returns A 64-bit integer vector containing the comparison results.
|
|
2383
|
-
static __inline__ __m64
|
|
2393
|
+
static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2
|
|
2384
2394
|
_mm_min_pi16(__m64 __a, __m64 __b)
|
|
2385
2395
|
{
|
|
2386
|
-
return (__m64)
|
|
2396
|
+
return (__m64)__builtin_elementwise_min((__v4hi)__a, (__v4hi)__b);
|
|
2387
2397
|
}
|
|
2388
2398
|
|
|
2389
2399
|
/// Compares each of the corresponding packed 8-bit unsigned integer
|
|
@@ -2399,10 +2409,10 @@ _mm_min_pi16(__m64 __a, __m64 __b)
|
|
|
2399
2409
|
/// \param __b
|
|
2400
2410
|
/// A 64-bit integer vector containing one of the source operands.
|
|
2401
2411
|
/// \returns A 64-bit integer vector containing the comparison results.
|
|
2402
|
-
static __inline__ __m64
|
|
2412
|
+
static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2
|
|
2403
2413
|
_mm_min_pu8(__m64 __a, __m64 __b)
|
|
2404
2414
|
{
|
|
2405
|
-
return (__m64)
|
|
2415
|
+
return (__m64)__builtin_elementwise_min((__v8qu)__a, (__v8qu)__b);
|
|
2406
2416
|
}
|
|
2407
2417
|
|
|
2408
2418
|
/// Takes the most significant bit from each 8-bit element in a 64-bit
|
|
@@ -2417,10 +2427,10 @@ _mm_min_pu8(__m64 __a, __m64 __b)
|
|
|
2417
2427
|
/// A 64-bit integer vector containing the values with bits to be extracted.
|
|
2418
2428
|
/// \returns The most significant bit from each 8-bit element in \a __a,
|
|
2419
2429
|
/// written to bits [7:0].
|
|
2420
|
-
static __inline__ int
|
|
2430
|
+
static __inline__ int __DEFAULT_FN_ATTRS_SSE2
|
|
2421
2431
|
_mm_movemask_pi8(__m64 __a)
|
|
2422
2432
|
{
|
|
2423
|
-
return
|
|
2433
|
+
return __builtin_ia32_pmovmskb128((__v16qi)__zext128(__a));
|
|
2424
2434
|
}
|
|
2425
2435
|
|
|
2426
2436
|
/// Multiplies packed 16-bit unsigned integer values and writes the
|
|
@@ -2436,10 +2446,11 @@ _mm_movemask_pi8(__m64 __a)
|
|
|
2436
2446
|
/// \param __b
|
|
2437
2447
|
/// A 64-bit integer vector containing one of the source operands.
|
|
2438
2448
|
/// \returns A 64-bit integer vector containing the products of both operands.
|
|
2439
|
-
static __inline__ __m64
|
|
2449
|
+
static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2
|
|
2440
2450
|
_mm_mulhi_pu16(__m64 __a, __m64 __b)
|
|
2441
2451
|
{
|
|
2442
|
-
return (
|
|
2452
|
+
return __trunc64(__builtin_ia32_pmulhuw128((__v8hi)__anyext128(__a),
|
|
2453
|
+
(__v8hi)__anyext128(__b)));
|
|
2443
2454
|
}
|
|
2444
2455
|
|
|
2445
2456
|
/// Shuffles the 4 16-bit integers from a 64-bit integer vector to the
|
|
@@ -2476,8 +2487,10 @@ _mm_mulhi_pu16(__m64 __a, __m64 __b)
|
|
|
2476
2487
|
/// <c>_MM_SHUFFLE(b6, b4, b2, b0)</c> can create an 8-bit mask of the form
|
|
2477
2488
|
/// <c>[b6, b4, b2, b0]</c>.
|
|
2478
2489
|
/// \returns A 64-bit integer vector containing the shuffled values.
|
|
2479
|
-
#define _mm_shuffle_pi16(a, n)
|
|
2480
|
-
((__m64)
|
|
2490
|
+
#define _mm_shuffle_pi16(a, n) \
|
|
2491
|
+
((__m64)__builtin_shufflevector((__v4hi)(__m64)(a), __extension__(__v4hi){}, \
|
|
2492
|
+
(n) & 0x3, ((n) >> 2) & 0x3, \
|
|
2493
|
+
((n) >> 4) & 0x3, ((n) >> 6) & 0x3))
|
|
2481
2494
|
|
|
2482
2495
|
/// Conditionally copies the values from each 8-bit element in the first
|
|
2483
2496
|
/// 64-bit integer vector operand to the specified memory location, as
|
|
@@ -2502,10 +2515,25 @@ _mm_mulhi_pu16(__m64 __a, __m64 __b)
|
|
|
2502
2515
|
/// A pointer to a 64-bit memory location that will receive the conditionally
|
|
2503
2516
|
/// copied integer values. The address of the memory location does not have
|
|
2504
2517
|
/// to be aligned.
|
|
2505
|
-
static __inline__ void
|
|
2518
|
+
static __inline__ void __DEFAULT_FN_ATTRS_SSE2
|
|
2506
2519
|
_mm_maskmove_si64(__m64 __d, __m64 __n, char *__p)
|
|
2507
2520
|
{
|
|
2508
|
-
|
|
2521
|
+
// This is complex, because we need to support the case where __p is pointing
|
|
2522
|
+
// within the last 15 to 8 bytes of a page. In that case, using a 128-bit
|
|
2523
|
+
// write might cause a trap where a 64-bit maskmovq would not. (Memory
|
|
2524
|
+
// locations not selected by the mask bits might still cause traps.)
|
|
2525
|
+
__m128i __d128 = __anyext128(__d);
|
|
2526
|
+
__m128i __n128 = __zext128(__n);
|
|
2527
|
+
if (((__SIZE_TYPE__)__p & 0xfff) >= 4096-15 &&
|
|
2528
|
+
((__SIZE_TYPE__)__p & 0xfff) <= 4096-8) {
|
|
2529
|
+
// If there's a risk of spurious trap due to a 128-bit write, back up the
|
|
2530
|
+
// pointer by 8 bytes and shift values in registers to match.
|
|
2531
|
+
__p -= 8;
|
|
2532
|
+
__d128 = __builtin_ia32_pslldqi128_byteshift((__v2di)__d128, 8);
|
|
2533
|
+
__n128 = __builtin_ia32_pslldqi128_byteshift((__v2di)__n128, 8);
|
|
2534
|
+
}
|
|
2535
|
+
|
|
2536
|
+
__builtin_ia32_maskmovdqu((__v16qi)__d128, (__v16qi)__n128, __p);
|
|
2509
2537
|
}
|
|
2510
2538
|
|
|
2511
2539
|
/// Computes the rounded averages of the packed unsigned 8-bit integer
|
|
@@ -2521,10 +2549,11 @@ _mm_maskmove_si64(__m64 __d, __m64 __n, char *__p)
|
|
|
2521
2549
|
/// \param __b
|
|
2522
2550
|
/// A 64-bit integer vector containing one of the source operands.
|
|
2523
2551
|
/// \returns A 64-bit integer vector containing the averages of both operands.
|
|
2524
|
-
static __inline__ __m64
|
|
2552
|
+
static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2
|
|
2525
2553
|
_mm_avg_pu8(__m64 __a, __m64 __b)
|
|
2526
2554
|
{
|
|
2527
|
-
return (
|
|
2555
|
+
return __trunc64(__builtin_ia32_pavgb128((__v16qi)__anyext128(__a),
|
|
2556
|
+
(__v16qi)__anyext128(__b)));
|
|
2528
2557
|
}
|
|
2529
2558
|
|
|
2530
2559
|
/// Computes the rounded averages of the packed unsigned 16-bit integer
|
|
@@ -2540,10 +2569,11 @@ _mm_avg_pu8(__m64 __a, __m64 __b)
|
|
|
2540
2569
|
/// \param __b
|
|
2541
2570
|
/// A 64-bit integer vector containing one of the source operands.
|
|
2542
2571
|
/// \returns A 64-bit integer vector containing the averages of both operands.
|
|
2543
|
-
static __inline__ __m64
|
|
2572
|
+
static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2
|
|
2544
2573
|
_mm_avg_pu16(__m64 __a, __m64 __b)
|
|
2545
2574
|
{
|
|
2546
|
-
return (
|
|
2575
|
+
return __trunc64(__builtin_ia32_pavgw128((__v8hi)__anyext128(__a),
|
|
2576
|
+
(__v8hi)__anyext128(__b)));
|
|
2547
2577
|
}
|
|
2548
2578
|
|
|
2549
2579
|
/// Subtracts the corresponding 8-bit unsigned integer values of the two
|
|
@@ -2562,10 +2592,11 @@ _mm_avg_pu16(__m64 __a, __m64 __b)
|
|
|
2562
2592
|
/// \returns A 64-bit integer vector whose lower 16 bits contain the sums of the
|
|
2563
2593
|
/// sets of absolute differences between both operands. The upper bits are
|
|
2564
2594
|
/// cleared.
|
|
2565
|
-
static __inline__ __m64
|
|
2595
|
+
static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2
|
|
2566
2596
|
_mm_sad_pu8(__m64 __a, __m64 __b)
|
|
2567
2597
|
{
|
|
2568
|
-
return (
|
|
2598
|
+
return __trunc64(__builtin_ia32_psadbw128((__v16qi)__zext128(__a),
|
|
2599
|
+
(__v16qi)__zext128(__b)));
|
|
2569
2600
|
}
|
|
2570
2601
|
|
|
2571
2602
|
#if defined(__cplusplus)
|
|
@@ -2741,9 +2772,8 @@ void _mm_setcsr(unsigned int __i);
|
|
|
2741
2772
|
/// Bits [95:64] are written to bits [63:32] of the destination. \n
|
|
2742
2773
|
/// Bits [127:96] are written to bits [127:96] of the destination.
|
|
2743
2774
|
/// \returns A 128-bit vector of [4 x float] containing the interleaved values.
|
|
2744
|
-
static __inline__ __m128
|
|
2745
|
-
_mm_unpackhi_ps(__m128 __a, __m128 __b)
|
|
2746
|
-
{
|
|
2775
|
+
static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
2776
|
+
_mm_unpackhi_ps(__m128 __a, __m128 __b) {
|
|
2747
2777
|
return __builtin_shufflevector((__v4sf)__a, (__v4sf)__b, 2, 6, 3, 7);
|
|
2748
2778
|
}
|
|
2749
2779
|
|
|
@@ -2763,9 +2793,8 @@ _mm_unpackhi_ps(__m128 __a, __m128 __b)
|
|
|
2763
2793
|
/// Bits [31:0] are written to bits [63:32] of the destination. \n
|
|
2764
2794
|
/// Bits [63:32] are written to bits [127:96] of the destination.
|
|
2765
2795
|
/// \returns A 128-bit vector of [4 x float] containing the interleaved values.
|
|
2766
|
-
static __inline__ __m128
|
|
2767
|
-
_mm_unpacklo_ps(__m128 __a, __m128 __b)
|
|
2768
|
-
{
|
|
2796
|
+
static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
2797
|
+
_mm_unpacklo_ps(__m128 __a, __m128 __b) {
|
|
2769
2798
|
return __builtin_shufflevector((__v4sf)__a, (__v4sf)__b, 0, 4, 1, 5);
|
|
2770
2799
|
}
|
|
2771
2800
|
|
|
@@ -2785,9 +2814,8 @@ _mm_unpacklo_ps(__m128 __a, __m128 __b)
|
|
|
2785
2814
|
/// A 128-bit floating-point vector of [4 x float]. The lower 32 bits are
|
|
2786
2815
|
/// written to the lower 32 bits of the result.
|
|
2787
2816
|
/// \returns A 128-bit floating-point vector of [4 x float].
|
|
2788
|
-
static __inline__ __m128
|
|
2789
|
-
_mm_move_ss(__m128 __a, __m128 __b)
|
|
2790
|
-
{
|
|
2817
|
+
static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
2818
|
+
_mm_move_ss(__m128 __a, __m128 __b) {
|
|
2791
2819
|
__a[0] = __b[0];
|
|
2792
2820
|
return __a;
|
|
2793
2821
|
}
|
|
@@ -2807,9 +2835,8 @@ _mm_move_ss(__m128 __a, __m128 __b)
|
|
|
2807
2835
|
/// A 128-bit floating-point vector of [4 x float]. The upper 64 bits are
|
|
2808
2836
|
/// written to the lower 64 bits of the result.
|
|
2809
2837
|
/// \returns A 128-bit floating-point vector of [4 x float].
|
|
2810
|
-
static __inline__ __m128
|
|
2811
|
-
_mm_movehl_ps(__m128 __a, __m128 __b)
|
|
2812
|
-
{
|
|
2838
|
+
static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
2839
|
+
_mm_movehl_ps(__m128 __a, __m128 __b) {
|
|
2813
2840
|
return __builtin_shufflevector((__v4sf)__a, (__v4sf)__b, 6, 7, 2, 3);
|
|
2814
2841
|
}
|
|
2815
2842
|
|
|
@@ -2828,9 +2855,8 @@ _mm_movehl_ps(__m128 __a, __m128 __b)
|
|
|
2828
2855
|
/// A 128-bit floating-point vector of [4 x float]. The lower 64 bits are
|
|
2829
2856
|
/// written to the upper 64 bits of the result.
|
|
2830
2857
|
/// \returns A 128-bit floating-point vector of [4 x float].
|
|
2831
|
-
static __inline__ __m128
|
|
2832
|
-
_mm_movelh_ps(__m128 __a, __m128 __b)
|
|
2833
|
-
{
|
|
2858
|
+
static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
2859
|
+
_mm_movelh_ps(__m128 __a, __m128 __b) {
|
|
2834
2860
|
return __builtin_shufflevector((__v4sf)__a, (__v4sf)__b, 0, 1, 4, 5);
|
|
2835
2861
|
}
|
|
2836
2862
|
|
|
@@ -2846,22 +2872,10 @@ _mm_movelh_ps(__m128 __a, __m128 __b)
|
|
|
2846
2872
|
/// from the corresponding elements in this operand.
|
|
2847
2873
|
/// \returns A 128-bit vector of [4 x float] containing the copied and converted
|
|
2848
2874
|
/// values from the operand.
|
|
2849
|
-
static __inline__ __m128
|
|
2875
|
+
static __inline__ __m128 __DEFAULT_FN_ATTRS_SSE2
|
|
2850
2876
|
_mm_cvtpi16_ps(__m64 __a)
|
|
2851
2877
|
{
|
|
2852
|
-
|
|
2853
|
-
__m128 __r;
|
|
2854
|
-
|
|
2855
|
-
__b = _mm_setzero_si64();
|
|
2856
|
-
__b = _mm_cmpgt_pi16(__b, __a);
|
|
2857
|
-
__c = _mm_unpackhi_pi16(__a, __b);
|
|
2858
|
-
__r = _mm_setzero_ps();
|
|
2859
|
-
__r = _mm_cvtpi32_ps(__r, __c);
|
|
2860
|
-
__r = _mm_movelh_ps(__r, __r);
|
|
2861
|
-
__c = _mm_unpacklo_pi16(__a, __b);
|
|
2862
|
-
__r = _mm_cvtpi32_ps(__r, __c);
|
|
2863
|
-
|
|
2864
|
-
return __r;
|
|
2878
|
+
return __builtin_convertvector((__v4hi)__a, __v4sf);
|
|
2865
2879
|
}
|
|
2866
2880
|
|
|
2867
2881
|
/// Converts a 64-bit vector of 16-bit unsigned integer values into a
|
|
@@ -2876,21 +2890,10 @@ _mm_cvtpi16_ps(__m64 __a)
|
|
|
2876
2890
|
/// destination are copied from the corresponding elements in this operand.
|
|
2877
2891
|
/// \returns A 128-bit vector of [4 x float] containing the copied and converted
|
|
2878
2892
|
/// values from the operand.
|
|
2879
|
-
static __inline__ __m128
|
|
2893
|
+
static __inline__ __m128 __DEFAULT_FN_ATTRS_SSE2
|
|
2880
2894
|
_mm_cvtpu16_ps(__m64 __a)
|
|
2881
2895
|
{
|
|
2882
|
-
|
|
2883
|
-
__m128 __r;
|
|
2884
|
-
|
|
2885
|
-
__b = _mm_setzero_si64();
|
|
2886
|
-
__c = _mm_unpackhi_pi16(__a, __b);
|
|
2887
|
-
__r = _mm_setzero_ps();
|
|
2888
|
-
__r = _mm_cvtpi32_ps(__r, __c);
|
|
2889
|
-
__r = _mm_movelh_ps(__r, __r);
|
|
2890
|
-
__c = _mm_unpacklo_pi16(__a, __b);
|
|
2891
|
-
__r = _mm_cvtpi32_ps(__r, __c);
|
|
2892
|
-
|
|
2893
|
-
return __r;
|
|
2896
|
+
return __builtin_convertvector((__v4hu)__a, __v4sf);
|
|
2894
2897
|
}
|
|
2895
2898
|
|
|
2896
2899
|
/// Converts the lower four 8-bit values from a 64-bit vector of [8 x i8]
|
|
@@ -2905,16 +2908,12 @@ _mm_cvtpu16_ps(__m64 __a)
|
|
|
2905
2908
|
/// from the corresponding lower 4 elements in this operand.
|
|
2906
2909
|
/// \returns A 128-bit vector of [4 x float] containing the copied and converted
|
|
2907
2910
|
/// values from the operand.
|
|
2908
|
-
static __inline__ __m128
|
|
2911
|
+
static __inline__ __m128 __DEFAULT_FN_ATTRS_SSE2
|
|
2909
2912
|
_mm_cvtpi8_ps(__m64 __a)
|
|
2910
2913
|
{
|
|
2911
|
-
|
|
2912
|
-
|
|
2913
|
-
|
|
2914
|
-
__b = _mm_cmpgt_pi8(__b, __a);
|
|
2915
|
-
__b = _mm_unpacklo_pi8(__a, __b);
|
|
2916
|
-
|
|
2917
|
-
return _mm_cvtpi16_ps(__b);
|
|
2914
|
+
return __builtin_convertvector(
|
|
2915
|
+
__builtin_shufflevector((__v8qs)__a, __extension__ (__v8qs){},
|
|
2916
|
+
0, 1, 2, 3), __v4sf);
|
|
2918
2917
|
}
|
|
2919
2918
|
|
|
2920
2919
|
/// Converts the lower four unsigned 8-bit integer values from a 64-bit
|
|
@@ -2930,15 +2929,12 @@ _mm_cvtpi8_ps(__m64 __a)
|
|
|
2930
2929
|
/// operand.
|
|
2931
2930
|
/// \returns A 128-bit vector of [4 x float] containing the copied and converted
|
|
2932
2931
|
/// values from the source operand.
|
|
2933
|
-
static __inline__ __m128
|
|
2932
|
+
static __inline__ __m128 __DEFAULT_FN_ATTRS_SSE2
|
|
2934
2933
|
_mm_cvtpu8_ps(__m64 __a)
|
|
2935
2934
|
{
|
|
2936
|
-
|
|
2937
|
-
|
|
2938
|
-
|
|
2939
|
-
__b = _mm_unpacklo_pi8(__a, __b);
|
|
2940
|
-
|
|
2941
|
-
return _mm_cvtpi16_ps(__b);
|
|
2935
|
+
return __builtin_convertvector(
|
|
2936
|
+
__builtin_shufflevector((__v8qu)__a, __extension__ (__v8qu){},
|
|
2937
|
+
0, 1, 2, 3), __v4sf);
|
|
2942
2938
|
}
|
|
2943
2939
|
|
|
2944
2940
|
/// Converts the two 32-bit signed integer values from each 64-bit vector
|
|
@@ -2957,16 +2953,12 @@ _mm_cvtpu8_ps(__m64 __a)
|
|
|
2957
2953
|
/// \returns A 128-bit vector of [4 x float] whose lower 64 bits contain the
|
|
2958
2954
|
/// copied and converted values from the first operand. The upper 64 bits
|
|
2959
2955
|
/// contain the copied and converted values from the second operand.
|
|
2960
|
-
static __inline__ __m128
|
|
2956
|
+
static __inline__ __m128 __DEFAULT_FN_ATTRS_SSE2
|
|
2961
2957
|
_mm_cvtpi32x2_ps(__m64 __a, __m64 __b)
|
|
2962
2958
|
{
|
|
2963
|
-
|
|
2964
|
-
|
|
2965
|
-
|
|
2966
|
-
__c = _mm_cvtpi32_ps(__c, __b);
|
|
2967
|
-
__c = _mm_movelh_ps(__c, __c);
|
|
2968
|
-
|
|
2969
|
-
return _mm_cvtpi32_ps(__c, __a);
|
|
2959
|
+
return __builtin_convertvector(
|
|
2960
|
+
__builtin_shufflevector((__v2si)__a, (__v2si)__b,
|
|
2961
|
+
0, 1, 2, 3), __v4sf);
|
|
2970
2962
|
}
|
|
2971
2963
|
|
|
2972
2964
|
/// Converts each single-precision floating-point element of a 128-bit
|
|
@@ -2986,16 +2978,11 @@ _mm_cvtpi32x2_ps(__m64 __a, __m64 __b)
|
|
|
2986
2978
|
/// A 128-bit floating-point vector of [4 x float].
|
|
2987
2979
|
/// \returns A 64-bit integer vector of [4 x i16] containing the converted
|
|
2988
2980
|
/// values.
|
|
2989
|
-
static __inline__ __m64
|
|
2981
|
+
static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2
|
|
2990
2982
|
_mm_cvtps_pi16(__m128 __a)
|
|
2991
2983
|
{
|
|
2992
|
-
|
|
2993
|
-
|
|
2994
|
-
__b = _mm_cvtps_pi32(__a);
|
|
2995
|
-
__a = _mm_movehl_ps(__a, __a);
|
|
2996
|
-
__c = _mm_cvtps_pi32(__a);
|
|
2997
|
-
|
|
2998
|
-
return _mm_packs_pi32(__b, __c);
|
|
2984
|
+
return __trunc64(__builtin_ia32_packssdw128(
|
|
2985
|
+
(__v4si)__builtin_ia32_cvtps2dq((__v4sf)__a), (__v4si)_mm_setzero_ps()));
|
|
2999
2986
|
}
|
|
3000
2987
|
|
|
3001
2988
|
/// Converts each single-precision floating-point element of a 128-bit
|
|
@@ -3016,7 +3003,7 @@ _mm_cvtps_pi16(__m128 __a)
|
|
|
3016
3003
|
/// 128-bit floating-point vector of [4 x float].
|
|
3017
3004
|
/// \returns A 64-bit integer vector of [8 x i8]. The lower 32 bits contain the
|
|
3018
3005
|
/// converted values and the uppper 32 bits are set to zero.
|
|
3019
|
-
static __inline__ __m64
|
|
3006
|
+
static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2
|
|
3020
3007
|
_mm_cvtps_pi8(__m128 __a)
|
|
3021
3008
|
{
|
|
3022
3009
|
__m64 __b, __c;
|
|
@@ -3196,8 +3183,14 @@ do { \
|
|
|
3196
3183
|
#define _m_psadbw _mm_sad_pu8
|
|
3197
3184
|
#define _m_ _mm_
|
|
3198
3185
|
|
|
3186
|
+
#undef __trunc64
|
|
3187
|
+
#undef __zext128
|
|
3188
|
+
#undef __anyext128
|
|
3189
|
+
#undef __zeroupper64
|
|
3199
3190
|
#undef __DEFAULT_FN_ATTRS
|
|
3200
|
-
#undef
|
|
3191
|
+
#undef __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
3192
|
+
#undef __DEFAULT_FN_ATTRS_SSE2
|
|
3193
|
+
#undef __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR
|
|
3201
3194
|
|
|
3202
3195
|
/* Ugly hack for backwards-compatibility (compatible with gcc) */
|
|
3203
3196
|
#if defined(__SSE2__) && !__building_module(_Builtin_intrinsics)
|