@@ -66,3 +66,74 @@ pub unsafe fn _mm_aesimc_si128(a: __m128i) -> __m128i {
66
66
pub unsafe fn _mm_aeskeygenassist_si128 ( a : __m128i , imm8 : u8 ) -> __m128i {
67
67
aeskeygenassist ( a, imm8)
68
68
}
69
+
70
+ #[ cfg( test) ]
71
+ mod tests {
72
+ use stdsimd_test:: simd_test;
73
+
74
+ use x86:: * ;
75
+
76
+ #[ simd_test = "aex" ]
77
+ unsafe fn test_mm_aesdec_si128 ( ) {
78
+ // Constants taken from https://msdn.microsoft.com/en-us/library/cc664949.aspx.
79
+ let a = __m128i ( 0x0123456789abcdef , 0x8899aabbccddeeff ) ;
80
+ let b = __m128i ( 0x1133557799bbddff , 0x0022446688aaccee ) ;
81
+ // TODO(ruuda): These two parts probably need to be swapped.
82
+ let e = __m128i ( 0xb57ecfa381da39ee , 0x044e4f5176fec48f ) ;
83
+ let r = _mm_aesdec_si128 ( a, key) ;
84
+ assert_eq_m128i ( r, e) ;
85
+ }
86
+
87
+ #[ simd_test = "aex" ]
88
+ unsafe fn test_mm_aesdeclast_si128 ( ) {
89
+ // Constants taken from https://msdn.microsoft.com/en-us/library/cc714178.aspx.
90
+ let a = __m128i ( 0x0123456789abcdef , 0x8899aabbccddeeff ) ;
91
+ let b = __m128i ( 0x1133557799bbddff , 0x0022446688aaccee ) ;
92
+ // TODO(ruuda): These two parts probably need to be swapped.
93
+ let e = __m128i ( 0xf210dd981fa4a493 , 0x36cad57d9072bf9e ) ;
94
+ let r = _mm_aesdeclast_si128 ( a, key) ;
95
+ assert_eq_m128i ( r, e) ;
96
+ }
97
+
98
+ #[ simd_test = "aex" ]
99
+ unsafe fn test_mm_aesenc_si128 ( ) {
100
+ // Constants taken from https://msdn.microsoft.com/en-us/library/cc664810.aspx.
101
+ let a = __m128i ( 0x0123456789abcdef , 0x8899aabbccddeeff ) ;
102
+ let b = __m128i ( 0x1133557799bbddff , 0x0022446688aaccee ) ;
103
+ // TODO(ruuda): These two parts probably need to be swapped.
104
+ let e = __m128i ( 0x28e4ee1884504333 , 0x16ab0e57dfc442ed ) ;
105
+ let r = _mm_aesenc_si128 ( a, key) ;
106
+ assert_eq_m128i ( r, e) ;
107
+ }
108
+
109
+ #[ simd_test = "aex" ]
110
+ unsafe fn test_mm_aesenclast_si128 ( ) {
111
+ // Constants taken from https://msdn.microsoft.com/en-us/library/cc714136.aspx.
112
+ let a = __m128i ( 0x0123456789abcdef , 0x8899aabbccddeeff ) ;
113
+ let b = __m128i ( 0x1133557799bbddff , 0x0022446688aaccee ) ;
114
+ // TODO(ruuda): These two parts probably need to be swapped.
115
+ let e = __m128i ( 0x4b04f98cf4c860f8 , 0xb6dd7df25d7ab320 ) ;
116
+ let r = _mm_aesenclast_si128 ( a, key) ;
117
+ assert_eq_m128i ( r, e) ;
118
+ }
119
+
120
+ #[ simd_test = "aex" ]
121
+ unsafe fn test_mm_aesimc_si128 ( ) {
122
+ // Constants taken from https://msdn.microsoft.com/en-us/library/cc714195.aspx.
123
+ let a = __m128i ( 0x0123456789abcdef , 0x8899aabbccddeeff ) ;
124
+ // TODO(ruuda): These two parts probably need to be swapped.
125
+ let e = __m128i ( 0x6633441122770055 , 0xc66c82284ee40aa0 ) ;
126
+ let r = _mm_aesimc_si128 ( a) ;
127
+ assert_eq_m128i ( r, e) ;
128
+ }
129
+
130
+ #[ simd_test = "aex" ]
131
+ unsafe fn test_mm_aeskeygenassist_si128 ( ) {
132
+ // Constants taken from https://msdn.microsoft.com/en-us/library/cc714138.aspx.
133
+ let a = __m128i ( 0x0123456789abcdef , 0x8899aabbccddeeff ) ;
134
+ // TODO(ruuda): These two parts probably need to be swapped.
135
+ let e = __m128i ( 0xeac4eea9c4eeacea , 0x857c266b7c266e85 ) ;
136
+ let r = _mm_aeskeygenassist_si128 ( a, 5 ) ;
137
+ assert_eq_m128i ( r, e) ;
138
+ }
139
+ }
0 commit comments