[PATCH, committed] rs6000: Fix for PR63165
Segher Boessenkool
segher@kernel.crashing.org
Thu Sep 4 22:54:00 GMT 2014
My extend* pattern patches exposed a problem elsewhere. I don't build
java so I didn't see it. This fixes it. Also handles the zero-extend
case, that had the same problem. Pre-approved by David, committed.
Segher
2014-09-04 Segher Boessenkool <segher@kernel.crashing.org>
PR target/63165
* config/rs6000/rs6000.md (floatsi<mode>2_lfiwax_mem): Use
indexed_or_indirect_operand instead of memory_operand.
(floatsi<mode>2_lfiwzx_mem): Ditto.
---
gcc/config/rs6000/rs6000.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index 9c0002d..0934467 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -5514,7 +5514,7 @@ (define_insn_and_split "floatsi<mode>2_lfiwax_mem"
[(set (match_operand:SFDF 0 "gpc_reg_operand" "=d,<rreg2>")
(float:SFDF
(sign_extend:DI
- (match_operand:SI 1 "memory_operand" "Z,Z"))))
+ (match_operand:SI 1 "indexed_or_indirect_operand" "Z,Z"))))
(clobber (match_scratch:DI 2 "=0,d"))]
"TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_DOUBLE_FLOAT && TARGET_LFIWAX
&& <SI_CONVERT_FP>"
@@ -5589,7 +5589,7 @@ (define_insn_and_split "floatunssi<mode>2_lfiwzx_mem"
[(set (match_operand:SFDF 0 "gpc_reg_operand" "=d,<rreg2>")
(unsigned_float:SFDF
(zero_extend:DI
- (match_operand:SI 1 "memory_operand" "Z,Z"))))
+ (match_operand:SI 1 "indexed_or_indirect_operand" "Z,Z"))))
(clobber (match_scratch:DI 2 "=0,d"))]
"TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_DOUBLE_FLOAT && TARGET_LFIWZX
&& <SI_CONVERT_FP>"
--
1.8.1.4
More information about the Gcc-patches
mailing list