Mercurial > hg > CbC > CbC_gcc
comparison gcc/config/mn10300/constraints.md @ 67:f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
author | nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 22 Mar 2011 17:18:12 +0900 |
parents | a06113de4d67 |
children | 04ced10e8804 |
comparison
equal
deleted
inserted
replaced
65:65488c3d617d | 67:f6334be47118 |
---|---|
21 "A data register.") | 21 "A data register.") |
22 | 22 |
23 (define_register_constraint "a" "ADDRESS_REGS" | 23 (define_register_constraint "a" "ADDRESS_REGS" |
24 "An address register.") | 24 "An address register.") |
25 | 25 |
26 ;; This can be used for QI/HImode memory operations, and most arithmetic. | |
27 ;; AM33 supports these on all registers, where MN103 needs DATA_REGS. | |
28 (define_register_constraint "D" "TARGET_AM33 ? GENERAL_REGS : DATA_REGS" | |
29 "A general register for AM33, and a data register otherwise.") | |
30 | |
31 ;; Similarly for ADDRESS_REGS vs GENERAL_REGS. | |
32 (define_register_constraint "A" "TARGET_AM33 ? GENERAL_REGS : ADDRESS_REGS" | |
33 "A general register for AM33, and an address register otherwise.") | |
34 | |
26 (define_register_constraint "y" "SP_REGS" | 35 (define_register_constraint "y" "SP_REGS" |
27 "An SP register (if available).") | 36 "An SP register (if available).") |
37 | |
38 (define_register_constraint "z" "MDR_REGS" | |
39 "The MDR register.") | |
28 | 40 |
29 (define_register_constraint "x" "TARGET_AM33 ? EXTENDED_REGS : NO_REGS" | 41 (define_register_constraint "x" "TARGET_AM33 ? EXTENDED_REGS : NO_REGS" |
30 "An extended register.") | 42 "An extended register.") |
31 | 43 |
32 (define_register_constraint "f" "TARGET_AM33_2 ? FP_REGS : NO_REGS" | 44 (define_register_constraint "f" "TARGET_AM33_2 ? FP_REGS : NO_REGS" |
33 "A floating point register.") | 45 "A floating point register.") |
34 | 46 |
35 (define_register_constraint "A" "TARGET_AM33_2 ? FP_ACC_REGS : NO_REGS" | 47 (define_register_constraint "c" "TARGET_AM33_2 ? FP_ACC_REGS : NO_REGS" |
36 "A floating point accumulator register.") | 48 "A floating point accumulator register.") |
37 | 49 |
38 (define_memory_constraint "Q" | 50 (define_memory_constraint "Q" |
39 "@internal" | 51 "@internal" |
40 (and (match_code "mem") | 52 (and (match_code "mem") |
41 (match_test "!CONSTANT_ADDRESS_P (XEXP (op, 0))"))) | 53 (match_test "!CONSTANT_ADDRESS_P (XEXP (op, 0))"))) |
42 | |
43 (define_memory_constraint "R" | |
44 "@internal" | |
45 (and (match_code "mem") | |
46 (match_test "mode == QImode") | |
47 (ior (match_test "CONSTANT_ADDRESS_P (XEXP (op, 0))") | |
48 (and (match_test "GET_CODE (XEXP (op, 0)) == REG") | |
49 (match_test "REG_OK_FOR_BIT_BASE_P (XEXP (op, 0))") | |
50 (match_test "XEXP (op, 0) != stack_pointer_rtx")) | |
51 (and (match_test "GET_CODE (XEXP (op, 0)) == PLUS") | |
52 (match_test "GET_CODE (XEXP (XEXP (op, 0), 0)) == REG") | |
53 (match_test "REG_OK_FOR_BIT_BASE_P (XEXP (XEXP (op, 0), 0))") | |
54 (match_test "XEXP (XEXP (op, 0), 0) != stack_pointer_rtx") | |
55 (match_test "GET_CODE (XEXP (XEXP (op, 0), 1)) == CONST_INT") | |
56 (match_test "INT_8_BITS (INTVAL (XEXP (XEXP (op, 0), 1)))"))))) | |
57 | |
58 (define_memory_constraint "T" | |
59 "@internal" | |
60 (and (match_code "mem") | |
61 (match_test "mode == QImode") | |
62 (and (match_test "GET_CODE (XEXP (op, 0)) == REG") | |
63 (match_test "REG_OK_FOR_BIT_BASE_P (XEXP (op, 0))") | |
64 (match_test "XEXP (op, 0) != stack_pointer_rtx")))) | |
65 | 54 |
66 (define_constraint "S" | 55 (define_constraint "S" |
67 "@internal" | 56 "@internal" |
68 (if_then_else (match_test "flag_pic") | 57 (if_then_else (match_test "flag_pic") |
69 (and (match_test "GET_CODE (op) == UNSPEC") | 58 (and (match_test "GET_CODE (op) == UNSPEC") |
103 "An integer of either 255 or 65535." | 92 "An integer of either 255 or 65535." |
104 (and (match_code "const_int") | 93 (and (match_code "const_int") |
105 (ior (match_test "ival == 255") | 94 (ior (match_test "ival == 255") |
106 (match_test "ival == 65535")))) | 95 (match_test "ival == 65535")))) |
107 | 96 |
97 (define_constraint "O" | |
98 "An integer between -8 and +7 inclusive." | |
99 (and (match_code "const_int") | |
100 (and (match_test "ival >= -8") | |
101 (match_test "ival <= 7")))) | |
102 | |
108 ;; Floating-point constraints | 103 ;; Floating-point constraints |
109 (define_constraint "G" | 104 (define_constraint "G" |
110 "Floating-point zero." | 105 "Floating-point zero." |
111 (and (match_code "const_double") | 106 (and (match_code "const_double") |
112 (match_test "op == CONST0_RTX (mode)"))) | 107 (match_test "op == CONST0_RTX (mode)"))) |