Commit cb8a1637 by David Holsgrove Committed by Michael Eager

Support -mxl-reorder and swap instructions.

	*  config/microblaze/microblaze.c:
	Check mcpu, pcmp requirement and set TARGET_REORDER to 0 if not met.
	*  config/microblaze/microblaze.h: Add -mxl-reorder to DRIVER_SELF_SPECS
	*  config/microblaze/microblaze.md: New bswapsi2 and bswaphi2
	instructions emitted if TARGET_REORDER
	*  config/microblaze/microblaze.opt: New option -mxl-reorder set to 1 
	or 0 for -m/-mno case, but initialises as 2 to detect default use case 
	separately

From-SVN: r196415
parent ab68a73e
2013-03-02 David Holsgrove <david.holsgrove@xilinx.com>
* config/microblaze/microblaze.c:
Check mcpu, pcmp requirement and set TARGET_REORDER to 0 if not met.
* config/microblaze/microblaze.h: Add -mxl-reorder to DRIVER_SELF_SPECS
* config/microblaze/microblaze.md: New bswapsi2 and bswaphi2
instructions emitted if TARGET_REORDER
* config/microblaze/microblaze.opt: New option -mxl-reorder set to 1
or 0 for -m/-mno case, but initialises as 2 to detect default use case
separately
2013-03-01 Xinliang David Li <davidxl@google.com> 2013-03-01 Xinliang David Li <davidxl@google.com>
* tree-ssa-uninit.c (compute_control_dep_chain): Limit post-dom * tree-ssa-uninit.c (compute_control_dep_chain): Limit post-dom
......
...@@ -1380,6 +1380,21 @@ microblaze_option_override (void) ...@@ -1380,6 +1380,21 @@ microblaze_option_override (void)
microblaze_has_clz = 0; microblaze_has_clz = 0;
} }
/* TARGET_REORDER defaults to 2 if -mxl-reorder not specified. */
ver = MICROBLAZE_VERSION_COMPARE (microblaze_select_cpu, "v8.30.a");
if (ver < 0)
{
if (TARGET_REORDER == 1)
warning (0, "-mxl-reorder can be used only with -mcpu=v8.30.a or greater");
TARGET_REORDER = 0;
}
else if ((ver == 0) && !TARGET_PATTERN_COMPARE)
{
if (TARGET_REORDER == 1)
warning (0, "-mxl-reorder requires -mxl-pattern-compare for -mcpu=v8.30.a");
TARGET_REORDER = 0;
}
if (TARGET_MULTIPLY_HIGH && TARGET_SOFT_MUL) if (TARGET_MULTIPLY_HIGH && TARGET_SOFT_MUL)
error ("-mxl-multiply-high requires -mno-xl-soft-mul"); error ("-mxl-multiply-high requires -mno-xl-soft-mul");
......
...@@ -78,6 +78,7 @@ extern enum pipeline_type microblaze_pipe; ...@@ -78,6 +78,7 @@ extern enum pipeline_type microblaze_pipe;
"%{mno-xl-barrel-shift:%<mxl-barrel-shift}", \ "%{mno-xl-barrel-shift:%<mxl-barrel-shift}", \
"%{mno-xl-pattern-compare:%<mxl-pattern-compare}", \ "%{mno-xl-pattern-compare:%<mxl-pattern-compare}", \
"%{mxl-soft-div:%<mno-xl-soft-div}", \ "%{mxl-soft-div:%<mno-xl-soft-div}", \
"%{mxl-reorder:%<mno-xl-reorder}", \
"%{msoft-float:%<mhard-float}" "%{msoft-float:%<mhard-float}"
/* Tell collect what flags to pass to nm. */ /* Tell collect what flags to pass to nm. */
......
...@@ -353,6 +353,20 @@ ...@@ -353,6 +353,20 @@
(automata_option "time") (automata_option "time")
(automata_option "progress") (automata_option "progress")
(define_insn "bswapsi2"
[(set (match_operand:SI 0 "register_operand" "=r")
(bswap:SI (match_operand:SI 1 "register_operand" "r")))]
"TARGET_REORDER"
"swapb %0, %1"
)
(define_insn "bswaphi2"
[(set (match_operand:HI 0 "register_operand" "=r")
(bswap:HI (match_operand:HI 1 "register_operand" "r")))]
"TARGET_REORDER"
"swaph %0, %1"
)
;;---------------------------------------------------------------- ;;----------------------------------------------------------------
;; Microblaze delay slot description ;; Microblaze delay slot description
;;---------------------------------------------------------------- ;;----------------------------------------------------------------
......
...@@ -67,6 +67,10 @@ mxl-soft-mul ...@@ -67,6 +67,10 @@ mxl-soft-mul
Target Mask(SOFT_MUL) Target Mask(SOFT_MUL)
Use the soft multiply emulation (default) Use the soft multiply emulation (default)
mxl-reorder
Target Var(TARGET_REORDER) Init(2)
Use reorder instructions (swap and byte reversed load/store) (default)
mxl-soft-div mxl-soft-div
Target Mask(SOFT_DIV) Target Mask(SOFT_DIV)
Use the software emulation for divides (default) Use the software emulation for divides (default)
......
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