Mercurial > hg > CbC > CbC_gcc
diff gcc/config/arm/aarch-common.c @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | 04ced10e8804 |
children | 1830386684a0 |
line wrap: on
line diff
--- a/gcc/config/arm/aarch-common.c Fri Oct 27 22:46:09 2017 +0900 +++ b/gcc/config/arm/aarch-common.c Thu Oct 25 07:37:49 2018 +0900 @@ -1,7 +1,7 @@ /* Dependency checks for instruction scheduling, shared between ARM and AARCH64. - Copyright (C) 1991-2017 Free Software Foundation, Inc. + Copyright (C) 1991-2018 Free Software Foundation, Inc. Contributed by ARM Ltd. This file is part of GCC. @@ -21,12 +21,15 @@ <http://www.gnu.org/licenses/>. */ +#define IN_TARGET_CODE 1 + #include "config.h" #include "system.h" #include "coretypes.h" #include "tm.h" #include "rtl.h" #include "rtl-iter.h" +#include "memmodel.h" /* In ARMv8-A there's a general expectation that AESE/AESMC and AESD/AESIMC sequences of the form: @@ -228,6 +231,28 @@ return is_rev; } +/* Return non-zero if the RTX representing a memory model is a memory model + that needs acquire semantics. */ +bool +aarch_mm_needs_acquire (rtx const_int) +{ + enum memmodel model = memmodel_from_int (INTVAL (const_int)); + return !(is_mm_relaxed (model) + || is_mm_consume (model) + || is_mm_release (model)); +} + +/* Return non-zero if the RTX representing a memory model is a memory model + that needs release semantics. */ +bool +aarch_mm_needs_release (rtx const_int) +{ + enum memmodel model = memmodel_from_int (INTVAL (const_int)); + return !(is_mm_relaxed (model) + || is_mm_consume (model) + || is_mm_acquire (model)); +} + /* Return nonzero if the CONSUMER instruction (a load) does need PRODUCER's value to calculate the address. */ int