- Timestamp:
- Mar 25, 2024 1:40:26 PM (12 months ago)
- svn:sync-xref-src-repo-rev:
- 162429
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/iprt/armv8.h
r104039 r104040 2806 2806 2807 2807 /** A64: Encodes an SUBP instruction. */ 2808 DECL_FORCE_INLINE(uint32_t) Armv A64MkInstrSubP(uint32_t iRegResult, uint32_t iRegMinuend, uint32_t iRegSubtrahend)2808 DECL_FORCE_INLINE(uint32_t) Armv8A64MkInstrSubP(uint32_t iRegResult, uint32_t iRegMinuend, uint32_t iRegSubtrahend) 2809 2809 { 2810 2810 Assert(iRegResult < 32); Assert(iRegMinuend < 32); Assert(iRegSubtrahend < 32); … … 2819 2819 2820 2820 /** A64: Encodes an SUBPS instruction. */ 2821 DECL_FORCE_INLINE(uint32_t) Armv A64MkInstrSubPS(uint32_t iRegResult, uint32_t iRegMinuend, uint32_t iRegSubtrahend)2821 DECL_FORCE_INLINE(uint32_t) Armv8A64MkInstrSubPS(uint32_t iRegResult, uint32_t iRegMinuend, uint32_t iRegSubtrahend) 2822 2822 { 2823 2823 Assert(iRegResult < 32); Assert(iRegMinuend < 32); Assert(iRegSubtrahend < 32); … … 2833 2833 2834 2834 /** A64: Encodes an UDIV instruction. */ 2835 DECL_FORCE_INLINE(uint32_t) Armv A64MkInstrUDiv(uint32_t iRegResult, uint32_t iRegDividend, uint32_t iRegDivisor, bool f64Bit = true)2835 DECL_FORCE_INLINE(uint32_t) Armv8A64MkInstrUDiv(uint32_t iRegResult, uint32_t iRegDividend, uint32_t iRegDivisor, bool f64Bit = true) 2836 2836 { 2837 2837 Assert(iRegResult < 32); Assert(iRegDividend < 32); Assert(iRegDivisor < 32); … … 2846 2846 2847 2847 /** A64: Encodes an SDIV instruction. */ 2848 DECL_FORCE_INLINE(uint32_t) Armv A64MkInstrSDiv(uint32_t iRegResult, uint32_t iRegDividend, uint32_t iRegDivisor, bool f64Bit = true)2848 DECL_FORCE_INLINE(uint32_t) Armv8A64MkInstrSDiv(uint32_t iRegResult, uint32_t iRegDividend, uint32_t iRegDivisor, bool f64Bit = true) 2849 2849 { 2850 2850 Assert(iRegResult < 32); Assert(iRegDividend < 32); Assert(iRegDivisor < 32); … … 2859 2859 2860 2860 /** A64: Encodes an IRG instruction. */ 2861 DECL_FORCE_INLINE(uint32_t) Armv A64MkInstrIrg(uint32_t iRegResult, uint32_t iRegSrc1, uint32_t iRegSrc2)2861 DECL_FORCE_INLINE(uint32_t) Armv8A64MkInstrIrg(uint32_t iRegResult, uint32_t iRegSrc1, uint32_t iRegSrc2) 2862 2862 { 2863 2863 Assert(iRegResult < 32); Assert(iRegSrc1 < 32); Assert(iRegSrc2 < 32); … … 2872 2872 2873 2873 /** A64: Encodes a GMI instruction. */ 2874 DECL_FORCE_INLINE(uint32_t) Armv A64MkInstrGmi(uint32_t iRegResult, uint32_t iRegSrc1, uint32_t iRegSrc2)2874 DECL_FORCE_INLINE(uint32_t) Armv8A64MkInstrGmi(uint32_t iRegResult, uint32_t iRegSrc1, uint32_t iRegSrc2) 2875 2875 { 2876 2876 Assert(iRegResult < 32); Assert(iRegSrc1 < 32); Assert(iRegSrc2 < 32); … … 2885 2885 2886 2886 /** A64: Encodes an LSLV instruction. */ 2887 DECL_FORCE_INLINE(uint32_t) Armv A64MkInstrLslv(uint32_t iRegResult, uint32_t iRegSrc, uint32_t iRegCount, bool f64Bit = true)2887 DECL_FORCE_INLINE(uint32_t) Armv8A64MkInstrLslv(uint32_t iRegResult, uint32_t iRegSrc, uint32_t iRegCount, bool f64Bit = true) 2888 2888 { 2889 2889 Assert(iRegResult < 32); Assert(iRegSrc < 32); Assert(iRegCount < 32); … … 2898 2898 2899 2899 /** A64: Encodes an LSRV instruction. */ 2900 DECL_FORCE_INLINE(uint32_t) Armv A64MkInstrLsrv(uint32_t iRegResult, uint32_t iRegSrc, uint32_t iRegCount, bool f64Bit = true)2900 DECL_FORCE_INLINE(uint32_t) Armv8A64MkInstrLsrv(uint32_t iRegResult, uint32_t iRegSrc, uint32_t iRegCount, bool f64Bit = true) 2901 2901 { 2902 2902 Assert(iRegResult < 32); Assert(iRegSrc < 32); Assert(iRegCount < 32); … … 2911 2911 2912 2912 /** A64: Encodes an ASRV instruction. */ 2913 DECL_FORCE_INLINE(uint32_t) Armv A64MkInstrAsrv(uint32_t iRegResult, uint32_t iRegSrc, uint32_t iRegCount, bool f64Bit = true)2913 DECL_FORCE_INLINE(uint32_t) Armv8A64MkInstrAsrv(uint32_t iRegResult, uint32_t iRegSrc, uint32_t iRegCount, bool f64Bit = true) 2914 2914 { 2915 2915 Assert(iRegResult < 32); Assert(iRegSrc < 32); Assert(iRegCount < 32); … … 2924 2924 2925 2925 /** A64: Encodes a RORV instruction. */ 2926 DECL_FORCE_INLINE(uint32_t) Armv A64MkInstrRorv(uint32_t iRegResult, uint32_t iRegSrc, uint32_t iRegCount, bool f64Bit = true)2926 DECL_FORCE_INLINE(uint32_t) Armv8A64MkInstrRorv(uint32_t iRegResult, uint32_t iRegSrc, uint32_t iRegCount, bool f64Bit = true) 2927 2927 { 2928 2928 Assert(iRegResult < 32); Assert(iRegSrc < 32); Assert(iRegCount < 32); … … 2937 2937 2938 2938 /** A64: Encodes a PACGA instruction. */ 2939 DECL_FORCE_INLINE(uint32_t) Armv A64MkInstrPacga(uint32_t iRegResult, uint32_t iRegSrc1, uint32_t iRegSrc2)2939 DECL_FORCE_INLINE(uint32_t) Armv8A64MkInstrPacga(uint32_t iRegResult, uint32_t iRegSrc1, uint32_t iRegSrc2) 2940 2940 { 2941 2941 Assert(iRegResult < 32); Assert(iRegSrc1 < 32); Assert(iRegSrc2 < 32); … … 2950 2950 2951 2951 /** A64: Encodes a CRC32* instruction. */ 2952 DECL_FORCE_INLINE(uint32_t) Armv A64MkInstrCrc32(uint32_t iRegResult, uint32_t iRegCrc, uint32_t iRegValue, uint32_t uSize)2952 DECL_FORCE_INLINE(uint32_t) Armv8A64MkInstrCrc32(uint32_t iRegResult, uint32_t iRegCrc, uint32_t iRegValue, uint32_t uSize) 2953 2953 { 2954 2954 Assert(iRegResult < 32); Assert(iRegCrc < 32); Assert(iRegValue < 32); Assert(uSize < 4); … … 2964 2964 2965 2965 /** A64: Encodes a CRC32B instruction. */ 2966 DECL_FORCE_INLINE(uint32_t) Armv A64MkInstrCrc32B(uint32_t iRegResult, uint32_t iRegCrc, uint32_t iRegValue)2967 { 2968 return Armv A64MkInstrCrc32(iRegResult, iRegCrc, iRegValue, 0);2966 DECL_FORCE_INLINE(uint32_t) Armv8A64MkInstrCrc32B(uint32_t iRegResult, uint32_t iRegCrc, uint32_t iRegValue) 2967 { 2968 return Armv8A64MkInstrCrc32(iRegResult, iRegCrc, iRegValue, 0); 2969 2969 } 2970 2970 2971 2971 2972 2972 /** A64: Encodes a CRC32H instruction. */ 2973 DECL_FORCE_INLINE(uint32_t) Armv A64MkInstrCrc32H(uint32_t iRegResult, uint32_t iRegCrc, uint32_t iRegValue)2974 { 2975 return Armv A64MkInstrCrc32(iRegResult, iRegCrc, iRegValue, 1);2973 DECL_FORCE_INLINE(uint32_t) Armv8A64MkInstrCrc32H(uint32_t iRegResult, uint32_t iRegCrc, uint32_t iRegValue) 2974 { 2975 return Armv8A64MkInstrCrc32(iRegResult, iRegCrc, iRegValue, 1); 2976 2976 } 2977 2977 2978 2978 2979 2979 /** A64: Encodes a CRC32W instruction. */ 2980 DECL_FORCE_INLINE(uint32_t) Armv A64MkInstrCrc32W(uint32_t iRegResult, uint32_t iRegCrc, uint32_t iRegValue)2981 { 2982 return Armv A64MkInstrCrc32(iRegResult, iRegCrc, iRegValue, 2);2980 DECL_FORCE_INLINE(uint32_t) Armv8A64MkInstrCrc32W(uint32_t iRegResult, uint32_t iRegCrc, uint32_t iRegValue) 2981 { 2982 return Armv8A64MkInstrCrc32(iRegResult, iRegCrc, iRegValue, 2); 2983 2983 } 2984 2984 2985 2985 2986 2986 /** A64: Encodes a CRC32X instruction. */ 2987 DECL_FORCE_INLINE(uint32_t) Armv A64MkInstrCrc32X(uint32_t iRegResult, uint32_t iRegCrc, uint32_t iRegValue)2988 { 2989 return Armv A64MkInstrCrc32(iRegResult, iRegCrc, iRegValue, 3);2987 DECL_FORCE_INLINE(uint32_t) Armv8A64MkInstrCrc32X(uint32_t iRegResult, uint32_t iRegCrc, uint32_t iRegValue) 2988 { 2989 return Armv8A64MkInstrCrc32(iRegResult, iRegCrc, iRegValue, 3); 2990 2990 } 2991 2991 2992 2992 2993 2993 /** A64: Encodes a CRC32C* instruction. */ 2994 DECL_FORCE_INLINE(uint32_t) Armv A64MkInstrCrc32c(uint32_t iRegResult, uint32_t iRegCrc, uint32_t iRegValue, uint32_t uSize)2994 DECL_FORCE_INLINE(uint32_t) Armv8A64MkInstrCrc32c(uint32_t iRegResult, uint32_t iRegCrc, uint32_t iRegValue, uint32_t uSize) 2995 2995 { 2996 2996 Assert(iRegResult < 32); Assert(iRegCrc < 32); Assert(iRegValue < 32); Assert(uSize < 4); … … 3006 3006 3007 3007 /** A64: Encodes a CRC32B instruction. */ 3008 DECL_FORCE_INLINE(uint32_t) Armv A64MkInstrCrc32cB(uint32_t iRegResult, uint32_t iRegCrc, uint32_t iRegValue)3009 { 3010 return Armv A64MkInstrCrc32c(iRegResult, iRegCrc, iRegValue, 0);3008 DECL_FORCE_INLINE(uint32_t) Armv8A64MkInstrCrc32cB(uint32_t iRegResult, uint32_t iRegCrc, uint32_t iRegValue) 3009 { 3010 return Armv8A64MkInstrCrc32c(iRegResult, iRegCrc, iRegValue, 0); 3011 3011 } 3012 3012 3013 3013 3014 3014 /** A64: Encodes a CRC32CH instruction. */ 3015 DECL_FORCE_INLINE(uint32_t) Armv A64MkInstrCrc32cH(uint32_t iRegResult, uint32_t iRegCrc, uint32_t iRegValue)3016 { 3017 return Armv A64MkInstrCrc32c(iRegResult, iRegCrc, iRegValue, 1);3015 DECL_FORCE_INLINE(uint32_t) Armv8A64MkInstrCrc32cH(uint32_t iRegResult, uint32_t iRegCrc, uint32_t iRegValue) 3016 { 3017 return Armv8A64MkInstrCrc32c(iRegResult, iRegCrc, iRegValue, 1); 3018 3018 } 3019 3019 3020 3020 3021 3021 /** A64: Encodes a CRC32CW instruction. */ 3022 DECL_FORCE_INLINE(uint32_t) Armv A64MkInstrCrc32cW(uint32_t iRegResult, uint32_t iRegCrc, uint32_t iRegValue)3023 { 3024 return Armv A64MkInstrCrc32c(iRegResult, iRegCrc, iRegValue, 2);3022 DECL_FORCE_INLINE(uint32_t) Armv8A64MkInstrCrc32cW(uint32_t iRegResult, uint32_t iRegCrc, uint32_t iRegValue) 3023 { 3024 return Armv8A64MkInstrCrc32c(iRegResult, iRegCrc, iRegValue, 2); 3025 3025 } 3026 3026 3027 3027 3028 3028 /** A64: Encodes a CRC32CX instruction. */ 3029 DECL_FORCE_INLINE(uint32_t) Armv A64MkInstrCrc32cX(uint32_t iRegResult, uint32_t iRegCrc, uint32_t iRegValue)3030 { 3031 return Armv A64MkInstrCrc32c(iRegResult, iRegCrc, iRegValue, 3);3029 DECL_FORCE_INLINE(uint32_t) Armv8A64MkInstrCrc32cX(uint32_t iRegResult, uint32_t iRegCrc, uint32_t iRegValue) 3030 { 3031 return Armv8A64MkInstrCrc32c(iRegResult, iRegCrc, iRegValue, 3); 3032 3032 } 3033 3033 3034 3034 3035 3035 /** A64: Encodes an SMAX instruction. */ 3036 DECL_FORCE_INLINE(uint32_t) Armv A64MkInstrSMax(uint32_t iRegResult, uint32_t iRegSrc1, uint32_t iRegSrc2, bool f64Bit = true)3036 DECL_FORCE_INLINE(uint32_t) Armv8A64MkInstrSMax(uint32_t iRegResult, uint32_t iRegSrc1, uint32_t iRegSrc2, bool f64Bit = true) 3037 3037 { 3038 3038 Assert(iRegResult < 32); Assert(iRegSrc1 < 32); Assert(iRegSrc2 < 32); … … 3047 3047 3048 3048 /** A64: Encodes an UMAX instruction. */ 3049 DECL_FORCE_INLINE(uint32_t) Armv A64MkInstrUMax(uint32_t iRegResult, uint32_t iRegSrc1, uint32_t iRegSrc2, bool f64Bit = true)3049 DECL_FORCE_INLINE(uint32_t) Armv8A64MkInstrUMax(uint32_t iRegResult, uint32_t iRegSrc1, uint32_t iRegSrc2, bool f64Bit = true) 3050 3050 { 3051 3051 Assert(iRegResult < 32); Assert(iRegSrc1 < 32); Assert(iRegSrc2 < 32); … … 3060 3060 3061 3061 /** A64: Encodes an SMIN instruction. */ 3062 DECL_FORCE_INLINE(uint32_t) Armv A64MkInstrSMin(uint32_t iRegResult, uint32_t iRegSrc1, uint32_t iRegSrc2, bool f64Bit = true)3062 DECL_FORCE_INLINE(uint32_t) Armv8A64MkInstrSMin(uint32_t iRegResult, uint32_t iRegSrc1, uint32_t iRegSrc2, bool f64Bit = true) 3063 3063 { 3064 3064 Assert(iRegResult < 32); Assert(iRegSrc1 < 32); Assert(iRegSrc2 < 32); … … 3073 3073 3074 3074 /** A64: Encodes an UMIN instruction. */ 3075 DECL_FORCE_INLINE(uint32_t) Armv A64MkInstrUMin(uint32_t iRegResult, uint32_t iRegSrc1, uint32_t iRegSrc2, bool f64Bit = true)3075 DECL_FORCE_INLINE(uint32_t) Armv8A64MkInstrUMin(uint32_t iRegResult, uint32_t iRegSrc1, uint32_t iRegSrc2, bool f64Bit = true) 3076 3076 { 3077 3077 Assert(iRegResult < 32); Assert(iRegSrc1 < 32); Assert(iRegSrc2 < 32);
Note:
See TracChangeset
for help on using the changeset viewer.