On 03/07/18 12:02, Richard Biener wrote:
I believe that the AVX variants like
(define_expand "maskstore<mode><avx512fmaskmodelower>"
[(set (match_operand:V48_AVX512VL 0 "memory_operand")
(vec_merge:V48_AVX512VL
(match_operand:V48_AVX512VL 1 "register_operand")
(match_dup 0)
(match_operand:<avx512fmaskmode> 2 "register_operand")))]
"TARGET_AVX512F")
are OK since they represent a use of the memory due to the match_dup 0
while your UNSPEC one doesn't so as the store doesn't actually take
place to all of 0 your insn variant doesn't represent observable behavior.
Hmm, so they're safe, but may prevent the optimization of nearby variables?
What about the unspec AVX variant?
Andrew