summaryrefslogtreecommitdiff
path: root/gcc/config/tilegx
diff options
context:
space:
mode:
authorWalter Lee <walt@tilera.com>2013-03-26 00:54:47 +0000
committerWalter Lee <walt@gcc.gnu.org>2013-03-26 00:54:47 +0000
commit0051d3ece02591408abed724db15289746992911 (patch)
tree8ff7b2338e7d0a0878b5996990003f293d0a7437 /gcc/config/tilegx
parent065a36055e721213c820e12bcd3c0cffa4f8dcb7 (diff)
downloadgcc-0051d3ece02591408abed724db15289746992911.tar.gz
tilegx-builtins.h (enum tilegx_builtin): Add TILEGX_INSN_SHUFFLEBYTES1.
* config/tilegx/tilegx-builtins.h (enum tilegx_builtin): Add TILEGX_INSN_SHUFFLEBYTES1. * config/tilegx/tilegx.c (tilegx_builtin_info): Add entry for shufflebytes1. (tilegx_builtins): Ditto. * config/tilegx/tilegx.md (insn_shufflebytes1): New pattern. From-SVN: r197080
Diffstat (limited to 'gcc/config/tilegx')
-rw-r--r--gcc/config/tilegx/tilegx-builtins.h1
-rw-r--r--gcc/config/tilegx/tilegx.c2
-rw-r--r--gcc/config/tilegx/tilegx.md9
3 files changed, 12 insertions, 0 deletions
diff --git a/gcc/config/tilegx/tilegx-builtins.h b/gcc/config/tilegx/tilegx-builtins.h
index 31f1cebff0d..2edf05ee77d 100644
--- a/gcc/config/tilegx/tilegx-builtins.h
+++ b/gcc/config/tilegx/tilegx-builtins.h
@@ -193,6 +193,7 @@ enum tilegx_builtin
TILEGX_INSN_SHRU,
TILEGX_INSN_SHRUX,
TILEGX_INSN_SHUFFLEBYTES,
+ TILEGX_INSN_SHUFFLEBYTES1,
TILEGX_INSN_ST,
TILEGX_INSN_ST1,
TILEGX_INSN_ST2,
diff --git a/gcc/config/tilegx/tilegx.c b/gcc/config/tilegx/tilegx.c
index d4136214327..9f2aad5eb38 100644
--- a/gcc/config/tilegx/tilegx.c
+++ b/gcc/config/tilegx/tilegx.c
@@ -2897,6 +2897,7 @@ static struct tile_builtin_info tilegx_builtin_info[TILEGX_BUILTIN_max] = {
{ CODE_FOR_lshrdi3, NULL }, /* shru */
{ CODE_FOR_lshrsi3, NULL }, /* shrux */
{ CODE_FOR_insn_shufflebytes, NULL }, /* shufflebytes */
+ { CODE_FOR_insn_shufflebytes1, NULL }, /* shufflebytes1 */
{ CODE_FOR_insn_st, NULL }, /* st */
{ CODE_FOR_insn_st1, NULL }, /* st1 */
{ CODE_FOR_insn_st2, NULL }, /* st2 */
@@ -3225,6 +3226,7 @@ static const struct tilegx_builtin_def tilegx_builtins[] = {
{ "__insn_shrux", TILEGX_INSN_SHRUX, true, "iii" },
{ "__insn_shruxi", TILEGX_INSN_SHRUX, true, "iii" },
{ "__insn_shufflebytes", TILEGX_INSN_SHUFFLEBYTES, true, "llll" },
+ { "__insn_shufflebytes1", TILEGX_INSN_SHUFFLEBYTES1, true, "lll" },
{ "__insn_st", TILEGX_INSN_ST, false, "vpl" },
{ "__insn_st1", TILEGX_INSN_ST1, false, "vpl" },
{ "__insn_st2", TILEGX_INSN_ST2, false, "vpl" },
diff --git a/gcc/config/tilegx/tilegx.md b/gcc/config/tilegx/tilegx.md
index 8ec2687a599..5e11a889379 100644
--- a/gcc/config/tilegx/tilegx.md
+++ b/gcc/config/tilegx/tilegx.md
@@ -3959,6 +3959,15 @@
"shufflebytes\t%0, %r2, %r3"
[(set_attr "type" "X0")])
+(define_insn "insn_shufflebytes1"
+ [(set (match_operand:DI 0 "register_operand" "=r")
+ (unspec:DI [(match_operand:DI 1 "reg_or_0_operand" "rO")
+ (match_operand:DI 2 "reg_or_0_operand" "rO")]
+ UNSPEC_INSN_SHUFFLEBYTES))]
+ ""
+ "shufflebytes\t%0, %r1, %r2"
+ [(set_attr "type" "X0")])
+
;; stores
(define_expand "insn_st"