@swiftbrowser/wasm-sdk 0.0.0-stage → 0.9.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/LICENSE.txt +1445 -0
- package/README.md +24 -2
- package/files.json +631 -0
- package/package.json +18 -4
- package/wasm32-unknown-wasip1/WASI.sdk/bin/xml2-config +108 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__errno.h +15 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__errno_values.h +84 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__fd_set.h +67 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__function___isatty.h +14 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__functions_malloc.h +29 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__functions_memcpy.h +24 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__header_dirent.h +44 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__header_fcntl.h +60 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__header_inttypes.h +184 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__header_netinet_in.h +32 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__header_poll.h +33 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__header_stdlib.h +21 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__header_string.h +26 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__header_sys_ioctl.h +17 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__header_sys_resource.h +19 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__header_sys_socket.h +81 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__header_sys_stat.h +15 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__header_time.h +31 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__header_unistd.h +29 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__macro_FD_SETSIZE.h +6 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__macro_PAGESIZE.h +24 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__mode_t.h +38 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__seek.h +8 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__struct_dirent.h +14 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__struct_in6_addr.h +8 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__struct_in_addr.h +10 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__struct_iovec.h +12 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__struct_msghdr.h +16 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__struct_pollfd.h +10 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__struct_rusage.h +12 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__struct_sockaddr.h +11 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__struct_sockaddr_in.h +14 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__struct_sockaddr_in6.h +16 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__struct_sockaddr_storage.h +11 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__struct_sockaddr_un.h +10 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__struct_stat.h +35 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__struct_timespec.h +12 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__struct_timeval.h +13 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__struct_tm.h +19 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__struct_tms.h +13 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__typedef_DIR.h +6 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__typedef_blkcnt_t.h +7 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__typedef_blksize_t.h +6 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__typedef_clock_t.h +7 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__typedef_clockid_t.h +6 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__typedef_dev_t.h +7 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__typedef_fd_set.h +14 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__typedef_gid_t.h +6 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__typedef_in_addr_t.h +6 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__typedef_in_port_t.h +6 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__typedef_ino_t.h +7 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__typedef_mode_t.h +6 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__typedef_nfds_t.h +6 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__typedef_nlink_t.h +7 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__typedef_off_t.h +7 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__typedef_sa_family_t.h +6 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__typedef_sigset_t.h +7 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__typedef_socklen_t.h +6 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__typedef_ssize_t.h +7 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__typedef_suseconds_t.h +8 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__typedef_time_t.h +7 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/__typedef_uid_t.h +6 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/alloca.h +19 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/ar.h +25 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/arpa/ftp.h +35 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/arpa/inet.h +31 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/arpa/nameser.h +526 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/arpa/nameser_compat.h +2 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/arpa/telnet.h +251 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/arpa/tftp.h +31 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/assert.h +23 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/bits/alltypes.h +460 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/bits/dirent.h +1 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/bits/fcntl.h +1 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/bits/fenv.h +10 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/bits/float.h +16 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/bits/hwcap.h +0 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/bits/io.h +0 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/bits/ioctl.h +1 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/bits/ioctl_fix.h +0 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/bits/ipcstat.h +1 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/bits/limits.h +1 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/bits/mman.h +0 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/bits/poll.h +0 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/bits/posix.h +2 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/bits/reg.h +2 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/bits/resource.h +0 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/bits/setjmp.h +1 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/bits/signal.h +40 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/bits/socket.h +0 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/bits/stat.h +1 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/bits/stdint.h +20 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/byteswap.h +26 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/complex.h +143 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/cpio.h +29 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/crypt.h +20 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/ctype.h +77 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/dirent.h +89 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/dlfcn.h +56 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/endian.h +80 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/err.h +25 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/errno.h +32 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/fcntl.h +250 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/features.h +40 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/fenv.h +28 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/float.h +56 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/fmtmsg.h +47 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/fnmatch.h +24 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/fts.h +155 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/ftw.h +45 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/getopt.h +30 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/glob.h +54 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/iconv.h +24 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/ifaddrs.h +35 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/inttypes.h +233 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/iso646.h +20 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/langinfo.h +98 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/libgen.h +15 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/limits.h +178 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/locale.h +93 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/malloc.h +33 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/math.h +459 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/memory.h +1 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/monetary.h +23 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/mqueue.h +41 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/netinet/icmp6.h +305 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/netinet/igmp.h +45 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/netinet/in.h +433 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/netinet/in_systm.h +9 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/netinet/ip.h +199 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/netinet/ip6.h +141 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/netinet/ip_icmp.h +193 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/netinet/tcp.h +305 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/netinet/udp.h +46 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/netpacket/packet.h +62 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/nl_types.h +22 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/poll.h +69 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/pthread.h +267 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/regex.h +62 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/sched.h +152 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/search.h +63 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/semaphore.h +39 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/setjmp.h +55 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/signal.h +339 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/stdalign.h +20 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/stdbool.h +14 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/stdc-predef.h +18 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/stdint.h +117 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/stdio.h +254 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/stdio_ext.h +34 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/stdlib.h +217 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/stdnoreturn.h +7 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/string.h +123 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/strings.h +40 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/stropts.h +139 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/sys/dir.h +2 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/sys/errno.h +2 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/sys/eventfd.h +26 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/sys/fcntl.h +2 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/sys/file.h +21 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/sys/ioctl.h +124 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/sys/mman.h +157 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/sys/param.h +37 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/sys/poll.h +2 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/sys/random.h +27 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/sys/reg.h +9 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/sys/resource.h +126 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/sys/select.h +54 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/sys/signal.h +2 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/sys/socket.h +454 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/sys/stat.h +198 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/sys/statvfs.h +57 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/sys/stropts.h +1 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/sys/syscall.h +10 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/sys/sysinfo.h +36 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/sys/time.h +84 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/sys/timeb.h +28 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/sys/times.h +34 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/sys/timex.h +103 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/sys/ttydefaults.h +34 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/sys/types.h +85 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/sys/uio.h +57 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/sys/un.h +39 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/sys/utsname.h +29 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/syscall.h +1 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/sysexits.h +21 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/tar.h +33 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/tgmath.h +270 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/threads.h +93 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/time.h +204 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/uchar.h +29 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/unistd.h +589 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/utime.h +29 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/values.h +39 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/wasi/api.h +34 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/wasi/libc-busywait.h +15 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/wasi/libc-environ.h +36 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/wasi/libc-find-relpath.h +75 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/wasi/libc-nocwd.h +61 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/wasi/libc.h +84 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/wasi/version.h +17 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/wasi/wasip1.h +2130 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/wasi/wasip2.h +10 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/wasi/wasip3.h +10 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/wchar.h +214 -0
- package/wasm32-unknown-wasip1/WASI.sdk/include/wasm32-wasip1/wctype.h +79 -0
- package/wasm32-unknown-wasip1/WASI.sdk/lib/wasm32-wasip1/cmake/libxml2-2.11.5/libxml2-config-version.cmake +83 -0
- package/wasm32-unknown-wasip1/WASI.sdk/lib/wasm32-wasip1/cmake/libxml2-2.11.5/libxml2-config.cmake +160 -0
- package/wasm32-unknown-wasip1/WASI.sdk/lib/wasm32-wasip1/cmake/libxml2-2.11.5/libxml2-export-release.cmake +19 -0
- package/wasm32-unknown-wasip1/WASI.sdk/lib/wasm32-wasip1/cmake/libxml2-2.11.5/libxml2-export.cmake +108 -0
- package/wasm32-unknown-wasip1/WASI.sdk/lib/wasm32-wasip1/crt1-command.o +0 -0
- package/wasm32-unknown-wasip1/WASI.sdk/lib/wasm32-wasip1/crt1-reactor.o +0 -0
- package/wasm32-unknown-wasip1/WASI.sdk/lib/wasm32-wasip1/crt1.o +0 -0
- package/wasm32-unknown-wasip1/WASI.sdk/lib/wasm32-wasip1/libc++.a +0 -0
- package/wasm32-unknown-wasip1/WASI.sdk/lib/wasm32-wasip1/libc++.modules.json +26 -0
- package/wasm32-unknown-wasip1/WASI.sdk/lib/wasm32-wasip1/libc++abi.a +0 -0
- package/wasm32-unknown-wasip1/WASI.sdk/lib/wasm32-wasip1/libc++experimental.a +0 -0
- package/wasm32-unknown-wasip1/WASI.sdk/lib/wasm32-wasip1/libc-printscan-long-double.a +0 -0
- package/wasm32-unknown-wasip1/WASI.sdk/lib/wasm32-wasip1/libc-printscan-no-floating-point.a +0 -0
- package/wasm32-unknown-wasip1/WASI.sdk/lib/wasm32-wasip1/libc.a +0 -0
- package/wasm32-unknown-wasip1/WASI.sdk/lib/wasm32-wasip1/libc.so +0 -0
- package/wasm32-unknown-wasip1/WASI.sdk/lib/wasm32-wasip1/libcrypt.a +1 -0
- package/wasm32-unknown-wasip1/WASI.sdk/lib/wasm32-wasip1/libdl.a +0 -0
- package/wasm32-unknown-wasip1/WASI.sdk/lib/wasm32-wasip1/libdl.so +0 -0
- package/wasm32-unknown-wasip1/WASI.sdk/lib/wasm32-wasip1/libm.a +1 -0
- package/wasm32-unknown-wasip1/WASI.sdk/lib/wasm32-wasip1/libpthread.a +1 -0
- package/wasm32-unknown-wasip1/WASI.sdk/lib/wasm32-wasip1/libresolv.a +1 -0
- package/wasm32-unknown-wasip1/WASI.sdk/lib/wasm32-wasip1/librt.a +1 -0
- package/wasm32-unknown-wasip1/WASI.sdk/lib/wasm32-wasip1/libsetjmp.a +0 -0
- package/wasm32-unknown-wasip1/WASI.sdk/lib/wasm32-wasip1/libsetjmp.so +0 -0
- package/wasm32-unknown-wasip1/WASI.sdk/lib/wasm32-wasip1/libutil.a +1 -0
- package/wasm32-unknown-wasip1/WASI.sdk/lib/wasm32-wasip1/libwasi-emulated-getpid.a +0 -0
- package/wasm32-unknown-wasip1/WASI.sdk/lib/wasm32-wasip1/libwasi-emulated-getpid.so +0 -0
- package/wasm32-unknown-wasip1/WASI.sdk/lib/wasm32-wasip1/libwasi-emulated-mman.a +0 -0
- package/wasm32-unknown-wasip1/WASI.sdk/lib/wasm32-wasip1/libwasi-emulated-mman.so +0 -0
- package/wasm32-unknown-wasip1/WASI.sdk/lib/wasm32-wasip1/libwasi-emulated-process-clocks.a +0 -0
- package/wasm32-unknown-wasip1/WASI.sdk/lib/wasm32-wasip1/libwasi-emulated-process-clocks.so +0 -0
- package/wasm32-unknown-wasip1/WASI.sdk/lib/wasm32-wasip1/libwasi-emulated-signal.a +0 -0
- package/wasm32-unknown-wasip1/WASI.sdk/lib/wasm32-wasip1/libwasi-emulated-signal.so +0 -0
- package/wasm32-unknown-wasip1/WASI.sdk/lib/wasm32-wasip1/libxml2.a +0 -0
- package/wasm32-unknown-wasip1/WASI.sdk/lib/wasm32-wasip1/libxnet.a +1 -0
- package/wasm32-unknown-wasip1/WASI.sdk/lib/wasm32-wasip1/pkgconfig/libxml-2.0.pc +13 -0
- package/wasm32-unknown-wasip1/swift-sdk.json +13 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/clang/lib/wasip1/libclang_rt.builtins-wasm32.a +0 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/clang/lib/wasip1/libclang_rt.profile-wasm32.a +0 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/apinotes/SwiftWASILibc.apinotes +5 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/__clang_cuda_builtin_vars.h +121 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/__clang_cuda_cmath.h +512 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/__clang_cuda_complex_builtins.h +285 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/__clang_cuda_device_functions.h +1572 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/__clang_cuda_intrinsics.h +994 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/__clang_cuda_libdevice_declares.h +468 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/__clang_cuda_math.h +353 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/__clang_cuda_math_forward_declares.h +284 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/__clang_cuda_runtime_wrapper.h +504 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/__clang_cuda_texture_intrinsics.h +1177 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/__clang_hip_cmath.h +848 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/__clang_hip_libdevice_declares.h +345 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/__clang_hip_math.h +1405 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/__clang_hip_runtime_wrapper.h +162 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/__clang_hip_stdlib.h +43 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/__clang_spirv_builtins.h +217 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/__float_float.h +165 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/__float_header_macro.h +12 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/__float_infinity_nan.h +20 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/__stdarg___gnuc_va_list.h +13 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/__stdarg___va_copy.h +12 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/__stdarg_header_macro.h +12 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/__stdarg_va_arg.h +22 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/__stdarg_va_copy.h +12 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/__stdarg_va_list.h +13 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/__stddef_header_macro.h +12 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/__stddef_max_align_t.h +27 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/__stddef_null.h +29 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/__stddef_nullptr_t.h +29 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/__stddef_offsetof.h +17 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/__stddef_ptrdiff_t.h +20 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/__stddef_rsize_t.h +20 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/__stddef_size_t.h +20 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/__stddef_unreachable.h +21 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/__stddef_wchar_t.h +28 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/__stddef_wint_t.h +15 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/__wmmintrin_aes.h +140 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/__wmmintrin_pclmul.h +48 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/adcintrin.h +165 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/adxintrin.h +107 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/altivec.h +19364 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/amdgpuintrin.h +191 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/ammintrin.h +183 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/amxavx512intrin.h +382 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/amxbf16transposeintrin.h +94 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/amxcomplexintrin.h +167 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/amxcomplextransposeintrin.h +303 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/amxfp16intrin.h +93 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/amxfp16transposeintrin.h +94 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/amxfp8intrin.h +230 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/amxintrin.h +494 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/amxmovrsintrin.h +48 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/amxmovrstransposeintrin.h +200 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/amxtf32intrin.h +108 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/amxtf32transposeintrin.h +105 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/amxtransposeintrin.h +248 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/andes_vector.h +16 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/arm64intr.h +35 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/arm_acle.h +855 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/arm_bf16.h +20 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/arm_cde.h +410 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/arm_cmse.h +217 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/arm_fp16.h +596 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/arm_mve.h +19187 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/arm_neon.h +74047 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/arm_neon_sve_bridge.h +182 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/arm_sme.h +3741 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/arm_sve.h +31898 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/arm_vector_types.h +432 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/armintr.h +31 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/availability_domain.h +51 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/avx10_2_512bf16intrin.h +561 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/avx10_2_512convertintrin.h +322 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/avx10_2_512minmaxintrin.h +127 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/avx10_2_512niintrin.h +314 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/avx10_2_512satcvtdsintrin.h +307 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/avx10_2_512satcvtintrin.h +301 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/avx10_2bf16intrin.h +1085 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/avx10_2convertintrin.h +3257 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/avx10_2copyintrin.h +66 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/avx10_2minmaxintrin.h +232 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/avx10_2niintrin.h +409 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/avx10_2satcvtdsintrin.h +376 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/avx10_2satcvtintrin.h +312 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/avx2intrin.h +5293 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/avx512bf16intrin.h +283 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/avx512bitalgintrin.h +86 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/avx512bwintrin.h +2014 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/avx512cdintrin.h +125 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/avx512dqintrin.h +1379 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/avx512fintrin.h +9787 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/avx512fp16intrin.h +3353 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/avx512ifmaintrin.h +70 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/avx512ifmavlintrin.h +111 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/avx512vbmi2intrin.h +357 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/avx512vbmiintrin.h +106 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/avx512vbmivlintrin.h +193 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/avx512vlbf16intrin.h +517 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/avx512vlbitalgintrin.h +151 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/avx512vlbwintrin.h +3167 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/avx512vlcdintrin.h +230 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/avx512vldqintrin.h +1173 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/avx512vlfp16intrin.h +2071 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/avx512vlintrin.h +8437 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/avx512vlvbmi2intrin.h +695 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/avx512vlvnniintrin.h +310 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/avx512vlvp2intersectintrin.h +123 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/avx512vnniintrin.h +116 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/avx512vp2intersectintrin.h +78 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/avx512vpopcntdqintrin.h +64 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/avx512vpopcntdqvlintrin.h +103 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/avxifmaintrin.h +177 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/avxintrin.h +5140 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/avxneconvertintrin.h +484 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/avxvnniint16intrin.h +432 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/avxvnniint8intrin.h +430 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/avxvnniintrin.h +225 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/bmi2intrin.h +253 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/bmiintrin.h +604 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/bounds_safety_soft_traps.h +55 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/builtins.h +19 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/cet.h +66 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/cetintrin.h +115 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/cldemoteintrin.h +36 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/clflushoptintrin.h +36 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/clwbintrin.h +38 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/clzerointrin.h +38 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/cmpccxaddintrin.h +70 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/cpuid.h +354 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/crc32intrin.h +100 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/cuda_wrappers/bits/basic_string.h +9 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/cuda_wrappers/bits/c++config.h +61 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/cuda_wrappers/bits/shared_ptr_base.h +9 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/cuda_wrappers/cmath +44 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/emmintrin.h +4940 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/enqcmdintrin.h +63 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/f16cintrin.h +162 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/feature-availability.h +17 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/float.h +45 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/fma4intrin.h +218 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/fmaintrin.h +796 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/fuzzer/FuzzedDataProvider.h +397 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/fxsrintrin.h +91 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/gfniintrin.h +233 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/gpuintrin.h +328 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/hexagon_circ_brev_intrinsics.h +298 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/hexagon_protos.h +8439 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/hexagon_types.h +2625 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/hresetintrin.h +49 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/htmintrin.h +212 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/htmxlintrin.h +345 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/hvx_hexagon_protos.h +5610 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/ia32intrin.h +863 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/immintrin.h +607 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/intrin.h +487 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/intrin0.h +256 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/inttypes.h +101 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/invpcidintrin.h +23 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/iso646.h +31 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/keylockerintrin.h +518 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/larchintrin.h +260 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/lasxintrin.h +3886 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/lifetimebound.h +37 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/limits.h +133 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/llvm_libc_wrappers/assert.h +34 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/llvm_libc_wrappers/ctype.h +140 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/llvm_libc_wrappers/inttypes.h +34 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/llvm_libc_wrappers/stdio.h +80 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/llvm_libc_wrappers/stdlib.h +53 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/llvm_libc_wrappers/string.h +96 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/llvm_libc_wrappers/time.h +34 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/llvm_offload_wrappers/__llvm_offload.h +31 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/llvm_offload_wrappers/__llvm_offload_device.h +10 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/llvm_offload_wrappers/__llvm_offload_host.h +15 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/lsxintrin.h +3752 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/lwpintrin.h +136 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/lzcntintrin.h +109 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/mm3dnow.h +22 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/mm_malloc.h +67 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/mmintrin.h +1610 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/module.modulemap +393 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/movdirintrin.h +49 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/movrs_avx10_2_512intrin.h +98 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/movrs_avx10_2intrin.h +174 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/movrsintrin.h +59 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/msa.h +573 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/mwaitxintrin.h +62 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/nmmintrin.h +20 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/nvptxintrin.h +219 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/opencl-c-base.h +851 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/opencl-c.h +18630 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/openmp_wrappers/__clang_openmp_device_functions.h +104 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/openmp_wrappers/cmath +132 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/openmp_wrappers/complex.h +35 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/openmp_wrappers/complex_cmath.h +393 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/openmp_wrappers/math.h +61 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/orc/c_api.h +202 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/pconfigintrin.h +40 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/pkuintrin.h +34 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/pmmintrin.h +314 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/popcntintrin.h +59 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/ppc_wrappers/bmi2intrin.h +134 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/ppc_wrappers/bmiintrin.h +165 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/ppc_wrappers/emmintrin.h +2269 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/ppc_wrappers/immintrin.h +27 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/ppc_wrappers/mm_malloc.h +45 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/ppc_wrappers/mmintrin.h +1453 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/ppc_wrappers/nmmintrin.h +26 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/ppc_wrappers/pmmintrin.h +145 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/ppc_wrappers/smmintrin.h +683 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/ppc_wrappers/tmmintrin.h +453 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/ppc_wrappers/x86gprintrin.h +17 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/ppc_wrappers/x86intrin.h +28 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/ppc_wrappers/xmmintrin.h +1827 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/prfchiintrin.h +61 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/prfchwintrin.h +57 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/profile/instr_prof_interface.h +88 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/ptrauth.h +467 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/ptrcheck.h +339 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/ptwriteintrin.h +37 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/raointintrin.h +203 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/rdpruintrin.h +57 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/rdseedintrin.h +105 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/riscv_bitmanip.h +195 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/riscv_corev_alu.h +128 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/riscv_crypto.h +170 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/riscv_ntlh.h +26 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/riscv_vector.h +422 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/rtmintrin.h +45 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/s390intrin.h +25 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/sanitizer/allocator_interface.h +106 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/sanitizer/asan_interface.h +340 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/sanitizer/common_interface_defs.h +492 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/sanitizer/coverage_interface.h +36 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/sanitizer/dfsan_interface.h +220 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/sanitizer/hwasan_interface.h +109 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/sanitizer/linux_syscall_hooks.h +3112 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/sanitizer/lsan_interface.h +89 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/sanitizer/memprof_interface.h +72 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/sanitizer/msan_interface.h +135 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/sanitizer/netbsd_syscall_hooks.h +5005 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/sanitizer/rtsan_interface.h +75 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/sanitizer/scudo_interface.h +38 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/sanitizer/tsan_interface.h +316 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/sanitizer/tsan_interface_atomic.h +223 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/sanitizer/ubsan_interface.h +34 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/serializeintrin.h +30 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/sgxintrin.h +60 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/sha512intrin.h +200 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/shaintrin.h +190 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/sifive_vector.h +118 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/sm3intrin.h +238 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/sm4evexintrin.h +32 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/sm4intrin.h +269 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/smmintrin.h +2334 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/stdalign.h +24 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/stdarg.h +75 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/stdatomic.h +204 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/stdbool.h +39 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/stdckdint.h +42 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/stdcountof.h +15 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/stddef.h +144 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/stdint.h +844 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/stdnoreturn.h +35 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/tbmintrin.h +128 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/tgmath.h +1368 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/tmmintrin.h +810 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/tsxldtrkintrin.h +56 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/uintrintrin.h +157 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/unwind.h +332 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/usermsrintrin.h +51 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/vadefs.h +51 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/vaesintrin.h +87 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/varargs.h +16 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/vecintrin.h +12868 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/velintrin.h +71 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/velintrin_approx.h +120 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/velintrin_gen.h +1257 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/vpclmulqdqintrin.h +30 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/waitpkgintrin.h +42 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/wasm_simd128.h +2143 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/wbnoinvdintrin.h +24 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/wmmintrin.h +23 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/x86gprintrin.h +49 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/x86intrin.h +35 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/xmmintrin.h +3201 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/xopintrin.h +770 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/xray/xray_interface.h +178 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/xray/xray_log_interface.h +357 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/xray/xray_records.h +134 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/xsavecintrin.h +84 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/xsaveintrin.h +63 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/xsaveoptintrin.h +34 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/xsavesintrin.h +44 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/xtestintrin.h +27 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/yvals_core.h +25 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/include/zos_wrappers/builtins.h +18 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/lib/wasip1/libclang_rt.builtins-wasm32.a +0 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/clang/lib/wasip1/libclang_rt.profile-wasm32.a +0 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/shims/AssertionReporting.h +87 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/shims/CoreFoundationShims.h +97 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/shims/EmbeddedShims.h +277 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/shims/FoundationShims.h +65 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/shims/GlobalObjects.h +114 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/shims/HeapObject.h +304 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/shims/KeyPath.h +142 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/shims/LibcOverlayShims.h +141 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/shims/LibcShims.h +198 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/shims/MetadataSections.h +100 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/shims/ObjCShims.h +51 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/shims/Random.h +43 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/shims/RefCount.h +1654 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/shims/Reflection.h +36 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/shims/RuntimeShims.h +161 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/shims/RuntimeStubs.h +61 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/shims/SwiftStdbool.h +23 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/shims/SwiftStddef.h +53 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/shims/SwiftStdint.h +89 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/shims/System.h +227 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/shims/Target.h +45 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/shims/ThreadLocalStorage.h +76 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/shims/Visibility.h +312 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/shims/_SwiftConcurrency.h +33 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/shims/_SwiftDistributed.h +29 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/shims/_SynchronizationShims.h +60 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/shims/module.modulemap +39 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/wasi/Distributed.swiftmodule/wasm32-unknown-wasip1.private.swiftinterface +346 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/wasi/Distributed.swiftmodule/wasm32-unknown-wasip1.swiftinterface +346 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/wasi/Distributed.swiftmodule/wasm32-unknown-wasip1.swiftmodule +0 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/wasi/Observation.swiftmodule/wasm32-unknown-wasip1.private.swiftinterface +173 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/wasi/Observation.swiftmodule/wasm32-unknown-wasip1.swiftinterface +157 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/wasi/Observation.swiftmodule/wasm32-unknown-wasip1.swiftmodule +0 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/wasi/RegexBuilder.swiftmodule/wasm32-unknown-wasip1.private.swiftinterface +2961 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/wasi/RegexBuilder.swiftmodule/wasm32-unknown-wasip1.swiftinterface +2961 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/wasi/RegexBuilder.swiftmodule/wasm32-unknown-wasip1.swiftmodule +0 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/wasi/Swift.swiftmodule/wasm32-unknown-wasip1.private.swiftinterface +58665 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/wasi/Swift.swiftmodule/wasm32-unknown-wasip1.swiftinterface +57923 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/wasi/Swift.swiftmodule/wasm32-unknown-wasip1.swiftmodule +0 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/wasi/SwiftOnoneSupport.swiftmodule/wasm32-unknown-wasip1.private.swiftinterface +5 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/wasi/SwiftOnoneSupport.swiftmodule/wasm32-unknown-wasip1.swiftinterface +5 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/wasi/SwiftOnoneSupport.swiftmodule/wasm32-unknown-wasip1.swiftmodule +0 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/wasi/Synchronization.swiftmodule/wasm32-unknown-wasip1.private.swiftinterface +7122 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/wasi/Synchronization.swiftmodule/wasm32-unknown-wasip1.swiftinterface +7122 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/wasi/Synchronization.swiftmodule/wasm32-unknown-wasip1.swiftmodule +0 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/wasi/WASILibc.swiftmodule/wasm32-unknown-wasip1.private.swiftinterface +423 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/wasi/WASILibc.swiftmodule/wasm32-unknown-wasip1.swiftinterface +423 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/wasi/WASILibc.swiftmodule/wasm32-unknown-wasip1.swiftmodule +0 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/wasi/_Builtin_float.swiftmodule/wasm32-unknown-wasip1.private.swiftinterface +51 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/wasi/_Builtin_float.swiftmodule/wasm32-unknown-wasip1.swiftinterface +51 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/wasi/_Builtin_float.swiftmodule/wasm32-unknown-wasip1.swiftmodule +0 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/wasi/_Concurrency.swiftmodule/wasm32-unknown-wasip1.private.swiftinterface +7915 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/wasi/_Concurrency.swiftmodule/wasm32-unknown-wasip1.swiftinterface +7779 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/wasi/_Concurrency.swiftmodule/wasm32-unknown-wasip1.swiftmodule +0 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/wasi/_Differentiation.swiftmodule/wasm32-unknown-wasip1.private.swiftinterface +2257 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/wasi/_Differentiation.swiftmodule/wasm32-unknown-wasip1.swiftinterface +2257 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/wasi/_Differentiation.swiftmodule/wasm32-unknown-wasip1.swiftmodule +0 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/wasi/_RegexParser.swiftmodule/wasm32-unknown-wasip1.private.swiftinterface +2310 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/wasi/_RegexParser.swiftmodule/wasm32-unknown-wasip1.swiftinterface +2297 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/wasi/_RegexParser.swiftmodule/wasm32-unknown-wasip1.swiftmodule +0 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/wasi/_StringProcessing.swiftmodule/wasm32-unknown-wasip1.private.swiftinterface +573 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/wasi/_StringProcessing.swiftmodule/wasm32-unknown-wasip1.swiftinterface +372 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/wasi/_StringProcessing.swiftmodule/wasm32-unknown-wasip1.swiftmodule +0 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/wasi/_Volatile.swiftmodule/wasm32-unknown-wasip1.private.swiftinterface +46 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/wasi/_Volatile.swiftmodule/wasm32-unknown-wasip1.swiftinterface +46 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/wasi/_Volatile.swiftmodule/wasm32-unknown-wasip1.swiftmodule +0 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/wasi/libswiftCore.a +0 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/wasi/libswiftDistributed.a +0 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/wasi/libswiftObservation.a +0 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/wasi/libswiftRegexBuilder.a +0 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/wasi/libswiftSwiftOnoneSupport.a +0 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/wasi/libswiftSynchronization.a +0 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/wasi/libswiftWASILibc.a +0 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/wasi/libswift_Builtin_float.a +0 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/wasi/libswift_Concurrency.a +0 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/wasi/libswift_Differentiation.a +0 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/wasi/libswift_RegexParser.a +0 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/wasi/libswift_StringProcessing.a +0 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/wasi/libswift_Volatile.a +0 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/wasi/static-executable-args.lnk +10 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/wasi/wasm32/swiftrt.o +0 -0
- package/wasm32-unknown-wasip1/swift.xctoolchain/usr/lib/swift_static/wasi/wasm32/wasi-libc.modulemap +95 -0
- package/wasm32-unknown-wasip1/toolset.json +9 -0
|
@@ -0,0 +1,3257 @@
|
|
|
1
|
+
/*===--------------- avx10_2convertintrin.h - AVX10_2CONVERT ---------------===
|
|
2
|
+
*
|
|
3
|
+
* Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
4
|
+
* See https://llvm.org/LICENSE.txt for license information.
|
|
5
|
+
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
6
|
+
*
|
|
7
|
+
*===-----------------------------------------------------------------------===
|
|
8
|
+
*/
|
|
9
|
+
#ifndef __IMMINTRIN_H
|
|
10
|
+
#error \
|
|
11
|
+
"Never use <avx10_2convertintrin.h> directly; include <immintrin.h> instead."
|
|
12
|
+
#endif // __IMMINTRIN_H
|
|
13
|
+
|
|
14
|
+
#ifdef __SSE2__
|
|
15
|
+
|
|
16
|
+
#ifndef __AVX10_2CONVERTINTRIN_H
|
|
17
|
+
#define __AVX10_2CONVERTINTRIN_H
|
|
18
|
+
|
|
19
|
+
/* Define the default attributes for the functions in this file. */
|
|
20
|
+
#define __DEFAULT_FN_ATTRS128 \
|
|
21
|
+
__attribute__((__always_inline__, __nodebug__, __target__("avx10.2-256"), \
|
|
22
|
+
__min_vector_width__(128)))
|
|
23
|
+
#define __DEFAULT_FN_ATTRS256 \
|
|
24
|
+
__attribute__((__always_inline__, __nodebug__, __target__("avx10.2-256"), \
|
|
25
|
+
__min_vector_width__(256)))
|
|
26
|
+
|
|
27
|
+
// clang-format off
|
|
28
|
+
|
|
29
|
+
/// Convert two 128-bit vectors, \a __A and \a __B, containing packed
|
|
30
|
+
/// single-precision (32-bit) floating-point elements to a 128-bit vector
|
|
31
|
+
/// containing FP16 elements.
|
|
32
|
+
///
|
|
33
|
+
/// \code{.operation}
|
|
34
|
+
/// FOR i := 0 to 7
|
|
35
|
+
/// IF i < 4
|
|
36
|
+
/// dst.fp16[i] := convert_fp32_to_fp16(__B.fp32[i])
|
|
37
|
+
/// ELSE
|
|
38
|
+
/// dst.fp16[i] := convert_fp32_to_fp16(__A.fp32[i - 4])
|
|
39
|
+
/// FI
|
|
40
|
+
///
|
|
41
|
+
/// ENDFOR
|
|
42
|
+
///
|
|
43
|
+
/// dst[MAX:128] := 0
|
|
44
|
+
/// \endcode
|
|
45
|
+
///
|
|
46
|
+
/// \headerfile <immintrin.h>
|
|
47
|
+
///
|
|
48
|
+
/// This intrinsic corresponds to the \c VCVT2PS2PHX instruction.
|
|
49
|
+
///
|
|
50
|
+
/// \param __A
|
|
51
|
+
/// A 128-bit vector of [4 x float].
|
|
52
|
+
/// \param __B
|
|
53
|
+
/// A 128-bit vector of [4 x float].
|
|
54
|
+
/// \returns
|
|
55
|
+
/// A 128-bit vector of [8 x fp16]. Lower 4 elements correspond to the
|
|
56
|
+
/// (converted) elements from \a __B; higher order elements correspond to the
|
|
57
|
+
/// (converted) elements from \a __A.
|
|
58
|
+
static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_cvtx2ps_ph(__m128 __A,
|
|
59
|
+
__m128 __B) {
|
|
60
|
+
return (__m128h)__builtin_ia32_vcvt2ps2phx128_mask(
|
|
61
|
+
(__v4sf)__A, (__v4sf)__B, (__v8hf)_mm_setzero_ph(), (__mmask8)(-1));
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/// Convert two 128-bit vectors, \a __A and \a __B, containing packed
|
|
65
|
+
/// single-precision (32-bit) floating-point elements to a 128-bit vector
|
|
66
|
+
/// containing FP16 elements. Merging mask \a __U is used to determine if given
|
|
67
|
+
/// element should be taken from \a __W instead.
|
|
68
|
+
///
|
|
69
|
+
/// \code{.operation}
|
|
70
|
+
/// FOR i := 0 to 7
|
|
71
|
+
/// IF __U[i]
|
|
72
|
+
/// IF i < 4
|
|
73
|
+
/// dst.fp16[i] := convert_fp32_to_fp16(__B.fp32[i])
|
|
74
|
+
/// ELSE
|
|
75
|
+
/// dst.fp16[i] := convert_fp32_to_fp16(__A.fp32[i - 4])
|
|
76
|
+
/// FI
|
|
77
|
+
/// ELSE
|
|
78
|
+
/// dst.fp16[i] := __W.fp16[i]
|
|
79
|
+
/// FI
|
|
80
|
+
/// ENDFOR
|
|
81
|
+
///
|
|
82
|
+
/// dst[MAX:128] := 0
|
|
83
|
+
/// \endcode
|
|
84
|
+
///
|
|
85
|
+
/// \headerfile <immintrin.h>
|
|
86
|
+
///
|
|
87
|
+
/// This intrinsic corresponds to the \c VCVT2PS2PHX instruction.
|
|
88
|
+
///
|
|
89
|
+
/// \param __W
|
|
90
|
+
/// A 128-bit vector of [8 x fp16].
|
|
91
|
+
/// \param __U
|
|
92
|
+
/// A 8-bit merging mask.
|
|
93
|
+
/// \param __A
|
|
94
|
+
/// A 128-bit vector of [4 x float].
|
|
95
|
+
/// \param __B
|
|
96
|
+
/// A 128-bit vector of [4 x float].
|
|
97
|
+
/// \returns
|
|
98
|
+
/// A 128-bit vector of [8 x fp16]. Lower elements correspond to the
|
|
99
|
+
/// (converted) elements from \a __B; higher order elements correspond to the
|
|
100
|
+
/// (converted) elements from \a __A. If corresponding mask bit is not set, then
|
|
101
|
+
/// element from \a __W is taken instead.
|
|
102
|
+
static __inline__ __m128h __DEFAULT_FN_ATTRS128
|
|
103
|
+
_mm_mask_cvtx2ps_ph(__m128h __W, __mmask8 __U, __m128 __A, __m128 __B) {
|
|
104
|
+
return (__m128h)__builtin_ia32_vcvt2ps2phx128_mask(
|
|
105
|
+
(__v4sf)__A, (__v4sf)__B, (__v8hf)__W, (__mmask8)__U);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/// Convert two 128-bit vectors, \a __A and \a __B, containing packed
|
|
109
|
+
/// single-precision (32-bit) floating-point elements to a 128-bit vector
|
|
110
|
+
/// containing FP16 elements. Zeroing mask \a __U is used to determine if given
|
|
111
|
+
/// element should be zeroed instead.
|
|
112
|
+
///
|
|
113
|
+
/// \code{.operation}
|
|
114
|
+
/// FOR i := 0 to 7
|
|
115
|
+
/// IF __U[i]
|
|
116
|
+
/// IF i < 4
|
|
117
|
+
/// dst.fp16[i] := convert_fp32_to_fp16(__B.fp32[i])
|
|
118
|
+
/// ELSE
|
|
119
|
+
/// dst.fp16[i] := convert_fp32_to_fp16(__A.fp32[i - 4])
|
|
120
|
+
/// FI
|
|
121
|
+
/// ELSE
|
|
122
|
+
/// dst.fp16[i] := 0
|
|
123
|
+
/// FI
|
|
124
|
+
/// ENDFOR
|
|
125
|
+
///
|
|
126
|
+
/// dst[MAX:128] := 0
|
|
127
|
+
/// \endcode
|
|
128
|
+
///
|
|
129
|
+
/// \headerfile <immintrin.h>
|
|
130
|
+
///
|
|
131
|
+
/// This intrinsic corresponds to the \c VCVT2PS2PHX instruction.
|
|
132
|
+
///
|
|
133
|
+
/// \param __U
|
|
134
|
+
/// A 8-bit zeroing mask.
|
|
135
|
+
/// \param __A
|
|
136
|
+
/// A 128-bit vector of [4 x float].
|
|
137
|
+
/// \param __B
|
|
138
|
+
/// A 128-bit vector of [4 x float].
|
|
139
|
+
/// \returns
|
|
140
|
+
/// A 128-bit vector of [8 x fp16]. Lower elements correspond to the
|
|
141
|
+
/// (converted) elements from \a __B; higher order elements correspond to the
|
|
142
|
+
/// (converted) elements from \a __A. If corresponding mask bit is not set,
|
|
143
|
+
/// then zero is taken instead.
|
|
144
|
+
static __inline__ __m128h __DEFAULT_FN_ATTRS128
|
|
145
|
+
_mm_maskz_cvtx2ps_ph(__mmask8 __U, __m128 __A, __m128 __B) {
|
|
146
|
+
return (__m128h)__builtin_ia32_vcvt2ps2phx128_mask(
|
|
147
|
+
(__v4sf)__A, (__v4sf)__B, (__v8hf)_mm_setzero_ph(), (__mmask8)__U);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/// Convert two 256-bit vectors, \a __A and \a __B, containing packed
|
|
151
|
+
/// single-precision (32-bit) floating-point elements to a 256-bit vector
|
|
152
|
+
/// containing FP16 elements.
|
|
153
|
+
///
|
|
154
|
+
/// \code{.operation}
|
|
155
|
+
/// FOR i := 0 to 15
|
|
156
|
+
/// IF i < 8
|
|
157
|
+
/// dst.fp16[i] := convert_fp32_to_fp16(__B.fp32[i])
|
|
158
|
+
/// ELSE
|
|
159
|
+
/// dst.fp16[i] := convert_fp32_to_fp16(__A.fp32[i - 8])
|
|
160
|
+
/// FI
|
|
161
|
+
/// ENDFOR
|
|
162
|
+
///
|
|
163
|
+
/// dst[MAX:256] := 0
|
|
164
|
+
/// \endcode
|
|
165
|
+
///
|
|
166
|
+
/// \headerfile <immintrin.h>
|
|
167
|
+
///
|
|
168
|
+
/// This intrinsic corresponds to the \c VCVT2PS2PHX instruction.
|
|
169
|
+
///
|
|
170
|
+
/// \param __A
|
|
171
|
+
/// A 256-bit vector of [8 x float].
|
|
172
|
+
/// \param __B
|
|
173
|
+
/// A 256-bit vector of [8 x float].
|
|
174
|
+
/// \returns
|
|
175
|
+
/// A 256-bit vector of [16 x fp16]. Lower elements correspond to the
|
|
176
|
+
/// (converted) elements from \a __B; higher order elements correspond to the
|
|
177
|
+
/// (converted) elements from \a __A.
|
|
178
|
+
static __inline__ __m256h __DEFAULT_FN_ATTRS256 _mm256_cvtx2ps_ph(__m256 __A,
|
|
179
|
+
__m256 __B) {
|
|
180
|
+
return (__m256h)__builtin_ia32_vcvt2ps2phx256_mask(
|
|
181
|
+
(__v8sf)__A, (__v8sf)__B, (__v16hf)_mm256_setzero_ph(), (__mmask16)(-1));
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/// Convert two 256-bit vectors, \a __A and \a __B, containing packed
|
|
185
|
+
/// single-precision (32-bit) floating-point elements to a 256-bit vector
|
|
186
|
+
/// containing FP16 elements. Merging mask \a __U is used to determine if given
|
|
187
|
+
/// element should be taken from \a __W instead.
|
|
188
|
+
///
|
|
189
|
+
/// \code{.operation}
|
|
190
|
+
/// FOR i := 0 to 15
|
|
191
|
+
/// IF __U[i]
|
|
192
|
+
/// IF i < 8
|
|
193
|
+
/// dst.fp16[i] := convert_fp32_to_fp16(__B.fp32[i])
|
|
194
|
+
/// ELSE
|
|
195
|
+
/// dst.fp16[i] := convert_fp32_to_fp16(__A.fp32[i - 8])
|
|
196
|
+
/// FI
|
|
197
|
+
/// ELSE
|
|
198
|
+
/// dst.fp16[i] := __W.fp16[i]
|
|
199
|
+
/// FI
|
|
200
|
+
/// ENDFOR
|
|
201
|
+
///
|
|
202
|
+
/// dst[MAX:256] := 0
|
|
203
|
+
/// \endcode
|
|
204
|
+
///
|
|
205
|
+
/// \headerfile <immintrin.h>
|
|
206
|
+
///
|
|
207
|
+
/// This intrinsic corresponds to the \c VCVT2PS2PHX instruction.
|
|
208
|
+
///
|
|
209
|
+
/// \param __W
|
|
210
|
+
/// A 256-bit vector of [16 x fp16].
|
|
211
|
+
/// \param __U
|
|
212
|
+
/// A 16-bit merging mask.
|
|
213
|
+
/// \param __A
|
|
214
|
+
/// A 256-bit vector of [8 x float].
|
|
215
|
+
/// \param __B
|
|
216
|
+
/// A 256-bit vector of [8 x float].
|
|
217
|
+
/// \returns
|
|
218
|
+
/// A 256-bit vector of [16 x fp16]. Lower elements correspond to the
|
|
219
|
+
/// (converted) elements from \a __B; higher order elements correspond to the
|
|
220
|
+
/// (converted) elements from \a __A. If corresponding mask bit is not set, then
|
|
221
|
+
/// element from \a __W is taken instead.
|
|
222
|
+
static __inline__ __m256h __DEFAULT_FN_ATTRS256
|
|
223
|
+
_mm256_mask_cvtx2ps_ph(__m256h __W, __mmask16 __U, __m256 __A, __m256 __B) {
|
|
224
|
+
return (__m256h)__builtin_ia32_vcvt2ps2phx256_mask(
|
|
225
|
+
(__v8sf)__A, (__v8sf)__B, (__v16hf)__W, (__mmask16)__U);
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
/// Convert two 256-bit vectors, \a __A and \a __B, containing packed
|
|
229
|
+
/// single-precision (32-bit) floating-point elements to a 256-bit vector
|
|
230
|
+
/// containing FP16 elements. Zeroing mask \a __U is used to determine if given
|
|
231
|
+
/// element should be zeroed instead.
|
|
232
|
+
///
|
|
233
|
+
/// \code{.operation}
|
|
234
|
+
/// FOR i := 0 to 15
|
|
235
|
+
/// IF __U[i]
|
|
236
|
+
/// IF i < 8
|
|
237
|
+
/// dst.fp16[i] := convert_fp32_to_fp16(__B.fp32[i])
|
|
238
|
+
/// ELSE
|
|
239
|
+
/// dst.fp16[i] := convert_fp32_to_fp16(__A.fp32[i - 8])
|
|
240
|
+
/// FI
|
|
241
|
+
/// ELSE
|
|
242
|
+
/// dst.fp16[i] := 0
|
|
243
|
+
/// FI
|
|
244
|
+
/// ENDFOR
|
|
245
|
+
///
|
|
246
|
+
/// dst[MAX:256] := 0
|
|
247
|
+
/// \endcode
|
|
248
|
+
///
|
|
249
|
+
/// \headerfile <immintrin.h>
|
|
250
|
+
///
|
|
251
|
+
/// This intrinsic corresponds to the \c VCVT2PS2PHX instruction.
|
|
252
|
+
///
|
|
253
|
+
/// \param __U
|
|
254
|
+
/// A 16-bit zeroing mask.
|
|
255
|
+
/// \param __A
|
|
256
|
+
/// A 256-bit vector of [8 x float].
|
|
257
|
+
/// \param __B
|
|
258
|
+
/// A 256-bit vector of [8 x float].
|
|
259
|
+
/// \returns
|
|
260
|
+
/// A 256-bit vector of [16 x fp16]. Lower elements correspond to the
|
|
261
|
+
/// (converted) elements from \a __B; higher order elements correspond to the
|
|
262
|
+
/// (converted) elements from \a __A. If corresponding mask bit is not set,
|
|
263
|
+
/// then zero is taken instead.
|
|
264
|
+
static __inline__ __m256h __DEFAULT_FN_ATTRS256
|
|
265
|
+
_mm256_maskz_cvtx2ps_ph(__mmask16 __U, __m256 __A, __m256 __B) {
|
|
266
|
+
return (__m256h)__builtin_ia32_vcvt2ps2phx256_mask(
|
|
267
|
+
(__v8sf)__A, (__v8sf)__B, (__v16hf)_mm256_setzero_ph(), (__mmask16)__U);
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
/// Convert 128-bit vector \a __B containing packed FP16 floating-point elements
|
|
271
|
+
/// to FP8 E5M2 numbers, using conversion biases stored in lower 8 bits of each
|
|
272
|
+
/// 16-bit integer stored in \a __B.
|
|
273
|
+
///
|
|
274
|
+
/// \code{.operation}
|
|
275
|
+
/// FOR i := 0 to 7
|
|
276
|
+
/// dst.bf8[i] := convert_fp16_to_bf8_with_bias(__A.int8[2 * i], __B.fp16[i])
|
|
277
|
+
/// ENDFOR
|
|
278
|
+
///
|
|
279
|
+
/// dst[MAX:64] := 0
|
|
280
|
+
/// \endcode
|
|
281
|
+
///
|
|
282
|
+
/// \headerfile <immintrin.h>
|
|
283
|
+
///
|
|
284
|
+
/// This intrinsic corresponds to the \c VCVTBIASPH2BF8 instruction.
|
|
285
|
+
///
|
|
286
|
+
/// \param __A
|
|
287
|
+
/// A 128-bit vector of [8 x int16].
|
|
288
|
+
/// \param __B
|
|
289
|
+
/// A 128-bit vector of [8 x fp16].
|
|
290
|
+
/// \returns
|
|
291
|
+
/// A 128-bit vector of [16 x bf8]. Lower elements correspond to the
|
|
292
|
+
/// converted elements from \a __B using biases from \a __A; higher order
|
|
293
|
+
/// elements are zeroed.
|
|
294
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS128
|
|
295
|
+
_mm_cvtbiasph_bf8(__m128i __A, __m128h __B) {
|
|
296
|
+
return (__m128i)__builtin_ia32_vcvtbiasph2bf8_128_mask(
|
|
297
|
+
(__v16qi)__A, (__v8hf)__B, (__v16qi)_mm_undefined_si128(), (__mmask8)-1);
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
/// Convert 128-bit vector \a __B containing packed FP16 floating-point elements
|
|
301
|
+
/// to FP8 E5M2 numbers, using conversion biases stored in lower 8 bits of each
|
|
302
|
+
/// 16-bit integer stored in \a __B. Merging mask \a __U is used to determine if
|
|
303
|
+
/// given element should be taken from \a __W instead.
|
|
304
|
+
///
|
|
305
|
+
/// \code{.operation}
|
|
306
|
+
/// FOR i := 0 to 7
|
|
307
|
+
/// IF __U[i]
|
|
308
|
+
/// dst.bf8[i] := convert_fp16_to_bf8_with_bias(__A.int8[2 * i], __B.fp16[i])
|
|
309
|
+
/// ELSE
|
|
310
|
+
/// dst.bf8[i] := __W.bf8[i]
|
|
311
|
+
/// FI
|
|
312
|
+
/// ENDFOR
|
|
313
|
+
///
|
|
314
|
+
/// dst[MAX:64] := 0
|
|
315
|
+
/// \endcode
|
|
316
|
+
///
|
|
317
|
+
/// \headerfile <immintrin.h>
|
|
318
|
+
///
|
|
319
|
+
/// This intrinsic corresponds to the \c VCVTBIASPH2BF8 instruction.
|
|
320
|
+
///
|
|
321
|
+
/// \param __W
|
|
322
|
+
/// A 128-bit vector of [16 x bf8].
|
|
323
|
+
/// \param __U
|
|
324
|
+
/// A 8-bit merging mask.
|
|
325
|
+
/// \param __A
|
|
326
|
+
/// A 128-bit vector of [8 x int16].
|
|
327
|
+
/// \param __B
|
|
328
|
+
/// A 128-bit vector of [8 x fp16].
|
|
329
|
+
/// \returns
|
|
330
|
+
/// A 128-bit vector of [16 x bf8]. Lower elements correspond to the
|
|
331
|
+
/// converted elements from \a __B, using biases from \a __A; higher order
|
|
332
|
+
/// elements are zeroed. If corresponding mask bit is not set, then element
|
|
333
|
+
/// from \a __W is taken instead.
|
|
334
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS128
|
|
335
|
+
_mm_mask_cvtbiasph_bf8(__m128i __W, __mmask8 __U, __m128i __A, __m128h __B) {
|
|
336
|
+
return (__m128i)__builtin_ia32_vcvtbiasph2bf8_128_mask(
|
|
337
|
+
(__v16qi)__A, (__v8hf)__B, (__v16qi)(__m128i)__W, (__mmask8)__U);
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
/// Convert 128-bit vector \a __B containing packed FP16 floating-point elements
|
|
341
|
+
/// to FP8 E5M2 numbers, using conversion biases stored in lower 8 bits of each
|
|
342
|
+
/// 16-bit integer stored in \a __B. Zeroing mask \a __U is used to determine if
|
|
343
|
+
/// given element should be zeroed instead.
|
|
344
|
+
///
|
|
345
|
+
/// \code{.operation}
|
|
346
|
+
/// FOR i := 0 to 7
|
|
347
|
+
/// IF __U[i]
|
|
348
|
+
/// dst.bf8[i] := convert_fp16_to_bf8_with_bias(__A.int8[2 * i], __B.fp16[i])
|
|
349
|
+
/// ELSE
|
|
350
|
+
/// dst.bf8[i] := 0
|
|
351
|
+
/// FI
|
|
352
|
+
/// ENDFOR
|
|
353
|
+
///
|
|
354
|
+
/// dst[MAX:64] := 0
|
|
355
|
+
/// \endcode
|
|
356
|
+
///
|
|
357
|
+
/// \headerfile <immintrin.h>
|
|
358
|
+
///
|
|
359
|
+
/// This intrinsic corresponds to the \c VCVTBIASPH2BF8 instruction.
|
|
360
|
+
///
|
|
361
|
+
/// \param __U
|
|
362
|
+
/// A 8-bit zeroing mask.
|
|
363
|
+
/// \param __A
|
|
364
|
+
/// A 128-bit vector of [8 x int16].
|
|
365
|
+
/// \param __B
|
|
366
|
+
/// A 128-bit vector of [8 x fp16].
|
|
367
|
+
/// \returns
|
|
368
|
+
/// A 128-bit vector of [16 x bf8]. Lower elements correspond to the
|
|
369
|
+
/// converted elements from \a __B, using biases from \a __A; higher order
|
|
370
|
+
/// elements are zeroed. If corresponding mask bit is not set, then element
|
|
371
|
+
/// is zeroed.
|
|
372
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS128
|
|
373
|
+
_mm_maskz_cvtbiasph_bf8(__mmask8 __U, __m128i __A, __m128h __B) {
|
|
374
|
+
return (__m128i)__builtin_ia32_vcvtbiasph2bf8_128_mask(
|
|
375
|
+
(__v16qi)__A, (__v8hf)__B, (__v16qi)(__m128i)_mm_setzero_si128(),
|
|
376
|
+
(__mmask8)__U);
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
/// Convert 256-bit vector \a __B containing packed FP16 floating-point elements
|
|
380
|
+
/// to FP8 E5M2 numbers, using conversion biases stored in lower 8 bits of each
|
|
381
|
+
/// 16-bit integer stored in \a __B.
|
|
382
|
+
///
|
|
383
|
+
/// \code{.operation}
|
|
384
|
+
/// FOR i := 0 to 15
|
|
385
|
+
/// dst.bf8[i] := convert_fp16_to_bf8_with_bias(__A.int8[2 * i], __B.fp16[i])
|
|
386
|
+
/// ENDFOR
|
|
387
|
+
///
|
|
388
|
+
/// dst[MAX:128] := 0
|
|
389
|
+
/// \endcode
|
|
390
|
+
///
|
|
391
|
+
/// \headerfile <immintrin.h>
|
|
392
|
+
///
|
|
393
|
+
/// This intrinsic corresponds to the \c VCVTBIASPH2BF8 instruction.
|
|
394
|
+
///
|
|
395
|
+
/// \param __A
|
|
396
|
+
/// A 256-bit vector of [16 x int16].
|
|
397
|
+
/// \param __B
|
|
398
|
+
/// A 256-bit vector of [16 x fp16].
|
|
399
|
+
/// \returns
|
|
400
|
+
/// A 128-bit vector of [16 x bf8]. Elements correspond to the
|
|
401
|
+
/// converted elements from \a __B using biases from \a __A.
|
|
402
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS256
|
|
403
|
+
_mm256_cvtbiasph_bf8(__m256i __A, __m256h __B) {
|
|
404
|
+
return (__m128i)__builtin_ia32_vcvtbiasph2bf8_256_mask(
|
|
405
|
+
(__v32qi)__A, (__v16hf)__B, (__v16qi)(__m128i)_mm_undefined_si128(),
|
|
406
|
+
(__mmask16)-1);
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
/// Convert 256-bit vector \a __B containing packed FP16 floating-point elements
|
|
410
|
+
/// to FP8 E5M2 numbers, using conversion biases stored in lower 8 bits of each
|
|
411
|
+
/// 16-bit integer stored in \a __B. Merging mask \a __U is used to determine if
|
|
412
|
+
/// given element should be taken from \a __W instead.
|
|
413
|
+
///
|
|
414
|
+
/// \code{.operation}
|
|
415
|
+
/// FOR i := 0 to 15
|
|
416
|
+
/// IF __U[i]
|
|
417
|
+
/// dst.bf8[i] := convert_fp16_to_bf8_with_bias(__A.int8[2 * i], __B.fp16[i])
|
|
418
|
+
/// ELSE
|
|
419
|
+
/// dst.bf8[i] := __W.bf8[i]
|
|
420
|
+
/// FI
|
|
421
|
+
/// ENDFOR
|
|
422
|
+
///
|
|
423
|
+
/// dst[MAX:128] := 0
|
|
424
|
+
/// \endcode
|
|
425
|
+
///
|
|
426
|
+
/// \headerfile <immintrin.h>
|
|
427
|
+
///
|
|
428
|
+
/// This intrinsic corresponds to the \c VCVTBIASPH2BF8 instruction.
|
|
429
|
+
///
|
|
430
|
+
/// \param __W
|
|
431
|
+
/// A 128-bit vector of [16 x bf8].
|
|
432
|
+
/// \param __U
|
|
433
|
+
/// A 16-bit merging mask.
|
|
434
|
+
/// \param __A
|
|
435
|
+
/// A 256-bit vector of [16 x int16].
|
|
436
|
+
/// \param __B
|
|
437
|
+
/// A 256-bit vector of [16 x fp16].
|
|
438
|
+
/// \returns
|
|
439
|
+
/// A 128-bit vector of [16 x bf8]. Elements correspond to the converted
|
|
440
|
+
/// elements from \a __B, using biases from \a __A. If corresponding mask bit
|
|
441
|
+
/// is not set, then element from \a __W is taken instead.
|
|
442
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS256 _mm256_mask_cvtbiasph_bf8(
|
|
443
|
+
__m128i __W, __mmask16 __U, __m256i __A, __m256h __B) {
|
|
444
|
+
return (__m128i)__builtin_ia32_vcvtbiasph2bf8_256_mask(
|
|
445
|
+
(__v32qi)__A, (__v16hf)__B, (__v16qi)(__m128i)__W, (__mmask16)__U);
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
/// Convert 256-bit vector \a __B containing packed FP16 floating-point elements
|
|
449
|
+
/// to FP8 E5M2 numbers, using conversion biases stored in lower 8 bits of each
|
|
450
|
+
/// 16-bit integer stored in \a __B. Zeroing mask \a __U is used to determine if
|
|
451
|
+
/// given element should be zeroed instead.
|
|
452
|
+
///
|
|
453
|
+
/// \code{.operation}
|
|
454
|
+
/// FOR i := 0 to 15
|
|
455
|
+
/// IF __U[i]
|
|
456
|
+
/// dst.bf8[i] := convert_fp16_to_bf8_with_bias(__A.int8[2 * i], __B.fp16[i])
|
|
457
|
+
/// ELSE
|
|
458
|
+
/// dst.bf8[i] := 0
|
|
459
|
+
/// FI
|
|
460
|
+
/// ENDFOR
|
|
461
|
+
///
|
|
462
|
+
/// dst[MAX:128] := 0
|
|
463
|
+
/// \endcode
|
|
464
|
+
///
|
|
465
|
+
/// \headerfile <immintrin.h>
|
|
466
|
+
///
|
|
467
|
+
/// This intrinsic corresponds to the \c VCVTBIASPH2BF8 instruction.
|
|
468
|
+
///
|
|
469
|
+
/// \param __U
|
|
470
|
+
/// A 16-bit zeroing mask.
|
|
471
|
+
/// \param __A
|
|
472
|
+
/// A 256-bit vector of [16 x int16].
|
|
473
|
+
/// \param __B
|
|
474
|
+
/// A 256-bit vector of [16 x fp16].
|
|
475
|
+
/// \returns
|
|
476
|
+
/// A 128-bit vector of [16 x bf8]. Elements correspond to the converted
|
|
477
|
+
/// elements from \a __B, using biases from \a __A. If corresponding mask bit
|
|
478
|
+
/// is not set, then element is zeroed.
|
|
479
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS256
|
|
480
|
+
_mm256_maskz_cvtbiasph_bf8(__mmask16 __U, __m256i __A, __m256h __B) {
|
|
481
|
+
return (__m128i)__builtin_ia32_vcvtbiasph2bf8_256_mask(
|
|
482
|
+
(__v32qi)__A, (__v16hf)__B, (__v16qi)(__m128i)_mm_setzero_si128(),
|
|
483
|
+
(__mmask16)__U);
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
/// Convert 128-bit vector \a __B containing packed FP16 floating-point elements
|
|
487
|
+
/// to FP8 E5M2 numbers, using conversion biases stored in lower 8 bits of each
|
|
488
|
+
/// 16-bit integer stored in \a __B. Results are saturated.
|
|
489
|
+
///
|
|
490
|
+
/// \code{.operation}
|
|
491
|
+
/// FOR i := 0 to 7
|
|
492
|
+
/// dst.bf8[i] := convert_fp16_to_bf8_with_bias_saturate(__A.int8[2 * i], __B.fp16[i])
|
|
493
|
+
/// ENDFOR
|
|
494
|
+
///
|
|
495
|
+
/// dst[MAX:64] := 0
|
|
496
|
+
/// \endcode
|
|
497
|
+
///
|
|
498
|
+
/// \headerfile <immintrin.h>
|
|
499
|
+
///
|
|
500
|
+
/// This intrinsic corresponds to the \c VCVTBIASPH2BF8 instruction.
|
|
501
|
+
///
|
|
502
|
+
/// \param __A
|
|
503
|
+
/// A 128-bit vector of [8 x int16].
|
|
504
|
+
/// \param __B
|
|
505
|
+
/// A 128-bit vector of [8 x fp16].
|
|
506
|
+
/// \returns
|
|
507
|
+
/// A 128-bit vector of [16 x bf8]. Lower elements correspond to the
|
|
508
|
+
/// converted elements from \a __B using biases from \a __A; higher order
|
|
509
|
+
/// elements are zeroed.
|
|
510
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS128
|
|
511
|
+
_mm_cvts_biasph_bf8(__m128i __A, __m128h __B) {
|
|
512
|
+
return (__m128i)__builtin_ia32_vcvtbiasph2bf8s_128_mask(
|
|
513
|
+
(__v16qi)__A, (__v8hf)__B, (__v16qi)_mm_undefined_si128(), (__mmask8)-1);
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
/// Convert 128-bit vector \a __B containing packed FP16 floating-point elements
|
|
517
|
+
/// to FP8 E5M2 numbers, using conversion biases stored in lower 8 bits of each
|
|
518
|
+
/// 16-bit integer stored in \a __B. Results are saturated. Merging mask \a __U
|
|
519
|
+
/// is used to determine if given element should be taken from \a __W instead.
|
|
520
|
+
///
|
|
521
|
+
/// \code{.operation}
|
|
522
|
+
/// FOR i := 0 to 7
|
|
523
|
+
/// IF __U[i]
|
|
524
|
+
/// dst.bf8[i] := convert_fp16_to_bf8_with_bias_saturate(__A.int8[2 * i], __B.fp16[i])
|
|
525
|
+
/// ELSE
|
|
526
|
+
/// dst.bf8[i] := __W.bf8[i]
|
|
527
|
+
/// FI
|
|
528
|
+
/// ENDFOR
|
|
529
|
+
///
|
|
530
|
+
/// dst[MAX:64] := 0
|
|
531
|
+
/// \endcode
|
|
532
|
+
///
|
|
533
|
+
/// \headerfile <immintrin.h>
|
|
534
|
+
///
|
|
535
|
+
/// This intrinsic corresponds to the \c VCVTBIASPH2BF8S instruction.
|
|
536
|
+
///
|
|
537
|
+
/// \param __W
|
|
538
|
+
/// A 128-bit vector of [16 x bf8].
|
|
539
|
+
/// \param __U
|
|
540
|
+
/// A 8-bit merging mask.
|
|
541
|
+
/// \param __A
|
|
542
|
+
/// A 128-bit vector of [8 x int16].
|
|
543
|
+
/// \param __B
|
|
544
|
+
/// A 128-bit vector of [8 x fp16].
|
|
545
|
+
/// \returns
|
|
546
|
+
/// A 128-bit vector of [16 x bf8]. Lower elements correspond to the
|
|
547
|
+
/// converted elements from \a __B, using biases from \a __A; higher order
|
|
548
|
+
/// elements are zeroed. If corresponding mask bit is not set, then element
|
|
549
|
+
/// from \a __W is taken instead.
|
|
550
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_mask_cvts_biasph_bf8(__m128i
|
|
551
|
+
__W, __mmask8 __U, __m128i __A, __m128h __B) { return
|
|
552
|
+
(__m128i)__builtin_ia32_vcvtbiasph2bf8s_128_mask( (__v16qi)__A,
|
|
553
|
+
(__v8hf)__B, (__v16qi)(__m128i)__W, (__mmask8)__U); }
|
|
554
|
+
|
|
555
|
+
/// Convert 128-bit vector \a __B containing packed FP16 floating-point elements
|
|
556
|
+
/// to FP8 E5M2 numbers, using conversion biases stored in lower 8 bits of each
|
|
557
|
+
/// 16-bit integer stored in \a __B. Results are saturated. Zeroing mask \a __U
|
|
558
|
+
/// is used to determine if given element should be zeroed instead.
|
|
559
|
+
///
|
|
560
|
+
/// \code{.operation}
|
|
561
|
+
/// FOR i := 0 to 7
|
|
562
|
+
/// IF __U[i]
|
|
563
|
+
/// dst.bf8[i] := convert_fp16_to_bf8_with_bias_saturate(__A.int8[2 * i], __B.fp16[i])
|
|
564
|
+
/// ELSE
|
|
565
|
+
/// dst.bf8[i] := 0
|
|
566
|
+
/// FI
|
|
567
|
+
/// ENDFOR
|
|
568
|
+
///
|
|
569
|
+
/// dst[MAX:64] := 0
|
|
570
|
+
/// \endcode
|
|
571
|
+
///
|
|
572
|
+
/// \headerfile <immintrin.h>
|
|
573
|
+
///
|
|
574
|
+
/// This intrinsic corresponds to the \c VCVTBIASPH2BF8S instruction.
|
|
575
|
+
///
|
|
576
|
+
/// \param __U
|
|
577
|
+
/// A 8-bit zeroing mask.
|
|
578
|
+
/// \param __A
|
|
579
|
+
/// A 128-bit vector of [8 x int16].
|
|
580
|
+
/// \param __B
|
|
581
|
+
/// A 128-bit vector of [8 x fp16].
|
|
582
|
+
/// \returns
|
|
583
|
+
/// A 128-bit vector of [16 x bf8]. Lower elements correspond to the
|
|
584
|
+
/// converted elements from \a __B, using biases from \a __A; higher order
|
|
585
|
+
/// elements are zeroed. If corresponding mask bit is not set, then element
|
|
586
|
+
/// is zeroed.
|
|
587
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS128
|
|
588
|
+
_mm_maskz_cvts_biasph_bf8(__mmask8 __U, __m128i __A, __m128h __B) {
|
|
589
|
+
return (__m128i)__builtin_ia32_vcvtbiasph2bf8s_128_mask(
|
|
590
|
+
(__v16qi)__A, (__v8hf)__B, (__v16qi)(__m128i)_mm_setzero_si128(),
|
|
591
|
+
(__mmask8)__U);
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
|
|
595
|
+
/// Convert 256-bit vector \a __B containing packed FP16 floating-point elements
|
|
596
|
+
/// to FP8 E5M2 numbers, using conversion biases stored in lower 8 bits of each
|
|
597
|
+
/// 16-bit integer stored in \a __B. Results are saturated.
|
|
598
|
+
///
|
|
599
|
+
/// \code{.operation}
|
|
600
|
+
/// FOR i := 0 to 15
|
|
601
|
+
/// dst.bf8[i] := convert_fp16_to_bf8_with_bias_saturate(__A.int8[2 * i], __B.fp16[i])
|
|
602
|
+
/// ENDFOR
|
|
603
|
+
///
|
|
604
|
+
/// dst[MAX:128] := 0
|
|
605
|
+
/// \endcode
|
|
606
|
+
///
|
|
607
|
+
/// \headerfile <immintrin.h>
|
|
608
|
+
///
|
|
609
|
+
/// This intrinsic corresponds to the \c VCVTBIASPH2BF8S instruction.
|
|
610
|
+
///
|
|
611
|
+
/// \param __A
|
|
612
|
+
/// A 256-bit vector of [16 x int16].
|
|
613
|
+
/// \param __B
|
|
614
|
+
/// A 256-bit vector of [16 x fp16].
|
|
615
|
+
/// \returns
|
|
616
|
+
/// A 128-bit vector of [16 x bf8]. Elements correspond to the
|
|
617
|
+
/// converted elements from \a __B using biases from \a __A.
|
|
618
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS256
|
|
619
|
+
_mm256_cvts_biasph_bf8(__m256i __A, __m256h __B) {
|
|
620
|
+
return (__m128i)__builtin_ia32_vcvtbiasph2bf8s_256_mask(
|
|
621
|
+
(__v32qi)__A, (__v16hf)__B, (__v16qi)(__m128i)_mm_undefined_si128(),
|
|
622
|
+
(__mmask16)-1);
|
|
623
|
+
}
|
|
624
|
+
|
|
625
|
+
/// Convert 256-bit vector \a __B containing packed FP16 floating-point elements
|
|
626
|
+
/// to FP8 E5M2 numbers, using conversion biases stored in lower 8 bits of each
|
|
627
|
+
/// 16-bit integer stored in \a __B. Results are saturated. Merging mask \a __U
|
|
628
|
+
/// is used to determine if given element should be taken from \a __W instead.
|
|
629
|
+
///
|
|
630
|
+
/// \code{.operation}
|
|
631
|
+
/// FOR i := 0 to 15
|
|
632
|
+
/// IF __U[i]
|
|
633
|
+
/// dst.bf8[i] := convert_fp16_to_bf8_with_bias_saturate(__A.int8[2 * i], __B.fp16[i])
|
|
634
|
+
/// ELSE
|
|
635
|
+
/// dst.bf8[i] := __W.bf8[i]
|
|
636
|
+
/// FI
|
|
637
|
+
/// ENDFOR
|
|
638
|
+
///
|
|
639
|
+
/// dst[MAX:128] := 0
|
|
640
|
+
/// \endcode
|
|
641
|
+
///
|
|
642
|
+
/// \headerfile <immintrin.h>
|
|
643
|
+
///
|
|
644
|
+
/// This intrinsic corresponds to the \c VCVTBIASPH2BF8S instruction.
|
|
645
|
+
///
|
|
646
|
+
/// \param __W
|
|
647
|
+
/// A 128-bit vector of [16 x bf8].
|
|
648
|
+
/// \param __U
|
|
649
|
+
/// A 16-bit merging mask.
|
|
650
|
+
/// \param __A
|
|
651
|
+
/// A 256-bit vector of [16 x int16].
|
|
652
|
+
/// \param __B
|
|
653
|
+
/// A 256-bit vector of [16 x fp16].
|
|
654
|
+
/// \returns
|
|
655
|
+
/// A 128-bit vector of [16 x bf8]. Elements correspond to the converted
|
|
656
|
+
/// elements from \a __B, using biases from \a __A. If corresponding mask bit
|
|
657
|
+
/// is not set, then element from \a __W is taken instead.
|
|
658
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS256 _mm256_mask_cvts_biasph_bf8(
|
|
659
|
+
__m128i __W, __mmask16 __U, __m256i __A, __m256h __B) {
|
|
660
|
+
return (__m128i)__builtin_ia32_vcvtbiasph2bf8s_256_mask(
|
|
661
|
+
(__v32qi)__A, (__v16hf)__B, (__v16qi)(__m128i)__W, (__mmask16)__U);
|
|
662
|
+
}
|
|
663
|
+
|
|
664
|
+
/// Convert 256-bit vector \a __B containing packed FP16 floating-point elements
|
|
665
|
+
/// to FP8 E5M2 numbers, using conversion biases stored in lower 8 bits of each
|
|
666
|
+
/// 16-bit integer stored in \a __B. Results are saturated. Zeroing mask \a __U
|
|
667
|
+
/// is used to determine if given element should be zeroed instead.
|
|
668
|
+
///
|
|
669
|
+
/// \code{.operation}
|
|
670
|
+
/// FOR i := 0 to 15
|
|
671
|
+
/// IF __U[i]
|
|
672
|
+
/// dst.bf8[i] := convert_fp16_to_bf8_with_bias_saturate(__A.int8[2 * i], __B.fp16[i])
|
|
673
|
+
/// ELSE
|
|
674
|
+
/// dst.bf8[i] := 0
|
|
675
|
+
/// FI
|
|
676
|
+
/// ENDFOR
|
|
677
|
+
///
|
|
678
|
+
/// dst[MAX:128] := 0
|
|
679
|
+
/// \endcode
|
|
680
|
+
///
|
|
681
|
+
/// \headerfile <immintrin.h>
|
|
682
|
+
///
|
|
683
|
+
/// This intrinsic corresponds to the \c VCVTBIASPH2BF8S instruction.
|
|
684
|
+
///
|
|
685
|
+
/// \param __U
|
|
686
|
+
/// A 16-bit zeroing mask.
|
|
687
|
+
/// \param __A
|
|
688
|
+
/// A 256-bit vector of [16 x int16].
|
|
689
|
+
/// \param __B
|
|
690
|
+
/// A 256-bit vector of [16 x fp16].
|
|
691
|
+
/// \returns
|
|
692
|
+
/// A 128-bit vector of [16 x bf8]. Elements correspond to the converted
|
|
693
|
+
/// elements from \a __B, using biases from \a __A. If corresponding mask bit
|
|
694
|
+
/// is not set, then element is zeroed.
|
|
695
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS256
|
|
696
|
+
_mm256_maskz_cvts_biasph_bf8(__mmask16 __U, __m256i __A, __m256h __B) {
|
|
697
|
+
return (__m128i)__builtin_ia32_vcvtbiasph2bf8s_256_mask(
|
|
698
|
+
(__v32qi)__A, (__v16hf)__B, (__v16qi)(__m128i)_mm_setzero_si128(),
|
|
699
|
+
(__mmask16)__U);
|
|
700
|
+
}
|
|
701
|
+
|
|
702
|
+
/// Convert 128-bit vector \a __B containing packed FP16 floating-point elements
|
|
703
|
+
/// to FP8 E4M3 numbers, using conversion biases stored in lower 8 bits of each
|
|
704
|
+
/// 16-bit integer stored in \a __B.
|
|
705
|
+
///
|
|
706
|
+
/// \code{.operation}
|
|
707
|
+
/// FOR i := 0 to 7
|
|
708
|
+
/// dst.hf8[i] := convert_fp16_to_hf8_with_bias(__A.int8[2 * i], __B.fp16[i])
|
|
709
|
+
/// ENDFOR
|
|
710
|
+
///
|
|
711
|
+
/// dst[MAX:64] := 0
|
|
712
|
+
/// \endcode
|
|
713
|
+
///
|
|
714
|
+
/// \headerfile <immintrin.h>
|
|
715
|
+
///
|
|
716
|
+
/// This intrinsic corresponds to the \c VCVTBIASPH2HF8 instruction.
|
|
717
|
+
///
|
|
718
|
+
/// \param __A
|
|
719
|
+
/// A 128-bit vector of [8 x int16].
|
|
720
|
+
/// \param __B
|
|
721
|
+
/// A 128-bit vector of [8 x fp16].
|
|
722
|
+
/// \returns
|
|
723
|
+
/// A 128-bit vector of [16 x hf8]. Lower elements correspond to the
|
|
724
|
+
/// converted elements from \a __B using biases from \a __A; higher order
|
|
725
|
+
/// elements are zeroed.
|
|
726
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS128
|
|
727
|
+
_mm_cvtbiasph_hf8(__m128i __A, __m128h __B) {
|
|
728
|
+
return (__m128i)__builtin_ia32_vcvtbiasph2hf8_128_mask(
|
|
729
|
+
(__v16qi)__A, (__v8hf)__B, (__v16qi)_mm_undefined_si128(), (__mmask8)-1);
|
|
730
|
+
}
|
|
731
|
+
|
|
732
|
+
/// Convert 128-bit vector \a __B containing packed FP16 floating-point elements
|
|
733
|
+
/// to FP8 E4M3 numbers, using conversion biases stored in lower 8 bits of each
|
|
734
|
+
/// 16-bit integer stored in \a __B. Merging mask \a __U is used to determine if
|
|
735
|
+
/// given element should be taken from \a __W instead.
|
|
736
|
+
///
|
|
737
|
+
/// \code{.operation}
|
|
738
|
+
/// FOR i := 0 to 7
|
|
739
|
+
/// IF __U[i]
|
|
740
|
+
/// dst.hf8[i] := convert_fp16_to_hf8_with_bias(__A.int8[2 * i], __B.fp16[i])
|
|
741
|
+
/// ELSE
|
|
742
|
+
/// dst.hf8[i] := __W.hf8[i]
|
|
743
|
+
/// FI
|
|
744
|
+
/// ENDFOR
|
|
745
|
+
///
|
|
746
|
+
/// dst[MAX:64] := 0
|
|
747
|
+
/// \endcode
|
|
748
|
+
///
|
|
749
|
+
/// \headerfile <immintrin.h>
|
|
750
|
+
///
|
|
751
|
+
/// This intrinsic corresponds to the \c VCVTBIASPH2HF8 instruction.
|
|
752
|
+
///
|
|
753
|
+
/// \param __W
|
|
754
|
+
/// A 128-bit vector of [16 x hf8].
|
|
755
|
+
/// \param __U
|
|
756
|
+
/// A 8-bit merging mask.
|
|
757
|
+
/// \param __A
|
|
758
|
+
/// A 128-bit vector of [8 x int16].
|
|
759
|
+
/// \param __B
|
|
760
|
+
/// A 128-bit vector of [8 x fp16].
|
|
761
|
+
/// \returns
|
|
762
|
+
/// A 128-bit vector of [16 x hf8]. Lower elements correspond to the
|
|
763
|
+
/// converted elements from \a __B, using biases from \a __A; higher order
|
|
764
|
+
/// elements are zeroed. If corresponding mask bit is not set, then element
|
|
765
|
+
/// from \a __W is taken instead.
|
|
766
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS128
|
|
767
|
+
_mm_mask_cvtbiasph_hf8(__m128i __W, __mmask8 __U, __m128i __A, __m128h __B) {
|
|
768
|
+
return (__m128i)__builtin_ia32_vcvtbiasph2hf8_128_mask(
|
|
769
|
+
(__v16qi)__A, (__v8hf)__B, (__v16qi)(__m128i)__W, (__mmask8)__U);
|
|
770
|
+
}
|
|
771
|
+
|
|
772
|
+
/// Convert 128-bit vector \a __B containing packed FP16 floating-point elements
|
|
773
|
+
/// to FP8 E4M3 numbers, using conversion biases stored in lower 8 bits of each
|
|
774
|
+
/// 16-bit integer stored in \a __B. Zeroing mask \a __U is used to determine if
|
|
775
|
+
/// given element should be zeroed instead.
|
|
776
|
+
///
|
|
777
|
+
/// \code{.operation}
|
|
778
|
+
/// FOR i := 0 to 7
|
|
779
|
+
/// IF __U[i]
|
|
780
|
+
/// dst.hf8[i] := convert_fp16_to_hf8_with_bias(__A.int8[2 * i], __B.fp16[i])
|
|
781
|
+
/// ELSE
|
|
782
|
+
/// dst.hf8[i] := 0
|
|
783
|
+
/// FI
|
|
784
|
+
/// ENDFOR
|
|
785
|
+
///
|
|
786
|
+
/// dst[MAX:64] := 0
|
|
787
|
+
/// \endcode
|
|
788
|
+
///
|
|
789
|
+
/// \headerfile <immintrin.h>
|
|
790
|
+
///
|
|
791
|
+
/// This intrinsic corresponds to the \c VCVTBIASPH2HF8 instruction.
|
|
792
|
+
///
|
|
793
|
+
/// \param __U
|
|
794
|
+
/// A 8-bit zeroing mask.
|
|
795
|
+
/// \param __A
|
|
796
|
+
/// A 128-bit vector of [8 x int16].
|
|
797
|
+
/// \param __B
|
|
798
|
+
/// A 128-bit vector of [8 x fp16].
|
|
799
|
+
/// \returns
|
|
800
|
+
/// A 128-bit vector of [16 x hf8]. Lower elements correspond to the
|
|
801
|
+
/// converted elements from \a __B, using biases from \a __A; higher order
|
|
802
|
+
/// elements are zeroed. If corresponding mask bit is not set, then element
|
|
803
|
+
/// is zeroed.
|
|
804
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS128
|
|
805
|
+
_mm_maskz_cvtbiasph_hf8(__mmask8 __U, __m128i __A, __m128h __B) {
|
|
806
|
+
return (__m128i)__builtin_ia32_vcvtbiasph2hf8_128_mask(
|
|
807
|
+
(__v16qi)__A, (__v8hf)__B, (__v16qi)(__m128i)_mm_setzero_si128(),
|
|
808
|
+
(__mmask8)__U);
|
|
809
|
+
}
|
|
810
|
+
|
|
811
|
+
/// Convert 256-bit vector \a __B containing packed FP16 floating-point elements
|
|
812
|
+
/// to FP8 E4M3 numbers, using conversion biases stored in lower 8 bits of each
|
|
813
|
+
/// 16-bit integer stored in \a __B.
|
|
814
|
+
///
|
|
815
|
+
/// \code{.operation}
|
|
816
|
+
/// FOR i := 0 to 15
|
|
817
|
+
/// dst.hf8[i] := convert_fp16_to_hf8_with_bias(__A.int8[2 * i], __B.fp16[i])
|
|
818
|
+
/// ENDFOR
|
|
819
|
+
///
|
|
820
|
+
/// dst[MAX:128] := 0
|
|
821
|
+
/// \endcode
|
|
822
|
+
///
|
|
823
|
+
/// \headerfile <immintrin.h>
|
|
824
|
+
///
|
|
825
|
+
/// This intrinsic corresponds to the \c VCVTBIASPH2HF8 instruction.
|
|
826
|
+
///
|
|
827
|
+
/// \param __A
|
|
828
|
+
/// A 256-bit vector of [16 x half].
|
|
829
|
+
/// \param __B
|
|
830
|
+
/// A 256-bit vector of [16 x i16].
|
|
831
|
+
/// \returns
|
|
832
|
+
/// A 128-bit vector of [16 x hf8]. Elements correspond to the
|
|
833
|
+
/// converted elements from \a __B using biases from \a __A.
|
|
834
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS256
|
|
835
|
+
_mm256_cvtbiasph_hf8(__m256i __A, __m256h __B) {
|
|
836
|
+
return (__m128i)__builtin_ia32_vcvtbiasph2hf8_256_mask(
|
|
837
|
+
(__v32qi)__A, (__v16hf)__B, (__v16qi)(__m128i)_mm_undefined_si128(),
|
|
838
|
+
(__mmask16)-1);
|
|
839
|
+
}
|
|
840
|
+
|
|
841
|
+
/// Convert 256-bit vector \a __B containing packed FP16 floating-point elements
|
|
842
|
+
/// to FP8 E4M3 numbers, using conversion biases stored in lower 8 bits of each
|
|
843
|
+
/// 16-bit integer stored in \a __B. Merging mask \a __U is used to determine if
|
|
844
|
+
/// given element should be taken from \a __W instead.
|
|
845
|
+
///
|
|
846
|
+
/// \code{.operation}
|
|
847
|
+
/// FOR i := 0 to 15
|
|
848
|
+
/// IF __U[i]
|
|
849
|
+
/// dst.hf8[i] := convert_fp16_to_hf8_with_bias(__A.int8[2 * i], __B.fp16[i])
|
|
850
|
+
/// ELSE
|
|
851
|
+
/// dst.hf8[i] := __W.hf8[i]
|
|
852
|
+
/// FI
|
|
853
|
+
/// ENDFOR
|
|
854
|
+
///
|
|
855
|
+
/// dst[MAX:128] := 0
|
|
856
|
+
/// \endcode
|
|
857
|
+
///
|
|
858
|
+
/// \headerfile <immintrin.h>
|
|
859
|
+
///
|
|
860
|
+
/// This intrinsic corresponds to the \c VCVTBIASPH2HF8 instruction.
|
|
861
|
+
///
|
|
862
|
+
/// \param __W
|
|
863
|
+
/// A 128-bit vector of [16 x hf8].
|
|
864
|
+
/// \param __U
|
|
865
|
+
/// A 16-bit merging mask.
|
|
866
|
+
/// \param __A
|
|
867
|
+
/// A 256-bit vector of [16 x int16].
|
|
868
|
+
/// \param __B
|
|
869
|
+
/// A 256-bit vector of [16 x fp16].
|
|
870
|
+
/// \returns
|
|
871
|
+
/// A 128-bit vector of [16 x hf8]. Elements correspond to the converted
|
|
872
|
+
/// elements from \a __B, using biases from \a __A. If corresponding mask bit
|
|
873
|
+
/// is not set, then element from \a __W is taken instead.
|
|
874
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS256 _mm256_mask_cvtbiasph_hf8(
|
|
875
|
+
__m128i __W, __mmask16 __U, __m256i __A, __m256h __B) {
|
|
876
|
+
return (__m128i)__builtin_ia32_vcvtbiasph2hf8_256_mask(
|
|
877
|
+
(__v32qi)__A, (__v16hf)__B, (__v16qi)(__m128i)__W, (__mmask16)__U);
|
|
878
|
+
}
|
|
879
|
+
|
|
880
|
+
/// Convert 256-bit vector \a __B containing packed FP16 floating-point elements
|
|
881
|
+
/// to FP8 E4M3 numbers, using conversion biases stored in lower 8 bits of each
|
|
882
|
+
/// 16-bit integer stored in \a __B. Zeroing mask \a __U is used to determine if
|
|
883
|
+
/// given element should be taken zeroed instead.
|
|
884
|
+
///
|
|
885
|
+
/// \code{.operation}
|
|
886
|
+
/// FOR i := 0 to 15
|
|
887
|
+
/// IF __U[i]
|
|
888
|
+
/// dst.hf8[i] := convert_fp16_to_hf8_with_bias(__A.int8[2 * i], __B.fp16[i])
|
|
889
|
+
/// ELSE
|
|
890
|
+
/// dst.hf8[i] := 0
|
|
891
|
+
/// FI
|
|
892
|
+
/// ENDFOR
|
|
893
|
+
///
|
|
894
|
+
/// dst[MAX:128] := 0
|
|
895
|
+
/// \endcode
|
|
896
|
+
///
|
|
897
|
+
/// \headerfile <immintrin.h>
|
|
898
|
+
///
|
|
899
|
+
/// This intrinsic corresponds to the \c VCVTBIASPH2HF8 instruction.
|
|
900
|
+
///
|
|
901
|
+
/// \param __U
|
|
902
|
+
/// A 16-bit zeroing mask.
|
|
903
|
+
/// \param __A
|
|
904
|
+
/// A 256-bit vector of [16 x half].
|
|
905
|
+
/// \param __B
|
|
906
|
+
/// A 256-bit vector of [16 x i16].
|
|
907
|
+
/// \returns
|
|
908
|
+
/// A 128-bit vector of [16 x hf8]. Elements correspond to the converted
|
|
909
|
+
/// elements from \a __B, using biases from \a __A. If corresponding mask bit
|
|
910
|
+
/// is not set, then element is zeroed.
|
|
911
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS256
|
|
912
|
+
_mm256_maskz_cvtbiasph_hf8(__mmask16 __U, __m256i __A, __m256h __B) {
|
|
913
|
+
return (__m128i)__builtin_ia32_vcvtbiasph2hf8_256_mask(
|
|
914
|
+
(__v32qi)__A, (__v16hf)__B, (__v16qi)(__m128i)_mm_setzero_si128(),
|
|
915
|
+
(__mmask16)__U);
|
|
916
|
+
}
|
|
917
|
+
|
|
918
|
+
/// Convert 128-bit vector \a __B containing packed FP16 floating-point elements
|
|
919
|
+
/// to FP8 E4M3 numbers, using conversion biases stored in lower 8 bits of each
|
|
920
|
+
/// 16-bit integer stored in \a __B. Results are saturated.
|
|
921
|
+
///
|
|
922
|
+
/// \code{.operation}
|
|
923
|
+
/// FOR i := 0 to 7
|
|
924
|
+
/// dst.hf8[i] := convert_fp16_to_hf8_with_bias_saturate(__A.int8[2 * i], __B.fp16[i])
|
|
925
|
+
/// ENDFOR
|
|
926
|
+
///
|
|
927
|
+
/// dst[MAX:64] := 0
|
|
928
|
+
/// \endcode
|
|
929
|
+
///
|
|
930
|
+
/// \headerfile <immintrin.h>
|
|
931
|
+
///
|
|
932
|
+
/// This intrinsic corresponds to the \c VCVTBIASPH2HF8S`instruction.
|
|
933
|
+
///
|
|
934
|
+
/// \param __A
|
|
935
|
+
/// A 128-bit vector of [8 x int16].
|
|
936
|
+
/// \param __B
|
|
937
|
+
/// A 128-bit vector of [8 x fp16].
|
|
938
|
+
/// \returns
|
|
939
|
+
/// A 128-bit vector of [16 x hf8]. Lower elements correspond to the
|
|
940
|
+
/// converted elements from \a __B using biases from \a __A; higher order
|
|
941
|
+
/// elements are zeroed.
|
|
942
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS128
|
|
943
|
+
_mm_cvts_biasph_hf8(__m128i __A, __m128h __B) {
|
|
944
|
+
return (__m128i)__builtin_ia32_vcvtbiasph2hf8s_128_mask(
|
|
945
|
+
(__v16qi)__A, (__v8hf)__B, (__v16qi)_mm_undefined_si128(), (__mmask8)-1);
|
|
946
|
+
}
|
|
947
|
+
|
|
948
|
+
/// Convert 128-bit vector \a __B containing packed FP16 floating-point elements
|
|
949
|
+
/// to FP8 E4M3 numbers, using conversion biases stored in lower 8 bits of each
|
|
950
|
+
/// 16-bit integer stored in \a __B. Results are saturated. Merging mask \a __U
|
|
951
|
+
/// is used to determine if given element should be taken from \a __W instead.
|
|
952
|
+
///
|
|
953
|
+
/// \code{.operation}
|
|
954
|
+
/// FOR i := 0 to 7
|
|
955
|
+
/// IF __U[i]
|
|
956
|
+
/// dst.hf8[i] := convert_fp16_to_hf8_with_bias_saturate(__A.int8[2 * i], __B.fp16[i])
|
|
957
|
+
/// ELSE
|
|
958
|
+
/// dst.hf8[i] := __W.hf8[i]
|
|
959
|
+
/// FI
|
|
960
|
+
/// ENDFOR
|
|
961
|
+
///
|
|
962
|
+
/// dst[MAX:64] := 0
|
|
963
|
+
/// \endcode
|
|
964
|
+
///
|
|
965
|
+
/// \headerfile <immintrin.h>
|
|
966
|
+
///
|
|
967
|
+
/// This intrinsic corresponds to the \c VCVTBIASPH2HF8S instruction.
|
|
968
|
+
///
|
|
969
|
+
/// \param __W
|
|
970
|
+
/// A 128-bit vector of [16 x hf8].
|
|
971
|
+
/// \param __U
|
|
972
|
+
/// A 8-bit merging mask.
|
|
973
|
+
/// \param __A
|
|
974
|
+
/// A 128-bit vector of [8 x int16].
|
|
975
|
+
/// \param __B
|
|
976
|
+
/// A 128-bit vector of [8 x fp16].
|
|
977
|
+
/// \returns
|
|
978
|
+
/// A 128-bit vector of [16 x hf8]. Lower elements correspond to the
|
|
979
|
+
/// converted elements from \a __B, using biases from \a __A; higher order
|
|
980
|
+
/// elements are zeroed. If corresponding mask bit is not set, then element
|
|
981
|
+
/// from \a __W is taken instead.
|
|
982
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS128
|
|
983
|
+
_mm_mask_cvts_biasph_hf8(__m128i __W, __mmask8 __U, __m128i __A, __m128h __B) {
|
|
984
|
+
return (__m128i)__builtin_ia32_vcvtbiasph2hf8s_128_mask(
|
|
985
|
+
(__v16qi)__A, (__v8hf)__B, (__v16qi)(__m128i)__W, (__mmask8)__U);
|
|
986
|
+
}
|
|
987
|
+
|
|
988
|
+
/// Convert 128-bit vector \a __B containing packed FP16 floating-point elements
|
|
989
|
+
/// to FP8 E4M3 numbers, using conversion biases stored in lower 8 bits of each
|
|
990
|
+
/// 16-bit integer stored in \a __B. Results are saturated. Zeroing mask \a __U
|
|
991
|
+
/// is used to determine if given element should be zeroed instead.
|
|
992
|
+
///
|
|
993
|
+
/// \code{.operation}
|
|
994
|
+
/// FOR i := 0 to 7
|
|
995
|
+
/// IF __U[i]
|
|
996
|
+
/// dst.hf8[i] := convert_fp16_to_hf8_with_bias_saturate(__A.int8[2 * i], __B.fp16[i])
|
|
997
|
+
/// ELSE
|
|
998
|
+
/// dst.hf8[i] := 0
|
|
999
|
+
/// FI
|
|
1000
|
+
/// ENDFOR
|
|
1001
|
+
///
|
|
1002
|
+
/// dst[MAX:64] := 0
|
|
1003
|
+
/// \endcode
|
|
1004
|
+
///
|
|
1005
|
+
/// \headerfile <immintrin.h>
|
|
1006
|
+
///
|
|
1007
|
+
/// This intrinsic corresponds to the \c VCVTBIASPH2HF8S instruction.
|
|
1008
|
+
///
|
|
1009
|
+
/// \param __U
|
|
1010
|
+
/// A 8-bit zeroing mask.
|
|
1011
|
+
/// \param __A
|
|
1012
|
+
/// A 128-bit vector of [8 x int16].
|
|
1013
|
+
/// \param __B
|
|
1014
|
+
/// A 128-bit vector of [8 x fp16].
|
|
1015
|
+
/// \returns
|
|
1016
|
+
/// A 128-bit vector of [16 x hf8]. Lower elements correspond to the
|
|
1017
|
+
/// converted elements from \a __B, using biases from \a __A; higher order
|
|
1018
|
+
/// elements are zeroed. If corresponding mask bit is not set, then element
|
|
1019
|
+
/// is zeroed.
|
|
1020
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS128
|
|
1021
|
+
_mm_maskz_cvts_biasph_hf8(__mmask8 __U, __m128i __A, __m128h __B) {
|
|
1022
|
+
return (__m128i)__builtin_ia32_vcvtbiasph2hf8s_128_mask(
|
|
1023
|
+
(__v16qi)__A, (__v8hf)__B, (__v16qi)(__m128i)_mm_setzero_si128(),
|
|
1024
|
+
(__mmask8)__U);
|
|
1025
|
+
}
|
|
1026
|
+
|
|
1027
|
+
/// Convert 256-bit vector \a __B containing packed FP16 floating-point elements
|
|
1028
|
+
/// to FP8 E4M3 numbers, using conversion biases stored in lower 8 bits of each
|
|
1029
|
+
/// 16-bit integer stored in \a __B. Results are saturated.
|
|
1030
|
+
///
|
|
1031
|
+
/// \code{.operation}
|
|
1032
|
+
/// FOR i := 0 to 15
|
|
1033
|
+
/// dst.hf8[i] := convert_fp16_to_hf8_with_bias_saturate(__A.int8[2 * i], __B.fp16[i])
|
|
1034
|
+
/// ENDFOR
|
|
1035
|
+
///
|
|
1036
|
+
/// dst[MAX:128] := 0
|
|
1037
|
+
/// \endcode
|
|
1038
|
+
///
|
|
1039
|
+
/// \headerfile <immintrin.h>
|
|
1040
|
+
///
|
|
1041
|
+
/// This intrinsic corresponds to the \c VCVTBIASPH2HF8S instruction.
|
|
1042
|
+
///
|
|
1043
|
+
/// \param __A
|
|
1044
|
+
/// A 256-bit vector of [16 x int16].
|
|
1045
|
+
/// \param __B
|
|
1046
|
+
/// A 256-bit vector of [16 x fp16].
|
|
1047
|
+
/// \returns
|
|
1048
|
+
/// A 128-bit vector of [16 x hf8]. Elements correspond to the
|
|
1049
|
+
/// converted elements from \a __B using biases from \a __A.
|
|
1050
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS256
|
|
1051
|
+
_mm256_cvts_biasph_hf8(__m256i __A, __m256h __B) {
|
|
1052
|
+
return (__m128i)__builtin_ia32_vcvtbiasph2hf8s_256_mask(
|
|
1053
|
+
(__v32qi)__A, (__v16hf)__B, (__v16qi)(__m128i)_mm_undefined_si128(),
|
|
1054
|
+
(__mmask16)-1);
|
|
1055
|
+
}
|
|
1056
|
+
|
|
1057
|
+
/// Convert 256-bit vector \a __B containing packed FP16 floating-point elements
|
|
1058
|
+
/// to FP8 E4M3 numbers, using conversion biases stored in lower 8 bits of each
|
|
1059
|
+
/// 16-bit integer stored in \a __B. Results are saturated. Merging mask \a __U
|
|
1060
|
+
/// is used to determine if given element should be taken from \a __W instead.
|
|
1061
|
+
///
|
|
1062
|
+
/// \code{.operation}
|
|
1063
|
+
/// FOR i := 0 to 15
|
|
1064
|
+
/// IF __U[i]
|
|
1065
|
+
/// dst.hf8[i] := convert_fp16_to_hf8_with_bias_saturate(__A.int8[2 * i], __B.fp16[i])
|
|
1066
|
+
/// ELSE
|
|
1067
|
+
/// dst.hf8[i] := __W.hf8[i]
|
|
1068
|
+
/// FI
|
|
1069
|
+
/// ENDFOR
|
|
1070
|
+
///
|
|
1071
|
+
/// dst[MAX:128] := 0
|
|
1072
|
+
/// \endcode
|
|
1073
|
+
///
|
|
1074
|
+
/// \headerfile <immintrin.h>
|
|
1075
|
+
///
|
|
1076
|
+
/// This intrinsic corresponds to the \c VCVTBIASPH2HF8S instruction.
|
|
1077
|
+
///
|
|
1078
|
+
/// \param __W
|
|
1079
|
+
/// A 128-bit vector of [16 x hf8].
|
|
1080
|
+
/// \param __U
|
|
1081
|
+
/// A 16-bit merging mask.
|
|
1082
|
+
/// \param __A
|
|
1083
|
+
/// A 256-bit vector of [16 x int16].
|
|
1084
|
+
/// \param __B
|
|
1085
|
+
/// A 256-bit vector of [16 x fp16].
|
|
1086
|
+
/// \returns
|
|
1087
|
+
/// A 128-bit vector of [16 x hf8]. Elements correspond to the converted
|
|
1088
|
+
/// elements from \a __B, using biases from \a __A. If corresponding mask bit
|
|
1089
|
+
/// is not set, then element from \a __W is taken instead.
|
|
1090
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS256 _mm256_mask_cvts_biasph_hf8(
|
|
1091
|
+
__m128i __W, __mmask16 __U, __m256i __A, __m256h __B) {
|
|
1092
|
+
return (__m128i)__builtin_ia32_vcvtbiasph2hf8s_256_mask(
|
|
1093
|
+
(__v32qi)__A, (__v16hf)__B, (__v16qi)(__m128i)__W, (__mmask16)__U);
|
|
1094
|
+
}
|
|
1095
|
+
|
|
1096
|
+
/// Convert 256-bit vector \a __B containing packed FP16 floating-point elements
|
|
1097
|
+
/// to FP8 E4M3 numbers, using conversion biases stored in lower 8 bits of each
|
|
1098
|
+
/// 16-bit integer stored in \a __B. Results are saturated. Zeroing mask \a __U
|
|
1099
|
+
/// is used to determine if given element should be zeroed instead.
|
|
1100
|
+
///
|
|
1101
|
+
/// \code{.operation}
|
|
1102
|
+
/// FOR i := 0 to 15
|
|
1103
|
+
/// IF __U[i]
|
|
1104
|
+
/// dst.hf8[i] := convert_fp16_to_hf8_with_bias_saturate(__A.int8[2 * i], __B.fp16[i])
|
|
1105
|
+
/// ELSE
|
|
1106
|
+
/// dst.hf8[i] := 0
|
|
1107
|
+
/// FI
|
|
1108
|
+
/// ENDFOR
|
|
1109
|
+
///
|
|
1110
|
+
/// dst[MAX:128] := 0
|
|
1111
|
+
/// \endcode
|
|
1112
|
+
///
|
|
1113
|
+
/// \headerfile <immintrin.h>
|
|
1114
|
+
///
|
|
1115
|
+
/// This intrinsic corresponds to the \c VCVTBIASPH2HF8S instruction.
|
|
1116
|
+
///
|
|
1117
|
+
/// \param __U
|
|
1118
|
+
/// A 16-bit zeroing mask.
|
|
1119
|
+
/// \param __A
|
|
1120
|
+
/// A 256-bit vector of [16 x int16].
|
|
1121
|
+
/// \param __B
|
|
1122
|
+
/// A 256-bit vector of [16 x fp16].
|
|
1123
|
+
/// \returns
|
|
1124
|
+
/// A 128-bit vector of [16 x hf8]. Elements correspond to the converted
|
|
1125
|
+
/// elements from \a __B, using biases from \a __A. If corresponding mask bit
|
|
1126
|
+
/// is not set, then element is zeroed.
|
|
1127
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS256
|
|
1128
|
+
_mm256_maskz_cvts_biasph_hf8(__mmask16 __U, __m256i __A, __m256h __B) {
|
|
1129
|
+
return (__m128i)__builtin_ia32_vcvtbiasph2hf8s_256_mask(
|
|
1130
|
+
(__v32qi)__A, (__v16hf)__B, (__v16qi)(__m128i)_mm_setzero_si128(),
|
|
1131
|
+
(__mmask16)__U);
|
|
1132
|
+
}
|
|
1133
|
+
|
|
1134
|
+
/// Convert two 128-bit vectors, \a __A and \a __B, containing packed FP16
|
|
1135
|
+
/// floating-point elements to a 128-bit vector containing E5M2 FP8 elements.
|
|
1136
|
+
///
|
|
1137
|
+
/// \code{.operation}
|
|
1138
|
+
/// FOR i := 0 to 15
|
|
1139
|
+
/// IF i < 8
|
|
1140
|
+
/// dst.bf8[i] := convert_fp16_to_bf8(__B.fp16[i])
|
|
1141
|
+
/// ELSE
|
|
1142
|
+
/// dst.bf8[i] := convert_fp16_to_bf8(__A.fp16[i - 8])
|
|
1143
|
+
/// FI
|
|
1144
|
+
/// ENDFOR
|
|
1145
|
+
///
|
|
1146
|
+
/// dst[MAX:128] := 0
|
|
1147
|
+
/// \endcode
|
|
1148
|
+
///
|
|
1149
|
+
/// \headerfile <immintrin.h>
|
|
1150
|
+
///
|
|
1151
|
+
/// This intrinsic corresponds to the \c VCVT2PH2BF8 instruction.
|
|
1152
|
+
///
|
|
1153
|
+
/// \param __A
|
|
1154
|
+
/// A 128-bit vector of [8 x fp16].
|
|
1155
|
+
/// \param __B
|
|
1156
|
+
/// A 128-bit vector of [8 x fp16].
|
|
1157
|
+
/// \returns
|
|
1158
|
+
/// A 128-bit vector of [16 x bf8]. Lower 8 elements correspond to the
|
|
1159
|
+
/// (converted) elements from \a __B; higher order elements correspond to the
|
|
1160
|
+
/// (converted) elements from \a __A.
|
|
1161
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_cvt2ph_bf8(__m128h __A,
|
|
1162
|
+
__m128h __B) {
|
|
1163
|
+
return (__m128i)__builtin_ia32_vcvt2ph2bf8_128((__v8hf)(__A),
|
|
1164
|
+
(__v8hf)(__B));
|
|
1165
|
+
}
|
|
1166
|
+
|
|
1167
|
+
/// Convert two 128-bit vectors, \a __A and \a __B, containing packed FP16
|
|
1168
|
+
/// floating-point elements to a 128-bit vector containing E5M2 FP8 elements.
|
|
1169
|
+
/// Merging mask \a __U is used to determine if given element should be taken
|
|
1170
|
+
/// from \a __W instead.
|
|
1171
|
+
///
|
|
1172
|
+
/// \code{.operation}
|
|
1173
|
+
/// FOR i := 0 to 15
|
|
1174
|
+
/// IF __U[i]
|
|
1175
|
+
/// IF i < 8
|
|
1176
|
+
/// dst.bf8[i] := convert_fp16_to_bf8(__B.fp16[i])
|
|
1177
|
+
/// ELSE
|
|
1178
|
+
/// dst.bf8[i] := convert_fp16_to_bf8(__A.fp16[i - 8])
|
|
1179
|
+
/// FI
|
|
1180
|
+
/// ELSE
|
|
1181
|
+
/// dst.bf8[i] := __W.bf8[i]
|
|
1182
|
+
/// FI
|
|
1183
|
+
/// ENDFOR
|
|
1184
|
+
///
|
|
1185
|
+
/// dst[MAX:128] := 0
|
|
1186
|
+
/// \endcode
|
|
1187
|
+
///
|
|
1188
|
+
/// \headerfile <immintrin.h>
|
|
1189
|
+
///
|
|
1190
|
+
/// This intrinsic corresponds to the \c VCVT2PH2BF8 instruction.
|
|
1191
|
+
///
|
|
1192
|
+
/// \param __W
|
|
1193
|
+
/// A 128-bit vector of [16 x bf8].
|
|
1194
|
+
/// \param __U
|
|
1195
|
+
/// A 16-bit merging mask.
|
|
1196
|
+
/// \param __A
|
|
1197
|
+
/// A 128-bit vector of [8 x fp16].
|
|
1198
|
+
/// \param __B
|
|
1199
|
+
/// A 128-bit vector of [8 x fp16].
|
|
1200
|
+
/// \returns
|
|
1201
|
+
/// A 128-bit vector of [16 x bf8]. Lower 8 elements correspond to the
|
|
1202
|
+
/// (converted) elements from \a __B; higher order elements correspond to the
|
|
1203
|
+
/// (converted) elements from \a __A. If corresponding mask bit is not set, then
|
|
1204
|
+
/// element from \a __W is taken instead.
|
|
1205
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS128
|
|
1206
|
+
_mm_mask_cvt2ph_bf8(__m128i __W, __mmask16 __U, __m128h __A, __m128h __B) {
|
|
1207
|
+
return (__m128i)__builtin_ia32_selectb_128(
|
|
1208
|
+
(__mmask16)__U, (__v16qi)_mm_cvt2ph_bf8(__A, __B), (__v16qi)__W);
|
|
1209
|
+
}
|
|
1210
|
+
|
|
1211
|
+
/// Convert two 128-bit vectors, \a __A and \a __B, containing packed FP16
|
|
1212
|
+
/// floating-point elements to a 128-bit vector containing E5M2 FP8 elements.
|
|
1213
|
+
/// Zeroing mask \a __U is used to determine if given element should be zeroed
|
|
1214
|
+
/// instead.
|
|
1215
|
+
///
|
|
1216
|
+
/// \code{.operation}
|
|
1217
|
+
/// FOR i := 0 to 15
|
|
1218
|
+
/// IF __U[i]
|
|
1219
|
+
/// IF i < 8
|
|
1220
|
+
/// dst.bf8[i] := convert_fp16_to_bf8(__B.fp16[i])
|
|
1221
|
+
/// ELSE
|
|
1222
|
+
/// dst.bf8[i] := convert_fp16_to_bf8(__A.fp16[i - 8])
|
|
1223
|
+
/// FI
|
|
1224
|
+
/// ELSE
|
|
1225
|
+
/// dst.bf8[i] := 0
|
|
1226
|
+
/// FI
|
|
1227
|
+
/// ENDFOR
|
|
1228
|
+
///
|
|
1229
|
+
/// dst[MAX:128] := 0
|
|
1230
|
+
/// \endcode
|
|
1231
|
+
///
|
|
1232
|
+
/// \headerfile <immintrin.h>
|
|
1233
|
+
///
|
|
1234
|
+
/// This intrinsic corresponds to the \c VCVT2PH2BF8 instruction.
|
|
1235
|
+
///
|
|
1236
|
+
/// \param __U
|
|
1237
|
+
/// A 16-bit zeroing mask.
|
|
1238
|
+
/// \param __A
|
|
1239
|
+
/// A 128-bit vector of [8 x fp16].
|
|
1240
|
+
/// \param __B
|
|
1241
|
+
/// A 128-bit vector of [8 x fp16].
|
|
1242
|
+
/// \returns
|
|
1243
|
+
/// A 128-bit vector of [16 x bf8]. Lower 8 elements correspond to the
|
|
1244
|
+
/// (converted) elements from \a __B; higher order elements correspond to the
|
|
1245
|
+
/// (converted) elements from \a __A. If corresponding mask bit is not set, then
|
|
1246
|
+
/// zero is taken instead.
|
|
1247
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS128
|
|
1248
|
+
_mm_maskz_cvt2ph_bf8(__mmask16 __U, __m128h __A, __m128h __B) {
|
|
1249
|
+
return (__m128i)__builtin_ia32_selectb_128(
|
|
1250
|
+
(__mmask16)__U, (__v16qi)_mm_cvt2ph_bf8(__A, __B),
|
|
1251
|
+
(__v16qi)(__m128i)_mm_setzero_si128());
|
|
1252
|
+
}
|
|
1253
|
+
|
|
1254
|
+
/// Convert two 256-bit vectors, \a __A and \a __B, containing packed FP16
|
|
1255
|
+
/// floating-point elements to a 256-bit vector containing E5M2 FP8 elements.
|
|
1256
|
+
///
|
|
1257
|
+
/// \code{.operation}
|
|
1258
|
+
/// FOR i := 0 to 31
|
|
1259
|
+
/// IF i < 16
|
|
1260
|
+
/// dst.bf8[i] := convert_fp16_to_bf8(__B.fp16[i])
|
|
1261
|
+
/// ELSE
|
|
1262
|
+
/// dst.bf8[i] := convert_fp16_to_bf8(__A.fp16[i - 16])
|
|
1263
|
+
/// FI
|
|
1264
|
+
/// ENDFOR
|
|
1265
|
+
///
|
|
1266
|
+
/// dst[MAX:256] := 0
|
|
1267
|
+
/// \endcode
|
|
1268
|
+
///
|
|
1269
|
+
/// \headerfile <immintrin.h>
|
|
1270
|
+
///
|
|
1271
|
+
/// This intrinsic corresponds to the \c VCVT2PH2BF8 instruction.
|
|
1272
|
+
///
|
|
1273
|
+
/// \param __A
|
|
1274
|
+
/// A 256-bit vector of [16 x fp16].
|
|
1275
|
+
/// \param __B
|
|
1276
|
+
/// A 256-bit vector of [16 x fp16].
|
|
1277
|
+
/// \returns
|
|
1278
|
+
/// A 256-bit vector of [32 x bf8]. Lower 16 elements correspond to the
|
|
1279
|
+
/// (converted) elements from \a __B; higher order elements correspond to the
|
|
1280
|
+
/// (converted) elements from \a __A.
|
|
1281
|
+
static __inline__ __m256i __DEFAULT_FN_ATTRS256
|
|
1282
|
+
_mm256_cvt2ph_bf8(__m256h __A, __m256h __B) {
|
|
1283
|
+
return (__m256i)__builtin_ia32_vcvt2ph2bf8_256((__v16hf)(__A),
|
|
1284
|
+
(__v16hf)(__B));
|
|
1285
|
+
}
|
|
1286
|
+
|
|
1287
|
+
/// Convert two 256-bit vectors, \a __A and \a __B, containing packed FP16
|
|
1288
|
+
/// floating-point elements to a 256-bit vector containing E5M2 FP8 elements.
|
|
1289
|
+
/// Merging mask \a __U is used to determine if given element should be taken
|
|
1290
|
+
/// from \a __W instead.
|
|
1291
|
+
///
|
|
1292
|
+
/// \code{.operation}
|
|
1293
|
+
/// FOR i := 0 to 31
|
|
1294
|
+
/// IF __U[i]
|
|
1295
|
+
/// IF i < 16
|
|
1296
|
+
/// dst.bf8[i] := convert_fp16_to_bf8(__B.fp16[i])
|
|
1297
|
+
/// ELSE
|
|
1298
|
+
/// dst.bf8[i] := convert_fp16_to_bf8(__A.fp16[i - 16])
|
|
1299
|
+
/// FI
|
|
1300
|
+
/// ELSE
|
|
1301
|
+
/// dst.bf8[i] := __W.bf8[i]
|
|
1302
|
+
/// FI
|
|
1303
|
+
/// ENDFOR
|
|
1304
|
+
///
|
|
1305
|
+
/// dst[MAX:256] := 0
|
|
1306
|
+
/// \endcode
|
|
1307
|
+
///
|
|
1308
|
+
/// \headerfile <immintrin.h>
|
|
1309
|
+
///
|
|
1310
|
+
/// This intrinsic corresponds to the \c VCVT2PH2BF8 instruction.
|
|
1311
|
+
///
|
|
1312
|
+
/// \param __W
|
|
1313
|
+
/// A 256-bit vector of [32 x bf8].
|
|
1314
|
+
/// \param __U
|
|
1315
|
+
/// A 32-bit merging mask.
|
|
1316
|
+
/// \param __A
|
|
1317
|
+
/// A 256-bit vector of [16 x fp16].
|
|
1318
|
+
/// \param __B
|
|
1319
|
+
/// A 256-bit vector of [16 x fp16].
|
|
1320
|
+
/// \returns
|
|
1321
|
+
/// A 256-bit vector of [32 x bf8]. Lower 16 elements correspond to the
|
|
1322
|
+
/// (converted) elements from \a __B; higher order elements correspond to the
|
|
1323
|
+
/// (converted) elements from \a __A. If corresponding mask bit is not set, then
|
|
1324
|
+
/// element from \a __W is taken instead.
|
|
1325
|
+
static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_mask_cvt2ph_bf8(
|
|
1326
|
+
__m256i __W, __mmask32 __U, __m256h __A, __m256h __B) {
|
|
1327
|
+
return (__m256i)__builtin_ia32_selectb_256(
|
|
1328
|
+
(__mmask32)__U, (__v32qi)_mm256_cvt2ph_bf8(__A, __B), (__v32qi)__W);
|
|
1329
|
+
}
|
|
1330
|
+
|
|
1331
|
+
/// Convert two 256-bit vectors, \a __A and \a __B, containing packed FP16
|
|
1332
|
+
/// floating-point elements to a 256-bit vector containing E5M2 FP8 elements.
|
|
1333
|
+
/// Zeroing mask \a __U is used to determine if given element should be zeroed
|
|
1334
|
+
/// instead.
|
|
1335
|
+
///
|
|
1336
|
+
/// \code{.operation}
|
|
1337
|
+
/// FOR i := 0 to 31
|
|
1338
|
+
/// IF __U[i]
|
|
1339
|
+
/// IF i < 16
|
|
1340
|
+
/// dst.bf8[i] := convert_fp16_to_bf8(__B.fp16[i])
|
|
1341
|
+
/// ELSE
|
|
1342
|
+
/// dst.bf8[i] := convert_fp16_to_bf8(__A.fp16[i - 16])
|
|
1343
|
+
/// FI
|
|
1344
|
+
/// ELSE
|
|
1345
|
+
/// dst.bf8[i] := 0
|
|
1346
|
+
/// FI
|
|
1347
|
+
/// ENDFOR
|
|
1348
|
+
///
|
|
1349
|
+
/// dst[MAX:256] := 0
|
|
1350
|
+
/// \endcode
|
|
1351
|
+
///
|
|
1352
|
+
/// \headerfile <immintrin.h>
|
|
1353
|
+
///
|
|
1354
|
+
/// This intrinsic corresponds to the \c VCVT2PH2BF8 instruction.
|
|
1355
|
+
///
|
|
1356
|
+
/// \param __U
|
|
1357
|
+
/// A 32-bit zeroing mask.
|
|
1358
|
+
/// \param __A
|
|
1359
|
+
/// A 256-bit vector of [16 x fp16].
|
|
1360
|
+
/// \param __B
|
|
1361
|
+
/// A 256-bit vector of [16 x fp16].
|
|
1362
|
+
/// \returns
|
|
1363
|
+
/// A 256-bit vector of [32 x bf8]. Lower 16 elements correspond to the
|
|
1364
|
+
/// (converted) elements from \a __B; higher order elements correspond to the
|
|
1365
|
+
/// (converted) elements from \a __A. If corresponding mask bit is not set,
|
|
1366
|
+
/// zero is taken instead.
|
|
1367
|
+
static __inline__ __m256i __DEFAULT_FN_ATTRS256
|
|
1368
|
+
_mm256_maskz_cvt2ph_bf8(__mmask32 __U, __m256h __A, __m256h __B) {
|
|
1369
|
+
return (__m256i)__builtin_ia32_selectb_256(
|
|
1370
|
+
(__mmask32)__U, (__v32qi)_mm256_cvt2ph_bf8(__A, __B),
|
|
1371
|
+
(__v32qi)(__m256i)_mm256_setzero_si256());
|
|
1372
|
+
}
|
|
1373
|
+
|
|
1374
|
+
/// Convert two 128-bit vectors, \a __A and \a __B, containing packed FP16
|
|
1375
|
+
/// floating-point elements to a 128-bit vector containing E5M2 FP8 elements.
|
|
1376
|
+
/// Resulting elements are saturated in case of overflow.
|
|
1377
|
+
///
|
|
1378
|
+
/// \code{.operation}
|
|
1379
|
+
/// FOR i := 0 to 15
|
|
1380
|
+
/// IF i < 8
|
|
1381
|
+
/// dst.bf8[i] := convert_fp16_to_bf8_saturate(__B.fp16[i])
|
|
1382
|
+
/// ELSE
|
|
1383
|
+
/// dst.bf8[i] := convert_fp16_to_bf8_saturate(__A.fp16[i - 8])
|
|
1384
|
+
/// FI
|
|
1385
|
+
/// ENDFOR
|
|
1386
|
+
///
|
|
1387
|
+
/// dst[MAX:128] := 0
|
|
1388
|
+
/// \endcode
|
|
1389
|
+
///
|
|
1390
|
+
/// \headerfile <immintrin.h>
|
|
1391
|
+
///
|
|
1392
|
+
/// This intrinsic corresponds to the \c VCVT2PH2BF8S instruction.
|
|
1393
|
+
///
|
|
1394
|
+
/// \param __A
|
|
1395
|
+
/// A 128-bit vector of [8 x fp16].
|
|
1396
|
+
/// \param __B
|
|
1397
|
+
/// A 128-bit vector of [8 x fp16].
|
|
1398
|
+
/// \returns
|
|
1399
|
+
/// A 128-bit vector of [16 x bf8]. Lower 8 elements correspond to the
|
|
1400
|
+
/// (converted) elements from \a __B; higher order elements correspond to the
|
|
1401
|
+
/// (converted) elements from \a __A.
|
|
1402
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS128
|
|
1403
|
+
_mm_cvts_2ph_bf8(__m128h __A, __m128h __B) {
|
|
1404
|
+
return (__m128i)__builtin_ia32_vcvt2ph2bf8s_128((__v8hf)(__A),
|
|
1405
|
+
(__v8hf)(__B));
|
|
1406
|
+
}
|
|
1407
|
+
|
|
1408
|
+
/// Convert two 128-bit vectors, \a __A and \a __B, containing packed FP16
|
|
1409
|
+
/// floating-point elements to a 128-bit vector containing E5M2 FP8 elements.
|
|
1410
|
+
/// Merging mask \a __U is used to determine if given element should be taken
|
|
1411
|
+
/// from \a __W instead. Resulting elements are saturated in case of overflow.
|
|
1412
|
+
///
|
|
1413
|
+
/// \code{.operation}
|
|
1414
|
+
/// FOR i := 0 to 15
|
|
1415
|
+
/// IF __U[i]
|
|
1416
|
+
/// IF i < 8
|
|
1417
|
+
/// dst.bf8[i] := convert_fp16_to_bf8_saturate(__B.fp16[i])
|
|
1418
|
+
/// ELSE
|
|
1419
|
+
/// dst.bf8[i] := convert_fp16_to_bf8_saturate(__A.fp16[i - 8])
|
|
1420
|
+
/// FI
|
|
1421
|
+
/// ELSE
|
|
1422
|
+
/// dst.bf8[i] := __W.bf8[i]
|
|
1423
|
+
/// FI
|
|
1424
|
+
/// ENDFOR
|
|
1425
|
+
///
|
|
1426
|
+
/// dst[MAX:128] := 0
|
|
1427
|
+
/// \endcode
|
|
1428
|
+
///
|
|
1429
|
+
/// \headerfile <immintrin.h>
|
|
1430
|
+
///
|
|
1431
|
+
/// This intrinsic corresponds to the \c VCVT2PH2BF8S instruction.
|
|
1432
|
+
///
|
|
1433
|
+
/// \param __W
|
|
1434
|
+
/// A 128-bit vector of [16 x bf8].
|
|
1435
|
+
/// \param __U
|
|
1436
|
+
/// A 16-bit merging mask.
|
|
1437
|
+
/// \param __A
|
|
1438
|
+
/// A 128-bit vector of [8 x fp16].
|
|
1439
|
+
/// \param __B
|
|
1440
|
+
/// A 128-bit vector of [8 x fp16].
|
|
1441
|
+
/// \returns
|
|
1442
|
+
/// A 128-bit vector of [16 x bf8]. Lower 8 elements correspond to the
|
|
1443
|
+
/// (converted) elements from \a __B; higher order elements correspond to the
|
|
1444
|
+
/// (converted) elements from \a __A. If corresponding mask bit is not set, then
|
|
1445
|
+
/// element from \a __W is taken instead.
|
|
1446
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS128
|
|
1447
|
+
_mm_mask_cvts_2ph_bf8(__m128i __W, __mmask16 __U, __m128h __A, __m128h __B) {
|
|
1448
|
+
return (__m128i)__builtin_ia32_selectb_128(
|
|
1449
|
+
(__mmask16)__U, (__v16qi)_mm_cvts_2ph_bf8(__A, __B), (__v16qi)__W);
|
|
1450
|
+
}
|
|
1451
|
+
|
|
1452
|
+
/// Convert two 128-bit vectors, \a __A and \a __B, containing packed FP16
|
|
1453
|
+
/// floating-point elements to a 128-bit vector containing E5M2 FP8 elements.
|
|
1454
|
+
/// Zeroing mask \a __U is used to determine if given element should be zeroed
|
|
1455
|
+
/// instead. Resulting elements are saturated in case of overflow.
|
|
1456
|
+
///
|
|
1457
|
+
/// \code{.operation}
|
|
1458
|
+
/// FOR i := 0 to 15
|
|
1459
|
+
/// IF __U[i]
|
|
1460
|
+
/// IF i < 8
|
|
1461
|
+
/// dst.bf8[i] := convert_fp16_to_bf8_saturate(__B.fp16[i])
|
|
1462
|
+
/// ELSE
|
|
1463
|
+
/// dst.bf8[i] := convert_fp16_to_bf8_saturate(__A.fp16[i - 8])
|
|
1464
|
+
/// FI
|
|
1465
|
+
/// ELSE
|
|
1466
|
+
/// dst.bf8[i] := 0
|
|
1467
|
+
/// FI
|
|
1468
|
+
/// ENDFOR
|
|
1469
|
+
///
|
|
1470
|
+
/// dst[MAX:128] := 0
|
|
1471
|
+
/// \endcode
|
|
1472
|
+
///
|
|
1473
|
+
/// \headerfile <immintrin.h>
|
|
1474
|
+
///
|
|
1475
|
+
/// This intrinsic corresponds to the \c VCVT2PH2BF8S instruction.
|
|
1476
|
+
///
|
|
1477
|
+
/// \param __U
|
|
1478
|
+
/// A 16-bit zeroing mask.
|
|
1479
|
+
/// \param __A
|
|
1480
|
+
/// A 128-bit vector of [8 x fp16].
|
|
1481
|
+
/// \param __B
|
|
1482
|
+
/// A 128-bit vector of [8 x fp16].
|
|
1483
|
+
/// \returns
|
|
1484
|
+
/// A 128-bit vector of [16 x bf8]. Lower 8 elements correspond to the
|
|
1485
|
+
/// (converted) elements from \a __B; higher order elements correspond to the
|
|
1486
|
+
/// (converted) elements from \a __A. If corresponding mask bit is not set, then
|
|
1487
|
+
/// zero is taken instead.
|
|
1488
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS128
|
|
1489
|
+
_mm_maskz_cvts_2ph_bf8(__mmask16 __U, __m128h __A, __m128h __B) {
|
|
1490
|
+
return (__m128i)__builtin_ia32_selectb_128(
|
|
1491
|
+
(__mmask16)__U, (__v16qi)_mm_cvts_2ph_bf8(__A, __B),
|
|
1492
|
+
(__v16qi)(__m128i)_mm_setzero_si128());
|
|
1493
|
+
}
|
|
1494
|
+
|
|
1495
|
+
/// Convert two 256-bit vectors, \a __A and \a __B, containing packed FP16
|
|
1496
|
+
/// floating-point elements to a 256-bit vector containing E5M2 FP8 elements.
|
|
1497
|
+
/// Resulting elements are saturated in case of overflow.
|
|
1498
|
+
///
|
|
1499
|
+
/// \code{.operation}
|
|
1500
|
+
/// FOR i := 0 to 31
|
|
1501
|
+
/// IF i < 16
|
|
1502
|
+
/// dst.bf8[i] := convert_fp16_to_bf8_saturate(__B.fp16[i])
|
|
1503
|
+
/// ELSE
|
|
1504
|
+
/// dst.bf8[i] := convert_fp16_to_bf8_saturate(__A.fp16[i - 16])
|
|
1505
|
+
/// FI
|
|
1506
|
+
/// ENDFOR
|
|
1507
|
+
///
|
|
1508
|
+
/// dst[MAX:256] := 0
|
|
1509
|
+
/// \endcode
|
|
1510
|
+
///
|
|
1511
|
+
/// \headerfile <immintrin.h>
|
|
1512
|
+
///
|
|
1513
|
+
/// This intrinsic corresponds to the \c VCVT2PH2BF8S instruction.
|
|
1514
|
+
///
|
|
1515
|
+
/// \param __A
|
|
1516
|
+
/// A 256-bit vector of [16 x fp16].
|
|
1517
|
+
/// \param __B
|
|
1518
|
+
/// A 256-bit vector of [16 x fp16].
|
|
1519
|
+
/// \returns
|
|
1520
|
+
/// A 256-bit vector of [32 x bf8]. Lower 16 elements correspond to the
|
|
1521
|
+
/// (converted) elements from \a __B; higher order elements correspond to the
|
|
1522
|
+
/// (converted) elements from \a __A.
|
|
1523
|
+
static __inline__ __m256i __DEFAULT_FN_ATTRS256
|
|
1524
|
+
_mm256_cvts_2ph_bf8(__m256h __A, __m256h __B) {
|
|
1525
|
+
return (__m256i)__builtin_ia32_vcvt2ph2bf8s_256((__v16hf)(__A),
|
|
1526
|
+
(__v16hf)(__B));
|
|
1527
|
+
}
|
|
1528
|
+
|
|
1529
|
+
/// Convert two 256-bit vectors, \a __A and \a __B, containing packed FP16
|
|
1530
|
+
/// floating-point elements to a 256-bit vector containing E5M2 FP8 elements.
|
|
1531
|
+
/// Merging mask \a __U is used to determine if given element should be taken
|
|
1532
|
+
/// from \a __W instead. Resulting elements are saturated in case of overflow.
|
|
1533
|
+
///
|
|
1534
|
+
/// \code{.operation}
|
|
1535
|
+
/// FOR i := 0 to 31
|
|
1536
|
+
/// IF __U[i]
|
|
1537
|
+
/// IF i < 16
|
|
1538
|
+
/// dst.bf8[i] := convert_fp16_to_bf8_saturate(__B.fp16[i])
|
|
1539
|
+
/// ELSE
|
|
1540
|
+
/// dst.bf8[i] := convert_fp16_to_bf8_saturate(__A.fp16[i - 16])
|
|
1541
|
+
/// FI
|
|
1542
|
+
/// ELSE
|
|
1543
|
+
/// dst.bf8[i] := __W.bf8[i]
|
|
1544
|
+
/// FI
|
|
1545
|
+
/// ENDFOR
|
|
1546
|
+
///
|
|
1547
|
+
/// dst[MAX:256] := 0
|
|
1548
|
+
/// \endcode
|
|
1549
|
+
///
|
|
1550
|
+
/// \headerfile <immintrin.h>
|
|
1551
|
+
///
|
|
1552
|
+
/// This intrinsic corresponds to the \c VCVT2PH2BF8S instruction.
|
|
1553
|
+
///
|
|
1554
|
+
/// \param __W
|
|
1555
|
+
/// A 256-bit vector of [32 x bf8].
|
|
1556
|
+
/// \param __U
|
|
1557
|
+
/// A 32-bit merging mask.
|
|
1558
|
+
/// \param __A
|
|
1559
|
+
/// A 256-bit vector of [16 x fp16].
|
|
1560
|
+
/// \param __B
|
|
1561
|
+
/// A 256-bit vector of [16 x fp16].
|
|
1562
|
+
/// \returns
|
|
1563
|
+
/// A 256-bit vector of [32 x bf8]. Lower 16 elements correspond to the
|
|
1564
|
+
/// (converted) elements from \a __B; higher order elements correspond to the
|
|
1565
|
+
/// (converted) elements from \a __A. If corresponding mask bit is not set, then
|
|
1566
|
+
/// element from \a __W is taken instead.
|
|
1567
|
+
static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_mask_cvts_2ph_bf8(
|
|
1568
|
+
__m256i __W, __mmask32 __U, __m256h __A, __m256h __B) {
|
|
1569
|
+
return (__m256i)__builtin_ia32_selectb_256(
|
|
1570
|
+
(__mmask32)__U, (__v32qi)_mm256_cvts_2ph_bf8(__A, __B), (__v32qi)__W);
|
|
1571
|
+
}
|
|
1572
|
+
|
|
1573
|
+
/// Convert two 256-bit vectors, \a __A and \a __B, containing packed FP16
|
|
1574
|
+
/// floating-point elements to a 256-bit vector containing E5M2 FP8 elements.
|
|
1575
|
+
/// Zeroing mask \a __U is used to determine if given element should be zeroed
|
|
1576
|
+
/// instead. Resulting elements are saturated in case of overflow.
|
|
1577
|
+
///
|
|
1578
|
+
/// \code{.operation}
|
|
1579
|
+
/// FOR i := 0 to 31
|
|
1580
|
+
/// IF __U[i]
|
|
1581
|
+
/// IF i < 16
|
|
1582
|
+
/// dst.bf8[i] := convert_fp16_to_bf8_saturate(__B.fp16[i])
|
|
1583
|
+
/// ELSE
|
|
1584
|
+
/// dst.bf8[i] := convert_fp16_to_bf8_saturate(__A.fp16[i - 16])
|
|
1585
|
+
/// FI
|
|
1586
|
+
/// ELSE
|
|
1587
|
+
/// dst.bf8[i] := 0
|
|
1588
|
+
/// FI
|
|
1589
|
+
/// ENDFOR
|
|
1590
|
+
///
|
|
1591
|
+
/// dst[MAX:256] := 0
|
|
1592
|
+
/// \endcode
|
|
1593
|
+
///
|
|
1594
|
+
/// \headerfile <immintrin.h>
|
|
1595
|
+
///
|
|
1596
|
+
/// This intrinsic corresponds to the \c VCVT2PH2BF8S instruction.
|
|
1597
|
+
///
|
|
1598
|
+
/// \param __U
|
|
1599
|
+
/// A 32-bit zeroing mask.
|
|
1600
|
+
/// \param __A
|
|
1601
|
+
/// A 256-bit vector of [16 x fp16].
|
|
1602
|
+
/// \param __B
|
|
1603
|
+
/// A 256-bit vector of [16 x fp16].
|
|
1604
|
+
/// \returns
|
|
1605
|
+
/// A 256-bit vector of [32 x bf8]. Lower 16 elements correspond to the
|
|
1606
|
+
/// (converted) elements from \a __B; higher order elements correspond to the
|
|
1607
|
+
/// (converted) elements from \a __A. If corresponding mask bit is not set,
|
|
1608
|
+
/// zero is taken instead.
|
|
1609
|
+
static __inline__ __m256i __DEFAULT_FN_ATTRS256
|
|
1610
|
+
_mm256_maskz_cvts_2ph_bf8(__mmask32 __U, __m256h __A, __m256h __B) {
|
|
1611
|
+
return (__m256i)__builtin_ia32_selectb_256(
|
|
1612
|
+
(__mmask32)__U, (__v32qi)_mm256_cvts_2ph_bf8(__A, __B),
|
|
1613
|
+
(__v32qi)(__m256i)_mm256_setzero_si256());
|
|
1614
|
+
}
|
|
1615
|
+
|
|
1616
|
+
/// Convert two 128-bit vectors, \a __A and \a __B, containing packed FP16
|
|
1617
|
+
/// floating-point elements to a 128-bit vector containing E4M3 FP8 elements.
|
|
1618
|
+
///
|
|
1619
|
+
/// \code{.operation}
|
|
1620
|
+
/// FOR i := 0 to 15
|
|
1621
|
+
/// IF i < 8
|
|
1622
|
+
/// dst.hf8[i] := convert_fp16_to_hf8(__B.fp16[i])
|
|
1623
|
+
/// ELSE
|
|
1624
|
+
/// dst.hf8[i] := convert_fp16_to_hf8(__A.fp16[i - 8])
|
|
1625
|
+
/// FI
|
|
1626
|
+
/// ENDFOR
|
|
1627
|
+
///
|
|
1628
|
+
/// dst[MAX:128] := 0
|
|
1629
|
+
/// \endcode
|
|
1630
|
+
///
|
|
1631
|
+
/// \headerfile <immintrin.h>
|
|
1632
|
+
///
|
|
1633
|
+
/// This intrinsic corresponds to the \c VCVT2PH2HF8 instruction.
|
|
1634
|
+
///
|
|
1635
|
+
/// \param __A
|
|
1636
|
+
/// A 128-bit vector of [8 x fp16].
|
|
1637
|
+
/// \param __B
|
|
1638
|
+
/// A 128-bit vector of [8 x fp16].
|
|
1639
|
+
/// \returns
|
|
1640
|
+
/// A 128-bit vector of [16 x hf8]. Lower 8 elements correspond to the
|
|
1641
|
+
/// (converted) elements from \a __B; higher order elements correspond to the
|
|
1642
|
+
/// (converted) elements from \a __A.
|
|
1643
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_cvt2ph_hf8(__m128h __A,
|
|
1644
|
+
__m128h __B) {
|
|
1645
|
+
return (__m128i)__builtin_ia32_vcvt2ph2hf8_128((__v8hf)(__A),
|
|
1646
|
+
(__v8hf)(__B));
|
|
1647
|
+
}
|
|
1648
|
+
|
|
1649
|
+
/// Convert two 128-bit vectors, \a __A and \a __B, containing packed FP16
|
|
1650
|
+
/// floating-point elements to a 128-bit vector containing E4M3 FP8 elements.
|
|
1651
|
+
/// Merging mask \a __U is used to determine if given element should be taken
|
|
1652
|
+
/// from \a __W instead.
|
|
1653
|
+
///
|
|
1654
|
+
/// \code{.operation}
|
|
1655
|
+
/// FOR i := 0 to 15
|
|
1656
|
+
/// IF __U[i]
|
|
1657
|
+
/// IF i < 8
|
|
1658
|
+
/// dst.hf8[i] := convert_fp16_to_hf8(__B.fp16[i])
|
|
1659
|
+
/// ELSE
|
|
1660
|
+
/// dst.hf8[i] := convert_fp16_to_hf8(__A.fp16[i - 8])
|
|
1661
|
+
/// FI
|
|
1662
|
+
/// ELSE
|
|
1663
|
+
/// dst.hf8[i] := __W.hf8[i]
|
|
1664
|
+
/// FI
|
|
1665
|
+
/// ENDFOR
|
|
1666
|
+
///
|
|
1667
|
+
/// dst[MAX:128] := 0
|
|
1668
|
+
/// \endcode
|
|
1669
|
+
///
|
|
1670
|
+
/// \headerfile <immintrin.h>
|
|
1671
|
+
///
|
|
1672
|
+
/// This intrinsic corresponds to the \c VCVT2PH2HF8 instruction.
|
|
1673
|
+
///
|
|
1674
|
+
/// \param __W
|
|
1675
|
+
/// A 128-bit vector of [16 x hf8].
|
|
1676
|
+
/// \param __U
|
|
1677
|
+
/// A 16-bit merging mask.
|
|
1678
|
+
/// \param __A
|
|
1679
|
+
/// A 128-bit vector of [8 x fp16].
|
|
1680
|
+
/// \param __B
|
|
1681
|
+
/// A 128-bit vector of [8 x fp16].
|
|
1682
|
+
/// \returns
|
|
1683
|
+
/// A 128-bit vector of [16 x hf8]. Lower 8 elements correspond to the
|
|
1684
|
+
/// (converted) elements from \a __B; higher order elements correspond to the
|
|
1685
|
+
/// (converted) elements from \a __A. If corresponding mask bit is not set, then
|
|
1686
|
+
/// element from \a __W is taken instead.
|
|
1687
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS128
|
|
1688
|
+
_mm_mask_cvt2ph_hf8(__m128i __W, __mmask16 __U, __m128h __A, __m128h __B) {
|
|
1689
|
+
return (__m128i)__builtin_ia32_selectb_128(
|
|
1690
|
+
(__mmask16)__U, (__v16qi)_mm_cvt2ph_hf8(__A, __B), (__v16qi)__W);
|
|
1691
|
+
}
|
|
1692
|
+
|
|
1693
|
+
/// Convert two 128-bit vectors, \a __A and \a __B, containing packed FP16
|
|
1694
|
+
/// floating-point elements to a 128-bit vector containing E4M3 FP8 elements.
|
|
1695
|
+
/// Zeroing mask \a __U is used to determine if given element should be zeroed
|
|
1696
|
+
/// instead.
|
|
1697
|
+
///
|
|
1698
|
+
/// \code{.operation}
|
|
1699
|
+
/// FOR i := 0 to 15
|
|
1700
|
+
/// IF __U[i]
|
|
1701
|
+
/// IF i < 8
|
|
1702
|
+
/// dst.hf8[i] := convert_fp16_to_hf8(__B.fp16[i])
|
|
1703
|
+
/// ELSE
|
|
1704
|
+
/// dst.hf8[i] := convert_fp16_to_hf8(__A.fp16[i - 8])
|
|
1705
|
+
/// FI
|
|
1706
|
+
/// ELSE
|
|
1707
|
+
/// dst.hf8[i] := 0
|
|
1708
|
+
/// FI
|
|
1709
|
+
/// ENDFOR
|
|
1710
|
+
///
|
|
1711
|
+
/// dst[MAX:128] := 0
|
|
1712
|
+
/// \endcode
|
|
1713
|
+
///
|
|
1714
|
+
/// \headerfile <immintrin.h>
|
|
1715
|
+
///
|
|
1716
|
+
/// This intrinsic corresponds to the \c VCVT2PH2HF8 instruction.
|
|
1717
|
+
///
|
|
1718
|
+
/// \param __U
|
|
1719
|
+
/// A 16-bit zeroing mask.
|
|
1720
|
+
/// \param __A
|
|
1721
|
+
/// A 128-bit vector of [8 x fp16].
|
|
1722
|
+
/// \param __B
|
|
1723
|
+
/// A 128-bit vector of [8 x fp16].
|
|
1724
|
+
/// \returns
|
|
1725
|
+
/// A 128-bit vector of [16 x hf8]. Lower 8 elements correspond to the
|
|
1726
|
+
/// (converted) elements from \a __B; higher order elements correspond to the
|
|
1727
|
+
/// (converted) elements from \a __A. If corresponding mask bit is not set, then
|
|
1728
|
+
/// zero is taken instead.
|
|
1729
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS128
|
|
1730
|
+
_mm_maskz_cvt2ph_hf8(__mmask16 __U, __m128h __A, __m128h __B) {
|
|
1731
|
+
return (__m128i)__builtin_ia32_selectb_128(
|
|
1732
|
+
(__mmask16)__U, (__v16qi)_mm_cvt2ph_hf8(__A, __B),
|
|
1733
|
+
(__v16qi)(__m128i)_mm_setzero_si128());
|
|
1734
|
+
}
|
|
1735
|
+
|
|
1736
|
+
/// Convert two 256-bit vectors, \a __A and \a __B, containing packed FP16
|
|
1737
|
+
/// floating-point elements to a 256-bit vector containing E4M3 FP8 elements.
|
|
1738
|
+
///
|
|
1739
|
+
/// \code{.operation}
|
|
1740
|
+
/// FOR i := 0 to 31
|
|
1741
|
+
/// IF i < 16
|
|
1742
|
+
/// dst.hf8[i] := convert_fp16_to_hf8(__B.fp16[i])
|
|
1743
|
+
/// ELSE
|
|
1744
|
+
/// dst.hf8[i] := convert_fp16_to_hf8(__A.fp16[i - 16])
|
|
1745
|
+
/// FI
|
|
1746
|
+
/// ENDFOR
|
|
1747
|
+
///
|
|
1748
|
+
/// dst[MAX:256] := 0
|
|
1749
|
+
/// \endcode
|
|
1750
|
+
///
|
|
1751
|
+
/// \headerfile <immintrin.h>
|
|
1752
|
+
///
|
|
1753
|
+
/// This intrinsic corresponds to the \c VCVT2PH2HF8 instruction.
|
|
1754
|
+
///
|
|
1755
|
+
/// \param __A
|
|
1756
|
+
/// A 256-bit vector of [16 x fp16].
|
|
1757
|
+
/// \param __B
|
|
1758
|
+
/// A 256-bit vector of [16 x fp16].
|
|
1759
|
+
/// \returns
|
|
1760
|
+
/// A 256-bit vector of [32 x hf8]. Lower 16 elements correspond to the
|
|
1761
|
+
/// (converted) elements from \a __B; higher order elements correspond to the
|
|
1762
|
+
/// (converted) elements from \a __A.
|
|
1763
|
+
static __inline__ __m256i __DEFAULT_FN_ATTRS256
|
|
1764
|
+
_mm256_cvt2ph_hf8(__m256h __A, __m256h __B) {
|
|
1765
|
+
return (__m256i)__builtin_ia32_vcvt2ph2hf8_256((__v16hf)(__A),
|
|
1766
|
+
(__v16hf)(__B));
|
|
1767
|
+
}
|
|
1768
|
+
|
|
1769
|
+
/// Convert two 256-bit vectors, \a __A and \a __B, containing packed FP16
|
|
1770
|
+
/// floating-point elements to a 256-bit vector containing E4M3 FP8 elements.
|
|
1771
|
+
/// Merging mask \a __U is used to determine if given element should be taken
|
|
1772
|
+
/// from \a __W instead.
|
|
1773
|
+
///
|
|
1774
|
+
/// \code{.operation}
|
|
1775
|
+
/// FOR i := 0 to 31
|
|
1776
|
+
/// IF __U[i]
|
|
1777
|
+
/// IF i < 16
|
|
1778
|
+
/// dst.hf8[i] := convert_fp16_to_hf8(__B.fp16[i])
|
|
1779
|
+
/// ELSE
|
|
1780
|
+
/// dst.hf8[i] := convert_fp16_to_hf8(__A.fp16[i - 16])
|
|
1781
|
+
/// FI
|
|
1782
|
+
/// ELSE
|
|
1783
|
+
/// dst.hf8[i] := __W.hf8[i]
|
|
1784
|
+
/// FI
|
|
1785
|
+
/// ENDFOR
|
|
1786
|
+
///
|
|
1787
|
+
/// dst[MAX:256] := 0
|
|
1788
|
+
/// \endcode
|
|
1789
|
+
///
|
|
1790
|
+
/// \headerfile <immintrin.h>
|
|
1791
|
+
///
|
|
1792
|
+
/// This intrinsic corresponds to the \c VCVT2PH2HF8 instruction.
|
|
1793
|
+
///
|
|
1794
|
+
/// \param __W
|
|
1795
|
+
/// A 256-bit vector of [32 x hf8].
|
|
1796
|
+
/// \param __U
|
|
1797
|
+
/// A 32-bit merging mask.
|
|
1798
|
+
/// \param __A
|
|
1799
|
+
/// A 256-bit vector of [16 x fp16].
|
|
1800
|
+
/// \param __B
|
|
1801
|
+
/// A 256-bit vector of [16 x fp16].
|
|
1802
|
+
/// \returns
|
|
1803
|
+
/// A 256-bit vector of [32 x hf8]. Lower 16 elements correspond to the
|
|
1804
|
+
/// (converted) elements from \a __B; higher order elements correspond to the
|
|
1805
|
+
/// (converted) elements from \a __A. If corresponding mask bit is not set, then
|
|
1806
|
+
/// element from \a __W is taken instead.
|
|
1807
|
+
static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_mask_cvt2ph_hf8(
|
|
1808
|
+
__m256i __W, __mmask32 __U, __m256h __A, __m256h __B) {
|
|
1809
|
+
return (__m256i)__builtin_ia32_selectb_256(
|
|
1810
|
+
(__mmask32)__U, (__v32qi)_mm256_cvt2ph_hf8(__A, __B), (__v32qi)__W);
|
|
1811
|
+
}
|
|
1812
|
+
|
|
1813
|
+
/// Convert two 256-bit vectors, \a __A and \a __B, containing packed FP16
|
|
1814
|
+
/// floating-point elements to a 256-bit vector containing E4M3 FP8 elements.
|
|
1815
|
+
/// Zeroing mask \a __U is used to determine if given element should be zeroed
|
|
1816
|
+
/// instead.
|
|
1817
|
+
///
|
|
1818
|
+
/// \code{.operation}
|
|
1819
|
+
/// FOR i := 0 to 31
|
|
1820
|
+
/// IF __U[i]
|
|
1821
|
+
/// IF i < 16
|
|
1822
|
+
/// dst.hf8[i] := convert_fp16_to_hf8(__B.fp16[i])
|
|
1823
|
+
/// ELSE
|
|
1824
|
+
/// dst.hf8[i] := convert_fp16_to_hf8(__A.fp16[i - 16])
|
|
1825
|
+
/// FI
|
|
1826
|
+
/// ELSE
|
|
1827
|
+
/// dst.hf8[i] := 0
|
|
1828
|
+
/// FI
|
|
1829
|
+
/// ENDFOR
|
|
1830
|
+
///
|
|
1831
|
+
/// dst[MAX:256] := 0
|
|
1832
|
+
/// \endcode
|
|
1833
|
+
///
|
|
1834
|
+
/// \headerfile <immintrin.h>
|
|
1835
|
+
///
|
|
1836
|
+
/// This intrinsic corresponds to the \c VCVT2PH2HF8 instruction.
|
|
1837
|
+
///
|
|
1838
|
+
/// \param __U
|
|
1839
|
+
/// A 32-bit zeroing mask.
|
|
1840
|
+
/// \param __A
|
|
1841
|
+
/// A 256-bit vector of [16 x fp16].
|
|
1842
|
+
/// \param __B
|
|
1843
|
+
/// A 256-bit vector of [16 x fp16].
|
|
1844
|
+
/// \returns
|
|
1845
|
+
/// A 256-bit vector of [32 x hf8]. Lower 16 elements correspond to the
|
|
1846
|
+
/// (converted) elements from \a __B; higher order elements correspond to the
|
|
1847
|
+
/// (converted) elements from \a __A. If corresponding mask bit is not set,
|
|
1848
|
+
/// zero is taken instead.
|
|
1849
|
+
static __inline__ __m256i __DEFAULT_FN_ATTRS256
|
|
1850
|
+
_mm256_maskz_cvt2ph_hf8(__mmask32 __U, __m256h __A, __m256h __B) {
|
|
1851
|
+
return (__m256i)__builtin_ia32_selectb_256(
|
|
1852
|
+
(__mmask32)__U, (__v32qi)_mm256_cvt2ph_hf8(__A, __B),
|
|
1853
|
+
(__v32qi)(__m256i)_mm256_setzero_si256());
|
|
1854
|
+
}
|
|
1855
|
+
|
|
1856
|
+
/// Convert two 128-bit vectors, \a __A and \a __B, containing packed FP16
|
|
1857
|
+
/// floating-point elements to a 128-bit vector containing E4M3 FP8 elements.
|
|
1858
|
+
/// Resulting elements are saturated in case of overflow.
|
|
1859
|
+
///
|
|
1860
|
+
/// \code{.operation}
|
|
1861
|
+
/// FOR i := 0 to 15
|
|
1862
|
+
/// IF i < 8
|
|
1863
|
+
/// dst.hf8[i] := convert_fp16_to_hf8_saturate(__B.fp16[i])
|
|
1864
|
+
/// ELSE
|
|
1865
|
+
/// dst.hf8[i] := convert_fp16_to_hf8_saturate(__A.fp16[i - 8])
|
|
1866
|
+
/// FI
|
|
1867
|
+
/// ENDFOR
|
|
1868
|
+
///
|
|
1869
|
+
/// dst[MAX:128] := 0
|
|
1870
|
+
/// \endcode
|
|
1871
|
+
///
|
|
1872
|
+
/// \headerfile <immintrin.h>
|
|
1873
|
+
///
|
|
1874
|
+
/// This intrinsic corresponds to the \c VCVT2PH2HF8S instruction.
|
|
1875
|
+
///
|
|
1876
|
+
/// \param __A
|
|
1877
|
+
/// A 128-bit vector of [8 x fp16].
|
|
1878
|
+
/// \param __B
|
|
1879
|
+
/// A 128-bit vector of [8 x fp16].
|
|
1880
|
+
/// \returns
|
|
1881
|
+
/// A 128-bit vector of [16 x hf8]. Lower 8 elements correspond to the
|
|
1882
|
+
/// (converted) elements from \a __B; higher order elements correspond to the
|
|
1883
|
+
/// (converted) elements from \a __A.
|
|
1884
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS128
|
|
1885
|
+
_mm_cvts_2ph_hf8(__m128h __A, __m128h __B) {
|
|
1886
|
+
return (__m128i)__builtin_ia32_vcvt2ph2hf8s_128((__v8hf)(__A),
|
|
1887
|
+
(__v8hf)(__B));
|
|
1888
|
+
}
|
|
1889
|
+
|
|
1890
|
+
/// Convert two 128-bit vectors, \a __A and \a __B, containing packed FP16
|
|
1891
|
+
/// floating-point elements to a 128-bit vector containing E4M3 FP8 elements.
|
|
1892
|
+
/// Merging mask \a __U is used to determine if given element should be taken
|
|
1893
|
+
/// from \a __W instead. Resulting elements are saturated in case of overflow.
|
|
1894
|
+
///
|
|
1895
|
+
/// \code{.operation}
|
|
1896
|
+
/// FOR i := 0 to 15
|
|
1897
|
+
/// IF __U[i]
|
|
1898
|
+
/// IF i < 8
|
|
1899
|
+
/// dst.hf8[i] := convert_fp16_to_hf8_saturate(__B.fp16[i])
|
|
1900
|
+
/// ELSE
|
|
1901
|
+
/// dst.hf8[i] := convert_fp16_to_hf8_saturate(__A.fp16[i - 8])
|
|
1902
|
+
/// FI
|
|
1903
|
+
/// ELSE
|
|
1904
|
+
/// dst.hf8[i] := __W.hf8[i]
|
|
1905
|
+
/// FI
|
|
1906
|
+
/// ENDFOR
|
|
1907
|
+
///
|
|
1908
|
+
/// dst[MAX:128] := 0
|
|
1909
|
+
/// \endcode
|
|
1910
|
+
///
|
|
1911
|
+
/// \headerfile <immintrin.h>
|
|
1912
|
+
///
|
|
1913
|
+
/// This intrinsic corresponds to the \c VCVT2PH2HF8S instruction.
|
|
1914
|
+
///
|
|
1915
|
+
/// \param __W
|
|
1916
|
+
/// A 128-bit vector of [16 x hf8].
|
|
1917
|
+
/// \param __U
|
|
1918
|
+
/// A 16-bit merging mask.
|
|
1919
|
+
/// \param __A
|
|
1920
|
+
/// A 128-bit vector of [8 x fp16].
|
|
1921
|
+
/// \param __B
|
|
1922
|
+
/// A 128-bit vector of [8 x fp16].
|
|
1923
|
+
/// \returns
|
|
1924
|
+
/// A 128-bit vector of [16 x hf8]. Lower 8 elements correspond to the
|
|
1925
|
+
/// (converted) elements from \a __B; higher order elements correspond to the
|
|
1926
|
+
/// (converted) elements from \a __A. If corresponding mask bit is not set, then
|
|
1927
|
+
/// element from \a __W is taken instead.
|
|
1928
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS128
|
|
1929
|
+
_mm_mask_cvts_2ph_hf8(__m128i __W, __mmask16 __U, __m128h __A, __m128h __B) {
|
|
1930
|
+
return (__m128i)__builtin_ia32_selectb_128(
|
|
1931
|
+
(__mmask16)__U, (__v16qi)_mm_cvts_2ph_hf8(__A, __B), (__v16qi)__W);
|
|
1932
|
+
}
|
|
1933
|
+
|
|
1934
|
+
/// Convert two 128-bit vectors, \a __A and \a __B, containing packed FP16
|
|
1935
|
+
/// floating-point elements to a 128-bit vector containing E4M3 FP8 elements.
|
|
1936
|
+
/// Zeroing mask \a __U is used to determine if given element should be zeroed
|
|
1937
|
+
/// instead. Resulting elements are saturated in case of overflow.
|
|
1938
|
+
///
|
|
1939
|
+
/// \code{.operation}
|
|
1940
|
+
/// FOR i := 0 to 15
|
|
1941
|
+
/// IF __U[i]
|
|
1942
|
+
/// IF i < 8
|
|
1943
|
+
/// dst.hf8[i] := convert_fp16_to_hf8_saturate(__B.fp16[i])
|
|
1944
|
+
/// ELSE
|
|
1945
|
+
/// dst.hf8[i] := convert_fp16_to_hf8_saturate(__A.fp16[i - 8])
|
|
1946
|
+
/// FI
|
|
1947
|
+
/// ELSE
|
|
1948
|
+
/// dst.hf8[i] := 0
|
|
1949
|
+
/// FI
|
|
1950
|
+
/// ENDFOR
|
|
1951
|
+
///
|
|
1952
|
+
/// dst[MAX:128] := 0
|
|
1953
|
+
/// \endcode
|
|
1954
|
+
///
|
|
1955
|
+
/// \headerfile <immintrin.h>
|
|
1956
|
+
///
|
|
1957
|
+
/// This intrinsic corresponds to the \c VCVT2PH2HF8S instruction.
|
|
1958
|
+
///
|
|
1959
|
+
/// \param __U
|
|
1960
|
+
/// A 16-bit zeroing mask.
|
|
1961
|
+
/// \param __A
|
|
1962
|
+
/// A 128-bit vector of [8 x fp16].
|
|
1963
|
+
/// \param __B
|
|
1964
|
+
/// A 128-bit vector of [8 x fp16].
|
|
1965
|
+
/// \returns
|
|
1966
|
+
/// A 128-bit vector of [16 x hf8]. Lower 8 elements correspond to the
|
|
1967
|
+
/// (converted) elements from \a __B; higher order elements correspond to the
|
|
1968
|
+
/// (converted) elements from \a __A. If corresponding mask bit is not set, then
|
|
1969
|
+
/// zero is taken instead.
|
|
1970
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS128
|
|
1971
|
+
_mm_maskz_cvts_2ph_hf8(__mmask16 __U, __m128h __A, __m128h __B) {
|
|
1972
|
+
return (__m128i)__builtin_ia32_selectb_128(
|
|
1973
|
+
(__mmask16)__U, (__v16qi)_mm_cvts_2ph_hf8(__A, __B),
|
|
1974
|
+
(__v16qi)(__m128i)_mm_setzero_si128());
|
|
1975
|
+
}
|
|
1976
|
+
|
|
1977
|
+
/// Convert two 256-bit vectors, \a __A and \a __B, containing packed FP16
|
|
1978
|
+
/// floating-point elements to a 256-bit vector containing E4M3 FP8 elements.
|
|
1979
|
+
/// Resulting elements are saturated in case of overflow.
|
|
1980
|
+
///
|
|
1981
|
+
/// \code{.operation}
|
|
1982
|
+
/// FOR i := 0 to 31
|
|
1983
|
+
/// IF i < 16
|
|
1984
|
+
/// dst.hf8[i] := convert_fp16_to_hf8_saturate(__B.fp16[i])
|
|
1985
|
+
/// ELSE
|
|
1986
|
+
/// dst.hf8[i] := convert_fp16_to_hf8_saturate(__A.fp16[i - 16])
|
|
1987
|
+
/// FI
|
|
1988
|
+
/// ENDFOR
|
|
1989
|
+
///
|
|
1990
|
+
/// dst[MAX:256] := 0
|
|
1991
|
+
/// \endcode
|
|
1992
|
+
///
|
|
1993
|
+
/// \headerfile <immintrin.h>
|
|
1994
|
+
///
|
|
1995
|
+
/// This intrinsic corresponds to the \c VCVT2PH2HF8S instruction.
|
|
1996
|
+
///
|
|
1997
|
+
/// \param __A
|
|
1998
|
+
/// A 256-bit vector of [16 x fp16].
|
|
1999
|
+
/// \param __B
|
|
2000
|
+
/// A 256-bit vector of [16 x fp16].
|
|
2001
|
+
/// \returns
|
|
2002
|
+
/// A 256-bit vector of [32 x hf8]. Lower 16 elements correspond to the
|
|
2003
|
+
/// (converted) elements from \a __B; higher order elements correspond to the
|
|
2004
|
+
/// (converted) elements from \a __A.
|
|
2005
|
+
static __inline__ __m256i __DEFAULT_FN_ATTRS256
|
|
2006
|
+
_mm256_cvts_2ph_hf8(__m256h __A, __m256h __B) {
|
|
2007
|
+
return (__m256i)__builtin_ia32_vcvt2ph2hf8s_256((__v16hf)(__A),
|
|
2008
|
+
(__v16hf)(__B));
|
|
2009
|
+
}
|
|
2010
|
+
|
|
2011
|
+
/// Convert two 256-bit vectors, \a __A and \a __B, containing packed FP16
|
|
2012
|
+
/// floating-point elements to a 256-bit vector containing E4M3 FP8 elements.
|
|
2013
|
+
/// Merging mask \a __U is used to determine if given element should be taken
|
|
2014
|
+
/// from \a __W instead. Resulting elements are saturated in case of overflow.
|
|
2015
|
+
///
|
|
2016
|
+
/// \code{.operation}
|
|
2017
|
+
/// FOR i := 0 to 31
|
|
2018
|
+
/// IF __U[i]
|
|
2019
|
+
/// IF i < 16
|
|
2020
|
+
/// dst.hf8[i] := convert_fp16_to_hf8_saturate(__B.fp16[i])
|
|
2021
|
+
/// ELSE
|
|
2022
|
+
/// dst.hf8[i] := convert_fp16_to_hf8_saturate(__A.fp16[i - 16])
|
|
2023
|
+
/// FI
|
|
2024
|
+
/// ELSE
|
|
2025
|
+
/// dst.hf8[i] := __W.hf8[i]
|
|
2026
|
+
/// FI
|
|
2027
|
+
/// ENDFOR
|
|
2028
|
+
///
|
|
2029
|
+
/// dst[MAX:256] := 0
|
|
2030
|
+
/// \endcode
|
|
2031
|
+
///
|
|
2032
|
+
/// \headerfile <immintrin.h>
|
|
2033
|
+
///
|
|
2034
|
+
/// This intrinsic corresponds to the \c VCVT2PH2HF8S instruction.
|
|
2035
|
+
///
|
|
2036
|
+
/// \param __W
|
|
2037
|
+
/// A 256-bit vector of [32 x hf8].
|
|
2038
|
+
/// \param __U
|
|
2039
|
+
/// A 32-bit merging mask.
|
|
2040
|
+
/// \param __A
|
|
2041
|
+
/// A 256-bit vector of [16 x fp16].
|
|
2042
|
+
/// \param __B
|
|
2043
|
+
/// A 256-bit vector of [16 x fp16].
|
|
2044
|
+
/// \returns
|
|
2045
|
+
/// A 256-bit vector of [32 x hf8]. Lower 16 elements correspond to the
|
|
2046
|
+
/// (converted) elements from \a __B; higher order elements correspond to the
|
|
2047
|
+
/// (converted) elements from \a __A. If corresponding mask bit is not set, then
|
|
2048
|
+
/// element from \a __W is taken instead.
|
|
2049
|
+
static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_mask_cvts_2ph_hf8(
|
|
2050
|
+
__m256i __W, __mmask32 __U, __m256h __A, __m256h __B) {
|
|
2051
|
+
return (__m256i)__builtin_ia32_selectb_256(
|
|
2052
|
+
(__mmask32)__U, (__v32qi)_mm256_cvts_2ph_hf8(__A, __B), (__v32qi)__W);
|
|
2053
|
+
}
|
|
2054
|
+
|
|
2055
|
+
/// Convert two 256-bit vectors, \a __A and \a __B, containing packed FP16
|
|
2056
|
+
/// floating-point elements to a 256-bit vector containing E4M3 FP8 elements.
|
|
2057
|
+
/// Zeroing mask \a __U is used to determine if given element should be zeroed
|
|
2058
|
+
/// instead. Resulting elements are saturated in case of overflow.
|
|
2059
|
+
///
|
|
2060
|
+
/// \code{.operation}
|
|
2061
|
+
/// FOR i := 0 to 31
|
|
2062
|
+
/// IF __U[i]
|
|
2063
|
+
/// IF i < 16
|
|
2064
|
+
/// dst.hf8[i] := convert_fp16_to_hf8_saturate(__B.fp16[i])
|
|
2065
|
+
/// ELSE
|
|
2066
|
+
/// dst.hf8[i] := convert_fp16_to_hf8_saturate(__A.fp16[i - 16])
|
|
2067
|
+
/// FI
|
|
2068
|
+
/// ELSE
|
|
2069
|
+
/// dst.hf8[i] := 0
|
|
2070
|
+
/// FI
|
|
2071
|
+
/// ENDFOR
|
|
2072
|
+
///
|
|
2073
|
+
/// dst[MAX:256] := 0
|
|
2074
|
+
/// \endcode
|
|
2075
|
+
///
|
|
2076
|
+
/// \headerfile <immintrin.h>
|
|
2077
|
+
///
|
|
2078
|
+
/// This intrinsic corresponds to the \c VCVT2PH2HF8S instruction.
|
|
2079
|
+
///
|
|
2080
|
+
/// \param __U
|
|
2081
|
+
/// A 32-bit zeroing mask.
|
|
2082
|
+
/// \param __A
|
|
2083
|
+
/// A 256-bit vector of [16 x fp16].
|
|
2084
|
+
/// \param __B
|
|
2085
|
+
/// A 256-bit vector of [16 x fp16].
|
|
2086
|
+
/// \returns
|
|
2087
|
+
/// A 256-bit vector of [32 x hf8]. Lower 16 elements correspond to the
|
|
2088
|
+
/// (converted) elements from \a __B; higher order elements correspond to the
|
|
2089
|
+
/// (converted) elements from \a __A. If corresponding mask bit is not set,
|
|
2090
|
+
/// zero is taken instead.
|
|
2091
|
+
static __inline__ __m256i __DEFAULT_FN_ATTRS256
|
|
2092
|
+
_mm256_maskz_cvts_2ph_hf8(__mmask32 __U, __m256h __A, __m256h __B) {
|
|
2093
|
+
return (__m256i)__builtin_ia32_selectb_256(
|
|
2094
|
+
(__mmask32)__U, (__v32qi)_mm256_cvts_2ph_hf8(__A, __B),
|
|
2095
|
+
(__v32qi)(__m256i)_mm256_setzero_si256());
|
|
2096
|
+
}
|
|
2097
|
+
|
|
2098
|
+
/// Convert 128-bit vector \a __A, containing packed FP8 E4M3 floating-point
|
|
2099
|
+
/// elements to a 128-bit vector containing FP16 elements. The conversion is exact.
|
|
2100
|
+
///
|
|
2101
|
+
/// \code{.operation}
|
|
2102
|
+
/// FOR i := 0 to 7
|
|
2103
|
+
/// dst.fp16[i] := convert_hf8_to_fp16(__A.hf8[i])
|
|
2104
|
+
/// ENDFOR
|
|
2105
|
+
///
|
|
2106
|
+
/// dst[MAX:128] := 0
|
|
2107
|
+
/// \endcode
|
|
2108
|
+
///
|
|
2109
|
+
/// \headerfile <immintrin.h>
|
|
2110
|
+
///
|
|
2111
|
+
/// This intrinsic corresponds to the \c VCVTHF82PH instruction.
|
|
2112
|
+
///
|
|
2113
|
+
/// \param __A
|
|
2114
|
+
/// A 128-bit vector of [16 x hf8].
|
|
2115
|
+
/// \returns
|
|
2116
|
+
/// A 128-bit vector of [8 x fp16]. Resulting elements correspond to the
|
|
2117
|
+
/// (converted) elements from \a __A.
|
|
2118
|
+
static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_cvthf8_ph(__m128i __A) {
|
|
2119
|
+
return (__m128h)__builtin_ia32_vcvthf8_2ph128_mask(
|
|
2120
|
+
(__v16qi)__A, (__v8hf)(__m128h)_mm_undefined_ph(), (__mmask8)-1);
|
|
2121
|
+
}
|
|
2122
|
+
|
|
2123
|
+
/// Convert 128-bit vector \a __A, containing packed FP8 E4M3 floating-point
|
|
2124
|
+
/// elements to a 128-bit vector containing FP16 elements. The conversion is
|
|
2125
|
+
/// exact. Merging mask \a __U is used to determine if given element should be
|
|
2126
|
+
/// taken from \a __W instead.
|
|
2127
|
+
///
|
|
2128
|
+
/// \code{.operation}
|
|
2129
|
+
/// FOR i := 0 to 7
|
|
2130
|
+
/// IF __U[i]
|
|
2131
|
+
/// dst.fp16[i] := convert_hf8_to_fp16(__A.hf8[i])
|
|
2132
|
+
/// ELSE
|
|
2133
|
+
/// dst.fp16[i] := __W.fp16[i]
|
|
2134
|
+
/// FI
|
|
2135
|
+
/// ENDFOR
|
|
2136
|
+
///
|
|
2137
|
+
/// dst[MAX:128] := 0
|
|
2138
|
+
/// \endcode
|
|
2139
|
+
///
|
|
2140
|
+
/// \headerfile <immintrin.h>
|
|
2141
|
+
///
|
|
2142
|
+
/// This intrinsic corresponds to the \c VCVTHF82PH instruction.
|
|
2143
|
+
///
|
|
2144
|
+
/// \param __W
|
|
2145
|
+
/// A 128-bit vector of [8 x fp16].
|
|
2146
|
+
/// \param __U
|
|
2147
|
+
/// A 8-bit merging mask.
|
|
2148
|
+
/// \param __A
|
|
2149
|
+
/// A 128-bit vector of [16 x hf8].
|
|
2150
|
+
/// \returns
|
|
2151
|
+
/// A 128-bit vector of [8 x fp16]. Resulting elements correspond to the
|
|
2152
|
+
/// (converted) elements from \a __A. If corresponding mask bit is not set, then
|
|
2153
|
+
/// element from \a __W is taken instead.
|
|
2154
|
+
static __inline__ __m128h __DEFAULT_FN_ATTRS128
|
|
2155
|
+
_mm_mask_cvthf8_ph(__m128h __W, __mmask8 __U, __m128i __A) {
|
|
2156
|
+
return (__m128h)__builtin_ia32_vcvthf8_2ph128_mask(
|
|
2157
|
+
(__v16qi)__A, (__v8hf)(__m128h)__W, (__mmask8)__U);
|
|
2158
|
+
}
|
|
2159
|
+
|
|
2160
|
+
/// Convert 128-bit vector \a __A, containing packed FP8 E4M3 floating-point
|
|
2161
|
+
/// elements to a 128-bit vector containing FP16 elements. The conversion is
|
|
2162
|
+
/// exact. Zeroing mask \a __U is used to determine if given element should be
|
|
2163
|
+
/// zeroed instead.
|
|
2164
|
+
///
|
|
2165
|
+
/// \code{.operation}
|
|
2166
|
+
/// FOR i := 0 to 7
|
|
2167
|
+
/// IF __U[i]
|
|
2168
|
+
/// dst.fp16[i] := convert_hf8_to_fp16(__A.hf8[i])
|
|
2169
|
+
/// ELSE
|
|
2170
|
+
/// dst.fp16[i] := 0
|
|
2171
|
+
/// FI
|
|
2172
|
+
/// ENDFOR
|
|
2173
|
+
///
|
|
2174
|
+
/// dst[MAX:128] := 0
|
|
2175
|
+
/// \endcode
|
|
2176
|
+
///
|
|
2177
|
+
/// \headerfile <immintrin.h>
|
|
2178
|
+
///
|
|
2179
|
+
/// This intrinsic corresponds to the \c VCVTHF82PH instruction.
|
|
2180
|
+
///
|
|
2181
|
+
/// \param __U
|
|
2182
|
+
/// A 8-bit zeroing mask.
|
|
2183
|
+
/// \param __A
|
|
2184
|
+
/// A 128-bit vector of [16 x hf8].
|
|
2185
|
+
/// \returns
|
|
2186
|
+
/// A 128-bit vector of [8 x fp16]. Resulting elements correspond to the
|
|
2187
|
+
/// (converted) elements from \a __A. If corresponding mask bit is not set, then
|
|
2188
|
+
/// zero is taken instead.
|
|
2189
|
+
static __inline__ __m128h __DEFAULT_FN_ATTRS128
|
|
2190
|
+
_mm_maskz_cvthf8_ph(__mmask8 __U, __m128i __A) {
|
|
2191
|
+
return (__m128h)__builtin_ia32_vcvthf8_2ph128_mask(
|
|
2192
|
+
(__v16qi)__A, (__v8hf)(__m128h)_mm_setzero_ph(), (__mmask8)__U);
|
|
2193
|
+
}
|
|
2194
|
+
|
|
2195
|
+
/// Convert 256-bit vector \a __A, containing packed FP8 E4M3 floating-point
|
|
2196
|
+
/// elements to a 256-bit vector containing FP16 elements. The conversion is exact.
|
|
2197
|
+
///
|
|
2198
|
+
/// \code{.operation}
|
|
2199
|
+
/// FOR i := 0 to 15
|
|
2200
|
+
/// dst.fp16[i] := convert_hf8_to_fp16(__A.hf8[i])
|
|
2201
|
+
/// ENDFOR
|
|
2202
|
+
///
|
|
2203
|
+
/// dst[MAX:256] := 0
|
|
2204
|
+
/// \endcode
|
|
2205
|
+
///
|
|
2206
|
+
/// \headerfile <immintrin.h>
|
|
2207
|
+
///
|
|
2208
|
+
/// This intrinsic corresponds to the \c VCVTHF82PH instruction.
|
|
2209
|
+
///
|
|
2210
|
+
/// \param __A
|
|
2211
|
+
/// A 256-bit vector of [32 x hf8].
|
|
2212
|
+
/// \returns
|
|
2213
|
+
/// A 256-bit vector of [16 x fp16]. Resulting elements correspond to the
|
|
2214
|
+
/// (converted) elements from \a __A.
|
|
2215
|
+
static __inline__ __m256h __DEFAULT_FN_ATTRS256 _mm256_cvthf8_ph(__m128i __A) {
|
|
2216
|
+
return (__m256h)__builtin_ia32_vcvthf8_2ph256_mask(
|
|
2217
|
+
(__v16qi)__A, (__v16hf)(__m256h)_mm256_undefined_ph(), (__mmask16)-1);
|
|
2218
|
+
}
|
|
2219
|
+
|
|
2220
|
+
/// Convert 256-bit vector \a __A, containing packed FP8 E4M3 floating-point
|
|
2221
|
+
/// elements to a 256-bit vector containing FP16 elements. The conversion is
|
|
2222
|
+
/// exact. Merging mask \a __U is used to determine if given element should be
|
|
2223
|
+
/// taken from \a __W instead.
|
|
2224
|
+
///
|
|
2225
|
+
/// \code{.operation}
|
|
2226
|
+
/// FOR i := 0 to 15
|
|
2227
|
+
/// IF __U[i]
|
|
2228
|
+
/// dst.fp16[i] := convert_hf8_to_fp16(__A.hf8[i])
|
|
2229
|
+
/// ELSE
|
|
2230
|
+
/// dst.fp16[i] := __W.fp16[i]
|
|
2231
|
+
/// FI
|
|
2232
|
+
/// ENDFOR
|
|
2233
|
+
///
|
|
2234
|
+
/// dst[MAX:256] := 0
|
|
2235
|
+
/// \endcode
|
|
2236
|
+
///
|
|
2237
|
+
/// \headerfile <immintrin.h>
|
|
2238
|
+
///
|
|
2239
|
+
/// This intrinsic corresponds to the \c VCVTHF82PH instruction.
|
|
2240
|
+
///
|
|
2241
|
+
/// \param __W
|
|
2242
|
+
/// A 256-bit vector of [16 x fp16].
|
|
2243
|
+
/// \param __U
|
|
2244
|
+
/// A 16-bit merging mask.
|
|
2245
|
+
/// \param __A
|
|
2246
|
+
/// A 256-bit vector of [32 x hf8].
|
|
2247
|
+
/// \returns
|
|
2248
|
+
/// A 256-bit vector of [16 x fp16]. Resulting elements correspond to the
|
|
2249
|
+
/// (converted) elements from \a __A. If corresponding mask bit is not set, then
|
|
2250
|
+
/// element from \a __W is taken instead.
|
|
2251
|
+
static __inline__ __m256h __DEFAULT_FN_ATTRS256
|
|
2252
|
+
_mm256_mask_cvthf8_ph(__m256h __W, __mmask16 __U, __m128i __A) {
|
|
2253
|
+
return (__m256h)__builtin_ia32_vcvthf8_2ph256_mask(
|
|
2254
|
+
(__v16qi)__A, (__v16hf)(__m256h)__W, (__mmask16)__U);
|
|
2255
|
+
}
|
|
2256
|
+
|
|
2257
|
+
/// Convert 256-bit vector \a __A, containing packed FP8 E4M3 floating-point
|
|
2258
|
+
/// elements to a 256-bit vector containing FP16 elements. The conversion is
|
|
2259
|
+
/// exact. Zeroing mask \a __U is used to determine if given element should be
|
|
2260
|
+
/// zeroed instead.
|
|
2261
|
+
///
|
|
2262
|
+
/// \code{.operation}
|
|
2263
|
+
/// FOR i := 0 to 15
|
|
2264
|
+
/// IF __U[i]
|
|
2265
|
+
/// dst.fp16[i] := convert_hf8_to_fp16(__A.hf8[i])
|
|
2266
|
+
/// ELSE
|
|
2267
|
+
/// dst.fp16[i] := 0
|
|
2268
|
+
/// FI
|
|
2269
|
+
/// ENDFOR
|
|
2270
|
+
///
|
|
2271
|
+
/// dst[MAX:256] := 0
|
|
2272
|
+
/// \endcode
|
|
2273
|
+
///
|
|
2274
|
+
/// \headerfile <immintrin.h>
|
|
2275
|
+
///
|
|
2276
|
+
/// This intrinsic corresponds to the \c VCVTHF82PH instruction.
|
|
2277
|
+
///
|
|
2278
|
+
/// \param __U
|
|
2279
|
+
/// A 16-bit zeroing mask.
|
|
2280
|
+
/// \param __A
|
|
2281
|
+
/// A 256-bit vector of [32 x hf8].
|
|
2282
|
+
/// \returns
|
|
2283
|
+
/// A 256-bit vector of [16 x fp16]. Resulting elements correspond to the
|
|
2284
|
+
/// (converted) elements from \a __A. If corresponding mask bit is not set, then
|
|
2285
|
+
/// zero is taken instead.
|
|
2286
|
+
static __inline__ __m256h __DEFAULT_FN_ATTRS256
|
|
2287
|
+
_mm256_maskz_cvthf8_ph(__mmask16 __U, __m128i __A) {
|
|
2288
|
+
return (__m256h)__builtin_ia32_vcvthf8_2ph256_mask(
|
|
2289
|
+
(__v16qi)__A, (__v16hf)(__m256h)_mm256_setzero_ph(), (__mmask16)__U);
|
|
2290
|
+
}
|
|
2291
|
+
|
|
2292
|
+
/// Convert 128-bit vector \a __A containing packed FP16 floating-point elements
|
|
2293
|
+
/// to a 128-bit vector containing E5M2 FP8 elements. Upper elements of
|
|
2294
|
+
/// resulting vector are zeroed.
|
|
2295
|
+
///
|
|
2296
|
+
/// \code{.operation}
|
|
2297
|
+
/// FOR i := 0 to 7
|
|
2298
|
+
/// dst.bf8[i] := convert_fp16_to_bf8(__A.fp16[i])
|
|
2299
|
+
/// ENDFOR
|
|
2300
|
+
///
|
|
2301
|
+
/// dst[MAX:64] := 0
|
|
2302
|
+
/// \endcode
|
|
2303
|
+
///
|
|
2304
|
+
/// \headerfile <immintrin.h>
|
|
2305
|
+
///
|
|
2306
|
+
/// This intrinsic corresponds to the \c VCVTPH2BF8 instruction.
|
|
2307
|
+
///
|
|
2308
|
+
/// \param __A
|
|
2309
|
+
/// A 128-bit vector of [8 x fp16].
|
|
2310
|
+
/// \returns
|
|
2311
|
+
/// A 128-bit vector of [16 x bf8]. Lower elements correspond to the (converted)
|
|
2312
|
+
/// elements from \a __A; upper elements are zeroed.
|
|
2313
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_cvtph_bf8(__m128h __A) {
|
|
2314
|
+
return (__m128i)__builtin_ia32_vcvtph2bf8_128_mask(
|
|
2315
|
+
(__v8hf)__A, (__v16qi)(__m128i)_mm_undefined_si128(), (__mmask8)-1);
|
|
2316
|
+
}
|
|
2317
|
+
|
|
2318
|
+
/// Convert 128-bit vector \a __A containing packed FP16 floating-point elements
|
|
2319
|
+
/// to a 128-bit vector containing E5M2 FP8 elements. Upper elements of
|
|
2320
|
+
/// resulting vector are zeroed. Merging mask \a __U is used to determine if
|
|
2321
|
+
/// given element should be taken from \a __W instead.
|
|
2322
|
+
///
|
|
2323
|
+
/// \code{.operation}
|
|
2324
|
+
/// FOR i := 0 to 7
|
|
2325
|
+
/// IF __U[i]
|
|
2326
|
+
/// dst.bf8[i] := convert_fp16_to_bf8(__A.fp16[i])
|
|
2327
|
+
/// ELSE
|
|
2328
|
+
/// dst.bf8[i] := __W.bf8[i]
|
|
2329
|
+
/// FI
|
|
2330
|
+
/// ENDFOR
|
|
2331
|
+
///
|
|
2332
|
+
/// dst[MAX:64] := 0
|
|
2333
|
+
/// \endcode
|
|
2334
|
+
///
|
|
2335
|
+
/// \headerfile <immintrin.h>
|
|
2336
|
+
///
|
|
2337
|
+
/// This intrinsic corresponds to the \c VCVTPH2BF8 instruction.
|
|
2338
|
+
///
|
|
2339
|
+
/// \param __W
|
|
2340
|
+
/// A 128-bit vector of [16 x bf8].
|
|
2341
|
+
/// \param __U
|
|
2342
|
+
/// A 8-bit merging mask.
|
|
2343
|
+
/// \param __A
|
|
2344
|
+
/// A 128-bit vector of [8 x fp16].
|
|
2345
|
+
/// \returns
|
|
2346
|
+
/// A 128-bit vector of [16 x bf8]. Lower elements correspond to the
|
|
2347
|
+
/// (converted) elements from \a __A; upper elements are zeroed. If
|
|
2348
|
+
/// corresponding mask bit is not set, then element from \a __W is taken instead.
|
|
2349
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS128
|
|
2350
|
+
_mm_mask_cvtph_bf8(__m128i __W, __mmask8 __U, __m128h __A) {
|
|
2351
|
+
return (__m128i)__builtin_ia32_vcvtph2bf8_128_mask(
|
|
2352
|
+
(__v8hf)__A, (__v16qi)(__m128i)__W, (__mmask8)__U);
|
|
2353
|
+
}
|
|
2354
|
+
|
|
2355
|
+
/// Convert 128-bit vector \a __A containing packed FP16 floating-point elements
|
|
2356
|
+
/// to a 128-bit vector containing E5M2 FP8 elements. Upper elements of
|
|
2357
|
+
/// resulting vector are zeroed. Zeroing mask \a __U is used to determine if
|
|
2358
|
+
/// given element should be zeroed instead.
|
|
2359
|
+
///
|
|
2360
|
+
/// \code{.operation}
|
|
2361
|
+
/// FOR i := 0 to 7
|
|
2362
|
+
/// IF __U[i]
|
|
2363
|
+
/// dst.bf8[i] := convert_fp16_to_bf8(__A.fp16[i])
|
|
2364
|
+
/// ELSE
|
|
2365
|
+
/// dst.bf8[i] := 0
|
|
2366
|
+
/// FI
|
|
2367
|
+
/// ENDFOR
|
|
2368
|
+
///
|
|
2369
|
+
/// dst[MAX:64] := 0
|
|
2370
|
+
/// \endcode
|
|
2371
|
+
///
|
|
2372
|
+
/// \headerfile <immintrin.h>
|
|
2373
|
+
///
|
|
2374
|
+
/// This intrinsic corresponds to the \c VCVTPH2BF8 instruction.
|
|
2375
|
+
///
|
|
2376
|
+
/// \param __U
|
|
2377
|
+
/// A 8-bit zeroing mask.
|
|
2378
|
+
/// \param __A
|
|
2379
|
+
/// A 128-bit vector of [8 x fp16].
|
|
2380
|
+
/// \returns
|
|
2381
|
+
/// A 128-bit vector of [16 x bf8]. Lower elements correspond to the
|
|
2382
|
+
/// (converted) elements from \a __A; upper elements are zeroed. If
|
|
2383
|
+
/// corresponding mask bit is not set, then element is zeroed.
|
|
2384
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS128
|
|
2385
|
+
_mm_maskz_cvtph_bf8(__mmask8 __U, __m128h __A) {
|
|
2386
|
+
return (__m128i)__builtin_ia32_vcvtph2bf8_128_mask(
|
|
2387
|
+
(__v8hf)__A, (__v16qi)(__m128i)_mm_setzero_si128(), (__mmask8)__U);
|
|
2388
|
+
}
|
|
2389
|
+
|
|
2390
|
+
/// Convert 256-bit vector \a __A containing packed FP16 floating-point elements
|
|
2391
|
+
/// to a 128-bit vector containing E5M2 FP8 elements.
|
|
2392
|
+
///
|
|
2393
|
+
/// \code{.operation}
|
|
2394
|
+
/// FOR i := 0 to 15
|
|
2395
|
+
/// dst.bf8[i] := convert_fp16_to_bf8(__A.fp16[i])
|
|
2396
|
+
/// ENDFOR
|
|
2397
|
+
///
|
|
2398
|
+
/// dst[MAX:128] := 0
|
|
2399
|
+
/// \endcode
|
|
2400
|
+
///
|
|
2401
|
+
/// \headerfile <immintrin.h>
|
|
2402
|
+
///
|
|
2403
|
+
/// This intrinsic corresponds to the \c VCVTPH2BF8 instruction.
|
|
2404
|
+
///
|
|
2405
|
+
/// \param __A
|
|
2406
|
+
/// A 256-bit vector of [16 x fp16].
|
|
2407
|
+
/// \returns
|
|
2408
|
+
/// A 128-bit vector of [16 x bf8]. Resulting elements correspond to the (converted)
|
|
2409
|
+
/// elements from \a __A.
|
|
2410
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS256
|
|
2411
|
+
_mm256_cvtph_bf8(__m256h __A) {
|
|
2412
|
+
return (__m128i)__builtin_ia32_vcvtph2bf8_256_mask(
|
|
2413
|
+
(__v16hf)__A, (__v16qi)(__m128i)_mm_undefined_si128(), (__mmask16)-1);
|
|
2414
|
+
}
|
|
2415
|
+
|
|
2416
|
+
/// Convert 256-bit vector \a __A containing packed FP16 floating-point elements
|
|
2417
|
+
/// to a 128-bit vector containing E5M2 FP8 elements. Merging mask \a __U is
|
|
2418
|
+
/// used to determine if given element should be taken from \a __W instead.
|
|
2419
|
+
///
|
|
2420
|
+
/// \code{.operation}
|
|
2421
|
+
/// FOR i := 0 to 15
|
|
2422
|
+
/// IF __U[i]
|
|
2423
|
+
/// dst.bf8[i] := convert_fp16_to_bf8(__A.fp16[i])
|
|
2424
|
+
/// ELSE
|
|
2425
|
+
/// dst.bf8[i] := __W.bf8[i]
|
|
2426
|
+
/// FI
|
|
2427
|
+
/// ENDFOR
|
|
2428
|
+
///
|
|
2429
|
+
/// dst[MAX:128] := 0
|
|
2430
|
+
/// \endcode
|
|
2431
|
+
///
|
|
2432
|
+
/// \headerfile <immintrin.h>
|
|
2433
|
+
///
|
|
2434
|
+
/// This intrinsic corresponds to the \c VCVTPH2BF8 instruction.
|
|
2435
|
+
///
|
|
2436
|
+
/// \param __W
|
|
2437
|
+
/// A 128-bit vector of [16 x bf8].
|
|
2438
|
+
/// \param __U
|
|
2439
|
+
/// A 16-bit merging mask.
|
|
2440
|
+
/// \param __A
|
|
2441
|
+
/// A 256-bit vector of [8 x fp16].
|
|
2442
|
+
/// \returns
|
|
2443
|
+
/// A 128-bit vector of [16 x bf8]. Resulting elements correspond to the
|
|
2444
|
+
/// (converted) elements from \a __A. If
|
|
2445
|
+
/// corresponding mask bit is not set, then element from \a __W is taken instead.
|
|
2446
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS256
|
|
2447
|
+
_mm256_mask_cvtph_bf8(__m128i __W, __mmask16 __U, __m256h __A) {
|
|
2448
|
+
return (__m128i)__builtin_ia32_vcvtph2bf8_256_mask(
|
|
2449
|
+
(__v16hf)__A, (__v16qi)(__m128i)__W, (__mmask16)__U);
|
|
2450
|
+
}
|
|
2451
|
+
|
|
2452
|
+
/// Convert 256-bit vector \a __A containing packed FP16 floating-point elements
|
|
2453
|
+
/// to a 128-bit vector containing E5M2 FP8 elements. Zeroing mask \a __U is
|
|
2454
|
+
/// used to determine if given element should be zeroed instead.
|
|
2455
|
+
///
|
|
2456
|
+
/// \code{.operation}
|
|
2457
|
+
/// FOR i := 0 to 15
|
|
2458
|
+
/// IF __U[i]
|
|
2459
|
+
/// dst.bf8[i] := convert_fp16_to_bf8(__A.fp16[i])
|
|
2460
|
+
/// ELSE
|
|
2461
|
+
/// dst.bf8[i] := 0
|
|
2462
|
+
/// FI
|
|
2463
|
+
/// ENDFOR
|
|
2464
|
+
///
|
|
2465
|
+
/// dst[MAX:128] := 0
|
|
2466
|
+
/// \endcode
|
|
2467
|
+
///
|
|
2468
|
+
/// \headerfile <immintrin.h>
|
|
2469
|
+
///
|
|
2470
|
+
/// This intrinsic corresponds to the \c VCVTPH2BF8 instruction.
|
|
2471
|
+
///
|
|
2472
|
+
/// \param __U
|
|
2473
|
+
/// A 16-bit zeroing mask.
|
|
2474
|
+
/// \param __A
|
|
2475
|
+
/// A 256-bit vector of [16 x fp16].
|
|
2476
|
+
/// \returns
|
|
2477
|
+
/// A 128-bit vector of [16 x bf8]. Resulting elements correspond to the
|
|
2478
|
+
/// (converted) elements from \a __A. If corresponding mask bit is not set,
|
|
2479
|
+
/// then element is zeroed instead.
|
|
2480
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS256
|
|
2481
|
+
_mm256_maskz_cvtph_bf8(__mmask16 __U, __m256h __A) {
|
|
2482
|
+
return (__m128i)__builtin_ia32_vcvtph2bf8_256_mask(
|
|
2483
|
+
(__v16hf)__A, (__v16qi)(__m128i)_mm_setzero_si128(), (__mmask16)__U);
|
|
2484
|
+
}
|
|
2485
|
+
|
|
2486
|
+
/// Convert 128-bit vector \a __A containing packed FP16 floating-point elements
|
|
2487
|
+
/// to a 128-bit vector containing E5M2 FP8 elements. Upper elements of
|
|
2488
|
+
/// resulting vector are zeroed. Results are saturated.
|
|
2489
|
+
///
|
|
2490
|
+
/// \code{.operation}
|
|
2491
|
+
/// FOR i := 0 to 7
|
|
2492
|
+
/// dst.bf8[i] := convert_fp16_to_bf8_saturate(__A.fp16[i])
|
|
2493
|
+
/// ENDFOR
|
|
2494
|
+
///
|
|
2495
|
+
/// dst[MAX:64] := 0
|
|
2496
|
+
/// \endcode
|
|
2497
|
+
///
|
|
2498
|
+
/// \headerfile <immintrin.h>
|
|
2499
|
+
///
|
|
2500
|
+
/// This intrinsic corresponds to the \c VCVTPH2BF8S instruction.
|
|
2501
|
+
///
|
|
2502
|
+
/// \param __A
|
|
2503
|
+
/// A 128-bit vector of [8 x fp16].
|
|
2504
|
+
/// \returns
|
|
2505
|
+
/// A 128-bit vector of [16 x bf8]. Lower elements correspond to the (converted)
|
|
2506
|
+
/// elements from \a __A; upper elements are zeroed.
|
|
2507
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_cvts_ph_bf8(__m128h __A) {
|
|
2508
|
+
return (__m128i)__builtin_ia32_vcvtph2bf8s_128_mask(
|
|
2509
|
+
(__v8hf)__A, (__v16qi)(__m128i)_mm_undefined_si128(), (__mmask8)-1);
|
|
2510
|
+
}
|
|
2511
|
+
|
|
2512
|
+
/// Convert 128-bit vector \a __A containing packed FP16 floating-point elements
|
|
2513
|
+
/// to a 128-bit vector containing E5M2 FP8 elements. Upper elements of
|
|
2514
|
+
/// resulting vector are zeroed. Results are saturated. Merging mask \a __U is
|
|
2515
|
+
/// used to determine if given element should be taken from \a __W instead.
|
|
2516
|
+
///
|
|
2517
|
+
/// \code{.operation}
|
|
2518
|
+
/// FOR i := 0 to 7
|
|
2519
|
+
/// IF __U[i]
|
|
2520
|
+
/// dst.bf8[i] := convert_fp16_to_bf8_saturate(__A.fp16[i])
|
|
2521
|
+
/// ELSE
|
|
2522
|
+
/// dst.bf8[i] := __W.bf8[i]
|
|
2523
|
+
/// FI
|
|
2524
|
+
/// ENDFOR
|
|
2525
|
+
///
|
|
2526
|
+
/// dst[MAX:64] := 0
|
|
2527
|
+
/// \endcode
|
|
2528
|
+
///
|
|
2529
|
+
/// \headerfile <immintrin.h>
|
|
2530
|
+
///
|
|
2531
|
+
/// This intrinsic corresponds to the \c VCVTPH2BF8S instruction.
|
|
2532
|
+
///
|
|
2533
|
+
/// \param __W
|
|
2534
|
+
/// A 128-bit vector of [16 x bf8].
|
|
2535
|
+
/// \param __U
|
|
2536
|
+
/// A 8-bit merging mask.
|
|
2537
|
+
/// \param __A
|
|
2538
|
+
/// A 128-bit vector of [8 x fp16].
|
|
2539
|
+
/// \returns
|
|
2540
|
+
/// A 128-bit vector of [16 x bf8]. Lower elements correspond to the
|
|
2541
|
+
/// (converted) elements from \a __A; upper elements are zeroed. If
|
|
2542
|
+
/// corresponding mask bit is not set, then element from \a __W is taken instead.
|
|
2543
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS128
|
|
2544
|
+
_mm_mask_cvts_ph_bf8(__m128i __W, __mmask8 __U, __m128h __A) {
|
|
2545
|
+
return (__m128i)__builtin_ia32_vcvtph2bf8s_128_mask(
|
|
2546
|
+
(__v8hf)__A, (__v16qi)(__m128i)__W, (__mmask8)__U);
|
|
2547
|
+
}
|
|
2548
|
+
|
|
2549
|
+
/// Convert 128-bit vector \a __A containing packed FP16 floating-point elements
|
|
2550
|
+
/// to a 128-bit vector containing E5M2 FP8 elements. Upper elements of
|
|
2551
|
+
/// resulting vector are zeroed. Results are saturated. Zeroing mask \a __U is
|
|
2552
|
+
/// used to determine if given element should be zeroed instead.
|
|
2553
|
+
///
|
|
2554
|
+
/// \code{.operation}
|
|
2555
|
+
/// FOR i := 0 to 7
|
|
2556
|
+
/// IF __U[i]
|
|
2557
|
+
/// dst.bf8[i] := convert_fp16_to_bf8_saturate(__A.fp16[i])
|
|
2558
|
+
/// ELSE
|
|
2559
|
+
/// dst.bf8[i] := 0
|
|
2560
|
+
/// FI
|
|
2561
|
+
/// ENDFOR
|
|
2562
|
+
///
|
|
2563
|
+
/// dst[MAX:64] := 0
|
|
2564
|
+
/// \endcode
|
|
2565
|
+
///
|
|
2566
|
+
/// \headerfile <immintrin.h>
|
|
2567
|
+
///
|
|
2568
|
+
/// This intrinsic corresponds to the \c VCVTPH2BF8S instruction.
|
|
2569
|
+
///
|
|
2570
|
+
/// \param __U
|
|
2571
|
+
/// A 8-bit zeroing mask.
|
|
2572
|
+
/// \param __A
|
|
2573
|
+
/// A 128-bit vector of [8 x fp16].
|
|
2574
|
+
/// \returns
|
|
2575
|
+
/// A 128-bit vector of [16 x bf8]. Lower elements correspond to the
|
|
2576
|
+
/// (converted) elements from \a __A; upper elements are zeroed. If
|
|
2577
|
+
/// corresponding mask bit is not set, then element is zeroed.
|
|
2578
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS128
|
|
2579
|
+
_mm_maskz_cvts_ph_bf8(__mmask8 __U, __m128h __A) {
|
|
2580
|
+
return (__m128i)__builtin_ia32_vcvtph2bf8s_128_mask(
|
|
2581
|
+
(__v8hf)__A, (__v16qi)(__m128i)_mm_setzero_si128(), (__mmask8)__U);
|
|
2582
|
+
}
|
|
2583
|
+
|
|
2584
|
+
/// Convert 256-bit vector \a __A containing packed FP16 floating-point elements
|
|
2585
|
+
/// to a 128-bit vector containing E5M2 FP8 elements. Results are saturated.
|
|
2586
|
+
///
|
|
2587
|
+
/// \code{.operation}
|
|
2588
|
+
/// FOR i := 0 to 15
|
|
2589
|
+
/// dst.bf8[i] := convert_fp16_to_bf8_saturate(__A.fp16[i])
|
|
2590
|
+
/// ENDFOR
|
|
2591
|
+
///
|
|
2592
|
+
/// dst[MAX:128] := 0
|
|
2593
|
+
/// \endcode
|
|
2594
|
+
///
|
|
2595
|
+
/// \headerfile <immintrin.h>
|
|
2596
|
+
///
|
|
2597
|
+
/// This intrinsic corresponds to the \c VCVTPH2BF8S instruction.
|
|
2598
|
+
///
|
|
2599
|
+
/// \param __A
|
|
2600
|
+
/// A 256-bit vector of [16 x fp16].
|
|
2601
|
+
/// \returns
|
|
2602
|
+
/// A 128-bit vector of [16 x bf8]. Resulting elements correspond to the (converted)
|
|
2603
|
+
/// elements from \a __A.
|
|
2604
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS256
|
|
2605
|
+
_mm256_cvts_ph_bf8(__m256h __A) {
|
|
2606
|
+
return (__m128i)__builtin_ia32_vcvtph2bf8s_256_mask(
|
|
2607
|
+
(__v16hf)__A, (__v16qi)(__m128i)_mm_undefined_si128(), (__mmask16)-1);
|
|
2608
|
+
}
|
|
2609
|
+
|
|
2610
|
+
/// Convert 256-bit vector \a __A containing packed FP16 floating-point elements
|
|
2611
|
+
/// to a 128-bit vector containing E5M2 FP8 elements. Results are saturated.
|
|
2612
|
+
/// Merging mask \a __U is used to determine if given element should be taken
|
|
2613
|
+
/// from \a __W instead.
|
|
2614
|
+
///
|
|
2615
|
+
/// \code{.operation}
|
|
2616
|
+
/// FOR i := 0 to 15
|
|
2617
|
+
/// IF __U[i]
|
|
2618
|
+
/// dst.bf8[i] := convert_fp16_to_bf8_saturate(__A.fp16[i])
|
|
2619
|
+
/// ELSE
|
|
2620
|
+
/// dst.bf8[i] := __W.bf8[i]
|
|
2621
|
+
/// FI
|
|
2622
|
+
/// ENDFOR
|
|
2623
|
+
///
|
|
2624
|
+
/// dst[MAX:128] := 0
|
|
2625
|
+
/// \endcode
|
|
2626
|
+
///
|
|
2627
|
+
/// \headerfile <immintrin.h>
|
|
2628
|
+
///
|
|
2629
|
+
/// This intrinsic corresponds to the \c VCVTPH2BF8S instruction.
|
|
2630
|
+
///
|
|
2631
|
+
/// \param __W
|
|
2632
|
+
/// A 128-bit vector of [16 x bf8].
|
|
2633
|
+
/// \param __U
|
|
2634
|
+
/// A 16-bit merging mask.
|
|
2635
|
+
/// \param __A
|
|
2636
|
+
/// A 256-bit vector of [8 x fp16].
|
|
2637
|
+
/// \returns
|
|
2638
|
+
/// A 128-bit vector of [16 x bf8]. Resulting elements correspond to the
|
|
2639
|
+
/// (converted) elements from \a __A. If
|
|
2640
|
+
/// corresponding mask bit is not set, then element from \a __W is taken instead.
|
|
2641
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS256
|
|
2642
|
+
_mm256_mask_cvts_ph_bf8(__m128i __W, __mmask16 __U, __m256h __A) {
|
|
2643
|
+
return (__m128i)__builtin_ia32_vcvtph2bf8s_256_mask(
|
|
2644
|
+
(__v16hf)__A, (__v16qi)(__m128i)__W, (__mmask16)__U);
|
|
2645
|
+
}
|
|
2646
|
+
|
|
2647
|
+
/// Convert 256-bit vector \a __A containing packed FP16 floating-point elements
|
|
2648
|
+
/// to a 128-bit vector containing E5M2 FP8 elements. Results are saturated.
|
|
2649
|
+
/// Zeroing mask \a __U is used to determine if given element should be zeroed
|
|
2650
|
+
/// instead.
|
|
2651
|
+
///
|
|
2652
|
+
/// \code{.operation}
|
|
2653
|
+
/// FOR i := 0 to 15
|
|
2654
|
+
/// IF __U[i]
|
|
2655
|
+
/// dst.bf8[i] := convert_fp16_to_bf8_saturate(__A.fp16[i])
|
|
2656
|
+
/// ELSE
|
|
2657
|
+
/// dst.bf8[i] := 0
|
|
2658
|
+
/// FI
|
|
2659
|
+
/// ENDFOR
|
|
2660
|
+
///
|
|
2661
|
+
/// dst[MAX:128] := 0
|
|
2662
|
+
/// \endcode
|
|
2663
|
+
///
|
|
2664
|
+
/// \headerfile <immintrin.h>
|
|
2665
|
+
///
|
|
2666
|
+
/// This intrinsic corresponds to the \c VCVTPH2BF8S instruction.
|
|
2667
|
+
///
|
|
2668
|
+
/// \param __U
|
|
2669
|
+
/// A 16-bit zeroing mask.
|
|
2670
|
+
/// \param __A
|
|
2671
|
+
/// A 256-bit vector of [16 x fp16].
|
|
2672
|
+
/// \returns
|
|
2673
|
+
/// A 128-bit vector of [16 x bf8]. Resulting elements correspond to the
|
|
2674
|
+
/// (converted) elements from \a __A. If corresponding mask bit is not set,
|
|
2675
|
+
/// then element is zeroed instead.
|
|
2676
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS256
|
|
2677
|
+
_mm256_maskz_cvts_ph_bf8(__mmask16 __U, __m256h __A) {
|
|
2678
|
+
return (__m128i)__builtin_ia32_vcvtph2bf8s_256_mask(
|
|
2679
|
+
(__v16hf)__A, (__v16qi)(__m128i)_mm_setzero_si128(), (__mmask16)__U);
|
|
2680
|
+
}
|
|
2681
|
+
|
|
2682
|
+
/// Convert 128-bit vector \a __A containing packed FP16 floating-point elements
|
|
2683
|
+
/// to a 128-bit vector containing E5M2 FP8 elements. Upper elements of
|
|
2684
|
+
/// resulting vector are zeroed.
|
|
2685
|
+
///
|
|
2686
|
+
/// \code{.operation}
|
|
2687
|
+
/// FOR i := 0 to 7
|
|
2688
|
+
/// dst.hf8[i] := convert_fp16_to_hf8(__A.fp16[i])
|
|
2689
|
+
/// ENDFOR
|
|
2690
|
+
///
|
|
2691
|
+
/// dst[MAX:64] := 0
|
|
2692
|
+
/// \endcode
|
|
2693
|
+
///
|
|
2694
|
+
/// \headerfile <immintrin.h>
|
|
2695
|
+
///
|
|
2696
|
+
/// This intrinsic corresponds to the \c VCVTPH2HF8 instruction.
|
|
2697
|
+
///
|
|
2698
|
+
/// \param __A
|
|
2699
|
+
/// A 128-bit vector of [8 x fp16].
|
|
2700
|
+
/// \returns
|
|
2701
|
+
/// A 128-bit vector of [16 x hf8]. Lower elements correspond to the (converted)
|
|
2702
|
+
/// elements from \a __A; upper elements are zeroed.
|
|
2703
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_cvtph_hf8(__m128h __A) {
|
|
2704
|
+
return (__m128i)__builtin_ia32_vcvtph2hf8_128_mask(
|
|
2705
|
+
(__v8hf)__A, (__v16qi)(__m128i)_mm_undefined_si128(), (__mmask8)-1);
|
|
2706
|
+
}
|
|
2707
|
+
|
|
2708
|
+
/// Convert 128-bit vector \a __A containing packed FP16 floating-point elements
|
|
2709
|
+
/// to a 128-bit vector containing E4M3 FP8 elements. Upper elements of
|
|
2710
|
+
/// resulting vector are zeroed. Merging mask \a __U is used to determine if
|
|
2711
|
+
/// given element should be taken from \a __W instead.
|
|
2712
|
+
///
|
|
2713
|
+
/// \code{.operation}
|
|
2714
|
+
/// FOR i := 0 to 7
|
|
2715
|
+
/// IF __U[i]
|
|
2716
|
+
/// dst.hf8[i] := convert_fp16_to_hf8(__A.fp16[i])
|
|
2717
|
+
/// ELSE
|
|
2718
|
+
/// dst.hf8[i] := __W.hf8[i]
|
|
2719
|
+
/// FI
|
|
2720
|
+
/// ENDFOR
|
|
2721
|
+
///
|
|
2722
|
+
/// dst[MAX:64] := 0
|
|
2723
|
+
/// \endcode
|
|
2724
|
+
///
|
|
2725
|
+
/// \headerfile <immintrin.h>
|
|
2726
|
+
///
|
|
2727
|
+
/// This intrinsic corresponds to the \c VCVTPH2HF8 instruction.
|
|
2728
|
+
///
|
|
2729
|
+
/// \param __W
|
|
2730
|
+
/// A 128-bit vector of [16 x hf8].
|
|
2731
|
+
/// \param __U
|
|
2732
|
+
/// A 8-bit merging mask.
|
|
2733
|
+
/// \param __A
|
|
2734
|
+
/// A 128-bit vector of [8 x fp16].
|
|
2735
|
+
/// \returns
|
|
2736
|
+
/// A 128-bit vector of [16 x hf8]. Lower elements correspond to the
|
|
2737
|
+
/// (converted) elements from \a __A; upper elements are zeroed. If
|
|
2738
|
+
/// corresponding mask bit is not set, then element from \a __W is taken instead.
|
|
2739
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS128
|
|
2740
|
+
_mm_mask_cvtph_hf8(__m128i __W, __mmask8 __U, __m128h __A) {
|
|
2741
|
+
return (__m128i)__builtin_ia32_vcvtph2hf8_128_mask(
|
|
2742
|
+
(__v8hf)__A, (__v16qi)(__m128i)__W, (__mmask8)__U);
|
|
2743
|
+
}
|
|
2744
|
+
|
|
2745
|
+
/// Convert 128-bit vector \a __A containing packed FP16 floating-point elements
|
|
2746
|
+
/// to a 128-bit vector containing E4M3 FP8 elements. Upper elements of
|
|
2747
|
+
/// resulting vector are zeroed. Zeroing mask \a __U is used to determine if
|
|
2748
|
+
/// given element should be zeroed instead.
|
|
2749
|
+
///
|
|
2750
|
+
/// \code{.operation}
|
|
2751
|
+
/// FOR i := 0 to 7
|
|
2752
|
+
/// IF __U[i]
|
|
2753
|
+
/// dst.hf8[i] := convert_fp16_to_hf8(__A.fp16[i])
|
|
2754
|
+
/// ELSE
|
|
2755
|
+
/// dst.hf8[i] := 0
|
|
2756
|
+
/// FI
|
|
2757
|
+
/// ENDFOR
|
|
2758
|
+
///
|
|
2759
|
+
/// dst[MAX:64] := 0
|
|
2760
|
+
/// \endcode
|
|
2761
|
+
///
|
|
2762
|
+
/// \headerfile <immintrin.h>
|
|
2763
|
+
///
|
|
2764
|
+
/// This intrinsic corresponds to the \c VCVTPH2HF8 instruction.
|
|
2765
|
+
///
|
|
2766
|
+
/// \param __U
|
|
2767
|
+
/// A 8-bit zeroing mask.
|
|
2768
|
+
/// \param __A
|
|
2769
|
+
/// A 128-bit vector of [8 x fp16].
|
|
2770
|
+
/// \returns
|
|
2771
|
+
/// A 128-bit vector of [16 x hf8]. Lower elements correspond to the
|
|
2772
|
+
/// (converted) elements from \a __A; upper elements are zeroed. If
|
|
2773
|
+
/// corresponding mask bit is not set, then element is zeroed.
|
|
2774
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS128
|
|
2775
|
+
_mm_maskz_cvtph_hf8(__mmask8 __U, __m128h __A) {
|
|
2776
|
+
return (__m128i)__builtin_ia32_vcvtph2hf8_128_mask(
|
|
2777
|
+
(__v8hf)__A, (__v16qi)(__m128i)_mm_setzero_si128(), (__mmask8)__U);
|
|
2778
|
+
}
|
|
2779
|
+
|
|
2780
|
+
/// Convert 256-bit vector \a __A containing packed FP16 floating-point elements
|
|
2781
|
+
/// to a 128-bit vector containing E4M3 FP8 elements.
|
|
2782
|
+
///
|
|
2783
|
+
/// \code{.operation}
|
|
2784
|
+
/// FOR i := 0 to 15
|
|
2785
|
+
/// dst.hf8[i] := convert_fp16_to_hf8(__A.fp16[i])
|
|
2786
|
+
/// ENDFOR
|
|
2787
|
+
///
|
|
2788
|
+
/// dst[MAX:128] := 0
|
|
2789
|
+
/// \endcode
|
|
2790
|
+
///
|
|
2791
|
+
/// \headerfile <immintrin.h>
|
|
2792
|
+
///
|
|
2793
|
+
/// This intrinsic corresponds to the \c VCVTPH2HF8 instruction.
|
|
2794
|
+
///
|
|
2795
|
+
/// \param __A
|
|
2796
|
+
/// A 256-bit vector of [16 x fp16].
|
|
2797
|
+
/// \returns
|
|
2798
|
+
/// A 128-bit vector of [16 x hf8]. Resulting elements correspond to the (converted)
|
|
2799
|
+
/// elements from \a __A.
|
|
2800
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS256
|
|
2801
|
+
_mm256_cvtph_hf8(__m256h __A) {
|
|
2802
|
+
return (__m128i)__builtin_ia32_vcvtph2hf8_256_mask(
|
|
2803
|
+
(__v16hf)__A, (__v16qi)(__m128i)_mm_undefined_si128(), (__mmask16)-1);
|
|
2804
|
+
}
|
|
2805
|
+
|
|
2806
|
+
/// Convert 256-bit vector \a __A containing packed FP16 floating-point elements
|
|
2807
|
+
/// to a 128-bit vector containing E4M3 FP8 elements. Merging mask \a __U is
|
|
2808
|
+
/// used to determine if given element should be taken from \a __W instead.
|
|
2809
|
+
///
|
|
2810
|
+
/// \code{.operation}
|
|
2811
|
+
/// FOR i := 0 to 15
|
|
2812
|
+
/// IF __U[i]
|
|
2813
|
+
/// dst.hf8[i] := convert_fp16_to_hf8(__A.fp16[i])
|
|
2814
|
+
/// ELSE
|
|
2815
|
+
/// dst.hf8[i] := __W.hf8[i]
|
|
2816
|
+
/// FI
|
|
2817
|
+
/// ENDFOR
|
|
2818
|
+
///
|
|
2819
|
+
/// dst[MAX:128] := 0
|
|
2820
|
+
/// \endcode
|
|
2821
|
+
///
|
|
2822
|
+
/// \headerfile <immintrin.h>
|
|
2823
|
+
///
|
|
2824
|
+
/// This intrinsic corresponds to the \c VCVTPH2HF8 instruction.
|
|
2825
|
+
///
|
|
2826
|
+
/// \param __W
|
|
2827
|
+
/// A 128-bit vector of [16 x hf8].
|
|
2828
|
+
/// \param __U
|
|
2829
|
+
/// A 16-bit merging mask.
|
|
2830
|
+
/// \param __A
|
|
2831
|
+
/// A 256-bit vector of [8 x fp16].
|
|
2832
|
+
/// \returns
|
|
2833
|
+
/// A 128-bit vector of [16 x hf8]. Resulting elements correspond to the
|
|
2834
|
+
/// (converted) elements from \a __A. If
|
|
2835
|
+
/// corresponding mask bit is not set, then element from \a __W is taken instead.
|
|
2836
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS256
|
|
2837
|
+
_mm256_mask_cvtph_hf8(__m128i __W, __mmask16 __U, __m256h __A) {
|
|
2838
|
+
return (__m128i)__builtin_ia32_vcvtph2hf8_256_mask(
|
|
2839
|
+
(__v16hf)__A, (__v16qi)(__m128i)__W, (__mmask16)__U);
|
|
2840
|
+
}
|
|
2841
|
+
|
|
2842
|
+
/// Convert 256-bit vector \a __A containing packed FP16 floating-point elements
|
|
2843
|
+
/// to a 128-bit vector containing E4M3 FP8 elements. Zeroing mask \a __U is
|
|
2844
|
+
/// used to determine if given element should be zeroed instead.
|
|
2845
|
+
///
|
|
2846
|
+
/// \code{.operation}
|
|
2847
|
+
/// FOR i := 0 to 15
|
|
2848
|
+
/// IF __U[i]
|
|
2849
|
+
/// dst.hf8[i] := convert_fp16_to_hf8(__A.fp16[i])
|
|
2850
|
+
/// ELSE
|
|
2851
|
+
/// dst.hf8[i] := 0
|
|
2852
|
+
/// FI
|
|
2853
|
+
/// ENDFOR
|
|
2854
|
+
///
|
|
2855
|
+
/// dst[MAX:128] := 0
|
|
2856
|
+
/// \endcode
|
|
2857
|
+
///
|
|
2858
|
+
/// \headerfile <immintrin.h>
|
|
2859
|
+
///
|
|
2860
|
+
/// This intrinsic corresponds to the \c VCVTPH2HF8 instruction.
|
|
2861
|
+
///
|
|
2862
|
+
/// \param __U
|
|
2863
|
+
/// A 16-bit zeroing mask.
|
|
2864
|
+
/// \param __A
|
|
2865
|
+
/// A 256-bit vector of [16 x fp16].
|
|
2866
|
+
/// \returns
|
|
2867
|
+
/// A 128-bit vector of [16 x hf8]. Resulting elements correspond to the
|
|
2868
|
+
/// (converted) elements from \a __A. If corresponding mask bit is not set,
|
|
2869
|
+
/// then element is zeroed instead.
|
|
2870
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS256
|
|
2871
|
+
_mm256_maskz_cvtph_hf8(__mmask16 __U, __m256h __A) {
|
|
2872
|
+
return (__m128i)__builtin_ia32_vcvtph2hf8_256_mask(
|
|
2873
|
+
(__v16hf)__A, (__v16qi)(__m128i)_mm_setzero_si128(), (__mmask16)__U);
|
|
2874
|
+
}
|
|
2875
|
+
|
|
2876
|
+
/// Convert 128-bit vector \a __A containing packed FP16 floating-point elements
|
|
2877
|
+
/// to a 128-bit vector containing E4M3 FP8 elements. Upper elements of
|
|
2878
|
+
/// resulting vector are zeroed. Results are saturated.
|
|
2879
|
+
///
|
|
2880
|
+
/// \code{.operation}
|
|
2881
|
+
/// FOR i := 0 to 7
|
|
2882
|
+
/// dst.hf8[i] := convert_fp16_to_hf8_saturate(__A.fp16[i])
|
|
2883
|
+
/// ENDFOR
|
|
2884
|
+
///
|
|
2885
|
+
/// dst[MAX:64] := 0
|
|
2886
|
+
/// \endcode
|
|
2887
|
+
///
|
|
2888
|
+
/// \headerfile <immintrin.h>
|
|
2889
|
+
///
|
|
2890
|
+
/// This intrinsic corresponds to the \c VCVTPH2HF8S instruction.
|
|
2891
|
+
///
|
|
2892
|
+
/// \param __A
|
|
2893
|
+
/// A 128-bit vector of [8 x fp16].
|
|
2894
|
+
/// \returns
|
|
2895
|
+
/// A 128-bit vector of [16 x hf8]. Lower elements correspond to the (converted)
|
|
2896
|
+
/// elements from \a __A; upper elements are zeroed.
|
|
2897
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_cvts_ph_hf8(__m128h __A) {
|
|
2898
|
+
return (__m128i)__builtin_ia32_vcvtph2hf8s_128_mask(
|
|
2899
|
+
(__v8hf)__A, (__v16qi)(__m128i)_mm_undefined_si128(), (__mmask8)-1);
|
|
2900
|
+
}
|
|
2901
|
+
|
|
2902
|
+
/// Convert 128-bit vector \a __A containing packed FP16 floating-point elements
|
|
2903
|
+
/// to a 128-bit vector containing E4M3 FP8 elements. Upper elements of
|
|
2904
|
+
/// resulting vector are zeroed. Results are saturated. Merging mask \a __U is
|
|
2905
|
+
/// used to determine if given element should be taken from \a __W instead.
|
|
2906
|
+
///
|
|
2907
|
+
/// \code{.operation}
|
|
2908
|
+
/// FOR i := 0 to 7
|
|
2909
|
+
/// IF __U[i]
|
|
2910
|
+
/// dst.hf8[i] := convert_fp16_to_hf8_saturate(__A.fp16[i])
|
|
2911
|
+
/// ELSE
|
|
2912
|
+
/// dst.hf8[i] := __W.hf8[i]
|
|
2913
|
+
/// FI
|
|
2914
|
+
/// ENDFOR
|
|
2915
|
+
///
|
|
2916
|
+
/// dst[MAX:64] := 0
|
|
2917
|
+
/// \endcode
|
|
2918
|
+
///
|
|
2919
|
+
/// \headerfile <immintrin.h>
|
|
2920
|
+
///
|
|
2921
|
+
/// This intrinsic corresponds to the \c VCVTPH2HF8S instruction.
|
|
2922
|
+
///
|
|
2923
|
+
/// \param __W
|
|
2924
|
+
/// A 128-bit vector of [16 x hf8].
|
|
2925
|
+
/// \param __U
|
|
2926
|
+
/// A 8-bit merging mask.
|
|
2927
|
+
/// \param __A
|
|
2928
|
+
/// A 128-bit vector of [8 x fp16].
|
|
2929
|
+
/// \returns
|
|
2930
|
+
/// A 128-bit vector of [16 x hf8]. Lower elements correspond to the
|
|
2931
|
+
/// (converted) elements from \a __A; upper elements are zeroed. If
|
|
2932
|
+
/// corresponding mask bit is not set, then element from \a __W is taken instead.
|
|
2933
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS128
|
|
2934
|
+
_mm_mask_cvts_ph_hf8(__m128i __W, __mmask8 __U, __m128h __A) {
|
|
2935
|
+
return (__m128i)__builtin_ia32_vcvtph2hf8s_128_mask(
|
|
2936
|
+
(__v8hf)__A, (__v16qi)(__m128i)__W, (__mmask8)__U);
|
|
2937
|
+
}
|
|
2938
|
+
|
|
2939
|
+
/// Convert 128-bit vector \a __A containing packed FP16 floating-point elements
|
|
2940
|
+
/// to a 128-bit vector containing E4M3 FP8 elements. Upper elements of
|
|
2941
|
+
/// resulting vector are zeroed. Results are saturated. Zeroing mask \a __U is
|
|
2942
|
+
/// used to determine if given element should be zeroed instead.
|
|
2943
|
+
///
|
|
2944
|
+
/// \code{.operation}
|
|
2945
|
+
/// FOR i := 0 to 7
|
|
2946
|
+
/// IF __U[i]
|
|
2947
|
+
/// dst.hf8[i] := convert_fp16_to_hf8_saturate(__A.fp16[i])
|
|
2948
|
+
/// ELSE
|
|
2949
|
+
/// dst.hf8[i] := 0
|
|
2950
|
+
/// FI
|
|
2951
|
+
/// ENDFOR
|
|
2952
|
+
///
|
|
2953
|
+
/// dst[MAX:64] := 0
|
|
2954
|
+
/// \endcode
|
|
2955
|
+
///
|
|
2956
|
+
/// \headerfile <immintrin.h>
|
|
2957
|
+
///
|
|
2958
|
+
/// This intrinsic corresponds to the \c VCVTPH2HF8S instruction.
|
|
2959
|
+
///
|
|
2960
|
+
/// \param __U
|
|
2961
|
+
/// A 8-bit zeroing mask.
|
|
2962
|
+
/// \param __A
|
|
2963
|
+
/// A 128-bit vector of [8 x fp16].
|
|
2964
|
+
/// \returns
|
|
2965
|
+
/// A 128-bit vector of [16 x hf8]. Lower elements correspond to the
|
|
2966
|
+
/// (converted) elements from \a __A; upper elements are zeroed. If
|
|
2967
|
+
/// corresponding mask bit is not set, then element is zeroed.
|
|
2968
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS128
|
|
2969
|
+
_mm_maskz_cvts_ph_hf8(__mmask8 __U, __m128h __A) {
|
|
2970
|
+
return (__m128i)__builtin_ia32_vcvtph2hf8s_128_mask(
|
|
2971
|
+
(__v8hf)__A, (__v16qi)(__m128i)_mm_setzero_si128(), (__mmask8)__U);
|
|
2972
|
+
}
|
|
2973
|
+
|
|
2974
|
+
/// Convert 256-bit vector \a __A containing packed FP16 floating-point elements
|
|
2975
|
+
/// to a 128-bit vector containing E4M3 FP8 elements. Results are saturated.
|
|
2976
|
+
///
|
|
2977
|
+
/// \code{.operation}
|
|
2978
|
+
/// FOR i := 0 to 15
|
|
2979
|
+
/// dst.hf8[i] := convert_fp16_to_hf8_saturate(__A.fp16[i])
|
|
2980
|
+
/// ENDFOR
|
|
2981
|
+
///
|
|
2982
|
+
/// dst[MAX:128] := 0
|
|
2983
|
+
/// \endcode
|
|
2984
|
+
///
|
|
2985
|
+
/// \headerfile <immintrin.h>
|
|
2986
|
+
///
|
|
2987
|
+
/// This intrinsic corresponds to the \c VCVTPH2HF8S instruction.
|
|
2988
|
+
///
|
|
2989
|
+
/// \param __A
|
|
2990
|
+
/// A 256-bit vector of [16 x fp16].
|
|
2991
|
+
/// \returns
|
|
2992
|
+
/// A 128-bit vector of [16 x hf8]. Resulting elements correspond to the (converted)
|
|
2993
|
+
/// elements from \a __A.
|
|
2994
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS256
|
|
2995
|
+
_mm256_cvts_ph_hf8(__m256h __A) {
|
|
2996
|
+
return (__m128i)__builtin_ia32_vcvtph2hf8s_256_mask(
|
|
2997
|
+
(__v16hf)__A, (__v16qi)(__m128i)_mm_undefined_si128(), (__mmask16)-1);
|
|
2998
|
+
}
|
|
2999
|
+
|
|
3000
|
+
/// Convert 256-bit vector \a __A containing packed FP16 floating-point elements
|
|
3001
|
+
/// to a 128-bit vector containing E4M3 FP8 elements. Results are saturated.
|
|
3002
|
+
/// Merging mask \a __U is used to determine if given element should be taken
|
|
3003
|
+
/// from \a __W instead.
|
|
3004
|
+
///
|
|
3005
|
+
/// \code{.operation}
|
|
3006
|
+
/// FOR i := 0 to 15
|
|
3007
|
+
/// IF __U[i]
|
|
3008
|
+
/// dst.hf8[i] := convert_fp16_to_hf8_saturate(__A.fp16[i])
|
|
3009
|
+
/// ELSE
|
|
3010
|
+
/// dst.hf8[i] := __W.hf8[i]
|
|
3011
|
+
/// FI
|
|
3012
|
+
/// ENDFOR
|
|
3013
|
+
///
|
|
3014
|
+
/// dst[MAX:128] := 0
|
|
3015
|
+
/// \endcode
|
|
3016
|
+
///
|
|
3017
|
+
/// \headerfile <immintrin.h>
|
|
3018
|
+
///
|
|
3019
|
+
/// This intrinsic corresponds to the \c VCVTPH2HF8S instruction.
|
|
3020
|
+
///
|
|
3021
|
+
/// \param __W
|
|
3022
|
+
/// A 128-bit vector of [16 x hf8].
|
|
3023
|
+
/// \param __U
|
|
3024
|
+
/// A 16-bit merging mask.
|
|
3025
|
+
/// \param __A
|
|
3026
|
+
/// A 256-bit vector of [8 x fp16].
|
|
3027
|
+
/// \returns
|
|
3028
|
+
/// A 128-bit vector of [16 x hf8]. Resulting elements correspond to the
|
|
3029
|
+
/// (converted) elements from \a __A. If
|
|
3030
|
+
/// corresponding mask bit is not set, then element from \a __W is taken instead.
|
|
3031
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS256
|
|
3032
|
+
_mm256_mask_cvts_ph_hf8(__m128i __W, __mmask16 __U, __m256h __A) {
|
|
3033
|
+
return (__m128i)__builtin_ia32_vcvtph2hf8s_256_mask(
|
|
3034
|
+
(__v16hf)__A, (__v16qi)(__m128i)__W, (__mmask16)__U);
|
|
3035
|
+
}
|
|
3036
|
+
|
|
3037
|
+
/// Convert 256-bit vector \a __A containing packed FP16 floating-point elements
|
|
3038
|
+
/// to a 128-bit vector containing E4M3 FP8 elements. Results are saturated.
|
|
3039
|
+
/// Zeroing mask \a __U is used to determine if given element should be zeroed
|
|
3040
|
+
/// instead.
|
|
3041
|
+
///
|
|
3042
|
+
/// \code{.operation}
|
|
3043
|
+
/// FOR i := 0 to 15
|
|
3044
|
+
/// IF __U[i]
|
|
3045
|
+
/// dst.hf8[i] := convert_fp16_to_hf8_saturate(__A.fp16[i])
|
|
3046
|
+
/// ELSE
|
|
3047
|
+
/// dst.hf8[i] := 0
|
|
3048
|
+
/// FI
|
|
3049
|
+
/// ENDFOR
|
|
3050
|
+
///
|
|
3051
|
+
/// dst[MAX:128] := 0
|
|
3052
|
+
/// \endcode
|
|
3053
|
+
///
|
|
3054
|
+
/// \headerfile <immintrin.h>
|
|
3055
|
+
///
|
|
3056
|
+
/// This intrinsic corresponds to the \c VCVTPH2HF8S instruction.
|
|
3057
|
+
///
|
|
3058
|
+
/// \param __U
|
|
3059
|
+
/// A 16-bit zeroing mask.
|
|
3060
|
+
/// \param __A
|
|
3061
|
+
/// A 256-bit vector of [16 x fp16].
|
|
3062
|
+
/// \returns
|
|
3063
|
+
/// A 128-bit vector of [16 x hf8]. Resulting elements correspond to the
|
|
3064
|
+
/// (converted) elements from \a __A. If corresponding mask bit is not set,
|
|
3065
|
+
/// then element is zeroed instead.
|
|
3066
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS256
|
|
3067
|
+
_mm256_maskz_cvts_ph_hf8(__mmask16 __U, __m256h __A) {
|
|
3068
|
+
return (__m128i)__builtin_ia32_vcvtph2hf8s_256_mask(
|
|
3069
|
+
(__v16hf)__A, (__v16qi)(__m128i)_mm_setzero_si128(), (__mmask16)__U);
|
|
3070
|
+
}
|
|
3071
|
+
|
|
3072
|
+
/// Convert 128-bit vector \a __A, containing packed FP8 E5M2 floating-point
|
|
3073
|
+
/// elements to a 128-bit vector containing FP16 elements. The conversion is exact.
|
|
3074
|
+
///
|
|
3075
|
+
/// \code{.operation}
|
|
3076
|
+
/// FOR i := 0 to 7
|
|
3077
|
+
/// dst.fp16[i] := convert_bf8_to_fp16(__A.bf8[i])
|
|
3078
|
+
/// ENDFOR
|
|
3079
|
+
/// \endcode
|
|
3080
|
+
///
|
|
3081
|
+
/// \headerfile <immintrin.h>
|
|
3082
|
+
///
|
|
3083
|
+
/// This intrinsic does not correspond to a single instruction.
|
|
3084
|
+
///
|
|
3085
|
+
/// \param __A
|
|
3086
|
+
/// A 128-bit vector of [16 x bf8].
|
|
3087
|
+
/// \returns
|
|
3088
|
+
/// A 128-bit vector of [8 x fp16]. Resulting elements correspond to the
|
|
3089
|
+
/// (converted) elements from \a __A.
|
|
3090
|
+
static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_cvtbf8_ph(__m128i __A) {
|
|
3091
|
+
return _mm_castsi128_ph(_mm_slli_epi16(_mm_cvtepi8_epi16(__A), 8));
|
|
3092
|
+
}
|
|
3093
|
+
|
|
3094
|
+
/// Convert 128-bit vector \a __A, containing packed FP8 E5M2 floating-point
|
|
3095
|
+
/// elements to a 128-bit vector containing FP16 elements. The conversion is
|
|
3096
|
+
/// exact. Merging mask \a __U is used to determine if given element should be
|
|
3097
|
+
/// taken from \a __W instead.
|
|
3098
|
+
///
|
|
3099
|
+
/// \code{.operation}
|
|
3100
|
+
/// FOR i := 0 to 7
|
|
3101
|
+
/// IF __U[i]
|
|
3102
|
+
/// dst.fp16[i] := convert_bf8_to_fp16(__A.bf8[i])
|
|
3103
|
+
/// ELSE
|
|
3104
|
+
/// dst.fp16[i] := __W.fp16[i]
|
|
3105
|
+
/// FI
|
|
3106
|
+
/// ENDFOR
|
|
3107
|
+
/// \endcode
|
|
3108
|
+
///
|
|
3109
|
+
/// \headerfile <immintrin.h>
|
|
3110
|
+
///
|
|
3111
|
+
/// This intrinsic does not correspond to a single instruction.
|
|
3112
|
+
///
|
|
3113
|
+
/// \param __W
|
|
3114
|
+
/// A 128-bit vector of [8 x fp16].
|
|
3115
|
+
/// \param __U
|
|
3116
|
+
/// A 8-bit merging mask.
|
|
3117
|
+
/// \param __A
|
|
3118
|
+
/// A 128-bit vector of [16 x bf8].
|
|
3119
|
+
/// \returns
|
|
3120
|
+
/// A 128-bit vector of [8 x fp16]. Resulting elements correspond to the
|
|
3121
|
+
/// (converted) elements from \a __A. If corresponding mask bit is not set, then
|
|
3122
|
+
/// element from \a __W is taken instead.
|
|
3123
|
+
static __inline__ __m128h __DEFAULT_FN_ATTRS128
|
|
3124
|
+
_mm_mask_cvtbf8_ph(__m128h __W, __mmask8 __U, __m128i __A) {
|
|
3125
|
+
return _mm_castsi128_ph(
|
|
3126
|
+
_mm_mask_slli_epi16((__m128i)__W, __U, _mm_cvtepi8_epi16(__A), 8));
|
|
3127
|
+
}
|
|
3128
|
+
|
|
3129
|
+
/// Convert 128-bit vector \a __A, containing packed FP8 E5M2 floating-point
|
|
3130
|
+
/// elements to a 128-bit vector containing FP16 elements. The conversion is
|
|
3131
|
+
/// exact. Zeroing mask \a __U is used to determine if given element should be
|
|
3132
|
+
/// zeroed instead.
|
|
3133
|
+
///
|
|
3134
|
+
/// \code{.operation}
|
|
3135
|
+
/// FOR i := 0 to 7
|
|
3136
|
+
/// IF __U[i]
|
|
3137
|
+
/// dst.fp16[i] := convert_bf8_to_fp16(__A.bf8[i])
|
|
3138
|
+
/// ELSE
|
|
3139
|
+
/// dst.fp16[i] := 0
|
|
3140
|
+
/// FI
|
|
3141
|
+
/// ENDFOR
|
|
3142
|
+
/// \endcode
|
|
3143
|
+
///
|
|
3144
|
+
/// \headerfile <immintrin.h>
|
|
3145
|
+
///
|
|
3146
|
+
/// This intrinsic does not correspond to a single instruction.
|
|
3147
|
+
///
|
|
3148
|
+
/// \param __U
|
|
3149
|
+
/// A 8-bit zeroing mask.
|
|
3150
|
+
/// \param __A
|
|
3151
|
+
/// A 128-bit vector of [16 x bf8].
|
|
3152
|
+
/// \returns
|
|
3153
|
+
/// A 128-bit vector of [8 x fp16]. Resulting elements correspond to the
|
|
3154
|
+
/// (converted) elements from \a __A. If corresponding mask bit is not set, then
|
|
3155
|
+
/// zero is taken instead.
|
|
3156
|
+
static __inline__ __m128h __DEFAULT_FN_ATTRS128
|
|
3157
|
+
_mm_maskz_cvtbf8_ph(__mmask8 __U, __m128i __A) {
|
|
3158
|
+
return _mm_castsi128_ph(_mm_slli_epi16(_mm_maskz_cvtepi8_epi16(__U, __A), 8));
|
|
3159
|
+
}
|
|
3160
|
+
|
|
3161
|
+
/// Convert 256-bit vector \a __A, containing packed FP8 E4M3 floating-point
|
|
3162
|
+
/// elements to a 256-bit vector containing FP16 elements. The conversion is exact.
|
|
3163
|
+
///
|
|
3164
|
+
/// \code{.operation}
|
|
3165
|
+
/// FOR i := 0 to 15
|
|
3166
|
+
/// dst.fp16[i] := convert_bf8_to_fp16(__A.bf8[i])
|
|
3167
|
+
/// ENDFOR
|
|
3168
|
+
/// \endcode
|
|
3169
|
+
///
|
|
3170
|
+
/// \headerfile <immintrin.h>
|
|
3171
|
+
///
|
|
3172
|
+
/// This intrinsic does not correspond to a single instruction.
|
|
3173
|
+
///
|
|
3174
|
+
/// \param __A
|
|
3175
|
+
/// A 256-bit vector of [32 x bf8].
|
|
3176
|
+
/// \returns
|
|
3177
|
+
/// A 256-bit vector of [16 x fp16]. Resulting elements correspond to the
|
|
3178
|
+
/// (converted) elements from \a __A.
|
|
3179
|
+
static __inline__ __m256h __DEFAULT_FN_ATTRS256 _mm256_cvtbf8_ph(__m128i __A) {
|
|
3180
|
+
return _mm256_castsi256_ph(_mm256_slli_epi16(_mm256_cvtepi8_epi16(__A), 8));
|
|
3181
|
+
}
|
|
3182
|
+
|
|
3183
|
+
/// Convert 256-bit vector \a __A, containing packed FP8 E5M2 floating-point
|
|
3184
|
+
/// elements to a 256-bit vector containing FP16 elements. The conversion is
|
|
3185
|
+
/// exact. Merging mask \a __U is used to determine if given element should be
|
|
3186
|
+
/// taken from \a __W instead.
|
|
3187
|
+
///
|
|
3188
|
+
/// \code{.operation}
|
|
3189
|
+
/// FOR i := 0 to 15
|
|
3190
|
+
/// IF __U[i]
|
|
3191
|
+
/// dst.fp16[i] := convert_bf8_to_fp16(__A.bf8[i])
|
|
3192
|
+
/// ELSE
|
|
3193
|
+
/// dst.fp16[i] := __W.fp16[i]
|
|
3194
|
+
/// FI
|
|
3195
|
+
/// ENDFOR
|
|
3196
|
+
/// \endcode
|
|
3197
|
+
///
|
|
3198
|
+
/// \headerfile <immintrin.h>
|
|
3199
|
+
///
|
|
3200
|
+
/// This intrinsic does not correspond to a single instruction.
|
|
3201
|
+
///
|
|
3202
|
+
/// \param __W
|
|
3203
|
+
/// A 256-bit vector of [16 x fp16].
|
|
3204
|
+
/// \param __U
|
|
3205
|
+
/// A 16-bit merging mask.
|
|
3206
|
+
/// \param __A
|
|
3207
|
+
/// A 256-bit vector of [32 x bf8].
|
|
3208
|
+
/// \returns
|
|
3209
|
+
/// A 256-bit vector of [16 x fp16]. Resulting elements correspond to the
|
|
3210
|
+
/// (converted) elements from \a __A. If corresponding mask bit is not set, then
|
|
3211
|
+
/// element from \a __W is taken instead.
|
|
3212
|
+
static __inline__ __m256h __DEFAULT_FN_ATTRS256
|
|
3213
|
+
_mm256_mask_cvtbf8_ph(__m256h __W, __mmask16 __U, __m128i __A) {
|
|
3214
|
+
return _mm256_castsi256_ph(
|
|
3215
|
+
_mm256_mask_slli_epi16((__m256i)__W, __U, _mm256_cvtepi8_epi16(__A), 8));
|
|
3216
|
+
}
|
|
3217
|
+
|
|
3218
|
+
/// Convert 256-bit vector \a __A, containing packed FP8 E5M2 floating-point
|
|
3219
|
+
/// elements to a 256-bit vector containing FP16 elements. The conversion is
|
|
3220
|
+
/// exact. Zeroing mask \a __U is used to determine if given element should be
|
|
3221
|
+
/// zeroed instead.
|
|
3222
|
+
///
|
|
3223
|
+
/// \code{.operation}
|
|
3224
|
+
/// FOR i := 0 to 15
|
|
3225
|
+
/// IF __U[i]
|
|
3226
|
+
/// dst.fp16[i] := convert_bf8_to_fp16(__A.bf8[i])
|
|
3227
|
+
/// ELSE
|
|
3228
|
+
/// dst.fp16[i] := 0
|
|
3229
|
+
/// FI
|
|
3230
|
+
/// ENDFOR
|
|
3231
|
+
/// \endcode
|
|
3232
|
+
///
|
|
3233
|
+
/// \headerfile <immintrin.h>
|
|
3234
|
+
///
|
|
3235
|
+
/// This intrinsic does not correspond to a single instruction.
|
|
3236
|
+
///
|
|
3237
|
+
/// \param __U
|
|
3238
|
+
/// A 16-bit zeroing mask.
|
|
3239
|
+
/// \param __A
|
|
3240
|
+
/// A 256-bit vector of [32 x bf8].
|
|
3241
|
+
/// \returns
|
|
3242
|
+
/// A 256-bit vector of [16 x fp16]. Resulting elements correspond to the
|
|
3243
|
+
/// (converted) elements from \a __A. If corresponding mask bit is not set, then
|
|
3244
|
+
/// zero is taken instead.
|
|
3245
|
+
static __inline__ __m256h __DEFAULT_FN_ATTRS256
|
|
3246
|
+
_mm256_maskz_cvtbf8_ph(__mmask16 __U, __m128i __A) {
|
|
3247
|
+
return _mm256_castsi256_ph(
|
|
3248
|
+
_mm256_slli_epi16(_mm256_maskz_cvtepi8_epi16(__U, __A), 8));
|
|
3249
|
+
}
|
|
3250
|
+
|
|
3251
|
+
// clang-format on
|
|
3252
|
+
|
|
3253
|
+
#undef __DEFAULT_FN_ATTRS128
|
|
3254
|
+
#undef __DEFAULT_FN_ATTRS256
|
|
3255
|
+
|
|
3256
|
+
#endif // __AVX10_2CONVERTINTRIN_H
|
|
3257
|
+
#endif // __SSE2__
|