OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [config/] [rx/] [constraints.md] - Blame information for rev 867

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 709 jeremybenn
;; Constraint definitions for Renesas RX.
2
;; Copyright (C) 2008, 2009, 2010. 2011 Free Software Foundation, Inc.
3
;; Contributed by Red Hat.
4
;;
5
;; This file is part of GCC.
6
;;
7
;; GCC is free software; you can redistribute it and/or modify
8
;; it under the terms of the GNU General Public License as published by
9
;; the Free Software Foundation; either version 3, or (at your option)
10
;; any later version.
11
;;
12
;; GCC is distributed in the hope that it will be useful,
13
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
14
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15
;; GNU General Public 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
;; .
20
 
21
 
22
(define_constraint "Symbol"
23
  "@internal Constraint on the type of rtx allowed in call insns"
24
  (match_test "GET_CODE (op) == SYMBOL_REF")
25
)
26
 
27
 
28
(define_constraint "Int08"
29
  "@internal A signed or unsigned 8-bit immediate value"
30
  (and (match_code "const_int")
31
       (match_test "IN_RANGE (ival, (-1 << 8), (1 << 8) - 1)")
32
  )
33
)
34
 
35
(define_constraint "Sint08"
36
  "@internal A signed 8-bit immediate value"
37
  (and (match_code "const_int")
38
       (match_test "IN_RANGE (ival, (-1 << 7), (1 << 7) - 1)")
39
  )
40
)
41
 
42
(define_constraint "Sint16"
43
  "@internal A signed 16-bit immediate value"
44
  (and (match_code "const_int")
45
       (match_test "IN_RANGE (ival, (-1 << 15), (1 << 15) - 1)")
46
  )
47
)
48
 
49
(define_constraint "Sint24"
50
  "@internal A signed 24-bit immediate value"
51
  (and (match_code "const_int")
52
       (match_test "IN_RANGE (ival, (-1 << 23), (1 << 23) - 1)")
53
  )
54
)
55
 
56
;; This constraint is used by the SUBSI3 pattern because the
57
;; RX SUB instruction can only take a 4-bit unsigned integer
58
;; value.  Also used by the MVTIPL instruction.
59
(define_constraint "Uint04"
60
  "@internal An unsigned 4-bit immediate value"
61
  (and (match_code "const_int")
62
       (match_test "IN_RANGE (ival, 0, 15)")
63
  )
64
)
65
 
66
(define_constraint "NEGint4"
67
  "@internal An signed 4-bit negative immediate value"
68
  (and (match_code "const_int")
69
       (match_test "IN_RANGE (ival, -15, -1)")
70
  )
71
)
72
 
73
;; This is used in arithmetic and logic instructions for
74
;; a source operand that lies in memory and which satisfies
75
;; rx_restricted_memory_address().
76
 
77
(define_memory_constraint "Q"
78
  "A MEM which only uses REG or REG+INT addressing."
79
  (and (match_code "mem")
80
       (ior (match_code "reg" "0")
81
            (and (match_code "plus" "0")
82
                 (and (match_code "reg,subreg" "00")
83
                      (match_code "const_int" "01")
84
                 )
85
            )
86
       )
87
  )
88
)
89
 
90
(define_constraint "Rpid"
91
  "A MEM to a PID variable"
92
  (and (match_code "mem")
93
       (and (match_code "plus" "0")
94
            (and (match_code "reg,subreg" "00")
95
                 (match_code "unspec" "01")
96
            )
97
       )
98
  )
99
)
100
 
101
(define_constraint "Rpda"
102
  "An address to a PID variable"
103
  (and (match_code "plus" "")
104
       (and (match_code "reg,subreg" "0")
105
            (match_code "unspec" "1")
106
       )
107
  )
108
)

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.