rs6000.md ("get_vrsave_internal"): New.
2002-02-25 Aldy Hernandez <aldyh@redhat.com> * config/rs6000/rs6000.md ("get_vrsave_internal"): New. ("*set_vrsave_internal"): use mfspr for Darwin. * config/rs6000/rs6000.c (rs6000_emit_prologue): Call gen_get_vrsave_internal. From-SVN: r50015
This commit is contained in:
parent
2e8f5b2dde
commit
b188f760ce
3 changed files with 32 additions and 2 deletions
|
@ -1,3 +1,11 @@
|
|||
2002-02-25 Aldy Hernandez <aldyh@redhat.com>
|
||||
|
||||
* config/rs6000/rs6000.md ("get_vrsave_internal"): New.
|
||||
("*set_vrsave_internal"): use mfspr for Darwin.
|
||||
|
||||
* config/rs6000/rs6000.c (rs6000_emit_prologue): Call
|
||||
gen_get_vrsave_internal.
|
||||
|
||||
Sun Feb 24 16:38:56 2002 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
|
||||
|
||||
* optabs.c (widen_operand): Properly handle CONST_INT for NO_EXTEND.
|
||||
|
|
|
@ -8739,7 +8739,10 @@ rs6000_emit_prologue ()
|
|||
/* Get VRSAVE onto a GPR. */
|
||||
reg = gen_rtx_REG (SImode, 12);
|
||||
vrsave = gen_rtx_REG (SImode, VRSAVE_REGNO);
|
||||
emit_insn (gen_rtx_SET (VOIDmode, reg, vrsave));
|
||||
if (TARGET_MACHO)
|
||||
emit_insn (gen_get_vrsave_internal (reg));
|
||||
else
|
||||
emit_insn (gen_rtx_SET (VOIDmode, reg, vrsave));
|
||||
|
||||
/* Save VRSAVE. */
|
||||
offset = info->vrsave_save_offset + sp_offset;
|
||||
|
|
|
@ -14008,13 +14008,32 @@
|
|||
[(set_attr "type" "altivec")
|
||||
(set_attr "length" "*,*,*,16,16,16")])
|
||||
|
||||
(define_insn "get_vrsave_internal"
|
||||
[(set (match_operand:SI 0 "register_operand" "=r")
|
||||
(unspec:SI [(reg:SI 109)] 214))]
|
||||
"TARGET_ALTIVEC"
|
||||
"*
|
||||
{
|
||||
if (TARGET_MACHO)
|
||||
return \"mtspr 256,%0\";
|
||||
else
|
||||
return \"mtvrsave %0\";
|
||||
}"
|
||||
[(set_attr "type" "altivec")])
|
||||
|
||||
(define_insn "*set_vrsave_internal"
|
||||
[(match_parallel 0 "vrsave_operation"
|
||||
[(set (reg:SI 109)
|
||||
(unspec_volatile:SI [(match_operand:SI 1 "register_operand" "r")
|
||||
(reg:SI 109)] 30))])]
|
||||
"TARGET_ALTIVEC"
|
||||
"mtvrsave %1"
|
||||
"*
|
||||
{
|
||||
if (TARGET_MACHO)
|
||||
return \"mfspr %1,256\";
|
||||
else
|
||||
return \"mtvrsave %1\";
|
||||
}"
|
||||
[(set_attr "type" "altivec")])
|
||||
|
||||
;; Vector clears
|
||||
|
|
Loading…
Add table
Reference in a new issue