Commit 63d6cbd1 by Michael Meissner Committed by Michael Meissner

re PR target/85424 (The __builtin_packlongdouble function might have issues with…

re PR target/85424 (The __builtin_packlongdouble function might have issues with the output overlapping the inputs)

2018-04-17  Michael Meissner  <meissner@linux.vnet.ibm.com>

	PR target/85424
	* config/rs6000/rs6000.md (pack<mode>): Do not try handle a pack
	where the inputs overlap with the output.

From-SVN: r259441
parent 21070494
2018-04-17 Michael Meissner <meissner@linux.vnet.ibm.com>
PR target/85424
* config/rs6000/rs6000.md (pack<mode>): Do not try handle a pack
where the inputs overlap with the output.
2018-04-17 Jakub Jelinek <jakub@redhat.com> 2018-04-17 Jakub Jelinek <jakub@redhat.com>
* config/i386/sse.md (vec_extract_lo_<mode><mask_name>): Add * config/i386/sse.md (vec_extract_lo_<mode><mask_name>): Add
......
...@@ -13934,16 +13934,14 @@ ...@@ -13934,16 +13934,14 @@
(set_attr "length" "4")]) (set_attr "length" "4")])
(define_insn_and_split "pack<mode>" (define_insn_and_split "pack<mode>"
[(set (match_operand:FMOVE128 0 "register_operand" "=d,&d") [(set (match_operand:FMOVE128 0 "register_operand" "=&d")
(unspec:FMOVE128 (unspec:FMOVE128
[(match_operand:<FP128_64> 1 "register_operand" "0,d") [(match_operand:<FP128_64> 1 "register_operand" "d")
(match_operand:<FP128_64> 2 "register_operand" "d,d")] (match_operand:<FP128_64> 2 "register_operand" "d")]
UNSPEC_PACK_128BIT))] UNSPEC_PACK_128BIT))]
"FLOAT128_2REG_P (<MODE>mode)" "FLOAT128_2REG_P (<MODE>mode)"
"@ "#"
fmr %L0,%2 "&& reload_completed"
#"
"&& reload_completed && REGNO (operands[0]) != REGNO (operands[1])"
[(set (match_dup 3) (match_dup 1)) [(set (match_dup 3) (match_dup 1))
(set (match_dup 4) (match_dup 2))] (set (match_dup 4) (match_dup 2))]
{ {
...@@ -13956,8 +13954,8 @@ ...@@ -13956,8 +13954,8 @@
operands[3] = gen_rtx_REG (<FP128_64>mode, dest_hi); operands[3] = gen_rtx_REG (<FP128_64>mode, dest_hi);
operands[4] = gen_rtx_REG (<FP128_64>mode, dest_lo); operands[4] = gen_rtx_REG (<FP128_64>mode, dest_lo);
} }
[(set_attr "type" "fpsimple,fp") [(set_attr "type" "fp")
(set_attr "length" "4,8")]) (set_attr "length" "8")])
(define_insn "unpack<mode>" (define_insn "unpack<mode>"
[(set (match_operand:DI 0 "register_operand" "=wa,wa") [(set (match_operand:DI 0 "register_operand" "=wa,wa")
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment