Path: blob/main/contrib/llvm-project/clang/lib/Headers/amxmovrsintrin.h
213766 views
/*===-------- amxmovrsintrin.h - AMX MOVRS intrinsics -*- C++ -*---------===1*2* Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.3* See https://llvm.org/LICENSE.txt for license information.4* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception5*6* ===-------------------------------------------------------------------=== */78#ifndef __IMMINTRIN_H9#error "Never use <amxmovrsintrin.h> directly; include <immintrin.h> instead."10#endif /* __IMMINTRIN_H */1112#ifndef __AMXMOVRSINTRIN_H13#define __AMXMOVRSINTRIN_H14#ifdef __x86_64__1516#define __DEFAULT_FN_ATTRS_MOVRS \17__attribute__((__always_inline__, __nodebug__, __target__("amx-movrs")))1819#define _tile_loaddrs(dst, base, stride) \20__builtin_ia32_tileloaddrs64((dst), ((const void *)(base)), \21(__SIZE_TYPE__)(stride))22#define _tile_stream_loaddrs(dst, base, stride) \23__builtin_ia32_tileloaddrst164((dst), ((const void *)(base)), \24(__SIZE_TYPE__)(stride))25static __inline__ _tile1024i __DEFAULT_FN_ATTRS_MOVRS26_tile_loaddrs_internal(unsigned short m, unsigned short n, const void *base,27__SIZE_TYPE__ stride) {28return __builtin_ia32_tileloaddrs64_internal(m, n, base,29(__SIZE_TYPE__)(stride));30}31static __inline__ _tile1024i __DEFAULT_FN_ATTRS_MOVRS32_tile_loaddrst1_internal(unsigned short m, unsigned short n, const void *base,33__SIZE_TYPE__ stride) {34return __builtin_ia32_tileloaddrst164_internal(m, n, base,35(__SIZE_TYPE__)(stride));36}37static __inline__ void __DEFAULT_FN_ATTRS_MOVRS38__tile_loaddrs(__tile1024i *dst, const void *base, __SIZE_TYPE__ stride) {39dst->tile = _tile_loaddrs_internal(dst->row, dst->col, base, stride);40}41static __inline__ void __DEFAULT_FN_ATTRS_MOVRS __tile_stream_loaddrs(42__tile1024i *dst, const void *base, __SIZE_TYPE__ stride) {43dst->tile = _tile_loaddrst1_internal(dst->row, dst->col, base, stride);44}45#undef __DEFAULT_FN_ATTRS_MOVRS46#endif /* __x86_64__ */47#endif /* __AMXMOVRSINTRIN_H */484950