xref: /openbsd-src/gnu/gcc/gcc/config/m88k/constraints.md (revision 1f5e8f306e060fa0973ecf2246bc083d30a1ca13)
1;; Register constraints
2
3(define_register_constraint "x" "XRF_REGS"
4  "A register form the 88110 Extended Register File.")
5
6;; Integer constraints
7
8(define_constraint "I"
9  "A non-negative 16-bit value."
10  (and (match_code "const_int")
11       (match_test "SMALL_INTVAL (ival)")))
12
13(define_constraint "J"
14  "A non-positive 16-bit value."
15  (and (match_code "const_int")
16       (match_test "SMALL_INTVAL (-ival)")))
17
18(define_constraint "K"
19  "A non-negative value < 32."
20  (and (match_code "const_int")
21       (match_test "(unsigned HOST_WIDE_INT)ival < 32")))
22
23(define_constraint "L"
24  "A constant with only the upper 16-bits set."
25  (and (match_code "const_int")
26       (match_test "(ival & 0xffff) == 0")))
27
28(define_constraint "M"
29  "A constant value that can be formed with `set'."
30  (and (match_code "const_int")
31       (match_test "integer_ok_for_set(ival)")))
32
33(define_constraint "N"
34  "A negative value."
35  (and (match_code "const_int")
36       (match_test "ival < 0")))
37
38(define_constraint "O"
39  "Integer zero."
40  (and (match_code "const_int")
41       (match_test "ival == 0")))
42
43(define_constraint "P"
44  "A positive value."
45  (and (match_code "const_int")
46       (match_test "ival >= 0")))
47
48;; Floating-point constraints
49
50(define_constraint "G"
51  "Floating-point zero."
52  (and (match_code "const_double")
53       (match_test "hval == 0 && lval == 0")))
54
55;; General constraints
56
57(define_constraint "Q"
58  "An address in a call context."
59  (match_operand 0 "symbolic_operand"))
60