@@ -28,6 +28,132 @@ internal Arm64() { }
2828 public static new bool IsSupported { get => IsSupported ; }
2929 }
3030
31+ // Absolute difference and accumulate
32+
33+ /// <summary>
34+ /// svuint8_t svaba[_u8](svuint8_t op1, svuint8_t op2, svuint8_t op3)
35+ /// UABA Ztied1.B, Zop2.B, Zop3.B
36+ /// </summary>
37+ public static unsafe Vector < byte > AbsoluteDifferenceAdd ( Vector < byte > addend , Vector < byte > left , Vector < byte > right ) => AbsoluteDifferenceAdd ( addend , left , right ) ;
38+
39+ /// <summary>
40+ /// svint16_t svaba[_s16](svint16_t op1, svint16_t op2, svint16_t op3)
41+ /// SABA Ztied1.H, Zop2.H, Zop3.H
42+ /// </summary>
43+ public static unsafe Vector < short > AbsoluteDifferenceAdd ( Vector < short > addend , Vector < short > left , Vector < short > right ) => AbsoluteDifferenceAdd ( addend , left , right ) ;
44+
45+ /// <summary>
46+ /// svint32_t svaba[_s32](svint32_t op1, svint32_t op2, svint32_t op3)
47+ /// SABA Ztied1.S, Zop2.S, Zop3.S
48+ /// </summary>
49+ public static unsafe Vector < int > AbsoluteDifferenceAdd ( Vector < int > addend , Vector < int > left , Vector < int > right ) => AbsoluteDifferenceAdd ( addend , left , right ) ;
50+
51+ /// <summary>
52+ /// svint64_t svaba[_s64](svint64_t op1, svint64_t op2, svint64_t op3)
53+ /// SABA Ztied1.D, Zop2.D, Zop3.D
54+ /// </summary>
55+ public static unsafe Vector < long > AbsoluteDifferenceAdd ( Vector < long > addend , Vector < long > left , Vector < long > right ) => AbsoluteDifferenceAdd ( addend , left , right ) ;
56+
57+ /// <summary>
58+ /// svint8_t svaba[_s8](svint8_t op1, svint8_t op2, svint8_t op3)
59+ /// SABA Ztied1.B, Zop2.B, Zop3.B
60+ /// </summary>
61+ public static unsafe Vector < sbyte > AbsoluteDifferenceAdd ( Vector < sbyte > addend , Vector < sbyte > left , Vector < sbyte > right ) => AbsoluteDifferenceAdd ( addend , left , right ) ;
62+
63+ /// <summary>
64+ /// svuint16_t svaba[_u16](svuint16_t op1, svuint16_t op2, svuint16_t op3)
65+ /// UABA Ztied1.H, Zop2.H, Zop3.H
66+ /// </summary>
67+ public static unsafe Vector < ushort > AbsoluteDifferenceAdd ( Vector < ushort > addend , Vector < ushort > left , Vector < ushort > right ) => AbsoluteDifferenceAdd ( addend , left , right ) ;
68+
69+ /// <summary>
70+ /// svuint32_t svaba[_u32](svuint32_t op1, svuint32_t op2, svuint32_t op3)
71+ /// UABA Ztied1.S, Zop2.S, Zop3.S
72+ /// </summary>
73+ public static unsafe Vector < uint > AbsoluteDifferenceAdd ( Vector < uint > addend , Vector < uint > left , Vector < uint > right ) => AbsoluteDifferenceAdd ( addend , left , right ) ;
74+
75+ /// <summary>
76+ /// svuint64_t svaba[_u64](svuint64_t op1, svuint64_t op2, svuint64_t op3)
77+ /// UABA Ztied1.D, Zop2.D, Zop3.D
78+ /// </summary>
79+ public static unsafe Vector < ulong > AbsoluteDifferenceAdd ( Vector < ulong > addend , Vector < ulong > left , Vector < ulong > right ) => AbsoluteDifferenceAdd ( addend , left , right ) ;
80+
81+ // Absolute difference and accumulate long (bottom)
82+
83+ /// <summary>
84+ /// svint16_t svabalb[_s16](svint16_t op1, svint8_t op2, svint8_t op3)
85+ /// SABALB Ztied1.H, Zop2.B, Zop3.B
86+ /// </summary>
87+ public static unsafe Vector < short > AbsoluteDifferenceAddWideningLower ( Vector < short > addend , Vector < sbyte > left , Vector < sbyte > right ) => AbsoluteDifferenceAddWideningLower ( addend , left , right ) ;
88+
89+ /// <summary>
90+ /// svint32_t svabalb[_s32](svint32_t op1, svint16_t op2, svint16_t op3)
91+ /// SABALB Ztied1.S, Zop2.H, Zop3.H
92+ /// </summary>
93+ public static unsafe Vector < int > AbsoluteDifferenceAddWideningLower ( Vector < int > addend , Vector < short > left , Vector < short > right ) => AbsoluteDifferenceAddWideningLower ( addend , left , right ) ;
94+
95+ /// <summary>
96+ /// svint64_t svabalb[_s64](svint64_t op1, svint32_t op2, svint32_t op3)
97+ /// SABALB Ztied1.D, Zop2.S, Zop3.S
98+ /// </summary>
99+ public static unsafe Vector < long > AbsoluteDifferenceAddWideningLower ( Vector < long > addend , Vector < int > left , Vector < int > right ) => AbsoluteDifferenceAddWideningLower ( addend , left , right ) ;
100+
101+ /// <summary>
102+ /// svuint16_t svabalb[_u16](svuint16_t op1, svuint8_t op2, svuint8_t op3)
103+ /// UABALB Ztied1.H, Zop2.B, Zop3.B
104+ /// </summary>
105+ public static unsafe Vector < ushort > AbsoluteDifferenceAddWideningLower ( Vector < ushort > addend , Vector < byte > left , Vector < byte > right ) => AbsoluteDifferenceAddWideningLower ( addend , left , right ) ;
106+
107+ /// <summary>
108+ /// svuint32_t svabalb[_u32](svuint32_t op1, svuint16_t op2, svuint16_t op3)
109+ /// UABALB Ztied1.S, Zop2.H, Zop3.H
110+ /// </summary>
111+ public static unsafe Vector < uint > AbsoluteDifferenceAddWideningLower ( Vector < uint > addend , Vector < ushort > left , Vector < ushort > right ) => AbsoluteDifferenceAddWideningLower ( addend , left , right ) ;
112+
113+ /// <summary>
114+ /// svuint64_t svabalb[_u64](svuint64_t op1, svuint32_t op2, svuint32_t op3)
115+ /// UABALB Ztied1.D, Zop2.S, Zop3.S
116+ /// </summary>
117+ public static unsafe Vector < ulong > AbsoluteDifferenceAddWideningLower ( Vector < ulong > addend , Vector < uint > left , Vector < uint > right ) => AbsoluteDifferenceAddWideningLower ( addend , left , right ) ;
118+
119+ // Absolute difference and accumulate long (top)
120+
121+ /// <summary>
122+ /// svint16_t svabalt[_s16](svint16_t op1, svint8_t op2, svint8_t op3)
123+ /// SABALT Ztied1.H, Zop2.B, Zop3.B
124+ /// </summary>
125+ public static unsafe Vector < short > AbsoluteDifferenceAddWideningUpper ( Vector < short > addend , Vector < sbyte > left , Vector < sbyte > right ) => AbsoluteDifferenceAddWideningUpper ( addend , left , right ) ;
126+
127+ /// <summary>
128+ /// svint32_t svabalt[_s32](svint32_t op1, svint16_t op2, svint16_t op3)
129+ /// SABALT Ztied1.S, Zop2.H, Zop3.H
130+ /// </summary>
131+ public static unsafe Vector < int > AbsoluteDifferenceAddWideningUpper ( Vector < int > addend , Vector < short > left , Vector < short > right ) => AbsoluteDifferenceAddWideningUpper ( addend , left , right ) ;
132+
133+ /// <summary>
134+ /// svint64_t svabalt[_s64](svint64_t op1, svint32_t op2, svint32_t op3)
135+ /// SABALT Ztied1.D, Zop2.S, Zop3.S
136+ /// </summary>
137+ public static unsafe Vector < long > AbsoluteDifferenceAddWideningUpper ( Vector < long > addend , Vector < int > left , Vector < int > right ) => AbsoluteDifferenceAddWideningUpper ( addend , left , right ) ;
138+
139+ /// <summary>
140+ /// svuint16_t svabalt[_u16](svuint16_t op1, svuint8_t op2, svuint8_t op3)
141+ /// UABALT Ztied1.H, Zop2.B, Zop3.B
142+ /// </summary>
143+ public static unsafe Vector < ushort > AbsoluteDifferenceAddWideningUpper ( Vector < ushort > addend , Vector < byte > left , Vector < byte > right ) => AbsoluteDifferenceAddWideningUpper ( addend , left , right ) ;
144+
145+ /// <summary>
146+ /// svuint32_t svabalt[_u32](svuint32_t op1, svuint16_t op2, svuint16_t op3)
147+ /// UABALT Ztied1.S, Zop2.H, Zop3.H
148+ /// </summary>
149+ public static unsafe Vector < uint > AbsoluteDifferenceAddWideningUpper ( Vector < uint > addend , Vector < ushort > left , Vector < ushort > right ) => AbsoluteDifferenceAddWideningUpper ( addend , left , right ) ;
150+
151+ /// <summary>
152+ /// svuint64_t svabalt[_u64](svuint64_t op1, svuint32_t op2, svuint32_t op3)
153+ /// UABALT Ztied1.D, Zop2.S, Zop3.S
154+ /// </summary>
155+ public static unsafe Vector < ulong > AbsoluteDifferenceAddWideningUpper ( Vector < ulong > addend , Vector < uint > left , Vector < uint > right ) => AbsoluteDifferenceAddWideningUpper ( addend , left , right ) ;
156+
31157 // Bitwise clear and exclusive OR
32158
33159 /// <summary>
0 commit comments