diff options
author | Uros Bizjak <ubizjak@gmail.com> | 2021-08-26 22:08:25 +0200 |
---|---|---|
committer | Uros Bizjak <ubizjak@gmail.com> | 2021-08-26 22:09:20 +0200 |
commit | 5a6c626710ad2ac4baa2dba02fac0750177e3305 (patch) | |
tree | 96f76144c4d69acd14f46c7085a8615b69c58c97 | |
parent | 352d5e85a7060cd0e069d81c61b22ca3d16ffc49 (diff) | |
download | gcc-5a6c626710ad2ac4baa2dba02fac0750177e3305.zip gcc-5a6c626710ad2ac4baa2dba02fac0750177e3305.tar.gz gcc-5a6c626710ad2ac4baa2dba02fac0750177e3305.tar.bz2 |
[i386] Call force_reg unconditionally.
There is no point to check RTXes before calling force_reg,
force_reg checks for REG RTX by itself.
2021-08-26 Uroš Bizjak <ubizjak@gmail.com>
gcc/
* config/i386/i386.md (*btr<mode>_1): Call force_reg unconditionally.
(conditional moves with memory inputs splitters): Ditto.
* config/i386/sse.md (one_cmpl<mode>2): Simplify.
-rw-r--r-- | gcc/config/i386/i386.md | 15 | ||||
-rw-r--r-- | gcc/config/i386/sse.md | 6 |
2 files changed, 8 insertions, 13 deletions
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index c80dcb5..528116d 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -12728,8 +12728,7 @@ (clobber (reg:CC FLAGS_REG))])] { operands[0] = lowpart_subreg (SImode, operands[0], <MODE>mode); - if (MEM_P (operands[1])) - operands[1] = force_reg (<MODE>mode, operands[1]); + operands[1] = force_reg (<MODE>mode, operands[1]); operands[1] = lowpart_subreg (SImode, operands[1], <MODE>mode); }) @@ -19352,10 +19351,8 @@ [(set (match_dup 0) (if_then_else:SWI248 (match_dup 1) (match_dup 2) (match_dup 3)))] { - if (MEM_P (operands[2])) - operands[2] = force_reg (<MODE>mode, operands[2]); - if (MEM_P (operands[3])) - operands[3] = force_reg (<MODE>mode, operands[3]); + operands[2] = force_reg (<MODE>mode, operands[2]); + operands[3] = force_reg (<MODE>mode, operands[3]); }) (define_insn "*movqicc_noc" @@ -19603,10 +19600,8 @@ [(set (match_dup 0) (if_then_else:MODEF (match_dup 1) (match_dup 2) (match_dup 3)))] { - if (MEM_P (operands[2])) - operands[2] = force_reg (<MODE>mode, operands[2]); - if (MEM_P (operands[3])) - operands[3] = force_reg (<MODE>mode, operands[3]); + operands[2] = force_reg (<MODE>mode, operands[2]); + operands[3] = force_reg (<MODE>mode, operands[3]); }) ;; Don't do conditional moves with memory inputs diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index 03fc2df..0ca3229 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -14318,10 +14318,10 @@ (match_dup 2)))] "TARGET_SSE" { + operands[2] = CONSTM1_RTX (<MODE>mode); + if (!TARGET_AVX512F) - operands[2] = force_reg (<MODE>mode, CONSTM1_RTX (<MODE>mode)); - else - operands[2] = CONSTM1_RTX (<MODE>mode); + operands[2] = force_reg (<MODE>mode, operands[2]); }) (define_insn "<mask_codefor>one_cmpl<mode>2<mask_name>" |