On 03/19/2013 08:47 AM, Marc Glisse wrote: > (define_insn_and_split "avx_<castmode><avxsizesuffix>_<castmode>" > [(set (match_operand:AVX256MODE2P 0 "nonimmediate_operand" "=x,m") > - (unspec:AVX256MODE2P > - [(match_operand:<ssehalfvecmode> 1 "nonimmediate_operand" "xm,x")] > - UNSPEC_CAST))] > + (subreg:AVX256MODE2P > + (match_operand:<ssehalfvecmode> 1 "nonimmediate_operand" "xm,x") 0))] > "TARGET_AVX" > "#" > "&& reload_completed" > [(const_int 0)]
I'm not fond of this, primarily because I believe the pattern should not exist at all. One of the following is true: (1) reload needs working around (thus all the reload_completed nonsense) or (2) the entire pattern is useless and would be subsumed by mov<mode> or (3) the entire pattern is useless and is *already* subsumed by mov<mode>, since mov is earlier in the md file, making this pattern dead code. r~