diff options
author | Stafford Horne <shorne@gmail.com> | 2018-11-09 12:16:14 +0000 |
---|---|---|
committer | Stafford Horne <shorne@gcc.gnu.org> | 2018-11-09 12:16:14 +0000 |
commit | 3965b35f341cc99a10876518f707740a9e912a01 (patch) | |
tree | 2233000c45797cf07e84d8e3ed4b4f37aa16ace3 /gcc/config/or1k/constraints.md | |
parent | 1d6ff15057c18d72b231f60e526273b41e362283 (diff) | |
download | gcc-3965b35f341cc99a10876518f707740a9e912a01.zip gcc-3965b35f341cc99a10876518f707740a9e912a01.tar.gz gcc-3965b35f341cc99a10876518f707740a9e912a01.tar.bz2 |
or1k: gcc: initial support for openrisc
2018-11-09 Stafford Horne <shorne@gmail.com>
Richard Henderson <rth@twiddle.net>
Joel Sherrill <joel@rtems.org>
* common/config/or1k/or1k-common.c: New file.
* config/or1k/*: New.
* config.gcc (or1k*-*-*): New.
* configure.ac (or1k*-*-*): New test for openrisc tls.
* configure: Regenerated.
* doc/install.texi: Document OpenRISC triplets.
* doc/invoke.texi: Document OpenRISC arguments.
* doc/md.texi: Document OpenRISC.
Co-Authored-By: Joel Sherrill <joel@rtems.org>
Co-Authored-By: Richard Henderson <rth@twiddle.net>
From-SVN: r265963
Diffstat (limited to 'gcc/config/or1k/constraints.md')
-rw-r--r-- | gcc/config/or1k/constraints.md | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/gcc/config/or1k/constraints.md b/gcc/config/or1k/constraints.md new file mode 100644 index 0000000..2e7797b --- /dev/null +++ b/gcc/config/or1k/constraints.md @@ -0,0 +1,55 @@ +;; Constraint definitions for OpenRISC +;; Copyright (C) 2018 Free Software Foundation, Inc. +;; Contributed by Stafford Horne + +;; This file is part of GCC. + +;; GCC is free software; you can redistribute it and/or modify it +;; under the terms of the GNU General Public License as published +;; by the Free Software Foundation; either version 3, or (at your +;; option) any later version. + +;; GCC is distributed in the hope that it will be useful, but WITHOUT +;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +;; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +;; License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GCC; see the file COPYING3. If not see +;; <http://www.gnu.org/licenses/>. + +;; ------------------------------------------------------------------------- +;; Constraints +;; ------------------------------------------------------------------------- + +; We use: +; c - sibcall registers +; I - constant signed 16-bit +; K - constant unsigned 16-bit +; M - constant signed 16-bit shifted left 16-bits (l.movhi) +; O - constant zero + +(define_register_constraint "c" "SIBCALL_REGS" + "Registers which can hold a sibling call address") + +;; Immediates +(define_constraint "I" + "A signed 16-bit immediate in the range -32768 to 32767." + (and (match_code "const_int") + (match_test "IN_RANGE (ival, -32768, 32767)"))) + +(define_constraint "K" + "An unsigned 16-bit immediate in the range 0 to 0xffff." + (and (match_code "const_int") + (match_test "IN_RANGE (ival, 0, 65535)"))) + +(define_constraint "M" + "A shifted signed 16-bit constant suitable for l.movhi." + (and (match_code "const_int") + (match_test "(ival & 0xffff) == 0 + && (ival >> 31 == -1 || ival >> 31 == 0)"))) + +(define_constraint "O" + "The constant zero" + (and (match_code "const_int") + (match_test "ival == 0"))) |