@@ -46240,11 +46240,22 @@ mod tests {
4624046240
4624146241 #[simd_test(enable = "avx512f")]
4624246242 unsafe fn test_mm512_ternarylogic_epi32() {
46243- let a = _mm512_set1_epi32(1 << 2);
46244- let b = _mm512_set1_epi32(1 << 1);
46245- let c = _mm512_set1_epi32(1 << 0);
46246- let r = _mm512_ternarylogic_epi32::<8>(a, b, c);
46247- let e = _mm512_set1_epi32(0);
46243+ let a = _mm512_set4_epi32(0b100, 0b110, 0b001, 0b101);
46244+ let b = _mm512_set4_epi32(0b010, 0b011, 0b001, 0b101);
46245+ let c = _mm512_set4_epi32(0b001, 0b000, 0b001, 0b101);
46246+
46247+ // Identity of A.
46248+ let r = _mm512_ternarylogic_epi32::<0b1111_0000>(a, b, c);
46249+ assert_eq_m512i(r, a);
46250+
46251+ // Bitwise or.
46252+ let r = _mm512_ternarylogic_epi32::<0b1111_1110>(a, b, c);
46253+ let e = _mm512_set4_epi32(0b111, 0b111, 0b001, 0b101);
46254+ assert_eq_m512i(r, e);
46255+
46256+ // Majority.
46257+ let r = _mm512_ternarylogic_epi32::<0b1110_1000>(a, b, c);
46258+ let e = _mm512_set4_epi32(0b000, 0b010, 0b001, 0b101);
4624846259 assert_eq_m512i(r, e);
4624946260 }
4625046261
@@ -46274,11 +46285,24 @@ mod tests {
4627446285
4627546286 #[simd_test(enable = "avx512f,avx512vl")]
4627646287 unsafe fn test_mm256_ternarylogic_epi32() {
46277- let a = _mm256_set1_epi32(1 << 2);
46278- let b = _mm256_set1_epi32(1 << 1);
46279- let c = _mm256_set1_epi32(1 << 0);
46280- let r = _mm256_ternarylogic_epi32::<8>(a, b, c);
46281- let e = _mm256_set1_epi32(0);
46288+ let _mm256_set4_epi32 = |a, b, c, d| _mm256_setr_epi32(a, b, c, d, a, b, c, d);
46289+
46290+ let a = _mm256_set4_epi32(0b100, 0b110, 0b001, 0b101);
46291+ let b = _mm256_set4_epi32(0b010, 0b011, 0b001, 0b101);
46292+ let c = _mm256_set4_epi32(0b001, 0b000, 0b001, 0b101);
46293+
46294+ // Identity of A.
46295+ let r = _mm256_ternarylogic_epi32::<0b1111_0000>(a, b, c);
46296+ assert_eq_m256i(r, a);
46297+
46298+ // Bitwise or.
46299+ let r = _mm256_ternarylogic_epi32::<0b1111_1110>(a, b, c);
46300+ let e = _mm256_set4_epi32(0b111, 0b111, 0b001, 0b101);
46301+ assert_eq_m256i(r, e);
46302+
46303+ // Majority.
46304+ let r = _mm256_ternarylogic_epi32::<0b1110_1000>(a, b, c);
46305+ let e = _mm256_set4_epi32(0b000, 0b010, 0b001, 0b101);
4628246306 assert_eq_m256i(r, e);
4628346307 }
4628446308
@@ -46308,11 +46332,22 @@ mod tests {
4630846332
4630946333 #[simd_test(enable = "avx512f,avx512vl")]
4631046334 unsafe fn test_mm_ternarylogic_epi32() {
46311- let a = _mm_set1_epi32(1 << 2);
46312- let b = _mm_set1_epi32(1 << 1);
46313- let c = _mm_set1_epi32(1 << 0);
46314- let r = _mm_ternarylogic_epi32::<8>(a, b, c);
46315- let e = _mm_set1_epi32(0);
46335+ let a = _mm_setr_epi32(0b100, 0b110, 0b001, 0b101);
46336+ let b = _mm_setr_epi32(0b010, 0b011, 0b001, 0b101);
46337+ let c = _mm_setr_epi32(0b001, 0b000, 0b001, 0b101);
46338+
46339+ // Identity of A.
46340+ let r = _mm_ternarylogic_epi32::<0b1111_0000>(a, b, c);
46341+ assert_eq_m128i(r, a);
46342+
46343+ // Bitwise or.
46344+ let r = _mm_ternarylogic_epi32::<0b1111_1110>(a, b, c);
46345+ let e = _mm_setr_epi32(0b111, 0b111, 0b001, 0b101);
46346+ assert_eq_m128i(r, e);
46347+
46348+ // Majority.
46349+ let r = _mm_ternarylogic_epi32::<0b1110_1000>(a, b, c);
46350+ let e = _mm_setr_epi32(0b000, 0b010, 0b001, 0b101);
4631646351 assert_eq_m128i(r, e);
4631746352 }
4631846353
0 commit comments