Commit 3c8c9f0d by Chung-Lin Tang Committed by Sandra Loosemore

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
parent a92a1c27
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> 2015-05-12 Segher Boessenkool <segher@kernel.crashing.org>
* config/rs6000/rs6000.md (*rotlsi3_internal4, *rotlsi3_internal5, * config/rs6000/rs6000.md (*rotlsi3_internal4, *rotlsi3_internal5,
......
...@@ -39,6 +39,9 @@ ...@@ -39,6 +39,9 @@
;; Register constraints ;; Register constraints
(define_register_constraint "c" "IJMP_REGS"
"A register suitable for an indirect jump.")
(define_register_constraint "j" "SIB_REGS" (define_register_constraint "j" "SIB_REGS"
"A register suitable for an indirect sibcall.") "A register suitable for an indirect sibcall.")
......
...@@ -173,6 +173,7 @@ enum reg_class ...@@ -173,6 +173,7 @@ enum reg_class
{ {
NO_REGS, NO_REGS,
SIB_REGS, SIB_REGS,
IJMP_REGS,
GP_REGS, GP_REGS,
ALL_REGS, ALL_REGS,
LIM_REG_CLASSES LIM_REG_CLASSES
...@@ -183,6 +184,7 @@ enum reg_class ...@@ -183,6 +184,7 @@ enum reg_class
#define REG_CLASS_NAMES \ #define REG_CLASS_NAMES \
{ "NO_REGS", \ { "NO_REGS", \
"SIB_REGS", \ "SIB_REGS", \
"IJMP_REGS", \
"GP_REGS", \ "GP_REGS", \
"ALL_REGS" } "ALL_REGS" }
...@@ -190,10 +192,11 @@ enum reg_class ...@@ -190,10 +192,11 @@ enum reg_class
#define REG_CLASS_CONTENTS \ #define REG_CLASS_CONTENTS \
{ \ { \
/* NO_REGS */ { 0, 0}, \ /* NO_REGS */ { 0, 0}, \
/* SIB_REGS */ { 0xfe0c, 0}, \ /* SIB_REGS */ { 0xfe0c, 0}, \
/* GP_REGS */ {~0, 0}, \ /* IJMP_REGS */ { 0x7fffffff, 0}, \
/* ALL_REGS */ {~0,~0} \ /* GP_REGS */ {~0, 0}, \
/* ALL_REGS */ {~0,~0} \
} }
......
...@@ -697,7 +697,7 @@ ...@@ -697,7 +697,7 @@
; check or adjust for overflow. ; check or adjust for overflow.
(define_insn "indirect_jump" (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" "jmp\\t%0"
[(set_attr "type" "control")]) [(set_attr "type" "control")])
...@@ -811,7 +811,7 @@ ...@@ -811,7 +811,7 @@
(define_insn "*tablejump" (define_insn "*tablejump"
[(set (pc) [(set (pc)
(match_operand:SI 0 "register_operand" "r")) (match_operand:SI 0 "register_operand" "c"))
(use (label_ref (match_operand 1 "" "")))] (use (label_ref (match_operand 1 "" "")))]
"" ""
"jmp\\t%0" "jmp\\t%0"
......
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