xref: /netbsd-src/external/gpl3/gcc.old/dist/gcc/config/visium/constraints.md (revision 8feb0f0b7eaff0608f8350bbfa3098827b4bb91b)
1;; Constraint definitions for Visium.
2;; Copyright (C) 2006-2020 Free Software Foundation, Inc.
3;;
4;; This file is part of GCC.
5;;
6;; GCC is free software; you can redistribute it and/or modify
7;; it under the terms of the GNU General Public License as published by
8;; the Free Software Foundation; either version 3, or (at your option)
9;; any later version.
10;;
11;; GCC is distributed in the hope that it will be useful,
12;; but WITHOUT ANY WARRANTY; without even the implied warranty of
13;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14;; GNU General Public License for more details.
15;;
16;; You should have received a copy of the GNU General Public License
17;; along with GCC; see the file COPYING3.  If not see
18;; <http://www.gnu.org/licenses/>.
19
20;; Register constraints
21
22(define_register_constraint "b" "MDB"
23  "EAM register mdb")
24
25(define_register_constraint "c" "MDC"
26  "EAM register mdc")
27
28(define_register_constraint "f" "TARGET_FPU ? FP_REGS : NO_REGS"
29  "Floating point register")
30
31(define_register_constraint "k" "SIBCALL_REGS"
32  "Register for sibcall optimization")
33
34(define_register_constraint "l" "LOW_REGS"
35  "General register, but not r29, r30 and r31")
36
37(define_register_constraint "t" "R1"
38  "Register r1")
39
40(define_register_constraint "u" "R2"
41  "Register r2")
42
43(define_register_constraint "v" "R3"
44  "Register r3")
45
46;; Immediate integer operand constraints
47
48(define_constraint "J"
49  "Integer constant in the range 0 .. 65535 (16-bit immediate)"
50  (and (match_code "const_int")
51       (match_test "IN_RANGE (ival, 0, 65535)")))
52
53(define_constraint "K"
54  "Integer constant in the range 1 .. 31 (5-bit immediate)"
55  (and (match_code "const_int")
56       (match_test "IN_RANGE (ival, 1, 31)")))
57
58(define_constraint "L"
59  "Integer constant in the range -65535 .. -1 (16-bit negative immediate)"
60  (and (match_code "const_int")
61       (match_test "IN_RANGE (ival, -65535, -1)")))
62
63(define_constraint "M"
64  "Integer constant -1"
65  (and (match_code "const_int")
66       (match_test "ival == -1")))
67
68(define_constraint "O"
69  "Integer constant 0"
70  (and (match_code "const_int")
71       (match_test "ival == 0")))
72
73(define_constraint "P"
74  "Integer constant 32"
75  (and (match_code "const_int")
76       (match_test "ival == 32")))
77
78;; Immediate FP operand constraints
79
80(define_constraint "G"
81  "Floating-point constant 0.0"
82  (and (match_code "const_double")
83       (match_test "op == CONST0_RTX (mode)")))
84