Commit Graph

135 Commits

Author SHA1 Message Date
florian
e1e8986462 * patch by J. Gareth Moreton, issue #36271, part 3: support for the other architectures
git-svn-id: trunk@43441 -
2019-11-10 16:11:40 +00:00
florian
69786ffe73 somehow committing went wrong, second part of last commit:
+ AArch64: support for vX.8b/vX.16b register names
+ support for more than 256 registers in the register dat files
- removed totherregisterset
+ AArch64: use vmov to load immediates if possible
+ AArch64: use eor to clear mm registers

git-svn-id: trunk@42917 -
2019-09-03 21:07:33 +00:00
Jonas Maebe
1b6425176b * synchronised with trunk till r42049
git-svn-id: branches/debug_eh@42050 -
2019-05-12 18:44:05 +00:00
Jonas Maebe
281b3ad276 * fix case completeness and unreachable code warnings in compiler that would
be introduced by the next commit

git-svn-id: trunk@42046 -
2019-05-12 14:29:03 +00:00
Jonas Maebe
8555ec1438 + fpc_eh_return_data_regno() intrinsic to get the return register numbers
for the Dwarf EH exception handler result

git-svn-id: branches/debug_eh@40070 -
2018-10-28 18:16:38 +00:00
pierre
92acd38f40 Fix for bug report #34380
git-svn-id: trunk@39986 -
2018-10-18 20:21:54 +00:00
nickysn
518cdf9674 * replaced the saved_XXX_registers arrays with virtual methods inside
tcpuparamanager, very similar to the existing get_volatile_registers_XXX. The
  new methods are called get_saved_registers_XXX, where XXX is the register
  type ("int", "address", "fpu" or "mm")

git-svn-id: trunk@38794 -
2018-04-19 21:22:16 +00:00
Jonas Maebe
33ed32b024 * when targeting the ELFv2 ABI, don't reserve space for the (never used)
words in the linkage area reserved for use by the compiler and linker

git-svn-id: trunk@30206 -
2015-03-14 18:35:56 +00:00
Jonas Maebe
fc21845686 * fixed the allocation of R12 on ppc32/ppc64 when used to hold the value of
the stack pointer during the prolog. This was done previously in
    tcg.g_proc_entry(), but that routine is called after register allocation
    and hence has no influence. Also cleaned up the deallocation of that
    register by moving the previously ifdef'd code to thlcgppcgen
    (mantis #27634)

git-svn-id: trunk@30164 -
2015-03-11 17:49:44 +00:00
sergei
5fe27ae815 * powerpc/powerpc64: Fixed floating point compares to be IEEE-754 compliant. Mantis #9362.
git-svn-id: trunk@27604 -
2014-04-19 19:54:24 +00:00
sergei
af52c874d0 - Removed some stuff that is not used anywhere.
git-svn-id: trunk@27595 -
2014-04-18 18:34:53 +00:00
svenbarth
c48d572996 Implement support for saving and restoring address registers.
cgobj.pas, tcg:
  * g_save_registers: add the amount of used address registers to size as well
  * g_save_registers: save all used address registers
  * g_restore_registers: restore all stored address registers
m68k/cpubase.pas:
  * rename saved_standard_address_registers to saved_address_registers
all other platform's cpubase.{inc,pas} (except alpha, ia64 and vis which are not up to date):
  * add a saved_address_registers variable with one entry of RS_INVALID

At least a "make fullcycle" did complete.

git-svn-id: trunk@25664 -
2013-10-05 21:43:42 +00:00
masta
e327b4581c Use TRegNameTable instead of array[tregisterindex] of string[10]
TRegNameTable is defined in compiler/rgbase.pas and is an array of
strings, limited to the maximum length of the used register names.

r22792 added a long register name but did not scale the string-size
enough, resulting in the compiler built breaking for arm.

git-svn-id: trunk@22817 -
2012-10-22 10:23:21 +00:00
Jeppe Johansen
0087661fb5 Added FPv4_d16 FPU instructions, and a few extra registers
git-svn-id: branches/laksen/arm-embedded@22596 -
2012-10-08 20:04:14 +00:00
florian
4dee21c60e + NR_DEFAULTFLAGS and RS_DEFAULTFLAGS for all CPUs with flags added
git-svn-id: trunk@22181 -
2012-08-22 19:38:27 +00:00
Jonas Maebe
708a2532fc * consistently define empty saved_mm_registers arrays as containing a single
RS_INVALID superregister (instead of sometimes RS_NO and sometimes
    RS_INVALID)
  * check for RS_INVALID in tcg.g_save_registers() and ignore such entries

git-svn-id: trunk@21622 -
2012-06-15 18:24:25 +00:00
Jonas Maebe
df99ef17b6 + mfpvr, mfdcr, mtdcr, mfdec and mtdec opcodes (mantis #18878)
git-svn-id: trunk@21500 -
2012-06-06 18:17:55 +00:00
Jonas Maebe
85a3fd3357 + ossinttype/osuinttype defs that correspond to OS_SINT/OS_INT for use in
the high level code generator

git-svn-id: trunk@21279 -
2012-05-12 16:03:15 +00:00
Jonas Maebe
23df85e52a * initialize dirhint field of created tasmconds
git-svn-id: trunk@20800 -
2012-04-11 18:01:49 +00:00
Jonas Maebe
4123df9cb8 * moved g_external_wrapper() code from powerpc64/cgcpu to ppcgen/cgppc,
made it 32/64 bit neutral and adjusted it so it can be used for
   linux/ppc64, aix/ppc and aix/ppc64

git-svn-id: trunk@20795 -
2012-04-11 18:01:14 +00:00
Jonas Maebe
34c985cfa6 * added register type parameter to cgsize2subreg(), as the subreg can
depend on that (and correct a number of cases where this was wrong)
  * set the correct subreg type for xmm x86_64 parameter registers
    (resolved mantis #14067)

git-svn-id: trunk@13410 -
2009-07-19 13:57:23 +00:00
yury
491f0fa1d8 * Replaced all user defined warnings by TODO comments to reduce compiler noise.
git-svn-id: trunk@11443 -
2008-07-23 11:00:03 +00:00
Jonas Maebe
417b5dcfda + internal round/trunc support for ppc970 using fctid/fctidz
* a_fctw_ -> a_fctiw_

git-svn-id: trunk@10367 -
2008-02-20 11:49:15 +00:00
florian
00d6a03b2c + default code now preserves mm registers
* save|restore_standard_registers => save|restore_registers

git-svn-id: trunk@8954 -
2007-10-27 12:02:28 +00:00
Jonas Maebe
d7c4fdbed5 * added maxfpuregs constant to fix compilation after r8655
git-svn-id: trunk@8658 -
2007-09-26 22:00:29 +00:00
tom_at_work
2d1f9b20a3 * merged trefaddr.addr_lo/addr_hi with trefaddr.addr_low/addr.high; some related bugfixing/cleanup
git-svn-id: trunk@7983 -
2007-07-08 20:50:58 +00:00
pierre
922761915b + CondAsmOptStr added for IDE
git-svn-id: trunk@7144 -
2007-04-20 15:23:37 +00:00
Jonas Maebe
34b3a14ffc * fixed typo in opcode tables (hbrx -> lhbrx)
git-svn-id: trunk@7143 -
2007-04-20 15:14:40 +00:00
Jonas Maebe
359c19ee9e - removed ppc601 as ppc32 cpu target
+ added ppc740 (g3), ppc7400 (G4) and ppc970 (G5) as ppc32 cpu
    targets
  * initialise optimizecputype by default to ppc7400 for ppc32 and to
    ppc970 for ppc64
  * merged ppc32/ppc64 overflow checking code and use the ppc64 one
    in case cputype or optimizecputype >= ppc970, because one of
    the instructions used in the ppc32 version no longer exists on the
    ppc970 (although it's emulated in the kernel on at least Mac OS X)
  * moved some other support routines and constants to ppcgen which
    were needed for the overflow checking (were identical for ppc32 and
    ppc64) 

git-svn-id: trunk@6323 -
2007-02-03 19:32:44 +00:00
Jonas Maebe
d379417ca4 * fixed reg_cgsize
git-svn-id: trunk@4760 -
2006-09-30 21:43:10 +00:00
Jonas Maebe
90cacb4cf5 * changed result type of dwarf_reg from byte to shortint to avoid
warning about comparison which can never be true

git-svn-id: trunk@4183 -
2006-07-14 17:25:16 +00:00
peter
870be04a3f * use dwarf_reg()
git-svn-id: trunk@3046 -
2006-03-26 20:15:32 +00:00
tom_at_work
3645a69686 * added mftbu (move from timebase upper) opcode
git-svn-id: trunk@1596 -
2005-10-25 20:45:05 +00:00
Jonas Maebe
339f76182b + missing rlwnm. and not. instructions
git-svn-id: trunk@1360 -
2005-10-12 19:44:34 +00:00
florian
804207239d *c <int64>:=-<longint> fixed (bug 4253)
git-svn-id: trunk@796 -
2005-08-05 19:00:30 +00:00
Jonas Maebe
af3f851751 * rgBase -> rgbase to avoid unnecessary recompiles on case-preserving/
insensitive filesystems

git-svn-id: trunk@405 -
2005-06-14 17:36:56 +00:00
fpc
790a4fe2d3 * log and id tags removed
git-svn-id: trunk@42 -
2005-05-21 09:42:41 +00:00
fpc
50778076c3 initial import
git-svn-id: trunk@1 -
2005-05-16 18:37:41 +00:00
Jonas Maebe
ec959955bd * fixed generic jumps optimizer and enabled it for ppc (the label table
was not being initialised -> getfinaldestination always failed, which
    caused wrong optimizations in some cases)
  * changed the inverse_cond into a function, because tasmcond is a record
    on ppc
  + added a compare_conditions() function for the same reason
2005-02-26 01:26:59 +00:00
Jonas Maebe
0e4f1738cd - removed a non-existing instruction (lcrxe)
* fixed an instruction (maffs_ -> mffs)
2005-02-18 23:05:47 +00:00
peter
e417e34496 * truncate log 2005-02-14 17:13:06 +00:00
peter
04c97cc129 * load jmp_buf_size from system unit 2005-01-20 16:38:45 +00:00
Jonas Maebe
e0eb172f4b - removed deprecated constants 2005-01-10 21:48:45 +00:00
olle
3f7fdcb45e * fixed compilation for PowerPC 2004-12-28 02:25:43 +00:00
peter
c95a859f0a * generic tlocation
* move tlocation to cgutils
2004-10-31 21:45:02 +00:00
Jonas Maebe
0a32b9a526 * fixed tlocation record again for big endian
* fixed (currently unused) saved_standard_registers array
2004-10-26 18:22:04 +00:00
peter
d19663f3a8 * save standard registers moved to tcgobj 2004-10-25 15:36:47 +00:00
florian
8a9758c5e2 * logs truncated 2004-06-20 08:55:28 +00:00
peter
54cb433625 * powerpc compiles again 2004-06-17 16:55:46 +00:00
florian
588e2c38bf * dwarf branch merged 2004-06-16 20:07:06 +00:00