]>
git.ipfire.org Git - thirdparty/gcc.git/commit
Support sdot_prodv*qi with emulation of sdot_prodv*hi.
Currently sdot_prodv*qi is available under TARGET_AVXVNNIINT8, but it
can be emulated by
vec_unpacks_lo_v32qi
vec_unpacks_lo_v32qi
vec_unpacks_hi_v32qi
vec_unpacks_hi_v32qi
sdot_prodv16hi
sdot_prodv16hi
add3v8si
which is faster than original
vect_patt_39.11_48 = WIDEN_MULT_LO_EXPR <vect__3.7_44, vect__7.10_47>;
vect_patt_39.11_49 = WIDEN_MULT_HI_EXPR <vect__3.7_44, vect__7.10_47>;
vect_patt_38.14_54 = [vec_unpack_lo_expr] vect_patt_39.11_48;
vect_patt_38.14_55 = [vec_unpack_hi_expr] vect_patt_39.11_48;
vect_patt_38.14_56 = [vec_unpack_lo_expr] vect_patt_39.11_49;
vect_patt_38.14_57 = [vec_unpack_hi_expr] vect_patt_39.11_49;
vect_sum_15.15_59 = vect_patt_38.14_54 + vect_patt_38.14_55;
vect_sum_15.15_60 = vect_patt_38.14_56 + vect_sum_15.15_59;
vect_sum_15.15_61 = vect_patt_38.14_57 + vect_sum_15.15_60;
gcc/ChangeLog:
* config/i386/sse.md (sdot_prodv64qi): New expander.
(sseunpackmodelower): New mode attr.
(sdot_prod<mode>): Emulate sdot_prodv*qi with sodt_prov*hi
when TARGET_VNNIINT8 is not available.
gcc/testsuite/ChangeLog:
* gcc.target/i386/sdotprodint8_emulate.c: New test.