re PR target/88051 (internal compiler error: in add_clobbers, at config/i386/sync.md:1762)

PR target/88051
	* config/i386/i386.md (floatunsdidf2): Allow only 64bit AVX512F targets.
	* config/i386/sse.md (UNSPEC_MOVDI_TO_SSE): New UNSPEC.
	(movdi_to_sse): Rewrite using UNSPEC_MOVDI_TO_SSE unspec.

From-SVN: r266218
This commit is contained in:
Uros Bizjak 2018-11-16 17:42:16 +01:00 committed by Uros Bizjak
parent 258b385463
commit b41835733b
3 changed files with 16 additions and 5 deletions

View File

@ -1,3 +1,10 @@
2018-11-16 Uros Bizjak <ubizjak@gmail.com>
PR target/88051
* config/i386/i386.md (floatunsdidf2): Allow only 64bit AVX512F targets.
* config/i386/sse.md (UNSPEC_MOVDI_TO_SSE): New UNSPEC.
(movdi_to_sse): Rewrite using UNSPEC_MOVDI_TO_SSE unspec.
2018-11-16 Jakub Jelinek <jakub@redhat.com>
PR middle-end/88032

View File

@ -5194,7 +5194,8 @@
[(set (match_operand:DF 0 "register_operand")
(unsigned_float:DF
(match_operand:DI 1 "nonimmediate_operand")))]
"(TARGET_KEEPS_VECTOR_ALIGNED_STACK || TARGET_AVX512F)
"((TARGET_64BIT && TARGET_AVX512F)
|| TARGET_KEEPS_VECTOR_ALIGNED_STACK)
&& TARGET_SSE2 && TARGET_SSE_MATH"
{
if (!TARGET_64BIT)

View File

@ -21,6 +21,9 @@
;; SSE
UNSPEC_MOVNT
;; SSE2
UNSPEC_MOVDI_TO_SSE
;; SSE3
UNSPEC_LDDQU
@ -1235,10 +1238,10 @@
;; from there.
(define_insn_and_split "movdi_to_sse"
[(parallel
[(set (match_operand:V4SI 0 "register_operand" "=?x,x")
(subreg:V4SI (match_operand:DI 1 "nonimmediate_operand" "r,m") 0))
(clobber (match_scratch:V4SI 2 "=&x,X"))])]
[(set (match_operand:V4SI 0 "register_operand" "=?x,x")
(unspec:V4SI [(match_operand:DI 1 "nonimmediate_operand" "r,m")]
UNSPEC_MOVDI_TO_SSE))
(clobber (match_scratch:V4SI 2 "=&x,X"))]
"!TARGET_64BIT && TARGET_SSE2 && TARGET_INTER_UNIT_MOVES_TO_VEC"
"#"
"&& reload_completed"