1 ;; Predicates of machine description for CR16.
2 ;; Copyright (C) 2012-2013 Free Software Foundation, Inc.
3 ;; Contributed by KPIT Cummins Infosystems Limited.
5 ;; This file is part of GCC.
7 ;; GCC is free software; you can redistribute it and/or modify it
8 ;; under the terms of the GNU General Public License as published
9 ;; by the Free Software Foundation; either version 3, or (at your
10 ;; option) any later version.
12 ;; GCC is distributed in the hope that it will be useful, but WITHOUT
13 ;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14 ;; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
15 ;; License for more details.
17 ;; You should have received a copy of the GNU General Public License
18 ;; along with GCC; see the file COPYING3. If not see
19 ;; <http://www.gnu.org/licenses/>.
22 ;; Register constraints
23 (define_register_constraint "b" "NOSP_REGS"
26 (define_register_constraint "c" "SHORT_REGS"
29 (define_register_constraint "d" "LONG_REGS"
32 ;; Integer constraints.
33 (define_constraint "I"
34 "A signed 4-bit immediate."
35 (and (match_code "const_int")
36 (match_test "SIGNED_INT_FITS_N_BITS (ival, 4)")))
38 (define_constraint "J"
39 "A signed 5-bit immediate."
40 (and (match_code "const_int")
41 (match_test "SIGNED_INT_FITS_N_BITS (ival, 5)")))
43 (define_constraint "K"
44 "A signed 6-bit immediate."
45 (and (match_code "const_int")
46 (match_test "SIGNED_INT_FITS_N_BITS (ival, 6)")))
48 (define_constraint "L"
49 "A unsigned 4-bit immediate."
50 (and (match_code "const_int")
51 (match_test "UNSIGNED_INT_FITS_N_BITS (ival, 4)")))
53 (define_constraint "M"
54 "A unsigned and customized 4-bit immediate."
55 (and (match_code "const_int")
56 (match_test "(IN_RANGE_P (ival, 0, 15) && ((ival != 9) && (ival != 11)))")))
58 (define_constraint "N"
59 "A signed 16-bit immediate."
60 (and (match_code "const_int")
61 (match_test "IN_RANGE_P (ival, -32768, 32767)")))
63 (define_constraint "O"
64 "A unsigned 20-bit immediate."
65 (and (match_code "const_int")
66 (match_test "IN_RANGE_P (ival, 0, 1048575)")))
68 (define_constraint "Q"
69 "A shift QI immediate."
70 (and (match_code "const_int")
71 (match_test "IN_RANGE_P (ival, 0, 7)")))
73 (define_constraint "R"
74 "A shift HI immediate."
75 (and (match_code "const_int")
76 (match_test "IN_RANGE_P (ival, 0, 15)")))
78 (define_constraint "S"
79 "A shift SI immediate."
80 (and (match_code "const_int")
81 (match_test "IN_RANGE_P (ival, 0, 31)")))