From f4f9a9dc64fbf544a05a76e4634ed9f38cce40fc Mon Sep 17 00:00:00 2001 From: Wei Xiao Date: Thu, 17 Jan 2019 09:34:00 +0000 Subject: [PATCH] re PR target/88794 (fixupimm intrinsics are unusable) 2019-01-17 Wei Xiao PR target/88794 Revert: 2018-11-12 Wei Xiao * config/i386/sse.md: Combine VFIXUPIMM* patterns (_fixupimm_maskz): Update. (_fixupimm): Update. (_fixupimm_mask): Remove. (avx512f_sfixupimm_maskz): Update. (avx512f_sfixupimm): Update. (avx512f_sfixupimm_mask): Remove. From-SVN: r268012 --- gcc/ChangeLog | 14 ++++++++++++++ gcc/config/i386/sse.md | 42 ++++++++++++++++++++++++++++++++++++------ 2 files changed, 50 insertions(+), 6 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 47bccb5bbab..e379d2edcbe 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,17 @@ +2019-01-17 Wei Xiao + + PR target/88794 + Revert: + 2018-11-12 Wei Xiao + + * config/i386/sse.md: Combine VFIXUPIMM* patterns + (_fixupimm_maskz): Update. + (_fixupimm): Update. + (_fixupimm_mask): Remove. + (avx512f_sfixupimm_maskz): Update. + (avx512f_sfixupimm): Update. + (avx512f_sfixupimm_mask): Remove. + 2019-01-17 Wei Xiao PR target/88794 diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index e4697ba0359..48708a41b3b 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -8867,14 +8867,14 @@ (match_operand: 4 "register_operand")] "TARGET_AVX512F" { - emit_insn (gen__fixupimm_mask ( + emit_insn (gen__fixupimm_maskz_1 ( operands[0], operands[1], operands[2], operands[3], CONST0_RTX (mode), operands[4] )); DONE; }) -(define_insn "_fixupimm" +(define_insn "_fixupimm" [(set (match_operand:VF_AVX512VL 0 "register_operand" "=v") (unspec:VF_AVX512VL [(match_operand:VF_AVX512VL 1 "register_operand" "v") @@ -8882,7 +8882,22 @@ (match_operand:SI 3 "const_0_to_255_operand")] UNSPEC_FIXUPIMM))] "TARGET_AVX512F" - "vfixupimm\t{%3, %2, %1, %0|%0, %1, %2, %3}"; + "vfixupimm\t{%3, %2, %1, %0|%0, %1, %2, %3}"; + [(set_attr "prefix" "evex") + (set_attr "mode" "")]) + +(define_insn "_fixupimm_mask" + [(set (match_operand:VF_AVX512VL 0 "register_operand" "=v") + (vec_merge:VF_AVX512VL + (unspec:VF_AVX512VL + [(match_operand:VF_AVX512VL 1 "register_operand" "v") + (match_operand: 2 "nonimmediate_operand" "") + (match_operand:SI 3 "const_0_to_255_operand")] + UNSPEC_FIXUPIMM) + (match_operand:VF_AVX512VL 4 "register_operand" "0") + (match_operand: 5 "register_operand" "Yk")))] + "TARGET_AVX512F" + "vfixupimm\t{%3, %2, %1, %0%{%5%}|%0%{%5%}, %1, %2, %3}"; [(set_attr "prefix" "evex") (set_attr "mode" "")]) @@ -8894,14 +8909,14 @@ (match_operand: 4 "register_operand")] "TARGET_AVX512F" { - emit_insn (gen_avx512f_sfixupimm_mask ( + emit_insn (gen_avx512f_sfixupimm_maskz_1 ( operands[0], operands[1], operands[2], operands[3], CONST0_RTX (mode), operands[4] )); DONE; }) -(define_insn "avx512f_sfixupimm" +(define_insn "avx512f_sfixupimm" [(set (match_operand:VF_128 0 "register_operand" "=v") (unspec:VF_128 [(match_operand:VF_128 1 "register_operand" "v") @@ -8909,7 +8924,22 @@ (match_operand:SI 3 "const_0_to_255_operand")] UNSPEC_FIXUPIMM))] "TARGET_AVX512F" - "vfixupimm\t{%3, %2, %1, %0|%0, %1, %2, %3}"; + "vfixupimm\t{%3, %2, %1, %0|%0, %1, %2, %3}"; + [(set_attr "prefix" "evex") + (set_attr "mode" "")]) + +(define_insn "avx512f_sfixupimm_mask" + [(set (match_operand:VF_128 0 "register_operand" "=v") + (vec_merge:VF_128 + (unspec:VF_128 + [(match_operand:VF_128 1 "register_operand" "v") + (match_operand: 2 "" "") + (match_operand:SI 3 "const_0_to_255_operand")] + UNSPEC_FIXUPIMM) + (match_operand:VF_128 4 "register_operand" "0") + (match_operand: 5 "register_operand" "Yk")))] + "TARGET_AVX512F" + "vfixupimm\t{%3, %2, %1, %0%{%5%}|%0%{%5%}, %1, %2, %3}"; [(set_attr "prefix" "evex") (set_attr "mode" "")]) -- 2.30.2