Commit 3d53551b by Michael Meissner Committed by Michael Meissner

Fix bad code of vector extract of PC-relative address with variable element #.

2020-01-06  Michael Meissner  <meissner@linux.ibm.com>

	* config/rs6000/vsx.md (vsx_extract_<mode>_var, VSX_D iterator):
	Use 'Q' for doing vector extract from memory.
	(vsx_extract_v4sf_var): Use 'Q' for doing vector extract from
	memory.
	(vsx_extract_<mode>_var, VSX_EXTRACT_I iterator): Use 'Q' for
	doing vector extract from memory.
	(vsx_extract_<mode>_<VS_scalar>mode_var): Use 'Q' for doing vector
	extract from memory.

From-SVN: r279938
parent dfef3500
2020-01-06 Michael Meissner <meissner@linux.ibm.com> 2020-01-06 Michael Meissner <meissner@linux.ibm.com>
* config/rs6000/vsx.md (vsx_extract_<mode>_var, VSX_D iterator):
Use 'Q' for doing vector extract from memory.
(vsx_extract_v4sf_var): Use 'Q' for doing vector extract from
memory.
(vsx_extract_<mode>_var, VSX_EXTRACT_I iterator): Use 'Q' for
doing vector extract from memory.
(vsx_extract_<mode>_<VS_scalar>mode_var): Use 'Q' for doing vector
extract from memory.
* config/rs6000/rs6000.c (rs6000_adjust_vec_address): Add support * config/rs6000/rs6000.c (rs6000_adjust_vec_address): Add support
for the offset being 34-bits when -mcpu=future is used. for the offset being 34-bits when -mcpu=future is used.
......
...@@ -3248,7 +3248,7 @@ ...@@ -3248,7 +3248,7 @@
;; Variable V2DI/V2DF extract ;; Variable V2DI/V2DF extract
(define_insn_and_split "vsx_extract_<mode>_var" (define_insn_and_split "vsx_extract_<mode>_var"
[(set (match_operand:<VS_scalar> 0 "gpc_reg_operand" "=v,wa,r") [(set (match_operand:<VS_scalar> 0 "gpc_reg_operand" "=v,wa,r")
(unspec:<VS_scalar> [(match_operand:VSX_D 1 "input_operand" "v,m,m") (unspec:<VS_scalar> [(match_operand:VSX_D 1 "input_operand" "v,Q,Q")
(match_operand:DI 2 "gpc_reg_operand" "r,r,r")] (match_operand:DI 2 "gpc_reg_operand" "r,r,r")]
UNSPEC_VSX_EXTRACT)) UNSPEC_VSX_EXTRACT))
(clobber (match_scratch:DI 3 "=r,&b,&b")) (clobber (match_scratch:DI 3 "=r,&b,&b"))
...@@ -3318,7 +3318,7 @@ ...@@ -3318,7 +3318,7 @@
;; Variable V4SF extract ;; Variable V4SF extract
(define_insn_and_split "vsx_extract_v4sf_var" (define_insn_and_split "vsx_extract_v4sf_var"
[(set (match_operand:SF 0 "gpc_reg_operand" "=wa,wa,?r") [(set (match_operand:SF 0 "gpc_reg_operand" "=wa,wa,?r")
(unspec:SF [(match_operand:V4SF 1 "input_operand" "v,m,m") (unspec:SF [(match_operand:V4SF 1 "input_operand" "v,Q,Q")
(match_operand:DI 2 "gpc_reg_operand" "r,r,r")] (match_operand:DI 2 "gpc_reg_operand" "r,r,r")]
UNSPEC_VSX_EXTRACT)) UNSPEC_VSX_EXTRACT))
(clobber (match_scratch:DI 3 "=r,&b,&b")) (clobber (match_scratch:DI 3 "=r,&b,&b"))
...@@ -3681,7 +3681,7 @@ ...@@ -3681,7 +3681,7 @@
(define_insn_and_split "vsx_extract_<mode>_var" (define_insn_and_split "vsx_extract_<mode>_var"
[(set (match_operand:<VS_scalar> 0 "gpc_reg_operand" "=r,r,r") [(set (match_operand:<VS_scalar> 0 "gpc_reg_operand" "=r,r,r")
(unspec:<VS_scalar> (unspec:<VS_scalar>
[(match_operand:VSX_EXTRACT_I 1 "input_operand" "v,v,m") [(match_operand:VSX_EXTRACT_I 1 "input_operand" "v,v,Q")
(match_operand:DI 2 "gpc_reg_operand" "r,r,r")] (match_operand:DI 2 "gpc_reg_operand" "r,r,r")]
UNSPEC_VSX_EXTRACT)) UNSPEC_VSX_EXTRACT))
(clobber (match_scratch:DI 3 "=r,r,&b")) (clobber (match_scratch:DI 3 "=r,r,&b"))
...@@ -3701,7 +3701,7 @@ ...@@ -3701,7 +3701,7 @@
[(set (match_operand:<VS_scalar> 0 "gpc_reg_operand" "=r,r,r") [(set (match_operand:<VS_scalar> 0 "gpc_reg_operand" "=r,r,r")
(zero_extend:<VS_scalar> (zero_extend:<VS_scalar>
(unspec:<VSX_EXTRACT_I:VS_scalar> (unspec:<VSX_EXTRACT_I:VS_scalar>
[(match_operand:VSX_EXTRACT_I 1 "input_operand" "v,v,m") [(match_operand:VSX_EXTRACT_I 1 "input_operand" "v,v,Q")
(match_operand:DI 2 "gpc_reg_operand" "r,r,r")] (match_operand:DI 2 "gpc_reg_operand" "r,r,r")]
UNSPEC_VSX_EXTRACT))) UNSPEC_VSX_EXTRACT)))
(clobber (match_scratch:DI 3 "=r,r,&b")) (clobber (match_scratch:DI 3 "=r,r,&b"))
......
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