There is no point to check RTXes before calling force_reg, force_reg checks for REG RTX by itself.
2021-08-26 Uroš Bizjak <ubiz...@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. No functional changes. Bootstrapped and regression tested on x86_64-linux-gnu {,-m32}. Pushed to master. Uros.
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 41d85623ad6..de34916c1cc 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 13889687793..d689617ac39 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -14084,10 +14084,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>"