https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68620
Christophe Lyon changed:
What|Removed |Added
Status|ASSIGNED|RESOLVED
Resolution|---
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68620
--- Comment #8 from Christophe Lyon ---
Author: clyon
Date: Tue Jan 26 15:17:00 2016
New Revision: 232832
URL: https://gcc.gnu.org/viewcvs?rev=232832&root=gcc&view=rev
Log:
2016-01-26 Christophe Lyon
gcc/
PR target/68620
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68620
Christophe Lyon changed:
What|Removed |Added
Status|UNCONFIRMED |ASSIGNED
Last reconfirmed|2015-12-03
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68620
--- Comment #6 from Christophe Lyon ---
Adding:
+(define_expand "movv4hf"
+ [(set (match_operand:V4HF 0 "nonimmediate_operand" "")
+ (match_operand:V4HF 1 "general_operand" ""))]
+ "TARGET_NEON"
+ "
+")
+
in neon.md makes this testcase
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68620
--- Comment #5 from Christophe Lyon ---
(In reply to ktkachov from comment #3)
> Does that mean we need to define a movv4hf pattern?
Isn't *neon_mov providing this (with the VDX iterator)
I think what's not matching here is (set (subreg:SI (reg
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68620
--- Comment #4 from Christophe Lyon ---
Maybe, that's what I'm trying to figure out.
Given the comment in arm.h before the definition of CANNOT_CHANGE_MODE_CLASS,
maybe we need to define more patterns, for all the sizes where
CANNOT_CHANGE_MODE_
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68620
ktkachov at gcc dot gnu.org changed:
What|Removed |Added
CC||ktkachov at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68620
chrbr at gcc dot gnu.org changed:
What|Removed |Added
Last reconfirmed||2015-12-3
CC|
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68620
--- Comment #1 from Christophe Lyon ---
The problem happens when trying to extract subregs from V4HF.
On big-endian, CANNOT_CHANGE_MODE_CLASS returns 1, which at some point makes
xpart = operand_subword (x, i, 1, mode); (in emit_move_multi_word)