1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- #!/bin/sh
- #
- # Copyright (C) 2014-2015 Free Software Foundation, Inc.
- # Contributed by ARM Ltd.
- #
- # This file is part of GCC.
- #
- # 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 Software Foundation; either version 3, or (at your option)
- # any later version.
- #
- # GCC is distributed in the hope that it will be useful,
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- # GNU General Public License for more details.
- #
- # You should have received a copy of the GNU General Public License
- # along with GCC; see the file COPYING3. If not see
- # <http://www.gnu.org/licenses/>.
- # Generate aarch64-builtin-iterators.h, a file containing a series of
- # BUILTIN_<ITERATOR> macros, which expand to VAR<N> Macros covering the
- # same set of modes as the iterator in iterators.md
- #
- # Find the <ITERATOR> definitions (may span several lines), skip the ones
- # which does not have a simple format because it contains characters we
- # don't want to or can't handle (e.g P, PTR iterators change depending on
- # Pmode and ptr_mode).
- LC_ALL=C awk '
- BEGIN {
- print "/* -*- buffer-read-only: t -*- */"
- print "/* Generated automatically by geniterators.sh from iterators.md. */"
- print "#ifndef GCC_AARCH64_ITERATORS_H"
- print "#define GCC_AARCH64_ITERATORS_H"
- }
- {
- sub(/;.*/, "")
- }
- iterdef {
- s = s " " $0
- }
- !iterdef && /\(define_mode_iterator/ {
- iterdef = 1
- s = $0
- sub(/.*\(define_mode_iterator/, "", s)
- }
- iterdef && s ~ /\)/ {
- iterdef = 0
- gsub(/[ \t]+/, " ", s)
- sub(/ *\).*/, "", s)
- sub(/^ /, "", s)
- if (s !~ /^[A-Za-z0-9_]+ \[[A-Z0-9 ]*\]$/)
- next
- sub(/\[ */, "", s)
- sub(/ *\]/, "", s)
- n = split(s, a)
- printf "#define BUILTIN_" a[1] "(T, N, MAP) \\\n"
- printf " VAR" (n-1) " (T, N, MAP"
- for (i = 2; i <= n; i++)
- printf ", " tolower(a[i])
- printf ")\n"
- }
- END {
- print "#endif /* GCC_AARCH64_ITERATORS_H */"
- }' $1
|