From: hjl Date: Fri, 8 Feb 2019 11:30:53 +0000 (+0000) Subject: i386: Use OI/TImode in *mov[ot]i_internal_avx with AVX512VL X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a10a673ad1db72ecf626c12bc95de97369b590d0;p=thirdparty%2Fgcc.git i386: Use OI/TImode in *mov[ot]i_internal_avx with AVX512VL OImode and TImode moves must be done in XImode to access upper 16 vector registers without AVX512VL. With AVX512VL, we can access upper 16 vector registers in OImode and TImode. PR target/89229 * config/i386/i386.md (*movoi_internal_avx): Set mode to XI for upper 16 vector registers without TARGET_AVX512VL. (*movti_internal): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@268678 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 14c618340b4d..5e826d097658 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2019-02-08 H.J. Lu + + PR target/89229 + * config/i386/i386.md (*movoi_internal_avx): Set mode to XI for + upper 16 vector registers without TARGET_AVX512VL. + (*movti_internal): Likewise. + 2019-02-08 Jakub Jelinek PR rtl-optimization/89234 diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index c1492363bca3..3d9141ae450e 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -1933,8 +1933,9 @@ (set_attr "type" "sselog1,sselog1,ssemov,ssemov") (set_attr "prefix" "vex") (set (attr "mode") - (cond [(ior (match_operand 0 "ext_sse_reg_operand") - (match_operand 1 "ext_sse_reg_operand")) + (cond [(and (not (match_test "TARGET_AVX512VL")) + (ior (match_operand 0 "ext_sse_reg_operand") + (match_operand 1 "ext_sse_reg_operand"))) (const_string "XI") (and (eq_attr "alternative" "1") (match_test "TARGET_AVX512VL")) @@ -2012,8 +2013,9 @@ (set (attr "mode") (cond [(eq_attr "alternative" "0,1") (const_string "DI") - (ior (match_operand 0 "ext_sse_reg_operand") - (match_operand 1 "ext_sse_reg_operand")) + (and (not (match_test "TARGET_AVX512VL")) + (ior (match_operand 0 "ext_sse_reg_operand") + (match_operand 1 "ext_sse_reg_operand"))) (const_string "XI") (and (eq_attr "alternative" "3") (match_test "TARGET_AVX512VL"))