This is the mail archive of the gcc-cvs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

r242220 - in /branches/ARM/sve-branch/gcc: conf...


Author: rsandifo
Date: Fri Nov 11 17:21:26 2016
New Revision: 242220

URL: https://gcc.gnu.org/viewcvs?rev=242220&root=gcc&view=rev
Log:
Add poly-int.h

This patch adds a new class to represent polynomail integers
of the form:

  C0 + C1*X1 + C2*X2 ... + Cn*Xn

It also adds typedefs for polynomial integers that represent
offsets and sizes of various precisions.  In these typedefs, the Ci
coefficients are compile-time constants and the Xi indeterminates
are run-time invariants.  The number of coefficients is controlled
by the target and is initially 1 for all ports.

The implementation of some routines only handle the cases N==1
and N==2.  Support for other coefficient counts can be added
when needed.  Since the core arithmetic operations are heavily
used, and since the routines just mentioned don't support N>2,
the file unrolls the implementation of these core operations
and makes them ALWAYS_INLINE, to reduce the compile-time impact
when GCC is built at -O0.

The patch also adds a new macro, TARGET_C_FILE, that can be
set to indicate that a TU contains target-specific rather
than target-independent code.  When this macro is set and
the number of coefficients is 1, the polynomial integer
class defines a conversion operator to a constant.  This
allows most existing target code to work without modification.
The only exception is usually in ?: expressions, in cases
where one arm ends up being a polynomial and the other
remains a constant.  In these cases it would be valid to
convert the constant to a polynomial and the polynomial
to a constant, so the type is ambiguous and the expression
ill-formed.  Casts are added by later patches as necessary.

The patch also adds a new target hook to return the estimated
value of a polynomial integer for costing purposes.

Added:
    branches/ARM/sve-branch/gcc/poly-int-types.h
    branches/ARM/sve-branch/gcc/poly-int.h
Modified:
    branches/ARM/sve-branch/gcc/config/aarch64/aarch64-builtins.c
    branches/ARM/sve-branch/gcc/config/aarch64/aarch64-c.c
    branches/ARM/sve-branch/gcc/config/aarch64/aarch64.c
    branches/ARM/sve-branch/gcc/config/aarch64/cortex-a57-fma-steering.c
    branches/ARM/sve-branch/gcc/config/aarch64/driver-aarch64.c
    branches/ARM/sve-branch/gcc/config/alpha/alpha.c
    branches/ARM/sve-branch/gcc/config/alpha/driver-alpha.c
    branches/ARM/sve-branch/gcc/config/arc/arc.c
    branches/ARM/sve-branch/gcc/config/arm/aarch-common.c
    branches/ARM/sve-branch/gcc/config/arm/arm-builtins.c
    branches/ARM/sve-branch/gcc/config/arm/arm-c.c
    branches/ARM/sve-branch/gcc/config/arm/arm.c
    branches/ARM/sve-branch/gcc/config/arm/driver-arm.c
    branches/ARM/sve-branch/gcc/config/avr/avr-c.c
    branches/ARM/sve-branch/gcc/config/avr/avr-devices.c
    branches/ARM/sve-branch/gcc/config/avr/avr-log.c
    branches/ARM/sve-branch/gcc/config/avr/avr.c
    branches/ARM/sve-branch/gcc/config/avr/driver-avr.c
    branches/ARM/sve-branch/gcc/config/avr/gen-avr-mmcu-specs.c
    branches/ARM/sve-branch/gcc/config/bfin/bfin.c
    branches/ARM/sve-branch/gcc/config/c6x/c6x.c
    branches/ARM/sve-branch/gcc/config/cr16/cr16.c
    branches/ARM/sve-branch/gcc/config/cris/cris.c
    branches/ARM/sve-branch/gcc/config/darwin.c
    branches/ARM/sve-branch/gcc/config/epiphany/epiphany.c
    branches/ARM/sve-branch/gcc/config/epiphany/mode-switch-use.c
    branches/ARM/sve-branch/gcc/config/epiphany/resolve-sw-modes.c
    branches/ARM/sve-branch/gcc/config/fr30/fr30.c
    branches/ARM/sve-branch/gcc/config/frv/frv.c
    branches/ARM/sve-branch/gcc/config/ft32/ft32.c
    branches/ARM/sve-branch/gcc/config/h8300/h8300.c
    branches/ARM/sve-branch/gcc/config/i386/djgpp.c
    branches/ARM/sve-branch/gcc/config/i386/driver-i386.c
    branches/ARM/sve-branch/gcc/config/i386/host-cygwin.c
    branches/ARM/sve-branch/gcc/config/i386/host-i386-darwin.c
    branches/ARM/sve-branch/gcc/config/i386/host-mingw32.c
    branches/ARM/sve-branch/gcc/config/i386/i386-c.c
    branches/ARM/sve-branch/gcc/config/i386/i386.c
    branches/ARM/sve-branch/gcc/config/i386/intelmic-mkoffload.c
    branches/ARM/sve-branch/gcc/config/i386/msformat-c.c
    branches/ARM/sve-branch/gcc/config/i386/winnt-cxx.c
    branches/ARM/sve-branch/gcc/config/i386/winnt-stubs.c
    branches/ARM/sve-branch/gcc/config/i386/winnt.c
    branches/ARM/sve-branch/gcc/config/ia64/ia64-c.c
    branches/ARM/sve-branch/gcc/config/ia64/ia64.c
    branches/ARM/sve-branch/gcc/config/iq2000/iq2000.c
    branches/ARM/sve-branch/gcc/config/lm32/lm32.c
    branches/ARM/sve-branch/gcc/config/m32c/m32c-pragma.c
    branches/ARM/sve-branch/gcc/config/m32c/m32c.c
    branches/ARM/sve-branch/gcc/config/m32r/m32r.c
    branches/ARM/sve-branch/gcc/config/m68k/m68k.c
    branches/ARM/sve-branch/gcc/config/mcore/mcore.c
    branches/ARM/sve-branch/gcc/config/microblaze/microblaze-c.c
    branches/ARM/sve-branch/gcc/config/microblaze/microblaze.c
    branches/ARM/sve-branch/gcc/config/mips/driver-native.c
    branches/ARM/sve-branch/gcc/config/mips/frame-header-opt.c
    branches/ARM/sve-branch/gcc/config/mips/mips.c
    branches/ARM/sve-branch/gcc/config/mmix/mmix.c
    branches/ARM/sve-branch/gcc/config/mn10300/mn10300.c
    branches/ARM/sve-branch/gcc/config/moxie/moxie.c
    branches/ARM/sve-branch/gcc/config/msp430/driver-msp430.c
    branches/ARM/sve-branch/gcc/config/msp430/msp430-c.c
    branches/ARM/sve-branch/gcc/config/msp430/msp430.c
    branches/ARM/sve-branch/gcc/config/nds32/nds32-cost.c
    branches/ARM/sve-branch/gcc/config/nds32/nds32-fp-as-gp.c
    branches/ARM/sve-branch/gcc/config/nds32/nds32-intrinsic.c
    branches/ARM/sve-branch/gcc/config/nds32/nds32-isr.c
    branches/ARM/sve-branch/gcc/config/nds32/nds32-md-auxiliary.c
    branches/ARM/sve-branch/gcc/config/nds32/nds32-memory-manipulation.c
    branches/ARM/sve-branch/gcc/config/nds32/nds32-pipelines-auxiliary.c
    branches/ARM/sve-branch/gcc/config/nds32/nds32-predicates.c
    branches/ARM/sve-branch/gcc/config/nds32/nds32.c
    branches/ARM/sve-branch/gcc/config/nios2/nios2.c
    branches/ARM/sve-branch/gcc/config/nvptx/mkoffload.c
    branches/ARM/sve-branch/gcc/config/nvptx/nvptx.c
    branches/ARM/sve-branch/gcc/config/pa/pa.c
    branches/ARM/sve-branch/gcc/config/pdp11/pdp11.c
    branches/ARM/sve-branch/gcc/config/rl78/rl78-c.c
    branches/ARM/sve-branch/gcc/config/rl78/rl78.c
    branches/ARM/sve-branch/gcc/config/rs6000/driver-rs6000.c
    branches/ARM/sve-branch/gcc/config/rs6000/host-darwin.c
    branches/ARM/sve-branch/gcc/config/rs6000/host-ppc64-darwin.c
    branches/ARM/sve-branch/gcc/config/rs6000/rs6000-c.c
    branches/ARM/sve-branch/gcc/config/rs6000/rs6000-linux.c
    branches/ARM/sve-branch/gcc/config/rs6000/rs6000.c
    branches/ARM/sve-branch/gcc/config/rx/rx.c
    branches/ARM/sve-branch/gcc/config/s390/driver-native.c
    branches/ARM/sve-branch/gcc/config/s390/s390-c.c
    branches/ARM/sve-branch/gcc/config/s390/s390.c
    branches/ARM/sve-branch/gcc/config/sh/sh-c.c
    branches/ARM/sve-branch/gcc/config/sh/sh.c
    branches/ARM/sve-branch/gcc/config/sparc/driver-sparc.c
    branches/ARM/sve-branch/gcc/config/sparc/sparc-c.c
    branches/ARM/sve-branch/gcc/config/sparc/sparc.c
    branches/ARM/sve-branch/gcc/config/spu/spu-c.c
    branches/ARM/sve-branch/gcc/config/spu/spu.c
    branches/ARM/sve-branch/gcc/config/stormy16/stormy16.c
    branches/ARM/sve-branch/gcc/config/tilegx/mul-tables.c
    branches/ARM/sve-branch/gcc/config/tilegx/tilegx-c.c
    branches/ARM/sve-branch/gcc/config/tilegx/tilegx.c
    branches/ARM/sve-branch/gcc/config/tilepro/mul-tables.c
    branches/ARM/sve-branch/gcc/config/tilepro/tilepro-c.c
    branches/ARM/sve-branch/gcc/config/tilepro/tilepro.c
    branches/ARM/sve-branch/gcc/config/v850/v850-c.c
    branches/ARM/sve-branch/gcc/config/v850/v850.c
    branches/ARM/sve-branch/gcc/config/vax/vax.c
    branches/ARM/sve-branch/gcc/config/visium/visium.c
    branches/ARM/sve-branch/gcc/config/vms/vms-c.c
    branches/ARM/sve-branch/gcc/config/vms/vms-f.c
    branches/ARM/sve-branch/gcc/config/vms/vms.c
    branches/ARM/sve-branch/gcc/config/xtensa/xtensa.c
    branches/ARM/sve-branch/gcc/coretypes.h
    branches/ARM/sve-branch/gcc/doc/tm.texi
    branches/ARM/sve-branch/gcc/doc/tm.texi.in
    branches/ARM/sve-branch/gcc/genattrtab.c
    branches/ARM/sve-branch/gcc/genautomata.c
    branches/ARM/sve-branch/gcc/genconditions.c
    branches/ARM/sve-branch/gcc/genemit.c
    branches/ARM/sve-branch/gcc/genextract.c
    branches/ARM/sve-branch/gcc/genmodes.c
    branches/ARM/sve-branch/gcc/genopinit.c
    branches/ARM/sve-branch/gcc/genoutput.c
    branches/ARM/sve-branch/gcc/genpeep.c
    branches/ARM/sve-branch/gcc/genpreds.c
    branches/ARM/sve-branch/gcc/genrecog.c
    branches/ARM/sve-branch/gcc/machmode.h
    branches/ARM/sve-branch/gcc/target.def
    branches/ARM/sve-branch/gcc/target.h
    branches/ARM/sve-branch/gcc/targhooks.c
    branches/ARM/sve-branch/gcc/targhooks.h
    branches/ARM/sve-branch/gcc/wide-int.h


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]