i386-builtin-types.awk: New file.

* config/i386/i386-builtin-types.awk: New file.
	* config/i386/i386-builtin-types.def: New file.
	* config/i386/t-i386: Use them to build i386-builtin-types.inc.
	* config/i386/i386.c: Include it.
	(ix86_builtin_type_tab, ix86_get_builtin_type): New.
	(ix86_builtin_func_type_tab, ix86_get_builtin_func_type): New.
	(struct builtin_isa): Remove GTY marker.  Replace tree type with
	ix86_builtin_func_type; add set_and_not_built_p.
	(def_builtin): Change type parameter to tcode; use
	ix86_get_builtin_func_type; update all callers.  Accept zero mask
	to mean the builtin is unconditionally available.
	(ix86_add_new_builtins): Use set_and_not_built_p instead of type
	being set to NULL.
	(enum ix86_special_builtin_type, enum ix86_builtin_type): Remove.
	Update some users to rationalized enumeration codes from new include.
	(enum multi_arg_type): Remove.  Replace all enumeration values
	with defines to new ix86_builtin_func_type.
	(ix86_init_mmx_sse_builtins): Don't build any types here.  Defer
	all type resolution to def_builtin.
	(ix86_init_builtin_types): Split out from ...
	(ix86_init_builtins): ... here.  Use ix86_get_builtin_func_type.

From-SVN: r154388
This commit is contained in:
Richard Henderson 2009-11-20 15:51:52 -08:00 committed by Richard Henderson
parent 497d383424
commit fe40daa0c3
5 changed files with 1020 additions and 1909 deletions

View File

@ -1,3 +1,27 @@
2009-11-20 Richard Henderson <rth@redhat.com>
* config/i386/i386-builtin-types.awk: New file.
* config/i386/i386-builtin-types.def: New file.
* config/i386/t-i386: Use them to build i386-builtin-types.inc.
* config/i386/i386.c: Include it.
(ix86_builtin_type_tab, ix86_get_builtin_type): New.
(ix86_builtin_func_type_tab, ix86_get_builtin_func_type): New.
(struct builtin_isa): Remove GTY marker. Replace tree type with
ix86_builtin_func_type; add set_and_not_built_p.
(def_builtin): Change type parameter to tcode; use
ix86_get_builtin_func_type; update all callers. Accept zero mask
to mean the builtin is unconditionally available.
(ix86_add_new_builtins): Use set_and_not_built_p instead of type
being set to NULL.
(enum ix86_special_builtin_type, enum ix86_builtin_type): Remove.
Update some users to rationalized enumeration codes from new include.
(enum multi_arg_type): Remove. Replace all enumeration values
with defines to new ix86_builtin_func_type.
(ix86_init_mmx_sse_builtins): Don't build any types here. Defer
all type resolution to def_builtin.
(ix86_init_builtin_types): Split out from ...
(ix86_init_builtins): ... here. Use ix86_get_builtin_func_type.
2009-11-20 Michael Meissner <meissner@linux.vnet.ibm.com>
PR target/41787

View File

@ -0,0 +1,279 @@
# Copyright (C) 2009 Free Software Foundation, Inc.
#
# This program 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.
#
# This program 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 this program; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>.
# Generates compressed tables for types for i386 builtin functions.
function do_error(string) {
print FILENAME ":" FNR ": " string > "/dev/stderr"
errors = 1
}
function check_type(string) {
if (!(string in type_hash))
do_error("undefined type code " string)
}
# We can significantly reduce the size of the read-only tables
# by forcing the compiler to use a smaller implementation type
# for the enumerations.
function attribute_mode(count) {
# ??? Except that we get strange "comparison always false" warnings
# for comparisons between different elements of the enumeration.
# print "#ifdef __GNUC__"
# if (count < 256)
# print " __attribute__((__mode__(__QI__)))"
# else
# print " __attribute__((__mode__(__HI__)))"
# print "#endif"
}
BEGIN {
FS = "[() \t,]+"
prim_defs = 0
vect_defs = 0
ptr_defs = 0
cptr_defs = 0
func_defs = 0
func_args = 0
alias_defs = 0
}
# Skip blank lines or comments.
/^[ \t]*(#|$)/ {
next
}
$1 == "DEF_PRIMITIVE_TYPE" {
if (NF == 4) {
type_hash[$2] = 1
prim_name[prim_defs] = $2
prim_base[prim_defs] = $3
prim_defs++
} else
do_error("DEF_PRIMITIVE_TYPE expected 2 arguments")
next
}
$1 == "DEF_VECTOR_TYPE" {
if (NF == 4) {
check_type($3)
type_hash[$2] = 1
vect_mode[vect_defs] = $2
vect_base[vect_defs] = $3
vect_defs++
} else
do_error("DEF_VECTOR_TYPE expected 2 arguments")
next
}
$1 == "DEF_POINTER_TYPE" {
if (NF == 4) {
check_type($3)
type_hash[$2] = 1
ptr_name[ptr_defs] = $2
ptr_base[ptr_defs] = $3
ptr_defs++
} else if (NF == 5) {
check_type($3)
if ($4 == "CONST") {
type_hash[$2] = 1
cptr_name[cptr_defs] = $2
cptr_base[cptr_defs] = $3
cptr_defs++
} else
do_error("invalid qualifier \"" $4 "\"")
}
else
do_error("DEF_POINTER_TYPE expected 2 or 3 arguments")
next
}
$1 == "DEF_FUNCTION_TYPE" {
func_start[func_defs] = func_args
for (i = 2; i < NF; ++i) {
check_type($i)
func_types[func_args++] = $i
}
if (NF < 3)
do_error("DEF_FUNCTION_TYPE expected at least 1 argument")
else if (NF == 3)
name = $2 "_FTYPE_VOID"
else {
name = $2 "_FTYPE"
for (i = 3; i < NF; ++i)
name = name "_" $i
}
func_hash[name] = 1
func_name[func_defs++] = name
next
}
$1 == "DEF_FUNCTION_TYPE_ALIAS" {
if (NF == 4) {
if ($2 in func_hash) {
alias_base[alias_defs] = $2
alias_name[alias_defs] = $2 "_" $3
alias_defs++
} else
do_error("undefined function code " $2)
} else
do_error("DEF_FUNCTION_TYPE_ALIAS expected 2 arguments")
next
}
{
do_error("unknown directive \"" $1 "\"");
}
END {
if (errors)
exit 1
print "/* This file is auto-generated by i386-builtin-types.awk. */\n"
# This first enumeration contains all of the non-function types.
print "enum ix86_builtin_type {"
for (i = 0; i < prim_defs; ++i)
print " IX86_BT_" prim_name[i] ","
print " IX86_BT_LAST_PRIM = IX86_BT_" prim_name[i-1] ","
for (i = 0; i < vect_defs; ++i)
print " IX86_BT_" vect_mode[i] ","
print " IX86_BT_LAST_VECT = IX86_BT_" vect_mode[i-1] ","
for (i = 0; i < ptr_defs; ++i)
print " IX86_BT_" ptr_name[i] ","
print " IX86_BT_LAST_PTR = IX86_BT_" ptr_name[i-1] ","
for (i = 0; i < cptr_defs; ++i)
print " IX86_BT_" cptr_name[i] ","
print " IX86_BT_LAST_CPTR = IX86_BT_" cptr_name[i-1] "\n}"
attribute_mode(prim_defs + vect_defs + ptr_defs + cptr_defs)
print ";\n\n"
# We can't tabularize the initialization of the primitives, since
# at least one of them is created via a local variable. That's ok,
# just create a nice big macro to do all the work.
print "#define DEFINE_BUILTIN_PRIMITIVE_TYPES \\"
for (i = 0; i < prim_defs; ++i) {
printf " ix86_builtin_type_tab[(int)IX86_BT_" prim_name[i] \
"] = " prim_base[i]
if (i < prim_defs - 1)
print ", \\"
}
print "\n\n"
# The vector types are defined via two tables defining the real
# machine mode and the builtin primitive type. We use two tables
# rather than a structure to avoid structure padding and save space.
print "static const enum machine_mode ix86_builtin_type_vect_mode[] = {"
for (i = 0; i < vect_defs; ++i) {
if (i == 0)
printf " "
else if (i % 6 == 0)
printf ",\n "
else
printf ", "
printf vect_mode[i] "mode"
}
print "\n};\n\n"
print "static const enum ix86_builtin_type " \
"ix86_builtin_type_vect_base[] = {"
for (i = 0; i < vect_defs; ++i) {
if (i == 0)
printf " "
else if (i % 4 == 0)
printf ",\n "
else
printf ", "
printf "IX86_BT_" vect_base[i]
}
print "\n};\n\n"
# The pointer types are defined via a single table defining the
# builtin primitive type. The const-ness of the pointer is taken
# from the enumeration value > IX86_BT_LAST_PTR.
print "static const enum ix86_builtin_type " \
"ix86_builtin_type_ptr_base[] = {"
for (i = 0; i < ptr_defs; ++i) {
if (i == 0)
printf " "
else if (i % 4 == 0)
printf "\n "
printf " IX86_BT_" ptr_base[i] ","
}
print "\n /* pointer-to-constant defs start here */"
for (i = 0; i < cptr_defs; ++i) {
if (i == 0)
printf " "
else if (i % 4 == 0)
printf ",\n "
else
printf ", "
printf "IX86_BT_" cptr_base[i]
}
print "\n};\n\n"
# This second enumeration contains all of the function types.
print "enum ix86_builtin_func_type {"
for (i = 0; i < func_defs; ++i)
print " " func_name[i] ","
print " IX86_BT_LAST_FUNC = " func_name[i-1] ","
for (i = 0; i < alias_defs; ++i)
print " " alias_name[i] ","
print " IX86_BT_LAST_ALIAS = " alias_name[i-1] "\n}"
attribute_mode(func_defs + alias_defs)
print ";\n\n"
# The function types are defined via two tables. The first contains
# ranges consiting of the function's return type, followed by all of
# the function argument types. The ranges for all of the builtin
# functions are smooshed together in the same array. The second array
# contains, for each builtin, the index of the function's return type
# within the first array.
print "static const enum ix86_builtin_type ix86_builtin_func_args[] = {"
for (i = 0; i < func_args; ++i) {
if (i == 0)
printf " "
else if (i % 4 == 0)
printf ",\n "
else
printf ", "
printf "IX86_BT_" func_types[i]
}
print "\n};\n\n"
print "static const unsigned short ix86_builtin_func_start[] = {"
for (i = 0; i < func_defs; ++i) {
if (i == 0)
printf " "
else if (i % 10 == 0)
printf "\n "
printf " " func_start[i] ","
}
print " " func_args "\n};\n\n"
print "static const enum ix86_builtin_func_type " \
"ix86_builtin_func_alias_base[] = {"
for (i = 0; i < alias_defs; ++i) {
if (i == 0)
printf " "
else
printf ",\n "
printf alias_base[i]
}
print "\n};"
}

View File

@ -0,0 +1,375 @@
# This file provides a declarative way of describing the types that
# are used when declaring ix86 builtin functions. It is processed
# with i386-builtin-type.awk to produce C code.
#
# DEF_PRIMITIVE_TYPE (ENUM, TYPE)
#
# The ENUM is an identifier indicating which type is being defined.
# TYPE is a variable that represents the type.
# ??? Note that the awk program expects a single token for TYPE.
# At present, that's all that's required; revisit if it turns out
# that we need more than that.
#
# DEF_VECTOR_TYPE (ENUM, TYPE)
#
# This describes a vector type. ENUM doubles as both the identifier
# to define in the enumeration as well as the mode of the vector; TYPE is
# the enumeral for the inner type which should of course name a type of
# the proper inner mode.
#
# DEF_POINTER_TYPE (ENUM, TYPE [, CONST])
#
# This describes a pointer type. ENUM is an identifier as above;
# TYPE is the enumeral for the type pointed to. An optional third
# argument is the keyword CONST, which defines this to be a pointer to
# a constant type.
#
# DEF_FUNCTION_TYPE (RETURN, ARGN*)
#
# This describes a function type. The return type and the arguments
# are the enumerals defined above. The enumeration name for the
# function is formed by RETURN ## _FTYPE_ ## ARG1 ## _ ## ARG2 ...
#
# DEF_FUNCTION_TYPE_ALIAS (ENUM, SUFFIX)
#
# This defines an enumeration ENUM ## _ ## SUFFIX and arranges for
# the function type to be copied from ENUM. This is used to control
# how the expanders treat the function.
#
DEF_PRIMITIVE_TYPE (VOID, void_type_node)
DEF_PRIMITIVE_TYPE (CHAR, char_type_node)
DEF_PRIMITIVE_TYPE (UCHAR, unsigned_char_type_node)
DEF_PRIMITIVE_TYPE (QI, intQI_type_node)
DEF_PRIMITIVE_TYPE (HI, intHI_type_node)
DEF_PRIMITIVE_TYPE (SI, intSI_type_node)
DEF_PRIMITIVE_TYPE (DI, long_long_integer_type_node)
DEF_PRIMITIVE_TYPE (USHORT, short_unsigned_type_node)
DEF_PRIMITIVE_TYPE (INT, integer_type_node)
DEF_PRIMITIVE_TYPE (UINT, unsigned_type_node)
DEF_PRIMITIVE_TYPE (UNSIGNED, unsigned_type_node)
DEF_PRIMITIVE_TYPE (LONGLONG, long_long_integer_type_node)
DEF_PRIMITIVE_TYPE (ULONGLONG, long_long_unsigned_type_node)
DEF_PRIMITIVE_TYPE (UINT8, unsigned_char_type_node)
DEF_PRIMITIVE_TYPE (UINT16, short_unsigned_type_node)
DEF_PRIMITIVE_TYPE (INT64, long_long_integer_type_node)
DEF_PRIMITIVE_TYPE (UINT64, long_long_unsigned_type_node)
DEF_PRIMITIVE_TYPE (FLOAT, float_type_node)
DEF_PRIMITIVE_TYPE (DOUBLE, double_type_node)
DEF_PRIMITIVE_TYPE (FLOAT80, float80_type_node)
DEF_PRIMITIVE_TYPE (FLOAT128, float128_type_node)
DEF_VECTOR_TYPE (V16HI, HI)
DEF_VECTOR_TYPE (V16QI, CHAR)
DEF_VECTOR_TYPE (V1DI, DI)
DEF_VECTOR_TYPE (V2DF, DOUBLE)
DEF_VECTOR_TYPE (V2DI, DI)
DEF_VECTOR_TYPE (V2SF, FLOAT)
DEF_VECTOR_TYPE (V2SI, SI)
DEF_VECTOR_TYPE (V32QI, CHAR)
DEF_VECTOR_TYPE (V4DF, DOUBLE)
DEF_VECTOR_TYPE (V4DI, DI)
DEF_VECTOR_TYPE (V4HI, HI)
DEF_VECTOR_TYPE (V4SF, FLOAT)
DEF_VECTOR_TYPE (V4SI, SI)
DEF_VECTOR_TYPE (V8HI, HI)
DEF_VECTOR_TYPE (V8QI, CHAR)
DEF_VECTOR_TYPE (V8SF, FLOAT)
DEF_VECTOR_TYPE (V8SI, SI)
DEF_POINTER_TYPE (PCCHAR, CHAR, CONST)
DEF_POINTER_TYPE (PCDOUBLE, DOUBLE, CONST)
DEF_POINTER_TYPE (PCFLOAT, FLOAT, CONST)
DEF_POINTER_TYPE (PCHAR, CHAR)
DEF_POINTER_TYPE (PCVOID, VOID, CONST)
DEF_POINTER_TYPE (PDOUBLE, DOUBLE)
DEF_POINTER_TYPE (PFLOAT, FLOAT)
DEF_POINTER_TYPE (PINT, INT)
DEF_POINTER_TYPE (PULONGLONG, ULONGLONG)
DEF_POINTER_TYPE (PUNSIGNED, UNSIGNED)
DEF_POINTER_TYPE (PV2DF, V2DF)
DEF_POINTER_TYPE (PV2DI, V2DI)
DEF_POINTER_TYPE (PV2SF, V2SF)
DEF_POINTER_TYPE (PV4DF, V4DF)
DEF_POINTER_TYPE (PV4DI, V4DI)
DEF_POINTER_TYPE (PV4SF, V4SF)
DEF_POINTER_TYPE (PV8SF, V8SF)
DEF_POINTER_TYPE (PCV2DF, V2DF, CONST)
DEF_POINTER_TYPE (PCV2SF, V2SF, CONST)
DEF_POINTER_TYPE (PCV4DF, V4DF, CONST)
DEF_POINTER_TYPE (PCV4SF, V4SF, CONST)
DEF_POINTER_TYPE (PCV8SF, V8SF, CONST)
DEF_FUNCTION_TYPE (FLOAT128)
DEF_FUNCTION_TYPE (UINT64)
DEF_FUNCTION_TYPE (UNSIGNED)
DEF_FUNCTION_TYPE (VOID)
DEF_FUNCTION_TYPE (FLOAT, FLOAT)
DEF_FUNCTION_TYPE (FLOAT128, FLOAT128)
DEF_FUNCTION_TYPE (INT, INT)
DEF_FUNCTION_TYPE (INT, V16QI)
DEF_FUNCTION_TYPE (INT, V2DF)
DEF_FUNCTION_TYPE (INT, V4DF)
DEF_FUNCTION_TYPE (INT, V4SF)
DEF_FUNCTION_TYPE (INT, V8QI)
DEF_FUNCTION_TYPE (INT, V8SF)
DEF_FUNCTION_TYPE (INT64, INT64)
DEF_FUNCTION_TYPE (INT64, V2DF)
DEF_FUNCTION_TYPE (INT64, V4SF)
DEF_FUNCTION_TYPE (UINT64, INT)
DEF_FUNCTION_TYPE (UINT64, PUNSIGNED)
DEF_FUNCTION_TYPE (V16QI, PCCHAR)
DEF_FUNCTION_TYPE (V16QI, V16QI)
DEF_FUNCTION_TYPE (V2DF, PCDOUBLE)
DEF_FUNCTION_TYPE (V2DF, V2DF)
DEF_FUNCTION_TYPE (V2DF, V2SI)
DEF_FUNCTION_TYPE (V2DF, V4DF)
DEF_FUNCTION_TYPE (V2DF, V4SF)
DEF_FUNCTION_TYPE (V2DF, V4SI)
DEF_FUNCTION_TYPE (V2DI, PV2DI)
DEF_FUNCTION_TYPE (V2DI, V16QI)
DEF_FUNCTION_TYPE (V2DI, V2DI)
DEF_FUNCTION_TYPE (V2DI, V4SI)
DEF_FUNCTION_TYPE (V2DI, V8HI)
DEF_FUNCTION_TYPE (V2SF, V2SF)
DEF_FUNCTION_TYPE (V2SF, V2SI)
DEF_FUNCTION_TYPE (V2SI, V2DF)
DEF_FUNCTION_TYPE (V2SI, V2SF)
DEF_FUNCTION_TYPE (V2SI, V2SI)
DEF_FUNCTION_TYPE (V2SI, V4SF)
DEF_FUNCTION_TYPE (V32QI, PCCHAR)
DEF_FUNCTION_TYPE (V4DF, PCDOUBLE)
DEF_FUNCTION_TYPE (V4DF, PCV2DF)
DEF_FUNCTION_TYPE (V4DF, V2DF)
DEF_FUNCTION_TYPE (V4DF, V4DF)
DEF_FUNCTION_TYPE (V4DF, V4SF)
DEF_FUNCTION_TYPE (V4DF, V4SI)
DEF_FUNCTION_TYPE (V4HI, V4HI)
DEF_FUNCTION_TYPE (V4SF, PCFLOAT)
DEF_FUNCTION_TYPE (V4SF, V2DF)
DEF_FUNCTION_TYPE (V4SF, V4DF)
DEF_FUNCTION_TYPE (V4SF, V4SF)
DEF_FUNCTION_TYPE (V4SF, V4SI)
DEF_FUNCTION_TYPE (V4SF, V8SF)
DEF_FUNCTION_TYPE (V4SI, V16QI)
DEF_FUNCTION_TYPE (V4SI, V2DF)
DEF_FUNCTION_TYPE (V4SI, V4DF)
DEF_FUNCTION_TYPE (V4SI, V4SF)
DEF_FUNCTION_TYPE (V4SI, V4SI)
DEF_FUNCTION_TYPE (V4SI, V8HI)
DEF_FUNCTION_TYPE (V4SI, V8SI)
DEF_FUNCTION_TYPE (V8HI, V16QI)
DEF_FUNCTION_TYPE (V8HI, V8HI)
DEF_FUNCTION_TYPE (V8QI, V8QI)
DEF_FUNCTION_TYPE (V8SF, PCFLOAT)
DEF_FUNCTION_TYPE (V8SF, PCV4SF)
DEF_FUNCTION_TYPE (V8SF, V4SF)
DEF_FUNCTION_TYPE (V8SF, V8SF)
DEF_FUNCTION_TYPE (V8SF, V8SI)
DEF_FUNCTION_TYPE (V8SI, V4SI)
DEF_FUNCTION_TYPE (V8SI, V8SF)
DEF_FUNCTION_TYPE (VOID, PCVOID)
DEF_FUNCTION_TYPE (VOID, UNSIGNED)
DEF_FUNCTION_TYPE (DI, V2DI, INT)
DEF_FUNCTION_TYPE (DOUBLE, V2DF, INT)
DEF_FUNCTION_TYPE (FLOAT, V4SF, INT)
DEF_FUNCTION_TYPE (FLOAT128, FLOAT128, FLOAT128)
DEF_FUNCTION_TYPE (HI, V4HI, INT)
DEF_FUNCTION_TYPE (HI, V8HI, INT)
DEF_FUNCTION_TYPE (INT, V2DF, V2DF)
DEF_FUNCTION_TYPE (INT, V2DI, V2DI)
DEF_FUNCTION_TYPE (INT, V4DF, V4DF)
DEF_FUNCTION_TYPE (INT, V4DI, V4DI)
DEF_FUNCTION_TYPE (INT, V4SF, V4SF)
DEF_FUNCTION_TYPE (INT, V8SF, V8SF)
DEF_FUNCTION_TYPE (QI, V16QI, INT)
DEF_FUNCTION_TYPE (QI, V8QI, INT)
DEF_FUNCTION_TYPE (SI, V2SI, INT)
DEF_FUNCTION_TYPE (SI, V4SI, INT)
DEF_FUNCTION_TYPE (UINT, UINT, UCHAR)
DEF_FUNCTION_TYPE (UINT, UINT, UINT)
DEF_FUNCTION_TYPE (UINT, UINT, USHORT)
DEF_FUNCTION_TYPE (UINT16, UINT16, INT)
DEF_FUNCTION_TYPE (UINT64, UINT64, UINT64)
DEF_FUNCTION_TYPE (UINT8, UINT8, INT)
DEF_FUNCTION_TYPE (V16QI, V16QI, SI)
DEF_FUNCTION_TYPE (V16QI, V16QI, V16QI)
DEF_FUNCTION_TYPE (V16QI, V8HI, V8HI)
DEF_FUNCTION_TYPE (V1DI, V1DI, SI)
DEF_FUNCTION_TYPE (V1DI, V1DI, V1DI)
DEF_FUNCTION_TYPE (V1DI, V2SI, V2SI)
DEF_FUNCTION_TYPE (V1DI, V8QI, V8QI)
DEF_FUNCTION_TYPE (V2DF, PCV2DF, V2DF)
DEF_FUNCTION_TYPE (V2DF, V2DF, DI)
DEF_FUNCTION_TYPE (V2DF, V2DF, INT)
DEF_FUNCTION_TYPE (V2DF, V2DF, PCDOUBLE)
DEF_FUNCTION_TYPE (V2DF, V2DF, SI)
DEF_FUNCTION_TYPE (V2DF, V2DF, V2DF)
DEF_FUNCTION_TYPE (V2DF, V2DF, V2DI)
DEF_FUNCTION_TYPE (V2DF, V2DF, V4SF)
DEF_FUNCTION_TYPE (V2DF, V4DF, INT)
DEF_FUNCTION_TYPE (V2DI, V16QI, V16QI)
DEF_FUNCTION_TYPE (V2DI, V2DF, V2DF)
DEF_FUNCTION_TYPE (V2DI, V2DI, INT)
DEF_FUNCTION_TYPE (V2DI, V2DI, SI)
DEF_FUNCTION_TYPE (V2DI, V2DI, V16QI)
DEF_FUNCTION_TYPE (V2DI, V2DI, V2DI)
DEF_FUNCTION_TYPE (V2DI, V4SI, V4SI)
DEF_FUNCTION_TYPE (V2SF, V2SF, V2SF)
DEF_FUNCTION_TYPE (V2SI, INT, INT)
DEF_FUNCTION_TYPE (V2SI, V2SF, V2SF)
DEF_FUNCTION_TYPE (V2SI, V2SI, SI)
DEF_FUNCTION_TYPE (V2SI, V2SI, V2SI)
DEF_FUNCTION_TYPE (V2SI, V4HI, V4HI)
DEF_FUNCTION_TYPE (V4DF, PCV4DF, V4DF)
DEF_FUNCTION_TYPE (V4DF, V4DF, INT)
DEF_FUNCTION_TYPE (V4DF, V4DF, V4DF)
DEF_FUNCTION_TYPE (V4DF, V4DF, V4DI)
DEF_FUNCTION_TYPE (V4HI, V2SI, V2SI)
DEF_FUNCTION_TYPE (V4HI, V4HI, INT)
DEF_FUNCTION_TYPE (V4HI, V4HI, SI)
DEF_FUNCTION_TYPE (V4HI, V4HI, V4HI)
DEF_FUNCTION_TYPE (V4HI, V8QI, V8QI)
DEF_FUNCTION_TYPE (V4SF, PCV4SF, V4SF)
DEF_FUNCTION_TYPE (V4SF, V4SF, DI)
DEF_FUNCTION_TYPE (V4SF, V4SF, INT)
DEF_FUNCTION_TYPE (V4SF, V4SF, PCV2SF)
DEF_FUNCTION_TYPE (V4SF, V4SF, SI)
DEF_FUNCTION_TYPE (V4SF, V4SF, V2DF)
DEF_FUNCTION_TYPE (V4SF, V4SF, V2SI)
DEF_FUNCTION_TYPE (V4SF, V4SF, V4SF)
DEF_FUNCTION_TYPE (V4SF, V4SF, V4SI)
DEF_FUNCTION_TYPE (V4SF, V8SF, INT)
DEF_FUNCTION_TYPE (V4SI, V2DF, V2DF)
DEF_FUNCTION_TYPE (V4SI, V4SF, V4SF)
DEF_FUNCTION_TYPE (V4SI, V4SI, INT)
DEF_FUNCTION_TYPE (V4SI, V4SI, SI)
DEF_FUNCTION_TYPE (V4SI, V4SI, V4SI)
DEF_FUNCTION_TYPE (V4SI, V8HI, V8HI)
DEF_FUNCTION_TYPE (V4SI, V8SI, INT)
DEF_FUNCTION_TYPE (V8HI, V16QI, V16QI)
DEF_FUNCTION_TYPE (V8HI, V4SI, V4SI)
DEF_FUNCTION_TYPE (V8HI, V8HI, INT)
DEF_FUNCTION_TYPE (V8HI, V8HI, SI)
DEF_FUNCTION_TYPE (V8HI, V8HI, V8HI)
DEF_FUNCTION_TYPE (V8QI, V4HI, V4HI)
DEF_FUNCTION_TYPE (V8QI, V8QI, V8QI)
DEF_FUNCTION_TYPE (V8SF, PCV8SF, V8SF)
DEF_FUNCTION_TYPE (V8SF, V8SF, INT)
DEF_FUNCTION_TYPE (V8SF, V8SF, V8SF)
DEF_FUNCTION_TYPE (V8SF, V8SF, V8SI)
DEF_FUNCTION_TYPE (VOID, PCHAR, V16QI)
DEF_FUNCTION_TYPE (VOID, PCHAR, V32QI)
DEF_FUNCTION_TYPE (VOID, PDOUBLE, V2DF)
DEF_FUNCTION_TYPE (VOID, PDOUBLE, V4DF)
DEF_FUNCTION_TYPE (VOID, PFLOAT, V4SF)
DEF_FUNCTION_TYPE (VOID, PFLOAT, V8SF)
DEF_FUNCTION_TYPE (VOID, PINT, INT)
DEF_FUNCTION_TYPE (VOID, PULONGLONG, ULONGLONG)
DEF_FUNCTION_TYPE (VOID, PV2DI, V2DI)
DEF_FUNCTION_TYPE (VOID, PV2SF, V4SF)
DEF_FUNCTION_TYPE (VOID, PV4DI, V4DI)
DEF_FUNCTION_TYPE (VOID, UNSIGNED, UNSIGNED)
DEF_FUNCTION_TYPE (INT, V16QI, V16QI, INT)
DEF_FUNCTION_TYPE (UCHAR, UINT, UINT, UINT)
DEF_FUNCTION_TYPE (UCHAR, UINT64, UINT, UINT)
DEF_FUNCTION_TYPE (UCHAR, USHORT, UINT, USHORT)
DEF_FUNCTION_TYPE (V16HI, V16HI, V16HI, V16HI)
DEF_FUNCTION_TYPE (V16QI, V16QI, QI, INT)
DEF_FUNCTION_TYPE (V16QI, V16QI, V16QI, INT)
DEF_FUNCTION_TYPE (V16QI, V16QI, V16QI, V16QI)
DEF_FUNCTION_TYPE (V1DI, V1DI, V1DI, INT)
DEF_FUNCTION_TYPE (V2DF, V2DF, V2DF, INT)
DEF_FUNCTION_TYPE (V2DF, V2DF, V2DF, V2DF)
DEF_FUNCTION_TYPE (V2DI, V2DI, DI, INT)
DEF_FUNCTION_TYPE (V2DI, V2DI, UINT, UINT)
DEF_FUNCTION_TYPE (V2DI, V2DI, V2DI, INT)
DEF_FUNCTION_TYPE (V2DI, V2DI, V2DI, V2DI)
DEF_FUNCTION_TYPE (V32QI, V32QI, V32QI, V32QI)
DEF_FUNCTION_TYPE (V4DF, V4DF, V2DF, INT)
DEF_FUNCTION_TYPE (V4DF, V4DF, V4DF, INT)
DEF_FUNCTION_TYPE (V4DF, V4DF, V4DF, V4DF)
DEF_FUNCTION_TYPE (V4DI, V4DI, V4DI, V4DI)
DEF_FUNCTION_TYPE (V4HI, V4HI, HI, INT)
DEF_FUNCTION_TYPE (V4SF, V4SF, FLOAT, INT)
DEF_FUNCTION_TYPE (V4SF, V4SF, V4SF, INT)
DEF_FUNCTION_TYPE (V4SF, V4SF, V4SF, V4SF)
DEF_FUNCTION_TYPE (V4SI, V4SI, SI, INT)
DEF_FUNCTION_TYPE (V4SI, V4SI, V4SI, INT)
DEF_FUNCTION_TYPE (V4SI, V4SI, V4SI, V2DI)
DEF_FUNCTION_TYPE (V4SI, V4SI, V4SI, V4SI)
DEF_FUNCTION_TYPE (V8HI, V8HI, HI, INT)
DEF_FUNCTION_TYPE (V8HI, V8HI, V8HI, INT)
DEF_FUNCTION_TYPE (V8HI, V8HI, V8HI, V4SI)
DEF_FUNCTION_TYPE (V8HI, V8HI, V8HI, V8HI)
DEF_FUNCTION_TYPE (V8SF, V8SF, V4SF, INT)
DEF_FUNCTION_TYPE (V8SF, V8SF, V8SF, INT)
DEF_FUNCTION_TYPE (V8SF, V8SF, V8SF, V8SF)
DEF_FUNCTION_TYPE (V8SI, V8SI, V4SI, INT)
DEF_FUNCTION_TYPE (V8SI, V8SI, V8SI, INT)
DEF_FUNCTION_TYPE (V8SI, V8SI, V8SI, V8SI)
DEF_FUNCTION_TYPE (VOID, PCVOID, UNSIGNED, UNSIGNED)
DEF_FUNCTION_TYPE (VOID, PV2DF, V2DF, V2DF)
DEF_FUNCTION_TYPE (VOID, PV4DF, V4DF, V4DF)
DEF_FUNCTION_TYPE (VOID, PV4SF, V4SF, V4SF)
DEF_FUNCTION_TYPE (VOID, PV8SF, V8SF, V8SF)
DEF_FUNCTION_TYPE (VOID, UINT, UINT, UINT)
DEF_FUNCTION_TYPE (VOID, UINT64, UINT, UINT)
DEF_FUNCTION_TYPE (VOID, USHORT, UINT, USHORT)
DEF_FUNCTION_TYPE (VOID, V16QI, V16QI, PCHAR)
DEF_FUNCTION_TYPE (VOID, V8QI, V8QI, PCHAR)
DEF_FUNCTION_TYPE (V2DI, V2DI, V2DI, UINT, UINT)
DEF_FUNCTION_TYPE (V4HI, HI, HI, HI, HI)
DEF_FUNCTION_TYPE (INT, V16QI, INT, V16QI, INT, INT)
DEF_FUNCTION_TYPE (V16QI, V16QI, INT, V16QI, INT, INT)
DEF_FUNCTION_TYPE (V8QI, QI, QI, QI, QI, QI, QI, QI, QI)
DEF_FUNCTION_TYPE_ALIAS (INT_FTYPE_V2DF_V2DF, PTEST)
DEF_FUNCTION_TYPE_ALIAS (INT_FTYPE_V2DI_V2DI, PTEST)
DEF_FUNCTION_TYPE_ALIAS (INT_FTYPE_V4DF_V4DF, PTEST)
DEF_FUNCTION_TYPE_ALIAS (INT_FTYPE_V4DI_V4DI, PTEST)
DEF_FUNCTION_TYPE_ALIAS (INT_FTYPE_V4SF_V4SF, PTEST)
DEF_FUNCTION_TYPE_ALIAS (INT_FTYPE_V8SF_V8SF, PTEST)
DEF_FUNCTION_TYPE_ALIAS (V2DF_FTYPE_V2DF, VEC_MERGE)
DEF_FUNCTION_TYPE_ALIAS (V4SF_FTYPE_V4SF, VEC_MERGE)
DEF_FUNCTION_TYPE_ALIAS (V1DI_FTYPE_V1DI_SI, COUNT)
DEF_FUNCTION_TYPE_ALIAS (V2DI_FTYPE_V2DI_SI, COUNT)
DEF_FUNCTION_TYPE_ALIAS (V2SI_FTYPE_V2SI_SI, COUNT)
DEF_FUNCTION_TYPE_ALIAS (V4HI_FTYPE_V4HI_SI, COUNT)
DEF_FUNCTION_TYPE_ALIAS (V4SI_FTYPE_V4SI_SI, COUNT)
DEF_FUNCTION_TYPE_ALIAS (V8HI_FTYPE_V8HI_SI, COUNT)
DEF_FUNCTION_TYPE_ALIAS (V1DI_FTYPE_V1DI_V1DI, COUNT)
DEF_FUNCTION_TYPE_ALIAS (V2DI_FTYPE_V2DI_V2DI, COUNT)
DEF_FUNCTION_TYPE_ALIAS (V2SI_FTYPE_V2SI_V2SI, COUNT)
DEF_FUNCTION_TYPE_ALIAS (V4HI_FTYPE_V4HI_V4HI, COUNT)
DEF_FUNCTION_TYPE_ALIAS (V4SI_FTYPE_V4SI_V4SI, COUNT)
DEF_FUNCTION_TYPE_ALIAS (V8HI_FTYPE_V8HI_V8HI, COUNT)
DEF_FUNCTION_TYPE_ALIAS (V2DF_FTYPE_V2DF_V2DF, SWAP)
DEF_FUNCTION_TYPE_ALIAS (V4SF_FTYPE_V4SF_V4SF, SWAP)
DEF_FUNCTION_TYPE_ALIAS (V2DI_FTYPE_V2DI_INT, CONVERT)
DEF_FUNCTION_TYPE_ALIAS (V2DI_FTYPE_V2DI_V2DI_INT, CONVERT)
DEF_FUNCTION_TYPE_ALIAS (V1DI_FTYPE_V1DI_V1DI_INT, CONVERT)
DEF_FUNCTION_TYPE_ALIAS (V16QI_FTYPE_V16QI_V16QI, CMP)
DEF_FUNCTION_TYPE_ALIAS (V2DI_FTYPE_V2DI_V2DI, CMP)
DEF_FUNCTION_TYPE_ALIAS (V4SI_FTYPE_V4SI_V4SI, CMP)
DEF_FUNCTION_TYPE_ALIAS (V8HI_FTYPE_V8HI_V8HI, CMP)
DEF_FUNCTION_TYPE_ALIAS (V16QI_FTYPE_V16QI_V16QI, TF)
DEF_FUNCTION_TYPE_ALIAS (V2DF_FTYPE_V2DF_V2DF, TF)
DEF_FUNCTION_TYPE_ALIAS (V2DI_FTYPE_V2DI_V2DI, TF)
DEF_FUNCTION_TYPE_ALIAS (V4SF_FTYPE_V4SF_V4SF, TF)
DEF_FUNCTION_TYPE_ALIAS (V4SI_FTYPE_V4SI_V4SI, TF)
DEF_FUNCTION_TYPE_ALIAS (V8HI_FTYPE_V8HI_V8HI, TF)

File diff suppressed because it is too large Load Diff

View File

@ -22,7 +22,8 @@ i386.o: $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(INSN_ATTR_H) $(FLAGS_H) $(C_COMMON_H) except.h $(FUNCTION_H) \
$(RECOG_H) $(EXPR_H) $(OPTABS_H) toplev.h $(BASIC_BLOCK_H) \
$(GGC_H) $(TARGET_H) $(TARGET_DEF_H) langhooks.h $(CGRAPH_H) \
$(TREE_GIMPLE_H) $(DWARF2_H) $(DF_H) tm-constrs.h $(PARAMS_H)
$(TREE_GIMPLE_H) $(DWARF2_H) $(DF_H) tm-constrs.h $(PARAMS_H) \
i386-builtin-types.inc
i386-c.o: $(srcdir)/config/i386/i386-c.c \
$(srcdir)/config/i386/i386-protos.h $(CONFIG_H) $(SYSTEM_H) coretypes.h \
@ -30,3 +31,11 @@ i386-c.o: $(srcdir)/config/i386/i386-c.c \
$(TARGET_H) $(TARGET_DEF_H) $(CPPLIB_H) $(C_PRAGMA_H)
$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
$(srcdir)/config/i386/i386-c.c
i386-builtin-types.inc: s-i386-bt ; @true
s-i386-bt: $(srcdir)/config/i386/i386-builtin-types.awk \
$(srcdir)/config/i386/i386-builtin-types.def
$(AWK) -f $^ > tmp-bt.inc
$(SHELL) $(srcdir)/../move-if-change tmp-bt.inc i386-builtin-types.inc
$(STAMP) $@