@@ -347,3 +347,45 @@ TYPED_TEST(uint_test, shift_against_mul)
347347 auto y = a * s;
348348 EXPECT_EQ (x, y);
349349}
350+
351+ TEST (avx, shl_words)
352+ {
353+ const auto x = 0x18191a1b1c1d1e1f28292a2b2c2d2e2f38393a3b3c3d3e3f48494a4b4c4d4e4f_u256;
354+ EXPECT_EQ (experimental::shl_words_avx (x, 0 ), x);
355+ EXPECT_EQ (experimental::shl_words_avx (x, 1 ), x << 64 );
356+ EXPECT_EQ (experimental::shl_words_avx (x, 2 ), x << 128 );
357+ EXPECT_EQ (experimental::shl_words_avx (x, 3 ), x << 192 );
358+ EXPECT_EQ (experimental::shl_words_avx (x, 4 ), 0 );
359+ EXPECT_EQ (experimental::shl_words_avx (x, 5 ), 0 );
360+ EXPECT_EQ (experimental::shl_words_avx (x, 123131231 ), 0 );
361+ }
362+
363+ TEST (avx, shl_bits)
364+ {
365+ const auto x = 0x18191a1b1c1d1e1f28292a2b2c2d2e2f38393a3b3c3d3e3f48494a4b4c4d4e4f_u256;
366+ EXPECT_EQ (experimental::shl_bits_avx (x, 0 ), x);
367+ EXPECT_EQ (experimental::shl_bits_avx (x, 1 ), x << 1 );
368+ EXPECT_EQ (experimental::shl_bits_avx (x, 2 ), x << 2 );
369+ EXPECT_EQ (experimental::shl_bits_avx (x, 3 ), x << 3 );
370+ EXPECT_EQ (experimental::shl_bits_avx (x, 31 ), x << 31 );
371+ EXPECT_EQ (experimental::shl_bits_avx (x, 32 ), x << 32 );
372+ EXPECT_EQ (experimental::shl_bits_avx (x, 33 ), x << 33 );
373+ EXPECT_EQ (experimental::shl_bits_avx (x, 63 ), x << 63 );
374+ EXPECT_EQ (experimental::shl_bits_avx (x, 64 ), x << 64 );
375+ }
376+
377+ TEST (avx, shl_avx)
378+ {
379+ const auto x = 0x18191a1b1c1d1e1f28292a2b2c2d2e2f38393a3b3c3d3e3f48494a4b4c4d4e4f_u256;
380+ EXPECT_EQ (experimental::shl_avx (x, 0 ), x);
381+ EXPECT_EQ (experimental::shl_avx (x, 1 ), x << 1 );
382+ EXPECT_EQ (experimental::shl_avx (x, 2 ), x << 2 );
383+ EXPECT_EQ (experimental::shl_avx (x, 3 ), x << 3 );
384+ EXPECT_EQ (experimental::shl_avx (x, 31 ), x << 31 );
385+ EXPECT_EQ (experimental::shl_avx (x, 32 ), x << 32 );
386+ EXPECT_EQ (experimental::shl_avx (x, 33 ), x << 33 );
387+ EXPECT_EQ (experimental::shl_avx (x, 63 ), x << 63 );
388+ EXPECT_EQ (experimental::shl_avx (x, 64 ), x << 64 );
389+ EXPECT_EQ (experimental::shl_avx (x, 65 ), x << 65 );
390+ EXPECT_EQ (experimental::shl_avx (x, 255 ), x << 255 );
391+ }
0 commit comments