nios2.h (enum reg_class): Add IJMP_REGS enum value.
2015-05-12 Chung-Lin Tang <cltang@codesourcery.com> Sandra Loosemore <sandra@codesourcery.com> gcc/ * config/nios2/nios2.h (enum reg_class): Add IJMP_REGS enum value. (REG_CLASS_NAMES): Add "IJMP_REGS". (REG_CLASS_CONTENTS): Add new entry for IJMP_REGS. * config/nios2/nios2.md (indirect_jump,*tablejump): Adjust to use new "c" register constraint. * config/nios2/constraint.md (c): New register constraint corresponding to IJMP_REGS. Co-Authored-By: Sandra Loosemore <sandra@codesourcery.com> From-SVN: r223082
This commit is contained in:
parent
a92a1c274c
commit
3c8c9f0daf
4 changed files with 24 additions and 6 deletions
|
@ -1,3 +1,15 @@
|
|||
2015-05-12 Chung-Lin Tang <cltang@codesourcery.com>
|
||||
Sandra Loosemore <sandra@codesourcery.com>
|
||||
|
||||
* config/nios2/nios2.h (enum reg_class): Add IJMP_REGS enum
|
||||
value.
|
||||
(REG_CLASS_NAMES): Add "IJMP_REGS".
|
||||
(REG_CLASS_CONTENTS): Add new entry for IJMP_REGS.
|
||||
* config/nios2/nios2.md (indirect_jump,*tablejump): Adjust to
|
||||
use new "c" register constraint.
|
||||
* config/nios2/constraint.md (c): New register constraint
|
||||
corresponding to IJMP_REGS.
|
||||
|
||||
2015-05-12 Segher Boessenkool <segher@kernel.crashing.org>
|
||||
|
||||
* config/rs6000/rs6000.md (*rotlsi3_internal4, *rotlsi3_internal5,
|
||||
|
|
|
@ -39,6 +39,9 @@
|
|||
|
||||
;; Register constraints
|
||||
|
||||
(define_register_constraint "c" "IJMP_REGS"
|
||||
"A register suitable for an indirect jump.")
|
||||
|
||||
(define_register_constraint "j" "SIB_REGS"
|
||||
"A register suitable for an indirect sibcall.")
|
||||
|
||||
|
|
|
@ -173,6 +173,7 @@ enum reg_class
|
|||
{
|
||||
NO_REGS,
|
||||
SIB_REGS,
|
||||
IJMP_REGS,
|
||||
GP_REGS,
|
||||
ALL_REGS,
|
||||
LIM_REG_CLASSES
|
||||
|
@ -183,6 +184,7 @@ enum reg_class
|
|||
#define REG_CLASS_NAMES \
|
||||
{ "NO_REGS", \
|
||||
"SIB_REGS", \
|
||||
"IJMP_REGS", \
|
||||
"GP_REGS", \
|
||||
"ALL_REGS" }
|
||||
|
||||
|
@ -190,10 +192,11 @@ enum reg_class
|
|||
|
||||
#define REG_CLASS_CONTENTS \
|
||||
{ \
|
||||
/* NO_REGS */ { 0, 0}, \
|
||||
/* SIB_REGS */ { 0xfe0c, 0}, \
|
||||
/* GP_REGS */ {~0, 0}, \
|
||||
/* ALL_REGS */ {~0,~0} \
|
||||
/* NO_REGS */ { 0, 0}, \
|
||||
/* SIB_REGS */ { 0xfe0c, 0}, \
|
||||
/* IJMP_REGS */ { 0x7fffffff, 0}, \
|
||||
/* GP_REGS */ {~0, 0}, \
|
||||
/* ALL_REGS */ {~0,~0} \
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -697,7 +697,7 @@
|
|||
; check or adjust for overflow.
|
||||
|
||||
(define_insn "indirect_jump"
|
||||
[(set (pc) (match_operand:SI 0 "register_operand" "r"))]
|
||||
[(set (pc) (match_operand:SI 0 "register_operand" "c"))]
|
||||
""
|
||||
"jmp\\t%0"
|
||||
[(set_attr "type" "control")])
|
||||
|
@ -811,7 +811,7 @@
|
|||
|
||||
(define_insn "*tablejump"
|
||||
[(set (pc)
|
||||
(match_operand:SI 0 "register_operand" "r"))
|
||||
(match_operand:SI 0 "register_operand" "c"))
|
||||
(use (label_ref (match_operand 1 "" "")))]
|
||||
""
|
||||
"jmp\\t%0"
|
||||
|
|
Loading…
Add table
Reference in a new issue