OpenCores
URL https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk

Subversion Repositories openrisc_2011-10-31

[/] [openrisc/] [tags/] [gnu-src/] [gcc-4.5.1/] [gcc-4.5.1-or32-1.0rc2/] [gcc/] [config/] [s390/] [constraints.md] - Diff between revs 282 and 384

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 282 Rev 384
;; Constraints definitions belonging to the gcc backend for IBM S/390.
;; Constraints definitions belonging to the gcc backend for IBM S/390.
;; Copyright (C) 2006, 2007, 2008 Free Software Foundation, Inc.
;; Copyright (C) 2006, 2007, 2008 Free Software Foundation, Inc.
;; Written by Wolfgang Gellerich, using code and information found in
;; Written by Wolfgang Gellerich, using code and information found in
;; files s390.md, s390.h, and s390.c.
;; files s390.md, s390.h, and s390.c.
;;
;;
;; This file is part of GCC.
;; This file is part of GCC.
;;
;;
;; GCC is free software; you can redistribute it and/or modify it under
;; GCC is free software; you can redistribute it and/or modify it under
;; the terms of the GNU General Public License as published by the Free
;; the terms of the GNU General Public License as published by the Free
;; Software Foundation; either version 3, or (at your option) any later
;; Software Foundation; either version 3, or (at your option) any later
;; version.
;; version.
;;
;;
;; GCC is distributed in the hope that it will be useful, but WITHOUT ANY
;; GCC is distributed in the hope that it will be useful, but WITHOUT ANY
;; WARRANTY; without even the implied warranty of MERCHANTABILITY or
;; WARRANTY; without even the implied warranty of MERCHANTABILITY or
;; FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
;; FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
;; for more details.
;; for more details.
;;
;;
;; You should have received a copy of the GNU General Public License
;; You should have received a copy of the GNU General Public License
;; along with GCC; see the file COPYING3.  If not see
;; along with GCC; see the file COPYING3.  If not see
;; .
;; .
;;
;;
;; Special constraints for s/390 machine description:
;; Special constraints for s/390 machine description:
;;
;;
;;    a -- Any address register from 1 to 15.
;;    a -- Any address register from 1 to 15.
;;    b -- Memory operand whose address is a symbol reference or a symbol
;;    b -- Memory operand whose address is a symbol reference or a symbol
;;         reference + constant which can be proven to be naturally aligned.
;;         reference + constant which can be proven to be naturally aligned.
;;    c -- Condition code register 33.
;;    c -- Condition code register 33.
;;    d -- Any register from 0 to 15.
;;    d -- Any register from 0 to 15.
;;    f -- Floating point registers.
;;    f -- Floating point registers.
;;    t -- Access registers 36 and 37.
;;    t -- Access registers 36 and 37.
;;    C -- A signed 8-bit constant (-128..127)
;;    C -- A signed 8-bit constant (-128..127)
;;    D -- An unsigned 16-bit constant (0..65535)
;;    D -- An unsigned 16-bit constant (0..65535)
;;    G -- Const double zero operand
;;    G -- Const double zero operand
;;    I -- An 8-bit constant (0..255).
;;    I -- An 8-bit constant (0..255).
;;    J -- A 12-bit constant (0..4095).
;;    J -- A 12-bit constant (0..4095).
;;    K -- A 16-bit constant (-32768..32767).
;;    K -- A 16-bit constant (-32768..32767).
;;    L -- Value appropriate as displacement.
;;    L -- Value appropriate as displacement.
;;         (0..4095) for short displacement
;;         (0..4095) for short displacement
;;         (-524288..524287) for long displacement
;;         (-524288..524287) for long displacement
;;    M -- Constant integer with a value of 0x7fffffff.
;;    M -- Constant integer with a value of 0x7fffffff.
;;    N -- Multiple letter constraint followed by 4 parameter letters.
;;    N -- Multiple letter constraint followed by 4 parameter letters.
;;         0..9,x:  number of the part counting from most to least significant
;;         0..9,x:  number of the part counting from most to least significant
;;         H,Q:     mode of the part
;;         H,Q:     mode of the part
;;         D,S,H:   mode of the containing operand
;;         D,S,H:   mode of the containing operand
;;         0,F:     value of the other parts (F - all bits set)
;;         0,F:     value of the other parts (F - all bits set)
;;
;;
;;         The constraint matches if the specified part of a constant
;;         The constraint matches if the specified part of a constant
;;         has a value different from its other parts.  If the letter x
;;         has a value different from its other parts.  If the letter x
;;         is specified instead of a part number, the constraint matches
;;         is specified instead of a part number, the constraint matches
;;         if there is any single part with non-default value.
;;         if there is any single part with non-default value.
;;    O -- Multiple letter constraint followed by 1 parameter.
;;    O -- Multiple letter constraint followed by 1 parameter.
;;         s:  Signed extended immediate value (-2G .. 2G-1).
;;         s:  Signed extended immediate value (-2G .. 2G-1).
;;         p:  Positive extended immediate value (0 .. 4G-1).
;;         p:  Positive extended immediate value (0 .. 4G-1).
;;         n:  Negative extended immediate value (-4G+1 .. -1).
;;         n:  Negative extended immediate value (-4G+1 .. -1).
;;         These constraints do not accept any operand if the machine does
;;         These constraints do not accept any operand if the machine does
;;         not provide the extended-immediate facility.
;;         not provide the extended-immediate facility.
;;    P -- Any integer constant that can be loaded without literal pool.
;;    P -- Any integer constant that can be loaded without literal pool.
;;    Q -- Memory reference without index register and with short displacement.
;;    Q -- Memory reference without index register and with short displacement.
;;    R -- Memory reference with index register and short displacement.
;;    R -- Memory reference with index register and short displacement.
;;    S -- Memory reference without index register but with long displacement.
;;    S -- Memory reference without index register but with long displacement.
;;    T -- Memory reference with index register and long displacement.
;;    T -- Memory reference with index register and long displacement.
;;    A -- Multiple letter constraint followed by Q, R, S, or T:
;;    A -- Multiple letter constraint followed by Q, R, S, or T:
;;         Offsettable memory reference of type specified by second letter.
;;         Offsettable memory reference of type specified by second letter.
;;    B -- Multiple letter constraint followed by Q, R, S, or T:
;;    B -- Multiple letter constraint followed by Q, R, S, or T:
;;         Memory reference of the type specified by second letter that
;;         Memory reference of the type specified by second letter that
;;         does *not* refer to a literal pool entry.
;;         does *not* refer to a literal pool entry.
;;    U -- Pointer with short displacement. (deprecated - use ZQZR)
;;    U -- Pointer with short displacement. (deprecated - use ZQZR)
;;    W -- Pointer with long displacement. (deprecated - use ZSZT)
;;    W -- Pointer with long displacement. (deprecated - use ZSZT)
;;    Y -- Shift count operand.
;;    Y -- Shift count operand.
;;    ZQ -- Pointer without index register and with short displacement.
;;    ZQ -- Pointer without index register and with short displacement.
;;    ZR -- Pointer with index register and short displacement.
;;    ZR -- Pointer with index register and short displacement.
;;    ZS -- Pointer without index register but with long displacement.
;;    ZS -- Pointer without index register but with long displacement.
;;    ZT -- Pointer with index register and long displacement.
;;    ZT -- Pointer with index register and long displacement.
;;
;;
;;
;;
;;
;;
;;  Register constraints.
;;  Register constraints.
;;
;;
(define_register_constraint "a"
(define_register_constraint "a"
  "ADDR_REGS"
  "ADDR_REGS"
  "Any address register from 1 to 15.")
  "Any address register from 1 to 15.")
(define_register_constraint "c"
(define_register_constraint "c"
  "CC_REGS"
  "CC_REGS"
  "Condition code register 33")
  "Condition code register 33")
(define_register_constraint "d"
(define_register_constraint "d"
  "GENERAL_REGS"
  "GENERAL_REGS"
  "Any register from 0 to 15")
  "Any register from 0 to 15")
(define_register_constraint "f"
(define_register_constraint "f"
  "FP_REGS"
  "FP_REGS"
  "Floating point registers")
  "Floating point registers")
(define_register_constraint "t"
(define_register_constraint "t"
  "ACCESS_REGS"
  "ACCESS_REGS"
  "@internal
  "@internal
   Access registers 36 and 37")
   Access registers 36 and 37")
;;
;;
;;  General constraints for constants.
;;  General constraints for constants.
;;
;;
(define_constraint "C"
(define_constraint "C"
  "@internal
  "@internal
   An 8-bit signed immediate constant (-128..127)"
   An 8-bit signed immediate constant (-128..127)"
  (and (match_code "const_int")
  (and (match_code "const_int")
       (match_test "ival >= -128 && ival <= 127")))
       (match_test "ival >= -128 && ival <= 127")))
(define_constraint "D"
(define_constraint "D"
  "An unsigned 16-bit constant (0..65535)"
  "An unsigned 16-bit constant (0..65535)"
  (and (match_code "const_int")
  (and (match_code "const_int")
       (match_test "ival >= 0 && ival <= 65535")))
       (match_test "ival >= 0 && ival <= 65535")))
(define_constraint "G"
(define_constraint "G"
  "@internal
  "@internal
   Const double zero operand"
   Const double zero operand"
   (and (match_code "const_double")
   (and (match_code "const_double")
        (match_test "s390_float_const_zero_p (op)")))
        (match_test "s390_float_const_zero_p (op)")))
(define_constraint "I"
(define_constraint "I"
  "An 8-bit constant (0..255)"
  "An 8-bit constant (0..255)"
  (and (match_code "const_int")
  (and (match_code "const_int")
       (match_test "(unsigned HOST_WIDE_INT) ival <= 255")))
       (match_test "(unsigned HOST_WIDE_INT) ival <= 255")))
(define_constraint "J"
(define_constraint "J"
  "A 12-bit constant (0..4095)"
  "A 12-bit constant (0..4095)"
  (and (match_code "const_int")
  (and (match_code "const_int")
       (match_test "(unsigned HOST_WIDE_INT) ival <= 4095")))
       (match_test "(unsigned HOST_WIDE_INT) ival <= 4095")))
(define_constraint "K"
(define_constraint "K"
  "A 16-bit constant (-32768..32767)"
  "A 16-bit constant (-32768..32767)"
  (and (match_code "const_int")
  (and (match_code "const_int")
       (match_test "ival >= -32768 && ival <= 32767")))
       (match_test "ival >= -32768 && ival <= 32767")))
(define_constraint "L"
(define_constraint "L"
  "Value appropriate as displacement.
  "Value appropriate as displacement.
      (0..4095) for short displacement
      (0..4095) for short displacement
      (-524288..524287) for long displacement"
      (-524288..524287) for long displacement"
  (and (match_code "const_int")
  (and (match_code "const_int")
       (match_test "TARGET_LONG_DISPLACEMENT ?
       (match_test "TARGET_LONG_DISPLACEMENT ?
              (ival >= -524288 && ival <= 524287)
              (ival >= -524288 && ival <= 524287)
            : (ival >= 0 && ival <= 4095)")))
            : (ival >= 0 && ival <= 4095)")))
(define_constraint "M"
(define_constraint "M"
  "Constant integer with a value of 0x7fffffff"
  "Constant integer with a value of 0x7fffffff"
  (and (match_code "const_int")
  (and (match_code "const_int")
       (match_test "ival == 2147483647")))
       (match_test "ival == 2147483647")))
(define_constraint "P"
(define_constraint "P"
  "@internal
  "@internal
   Any integer constant that can be loaded without literal pool"
   Any integer constant that can be loaded without literal pool"
   (and (match_code "const_int")
   (and (match_code "const_int")
        (match_test "legitimate_reload_constant_p (GEN_INT (ival))")))
        (match_test "legitimate_reload_constant_p (GEN_INT (ival))")))
(define_address_constraint "Y"
(define_address_constraint "Y"
  "Shift count operand"
  "Shift count operand"
;; Simply check for the basic form of a shift count.  Reload will
;; Simply check for the basic form of a shift count.  Reload will
;; take care of making sure we have a proper base register.
;; take care of making sure we have a proper base register.
  (match_test "s390_decompose_shift_count (op, NULL, NULL)"  ))
  (match_test "s390_decompose_shift_count (op, NULL, NULL)"  ))
;;    N -- Multiple letter constraint followed by 4 parameter letters.
;;    N -- Multiple letter constraint followed by 4 parameter letters.
;;         0..9,x:  number of the part counting from most to least significant
;;         0..9,x:  number of the part counting from most to least significant
;;         H,Q:     mode of the part
;;         H,Q:     mode of the part
;;         D,S,H:   mode of the containing operand
;;         D,S,H:   mode of the containing operand
;;         0,F:     value of the other parts (F = all bits set)
;;         0,F:     value of the other parts (F = all bits set)
;;
;;
;;         The constraint matches if the specified part of a constant
;;         The constraint matches if the specified part of a constant
;;         has a value different from its other parts.  If the letter x
;;         has a value different from its other parts.  If the letter x
;;         is specified instead of a part number, the constraint matches
;;         is specified instead of a part number, the constraint matches
;;         if there is any single part with non-default value.
;;         if there is any single part with non-default value.
;;
;;
;; The following patterns define only those constraints that are actually
;; The following patterns define only those constraints that are actually
;; used in s390.md.  If you need an additional one, simply add it in the
;; used in s390.md.  If you need an additional one, simply add it in the
;; obvious way.  Function s390_N_constraint_str is ready to handle all
;; obvious way.  Function s390_N_constraint_str is ready to handle all
;; combinations.
;; combinations.
;;
;;
(define_constraint "NxQS0"
(define_constraint "NxQS0"
  "@internal"
  "@internal"
  (and (match_code "const_int")
  (and (match_code "const_int")
       (match_test "s390_N_constraint_str (\"xQS0\", ival)")))
       (match_test "s390_N_constraint_str (\"xQS0\", ival)")))
(define_constraint "NxQD0"
(define_constraint "NxQD0"
  "@internal"
  "@internal"
   (and (match_code "const_int")
   (and (match_code "const_int")
        (match_test "s390_N_constraint_str (\"xQD0\", ival)")))
        (match_test "s390_N_constraint_str (\"xQD0\", ival)")))
(define_constraint "N3HD0"
(define_constraint "N3HD0"
  "@internal"
  "@internal"
  (and (match_code "const_int")
  (and (match_code "const_int")
       (match_test "s390_N_constraint_str (\"3HD0\", ival)")))
       (match_test "s390_N_constraint_str (\"3HD0\", ival)")))
(define_constraint "N2HD0"
(define_constraint "N2HD0"
  "@internal"
  "@internal"
  (and (match_code "const_int")
  (and (match_code "const_int")
       (match_test "s390_N_constraint_str (\"2HD0\", ival)")))
       (match_test "s390_N_constraint_str (\"2HD0\", ival)")))
(define_constraint "N1SD0"
(define_constraint "N1SD0"
  "@internal"
  "@internal"
  (and (match_code "const_int")
  (and (match_code "const_int")
       (match_test "s390_N_constraint_str (\"1SD0\", ival)")))
       (match_test "s390_N_constraint_str (\"1SD0\", ival)")))
(define_constraint "N1HS0"
(define_constraint "N1HS0"
  "@internal"
  "@internal"
  (and (match_code "const_int")
  (and (match_code "const_int")
       (match_test "s390_N_constraint_str (\"1HS0\", ival)")))
       (match_test "s390_N_constraint_str (\"1HS0\", ival)")))
(define_constraint "N1HD0"
(define_constraint "N1HD0"
  "@internal"
  "@internal"
  (and (match_code "const_int")
  (and (match_code "const_int")
       (match_test "s390_N_constraint_str (\"1HD0\", ival)")))
       (match_test "s390_N_constraint_str (\"1HD0\", ival)")))
(define_constraint "N0SD0"
(define_constraint "N0SD0"
  "@internal"
  "@internal"
  (and (match_code "const_int")
  (and (match_code "const_int")
       (match_test "s390_N_constraint_str (\"0SD0\", ival)")))
       (match_test "s390_N_constraint_str (\"0SD0\", ival)")))
(define_constraint "N0HS0"
(define_constraint "N0HS0"
  "@internal"
  "@internal"
  (and (match_code "const_int")
  (and (match_code "const_int")
       (match_test "s390_N_constraint_str (\"0HS0\", ival)")))
       (match_test "s390_N_constraint_str (\"0HS0\", ival)")))
(define_constraint "N0HD0"
(define_constraint "N0HD0"
  "@internal"
  "@internal"
  (and (match_code "const_int")
  (and (match_code "const_int")
       (match_test "s390_N_constraint_str (\"0HD0\", ival)")))
       (match_test "s390_N_constraint_str (\"0HD0\", ival)")))
(define_constraint "NxQDF"
(define_constraint "NxQDF"
  "@internal"
  "@internal"
  (and (match_code "const_int")
  (and (match_code "const_int")
       (match_test "s390_N_constraint_str (\"xQDF\", ival)")))
       (match_test "s390_N_constraint_str (\"xQDF\", ival)")))
(define_constraint "N1SDF"
(define_constraint "N1SDF"
  "@internal"
  "@internal"
  (and (match_code "const_int")
  (and (match_code "const_int")
       (match_test "s390_N_constraint_str (\"1SDF\", ival)")))
       (match_test "s390_N_constraint_str (\"1SDF\", ival)")))
(define_constraint "N0SDF"
(define_constraint "N0SDF"
  "@internal"
  "@internal"
  (and (match_code "const_int")
  (and (match_code "const_int")
       (match_test "s390_N_constraint_str (\"0SDF\", ival)")))
       (match_test "s390_N_constraint_str (\"0SDF\", ival)")))
(define_constraint "N3HDF"
(define_constraint "N3HDF"
  "@internal"
  "@internal"
  (and (match_code "const_int")
  (and (match_code "const_int")
       (match_test "s390_N_constraint_str (\"3HDF\", ival)")))
       (match_test "s390_N_constraint_str (\"3HDF\", ival)")))
(define_constraint "N2HDF"
(define_constraint "N2HDF"
  "@internal"
  "@internal"
  (and (match_code "const_int")
  (and (match_code "const_int")
       (match_test "s390_N_constraint_str (\"2HDF\", ival)")))
       (match_test "s390_N_constraint_str (\"2HDF\", ival)")))
(define_constraint "N1HDF"
(define_constraint "N1HDF"
  "@internal"
  "@internal"
  (and (match_code "const_int")
  (and (match_code "const_int")
       (match_test "s390_N_constraint_str (\"1HDF\", ival)")))
       (match_test "s390_N_constraint_str (\"1HDF\", ival)")))
(define_constraint "N0HDF"
(define_constraint "N0HDF"
  "@internal"
  "@internal"
  (and (match_code "const_int")
  (and (match_code "const_int")
       (match_test "s390_N_constraint_str (\"0HDF\", ival)")))
       (match_test "s390_N_constraint_str (\"0HDF\", ival)")))
(define_constraint "N0HSF"
(define_constraint "N0HSF"
  "@internal"
  "@internal"
  (and (match_code "const_int")
  (and (match_code "const_int")
       (match_test "s390_N_constraint_str (\"0HSF\", ival)")))
       (match_test "s390_N_constraint_str (\"0HSF\", ival)")))
(define_constraint "N1HSF"
(define_constraint "N1HSF"
  "@internal"
  "@internal"
  (and (match_code "const_int")
  (and (match_code "const_int")
       (match_test "s390_N_constraint_str (\"1HSF\", ival)")))
       (match_test "s390_N_constraint_str (\"1HSF\", ival)")))
(define_constraint "NxQSF"
(define_constraint "NxQSF"
  "@internal"
  "@internal"
  (and (match_code "const_int")
  (and (match_code "const_int")
       (match_test "s390_N_constraint_str (\"xQSF\", ival)")))
       (match_test "s390_N_constraint_str (\"xQSF\", ival)")))
(define_constraint "NxQHF"
(define_constraint "NxQHF"
  "@internal"
  "@internal"
  (and (match_code "const_int")
  (and (match_code "const_int")
       (match_test "s390_N_constraint_str (\"xQHF\", ival)")))
       (match_test "s390_N_constraint_str (\"xQHF\", ival)")))
(define_constraint "NxQH0"
(define_constraint "NxQH0"
  "@internal"
  "@internal"
  (and (match_code "const_int")
  (and (match_code "const_int")
       (match_test "s390_N_constraint_str (\"xQH0\", ival)")))
       (match_test "s390_N_constraint_str (\"xQH0\", ival)")))
;;
;;
;; Double-letter constraints starting with O follow.
;; Double-letter constraints starting with O follow.
;;
;;
(define_constraint "Os"
(define_constraint "Os"
  "@internal
  "@internal
   Signed extended immediate value (-2G .. 2G-1).
   Signed extended immediate value (-2G .. 2G-1).
   This constraint will only match if the machine provides
   This constraint will only match if the machine provides
   the extended-immediate facility."
   the extended-immediate facility."
  (and (match_code "const_int")
  (and (match_code "const_int")
       (match_test "s390_O_constraint_str ('s', ival)")))
       (match_test "s390_O_constraint_str ('s', ival)")))
(define_constraint "Op"
(define_constraint "Op"
  "@internal
  "@internal
   Positive extended immediate value (0 .. 4G-1).
   Positive extended immediate value (0 .. 4G-1).
   This constraint will only match if the machine provides
   This constraint will only match if the machine provides
   the extended-immediate facility."
   the extended-immediate facility."
  (and (match_code "const_int")
  (and (match_code "const_int")
       (match_test "s390_O_constraint_str ('p', ival)")))
       (match_test "s390_O_constraint_str ('p', ival)")))
(define_constraint "On"
(define_constraint "On"
  "@internal
  "@internal
   Negative extended immediate value (-4G+1 .. -1).
   Negative extended immediate value (-4G+1 .. -1).
   This constraint will only match if the machine provides
   This constraint will only match if the machine provides
   the extended-immediate facility."
   the extended-immediate facility."
  (and (match_code "const_int")
  (and (match_code "const_int")
       (match_test "s390_O_constraint_str ('n', ival)")))
       (match_test "s390_O_constraint_str ('n', ival)")))
;;
;;
;; Memory constraints follow.
;; Memory constraints follow.
;;
;;
(define_memory_constraint "Q"
(define_memory_constraint "Q"
  "Memory reference without index register and with short displacement"
  "Memory reference without index register and with short displacement"
  (match_test "s390_mem_constraint (\"Q\", op)"))
  (match_test "s390_mem_constraint (\"Q\", op)"))
(define_memory_constraint "R"
(define_memory_constraint "R"
  "Memory reference with index register and short displacement"
  "Memory reference with index register and short displacement"
  (match_test "s390_mem_constraint (\"R\", op)"))
  (match_test "s390_mem_constraint (\"R\", op)"))
(define_memory_constraint "S"
(define_memory_constraint "S"
  "Memory reference without index register but with long displacement"
  "Memory reference without index register but with long displacement"
  (match_test "s390_mem_constraint (\"S\", op)"))
  (match_test "s390_mem_constraint (\"S\", op)"))
(define_memory_constraint "T"
(define_memory_constraint "T"
  "Memory reference with index register and long displacement"
  "Memory reference with index register and long displacement"
  (match_test "s390_mem_constraint (\"T\", op)"))
  (match_test "s390_mem_constraint (\"T\", op)"))
(define_memory_constraint "b"
(define_memory_constraint "b"
  "Memory reference whose address is a naturally aligned symbol reference."
  "Memory reference whose address is a naturally aligned symbol reference."
  (match_test "MEM_P (op)
  (match_test "MEM_P (op)
               && s390_check_symref_alignment (XEXP (op, 0),
               && s390_check_symref_alignment (XEXP (op, 0),
                                               GET_MODE_SIZE (GET_MODE (op)))"))
                                               GET_MODE_SIZE (GET_MODE (op)))"))
(define_memory_constraint "e"
(define_memory_constraint "e"
  "Matches all memory references available on the current architecture
  "Matches all memory references available on the current architecture
level.  This constraint will never be used and using it in an inline
level.  This constraint will never be used and using it in an inline
assembly is *always* a bug since there is no instruction accepting all
assembly is *always* a bug since there is no instruction accepting all
those addresses.  It just serves as a placeholder for a generic memory
those addresses.  It just serves as a placeholder for a generic memory
constraint."
constraint."
  (match_test "strict_memory_address_p (GET_MODE (op), op)"))
  (match_test "strict_memory_address_p (GET_MODE (op), op)"))
; This defines 'm' as normal memory constraint.  This is only possible
; This defines 'm' as normal memory constraint.  This is only possible
; since the standard memory constraint is re-defined in s390.h using
; since the standard memory constraint is re-defined in s390.h using
; the TARGET_MEM_CONSTRAINT macro.
; the TARGET_MEM_CONSTRAINT macro.
(define_memory_constraint "m"
(define_memory_constraint "m"
  "Matches the most general memory address for pre-z10 machines."
  "Matches the most general memory address for pre-z10 machines."
  (match_test "s390_mem_constraint (\"R\", op)
  (match_test "s390_mem_constraint (\"R\", op)
               || s390_mem_constraint (\"T\", op)"))
               || s390_mem_constraint (\"T\", op)"))
(define_memory_constraint "AQ"
(define_memory_constraint "AQ"
  "@internal
  "@internal
   Offsettable memory reference without index register and with short displacement"
   Offsettable memory reference without index register and with short displacement"
  (match_test "s390_mem_constraint (\"AQ\", op)"))
  (match_test "s390_mem_constraint (\"AQ\", op)"))
(define_memory_constraint "AR"
(define_memory_constraint "AR"
  "@internal
  "@internal
   Offsettable memory reference with index register and short displacement"
   Offsettable memory reference with index register and short displacement"
  (match_test "s390_mem_constraint (\"AR\", op)"))
  (match_test "s390_mem_constraint (\"AR\", op)"))
(define_memory_constraint "AS"
(define_memory_constraint "AS"
  "@internal
  "@internal
   Offsettable memory reference without index register but with long displacement"
   Offsettable memory reference without index register but with long displacement"
  (match_test "s390_mem_constraint (\"AS\", op)"))
  (match_test "s390_mem_constraint (\"AS\", op)"))
(define_memory_constraint "AT"
(define_memory_constraint "AT"
  "@internal
  "@internal
   Offsettable memory reference with index register and long displacement"
   Offsettable memory reference with index register and long displacement"
  (match_test "s390_mem_constraint (\"AT\", op)"))
  (match_test "s390_mem_constraint (\"AT\", op)"))
(define_constraint "BQ"
(define_constraint "BQ"
  "@internal
  "@internal
   Memory reference without index register and with short
   Memory reference without index register and with short
   displacement that does *not* refer to a literal pool entry."
   displacement that does *not* refer to a literal pool entry."
  (match_test "s390_mem_constraint (\"BQ\", op)"))
  (match_test "s390_mem_constraint (\"BQ\", op)"))
(define_constraint "BR"
(define_constraint "BR"
  "@internal
  "@internal
   Memory reference with index register and short displacement that
   Memory reference with index register and short displacement that
   does *not* refer to a literal pool entry. "
   does *not* refer to a literal pool entry. "
  (match_test "s390_mem_constraint (\"BR\", op)"))
  (match_test "s390_mem_constraint (\"BR\", op)"))
(define_constraint "BS"
(define_constraint "BS"
  "@internal
  "@internal
   Memory reference without index register but with long displacement
   Memory reference without index register but with long displacement
   that does *not* refer to a literal pool entry. "
   that does *not* refer to a literal pool entry. "
  (match_test "s390_mem_constraint (\"BS\", op)"))
  (match_test "s390_mem_constraint (\"BS\", op)"))
(define_constraint "BT"
(define_constraint "BT"
  "@internal
  "@internal
   Memory reference with index register and long displacement that
   Memory reference with index register and long displacement that
   does *not* refer to a literal pool entry. "
   does *not* refer to a literal pool entry. "
  (match_test "s390_mem_constraint (\"BT\", op)"))
  (match_test "s390_mem_constraint (\"BT\", op)"))
(define_address_constraint "U"
(define_address_constraint "U"
  "Pointer with short displacement. (deprecated - use ZQZR)"
  "Pointer with short displacement. (deprecated - use ZQZR)"
  (match_test "s390_mem_constraint (\"U\", op)"))
  (match_test "s390_mem_constraint (\"U\", op)"))
(define_address_constraint "W"
(define_address_constraint "W"
  "Pointer with long displacement. (deprecated - use ZSZT)"
  "Pointer with long displacement. (deprecated - use ZSZT)"
  (match_test "s390_mem_constraint (\"W\", op)"))
  (match_test "s390_mem_constraint (\"W\", op)"))
(define_address_constraint "ZQ"
(define_address_constraint "ZQ"
  "Pointer without index register and with short displacement."
  "Pointer without index register and with short displacement."
  (match_test "s390_mem_constraint (\"ZQ\", op)"))
  (match_test "s390_mem_constraint (\"ZQ\", op)"))
(define_address_constraint "ZR"
(define_address_constraint "ZR"
  "Pointer with index register and short displacement."
  "Pointer with index register and short displacement."
  (match_test "s390_mem_constraint (\"ZR\", op)"))
  (match_test "s390_mem_constraint (\"ZR\", op)"))
(define_address_constraint "ZS"
(define_address_constraint "ZS"
  "Pointer without index register but with long displacement."
  "Pointer without index register but with long displacement."
  (match_test "s390_mem_constraint (\"ZS\", op)"))
  (match_test "s390_mem_constraint (\"ZS\", op)"))
(define_address_constraint "ZT"
(define_address_constraint "ZT"
  "Pointer with index register and long displacement."
  "Pointer with index register and long displacement."
  (match_test "s390_mem_constraint (\"ZT\", op)"))
  (match_test "s390_mem_constraint (\"ZT\", op)"))
 
 

powered by: WebSVN 2.1.0

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