Commit d3adfe5d by James Bowman Committed by James Bowman

Limit the MEMSET (setmemsi pattern) and MEMCPY (movmemsi pattern) instructions to 0-511 bytes.

Limit the MEMSET (setmemsi pattern) and MEMCPY (movmemsi pattern)
instructions to 0-511 bytes. There is a hardware limitation on large
MEMSET, MEMCPY operations that the library versions of memset() and
memcpy() deal with.

2015-09-29  James Bowman  <james.bowman@ftdichip.com>

	* config/ft32/predicates.md (ft32_imm_operand): New predicate.
	* config/ft32/ft32.md (movmemsi, setmemsi): Use ft32_imm_operand
	predicate, disallow register for operand 2.

From-SVN: r228271
parent 3734a256
2015-09-29 James Bowman <james.bowman@ftdichip.com>
* config/ft32/predicates.md (ft32_imm_operand): New predicate.
* config/ft32/ft32.md (movmemsi, setmemsi): Use ft32_imm_operand
predicate, disallow register for operand 2.
2015-09-29 Aditya Kumar <aditya.k7@samsung.com> 2015-09-29 Aditya Kumar <aditya.k7@samsung.com>
* graphite-dependences.c (scop_get_dependences): Moved in down * graphite-dependences.c (scop_get_dependences): Moved in down
...@@ -841,19 +841,19 @@ ...@@ -841,19 +841,19 @@
) )
(define_insn "movmemsi" (define_insn "movmemsi"
[(set (match_operand:BLK 0 "memory_operand" "=W,W,BW") [(set (match_operand:BLK 0 "memory_operand" "=W,BW")
(match_operand:BLK 1 "memory_operand" "W,W,BW")) (match_operand:BLK 1 "memory_operand" "W,BW"))
(use (match_operand:SI 2 "ft32_rimm_operand" "r,KA,rKA")) (use (match_operand:SI 2 "ft32_imm_operand" "KA,KA"))
(use (match_operand:SI 3)) (use (match_operand:SI 3))
] ]
"" ""
"memcpy.%d3 %b0,%b1,%2 # %3!" "memcpy.%d3 %b0,%b1,%2 "
) )
(define_insn "setmemsi" (define_insn "setmemsi"
[(set (match_operand:BLK 0 "memory_operand" "=BW,BW") (unspec:BLK [ [(set (match_operand:BLK 0 "memory_operand" "=BW") (unspec:BLK [
(use (match_operand:QI 2 "register_operand" "r,r")) (use (match_operand:QI 2 "register_operand" "r"))
(use (match_operand:SI 1 "ft32_rimm_operand" "r,KA")) (use (match_operand:SI 1 "ft32_imm_operand" "KA"))
] UNSPEC_SETMEM)) ] UNSPEC_SETMEM))
(use (match_operand:SI 3)) (use (match_operand:SI 3))
] ]
......
...@@ -80,6 +80,10 @@ ...@@ -80,6 +80,10 @@
(and (match_code "const_int") (and (match_code "const_int")
(match_test "IN_RANGE (INTVAL (op), -512, 511)")))) (match_test "IN_RANGE (INTVAL (op), -512, 511)"))))
(define_predicate "ft32_imm_operand"
(and (match_code "const_int")
(match_test "IN_RANGE (INTVAL (op), -512, 511)")))
(define_predicate "ft32_bwidth_operand" (define_predicate "ft32_bwidth_operand"
(and (match_code "const_int") (and (match_code "const_int")
(match_test "IN_RANGE (INTVAL (op), 1, 16)"))) (match_test "IN_RANGE (INTVAL (op), 1, 16)")))
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