@@ -197,21 +197,21 @@ unsafe fn test_avx512ternarylogic() {
197197 #[ target_feature( enable = "avx512f" ) ]
198198 unsafe fn test_mm512_ternarylogic_epi32 ( ) {
199199 let a = _mm512_set4_epi32 ( 0b100 , 0b110 , 0b001 , 0b101 ) ;
200- let b = _mm512_set4_epi32 ( 0b010 , 0b011 , 0b001 , 0b101 ) ;
201- let c = _mm512_set4_epi32 ( 0b001 , 0b000 , 0b001 , 0b101 ) ;
200+ let b = _mm512_set4_epi32 ( 0b010 , 0b011 , 0b001 , 0b110 ) ;
201+ let c = _mm512_set4_epi32 ( 0b001 , 0b000 , 0b001 , 0b111 ) ;
202202
203203 // Identity of A.
204- let r = _mm512_ternarylogic_epi32 :: < 0b1010_1010 > ( a, b, c) ;
204+ let r = _mm512_ternarylogic_epi32 :: < 0b1111_0000 > ( a, b, c) ;
205205 assert_eq_m512i ( r, a) ;
206206
207- // Bitwise or .
208- let r = _mm512_ternarylogic_epi32 :: < 0b1111_1110 > ( a, b, c) ;
209- let e = _mm512_set4_epi32 ( 0b111 , 0b111 , 0b001 , 0b101 ) ;
207+ // Bitwise xor .
208+ let r = _mm512_ternarylogic_epi32 :: < 0b10010110 > ( a, b, c) ;
209+ let e = _mm512_set4_epi32 ( 0b111 , 0b101 , 0b001 , 0b100 ) ;
210210 assert_eq_m512i ( r, e) ;
211211
212- // Majority.
212+ // Majority (2 or more bits set) .
213213 let r = _mm512_ternarylogic_epi32 :: < 0b1110_1000 > ( a, b, c) ;
214- let e = _mm512_set4_epi32 ( 0b000 , 0b010 , 0b001 , 0b101 ) ;
214+ let e = _mm512_set4_epi32 ( 0b000 , 0b010 , 0b001 , 0b111 ) ;
215215 assert_eq_m512i ( r, e) ;
216216 }
217217 test_mm512_ternarylogic_epi32 ( ) ;
@@ -221,43 +221,43 @@ unsafe fn test_avx512ternarylogic() {
221221 let _mm256_set4_epi32 = |a, b, c, d| _mm256_setr_epi32 ( a, b, c, d, a, b, c, d) ;
222222
223223 let a = _mm256_set4_epi32 ( 0b100 , 0b110 , 0b001 , 0b101 ) ;
224- let b = _mm256_set4_epi32 ( 0b010 , 0b011 , 0b001 , 0b101 ) ;
225- let c = _mm256_set4_epi32 ( 0b001 , 0b000 , 0b001 , 0b101 ) ;
224+ let b = _mm256_set4_epi32 ( 0b010 , 0b011 , 0b001 , 0b110 ) ;
225+ let c = _mm256_set4_epi32 ( 0b001 , 0b000 , 0b001 , 0b111 ) ;
226226
227227 // Identity of A.
228- let r = _mm256_ternarylogic_epi32 :: < 0b1010_1010 > ( a, b, c) ;
228+ let r = _mm256_ternarylogic_epi32 :: < 0b1111_0000 > ( a, b, c) ;
229229 assert_eq_m256i ( r, a) ;
230230
231- // Bitwise or .
232- let r = _mm256_ternarylogic_epi32 :: < 0b1111_1110 > ( a, b, c) ;
233- let e = _mm256_set4_epi32 ( 0b111 , 0b111 , 0b001 , 0b101 ) ;
231+ // Bitwise xor .
232+ let r = _mm256_ternarylogic_epi32 :: < 0b10010110 > ( a, b, c) ;
233+ let e = _mm256_set4_epi32 ( 0b111 , 0b101 , 0b001 , 0b100 ) ;
234234 assert_eq_m256i ( r, e) ;
235235
236- // Majority.
236+ // Majority (2 or more bits set) .
237237 let r = _mm256_ternarylogic_epi32 :: < 0b1110_1000 > ( a, b, c) ;
238- let e = _mm256_set4_epi32 ( 0b000 , 0b010 , 0b001 , 0b101 ) ;
238+ let e = _mm256_set4_epi32 ( 0b000 , 0b010 , 0b001 , 0b111 ) ;
239239 assert_eq_m256i ( r, e) ;
240240 }
241241 test_mm256_ternarylogic_epi32 ( ) ;
242242
243243 #[ target_feature( enable = "avx512f,avx512vl" ) ]
244244 unsafe fn test_mm_ternarylogic_epi32 ( ) {
245245 let a = _mm_setr_epi32 ( 0b100 , 0b110 , 0b001 , 0b101 ) ;
246- let b = _mm_setr_epi32 ( 0b010 , 0b011 , 0b001 , 0b101 ) ;
247- let c = _mm_setr_epi32 ( 0b001 , 0b000 , 0b001 , 0b101 ) ;
246+ let b = _mm_setr_epi32 ( 0b010 , 0b011 , 0b001 , 0b110 ) ;
247+ let c = _mm_setr_epi32 ( 0b001 , 0b000 , 0b001 , 0b111 ) ;
248248
249249 // Identity of A.
250- let r = _mm_ternarylogic_epi32 :: < 0b1010_1010 > ( a, b, c) ;
250+ let r = _mm_ternarylogic_epi32 :: < 0b1111_0000 > ( a, b, c) ;
251251 assert_eq_m128i ( r, a) ;
252252
253- // Bitwise or .
254- let r = _mm_ternarylogic_epi32 :: < 0b1111_1110 > ( a, b, c) ;
255- let e = _mm_setr_epi32 ( 0b111 , 0b111 , 0b001 , 0b101 ) ;
253+ // Bitwise xor .
254+ let r = _mm_ternarylogic_epi32 :: < 0b10010110 > ( a, b, c) ;
255+ let e = _mm_setr_epi32 ( 0b111 , 0b101 , 0b001 , 0b100 ) ;
256256 assert_eq_m128i ( r, e) ;
257257
258- // Majority.
258+ // Majority (2 or more bits set) .
259259 let r = _mm_ternarylogic_epi32 :: < 0b1110_1000 > ( a, b, c) ;
260- let e = _mm_setr_epi32 ( 0b000 , 0b010 , 0b001 , 0b101 ) ;
260+ let e = _mm_setr_epi32 ( 0b000 , 0b010 , 0b001 , 0b111 ) ;
261261 assert_eq_m128i ( r, e) ;
262262 }
263263 test_mm_ternarylogic_epi32 ( ) ;
0 commit comments