aboutsummaryrefslogtreecommitdiff
path: root/gcc/lto
diff options
context:
space:
mode:
authorliuhongt <hongtao.liu@intel.com>2022-03-21 09:10:50 +0800
committerliuhongt <hongtao.liu@intel.com>2022-03-23 15:57:39 +0800
commit8fa7216ae0d8a15aaa1a54e1d8e308f791e65d97 (patch)
treea7c8c1b9a913bf34d29a4f690f5cb1fae0412c15 /gcc/lto
parenta2287813b1369b8fae67f2220d23c552945180ed (diff)
downloadgcc-8fa7216ae0d8a15aaa1a54e1d8e308f791e65d97.zip
gcc-8fa7216ae0d8a15aaa1a54e1d8e308f791e65d97.tar.gz
gcc-8fa7216ae0d8a15aaa1a54e1d8e308f791e65d97.tar.bz2
Fix ICE caused by NULL_RTX returned by lowpart_subreg.
In validate_subreg, both (subreg:V2HF (reg:SI) 0) and (subreg:V8HF (reg:V2HF) 0) are valid, but not for (subreg:V8HF (reg:SI) 0) which causes ICE. Ideally it should be handled in validate_subreg to support subreg for all modes available in TARGET_CAN_CHANGE_MODE_CLASS, but that would be too risky in stage4, so the patch is a walkround in the backend to force_reg operands before lowpart_subreg for expanders or pre_reload splitters. gcc/ChangeLog: PR target/104976 * config/i386/sse.md (ssePSmodelower): New. (*avx_cmp<mode>3_ltint_not): Force_reg operand before lowpart_subreg to avoid NULL_RTX. (<avx512>_fmaddc_<mode>_mask1<round_expand_name>, <avx512>_fcmaddc_<mode>_mask1<round_expand_name>, fma_<mode>_fmaddc_bcst, fma_<mode>_fcmaddc_bcst, <avx512>_<complexopname>_<mode>_mask<round_name>, avx512fp16_fcmaddcsh_v8hf_mask1<round_expand_name>, avx512fp16_fcmaddcsh_v8hf_mask3<round_expand_name>, avx512fp16_fmaddcsh_v8hf_mask3<round_expand_name>, avx512fp16_fmaddcsh_v8hf_mask3<round_expand_name>, float<floatunssuffix><mode>v4hf2, float<floatunssuffix>v2div2hf2, fix<fixunssuffix>_truncv4hf<mode>2, fix<fixunssuffix>_truncv2hfv2di2, extendv4hf<mode>2, extendv2hfv2df2, trunc<mode>v4hf2,truncv2dfv2hf2, *avx512bw_permvar_truncv16siv16hi_1, *avx512bw_permvar_truncv16siv16hi_1_hf, *avx512f_permvar_truncv8siv8hi_1, *avx512f_permvar_truncv8siv8hi_1_hf, *avx512f_vpermvar_truncv8div8si_1, *avx512f_permvar_truncv32hiv32qi_1, *avx512f_permvar_truncv16hiv16qi_1, *avx512f_permvar_truncv4div4si_1, *avx512f_pshufb_truncv8hiv8qi_1, *avx512f_pshufb_truncv4siv4hi_1, *avx512f_pshufd_truncv2div2si_1, sdot_prod<mode>, avx2_pblend<ssemodesuffix>_1, ashrv2di3,ashrv2di3,usdot_prod<mode>): Ditto. gcc/testsuite/ChangeLog: * gcc.target/i386/pr104976.c: New test. * gcc.target/i386/avx512fp16-vfcmaddcph-1a.c: Scan either vblendps or masked vmovaps. * gcc.target/i386/avx512fp16-vfmaddcph-1a.c: Ditto * gcc.target/i386/avx512fp16vl-vfcmaddcph-1a.c: Ditto. * gcc.target/i386/avx512fp16vl-vfmaddcph-1a.c: Ditto.
Diffstat (limited to 'gcc/lto')
0 files changed, 0 insertions, 0 deletions