Mercurial > hg > CbC > CbC_gcc
comparison gcc/config/pa/constraints.md @ 111:04ced10e8804
gcc 7
author | kono |
---|---|
date | Fri, 27 Oct 2017 22:46:09 +0900 |
parents | 77e2b8dfacca |
children | 84e7813d76e9 |
comparison
equal
deleted
inserted
replaced
68:561a7518be6b | 111:04ced10e8804 |
---|---|
1 ;; Constraint definitions for pa | 1 ;; Constraint definitions for pa |
2 ;; Copyright (C) 2007 Free Software Foundation, Inc. | 2 ;; Copyright (C) 2007-2017 Free Software Foundation, Inc. |
3 | 3 |
4 ;; This file is part of GCC. | 4 ;; This file is part of GCC. |
5 | 5 |
6 ;; GCC is free software; you can redistribute it and/or modify it | 6 ;; GCC is free software; you can redistribute it and/or modify it |
7 ;; under the terms of the GNU General Public License as published | 7 ;; under the terms of the GNU General Public License as published |
16 ;; You should have received a copy of the GNU General Public License | 16 ;; You should have received a copy of the GNU General Public License |
17 ;; along with GCC; see the file COPYING3. If not see | 17 ;; along with GCC; see the file COPYING3. If not see |
18 ;; <http://www.gnu.org/licenses/>. | 18 ;; <http://www.gnu.org/licenses/>. |
19 | 19 |
20 ;;; Unused letters: | 20 ;;; Unused letters: |
21 ;;; ABCDEF H V Y | 21 ;;; ABCD H Y |
22 ;;; bcde ghijklmnop stuvw z | 22 ;;; bcde h jkl tuvw z |
23 | 23 |
24 ;; Register constraints. | 24 ;; Register constraints. |
25 (define_register_constraint "a" "R1_REGS" | 25 (define_register_constraint "a" "R1_REGS" |
26 "General register 1.") | 26 "General register 1.") |
27 | 27 |
53 (match_test "VAL_14_BITS_P (ival)"))) | 53 (match_test "VAL_14_BITS_P (ival)"))) |
54 | 54 |
55 (define_constraint "K" | 55 (define_constraint "K" |
56 "Integer constant that can be deposited with a zdepi instruction." | 56 "Integer constant that can be deposited with a zdepi instruction." |
57 (and (match_code "const_int") | 57 (and (match_code "const_int") |
58 (match_test "zdepi_cint_p (ival)"))) | 58 (match_test "pa_zdepi_cint_p (ival)"))) |
59 | 59 |
60 (define_constraint "L" | 60 (define_constraint "L" |
61 "Signed 5-bit integer constant." | 61 "Signed 5-bit integer constant." |
62 (and (match_code "const_int") | 62 (and (match_code "const_int") |
63 (match_test "VAL_5_BITS_P (ival)"))) | 63 (match_test "VAL_5_BITS_P (ival)"))) |
68 (match_test "ival == 0"))) | 68 (match_test "ival == 0"))) |
69 | 69 |
70 (define_constraint "N" | 70 (define_constraint "N" |
71 "Integer constant that can be loaded with a ldil instruction." | 71 "Integer constant that can be loaded with a ldil instruction." |
72 (and (match_code "const_int") | 72 (and (match_code "const_int") |
73 (match_test "ldil_cint_p (ival)"))) | 73 (match_test "pa_ldil_cint_p (ival)"))) |
74 | 74 |
75 (define_constraint "O" | 75 (define_constraint "O" |
76 "Integer constant such that ival+1 is a power of 2." | 76 "Integer constant such that ival+1 is a power of 2." |
77 (and (match_code "const_int") | 77 (and (match_code "const_int") |
78 (match_test "(ival & (ival + 1)) == 0"))) | 78 (match_test "(ival & (ival + 1)) == 0"))) |
79 | 79 |
80 (define_constraint "P" | 80 (define_constraint "P" |
81 "Integer constant that can be used as an and mask in depi and | 81 "Integer constant that can be used as an and mask in depi and |
82 extru instructions." | 82 extru instructions." |
83 (and (match_code "const_int") | 83 (and (match_code "const_int") |
84 (match_test "and_mask_p (ival)"))) | 84 (match_test "pa_and_mask_p (ival)"))) |
85 | 85 |
86 (define_constraint "S" | 86 (define_constraint "S" |
87 "Integer constant 31." | 87 "Integer constant 31." |
88 (and (match_code "const_int") | 88 (and (match_code "const_int") |
89 (match_test "ival == 31"))) | 89 (match_test "ival == 31"))) |
122 (and (match_code "mem") | 122 (and (match_code "mem") |
123 (match_test "IS_INDEX_ADDR_P (XEXP (op, 0))"))) | 123 (match_test "IS_INDEX_ADDR_P (XEXP (op, 0))"))) |
124 | 124 |
125 (define_constraint "T" | 125 (define_constraint "T" |
126 "A memory operand for floating-point loads and stores." | 126 "A memory operand for floating-point loads and stores." |
127 (and (match_code "mem") | 127 (match_test "floating_point_store_memory_operand (op, mode)")) |
128 (match_test "!IS_LO_SUM_DLT_ADDR_P (XEXP (op, 0)) | |
129 && !IS_INDEX_ADDR_P (XEXP (op, 0)) | |
130 && memory_address_p ((GET_MODE_SIZE (mode) == 4 | |
131 ? SFmode : DFmode), | |
132 XEXP (op, 0))"))) | |
133 | 128 |
134 ;; We could allow short displacements but TARGET_LEGITIMATE_ADDRESS_P | 129 ;; We could allow short displacements but TARGET_LEGITIMATE_ADDRESS_P |
135 ;; can't tell when a long displacement is valid. | 130 ;; can't tell when a long displacement is valid. |
136 (define_constraint "W" | 131 (define_constraint "W" |
137 "A register indirect memory operand." | 132 "A register indirect memory operand." |