1;; Constraint definitions for Blackfin 2;; Copyright (C) 2008-2021 Free Software Foundation, Inc. 3;; Contributed by Analog Devices 4 5;; This file is part of GCC. 6 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. 11 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. 16 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/>. 20 21(define_register_constraint "a" "PREGS" 22 "A Pn register.") 23 24(define_register_constraint "d" "DREGS" 25 "A Rn register.") 26 27(define_register_constraint "z" "PREGS_CLOBBERED" 28 "A call clobbered Pn register.") 29 30(define_register_constraint "D" "EVEN_DREGS" 31 "An even-numbered Rn register.") 32 33(define_register_constraint "W" "ODD_DREGS" 34 "An odd-numbered Rn register.") 35 36(define_register_constraint "e" "AREGS" 37 "An accumulator register.") 38 39(define_register_constraint "A" "EVEN_AREGS" 40 "An even-numbered accumulator; A0.") 41 42(define_register_constraint "B" "ODD_AREGS" 43 "An odd-numbered accumulator; A1.") 44 45(define_register_constraint "b" "IREGS" 46 "An I register.") 47 48(define_register_constraint "v" "BREGS" 49 "A B register.") 50 51(define_register_constraint "f" "MREGS" 52 "An M register.") 53 54(define_register_constraint "c" "CIRCREGS" 55 "A register used for circular buffering, i.e. I, B, or L registers.") 56 57(define_register_constraint "C" "CCREGS" 58 "The CC register.") 59 60(define_register_constraint "t" "LT_REGS" 61 "LT0 or LT1.") 62 63(define_register_constraint "u" "LB_REGS" 64 "LB0 or LB1.") 65 66(define_register_constraint "k" "LC_REGS" 67 "LC0 or LC1.") 68 69(define_register_constraint "x" "MOST_REGS" 70 "Any R, P, B, M, I or L register.") 71 72(define_register_constraint "y" "PROLOGUE_REGS" 73 "Additional registers typically used only in prologues and epilogues: 74 RETS, RETN, RETI, RETX, RETE, ASTAT, SEQSTAT and USP.") 75 76(define_register_constraint "w" "NON_A_CC_REGS" 77 "Any register except accumulators or CC.") 78 79(define_register_constraint "Z" "FDPIC_REGS" 80 "@internal The FD-PIC GOT pointer; P3.") 81 82(define_register_constraint "Y" "FDPIC_FPTR_REGS" 83 "@internal The FD-PIC function pointer register; P1.") 84 85(define_register_constraint "q0" "D0REGS" 86 "The register R0.") 87 88(define_register_constraint "q1" "D1REGS" 89 "The register R1.") 90 91(define_register_constraint "q2" "D2REGS" 92 "The register R2.") 93 94(define_register_constraint "q3" "D3REGS" 95 "The register R3.") 96 97(define_register_constraint "q4" "D4REGS" 98 "The register R4.") 99 100(define_register_constraint "q5" "D5REGS" 101 "The register R5.") 102 103(define_register_constraint "q6" "D6REGS" 104 "The register R6.") 105 106(define_register_constraint "q7" "D7REGS" 107 "The register R7.") 108 109(define_register_constraint "qA" "P0REGS" 110 "The register P0.") 111 112;; Constant constraints. 113 114(define_constraint "J" 115 "A constant value of the form 2**N, where N 5-bit wide." 116 (and (match_code "const_int") 117 (match_test "log2constp (ival)"))) 118 119(define_constraint "Ks3" 120 "A signed 3 bit immediate." 121 (and (match_code "const_int") 122 (match_test "ival >= -4 && ival <= 3"))) 123 124(define_constraint "Ku3" 125 "An unsigned 3 bit immediate." 126 (and (match_code "const_int") 127 (match_test "ival >= 0 && ival <= 7"))) 128 129(define_constraint "Ks4" 130 "A signed 4 bit immediate." 131 (and (match_code "const_int") 132 (match_test "ival >= -8 && ival <= 7"))) 133 134(define_constraint "Ku4" 135 "An unsigned 4 bit immediate." 136 (and (match_code "const_int") 137 (match_test "ival >= 0 && ival <= 15"))) 138 139(define_constraint "Ks5" 140 "A signed 5 bit immediate." 141 (and (match_code "const_int") 142 (match_test "ival >= -16 && ival <= 15"))) 143 144(define_constraint "Ku5" 145 "An unsigned 5 bit immediate." 146 (and (match_code "const_int") 147 (match_test "ival >= 0 && ival <= 31"))) 148 149(define_constraint "Ks7" 150 "A signed 7 bit immediate." 151 (and (match_code "const_int") 152 (match_test "ival >= -64 && ival <= 63"))) 153 154(define_constraint "KN7" 155 "A constant that when negated is a signed 7 bit immediate." 156 (and (match_code "const_int") 157 (match_test "ival >= -63 && ival <= 64"))) 158 159(define_constraint "Ksh" 160 "A signed 16 bit immediate." 161 (and (match_code "const_int") 162 (match_test "ival >= -32768 && ival <= 32767"))) 163 164(define_constraint "Kuh" 165 "An unsigned 16 bit immediate." 166 (and (match_code "const_int") 167 (match_test "ival >= 0 && ival <= 65535"))) 168 169(define_constraint "L" 170 "A constant value of the form ~(2**N)." 171 (and (match_code "const_int") 172 (match_test "log2constp (~ival)"))) 173 174(define_constraint "M1" 175 "An integer with the value 255." 176 (and (match_code "const_int") 177 (match_test "ival == 255"))) 178 179(define_constraint "M2" 180 "An integer with the value 65535." 181 (and (match_code "const_int") 182 (match_test "ival == 65535"))) 183 184(define_constraint "P0" 185 "An integer with the value 0." 186 (and (match_code "const_int") 187 (match_test "ival == 0"))) 188 189(define_constraint "P1" 190 "An integer with the value 1." 191 (and (match_code "const_int") 192 (match_test "ival == 1"))) 193 194(define_constraint "P2" 195 "An integer with the value 2." 196 (and (match_code "const_int") 197 (match_test "ival == 2"))) 198 199(define_constraint "P3" 200 "An integer with the value 3." 201 (and (match_code "const_int") 202 (match_test "ival == 3"))) 203 204(define_constraint "P4" 205 "An integer with the value 4." 206 (and (match_code "const_int") 207 (match_test "ival == 4"))) 208 209(define_constraint "PA" 210 "An integer constant describing any macflag except variants involving M." 211 (and (match_code "const_int") 212 (match_test "ival != MACFLAG_M && ival != MACFLAG_IS_M"))) 213 214(define_constraint "PB" 215 "An integer constant describing any macflag involving M." 216 (and (match_code "const_int") 217 (match_test "ival == MACFLAG_M || ival == MACFLAG_IS_M"))) 218 219 220;; Extra constraints 221 222(define_constraint "Q" 223 "A SYMBOL_REF." 224 (match_code "symbol_ref")) 225 226