Commit Graph

30 Commits

Author SHA1 Message Date
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
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
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
32e06e7a7a * fixed memory leaks in ppc peephole optimizer
git-svn-id: trunk@5569 -
2006-12-11 15:53:30 +00:00
Jonas Maebe
d26ee9dccf * fixed overflow errors
git-svn-id: trunk@5318 -
2006-11-10 21:14:37 +00:00
Jonas Maebe
e08aa358fb * removed stb from calculation_target_op0 (stb does not calculate a value
to store in operand 0)

git-svn-id: trunk@4269 -
2006-07-20 22:38:26 +00:00
Jonas Maebe
ef16df72da * some optimizations for code generated for
"(x and power_of_two_const) <>/= 0)"

git-svn-id: trunk@4159 -
2006-07-13 17:48:41 +00:00
Jonas Maebe
bc96cd8008 + more rlwinm optimizations
git-svn-id: trunk@3823 -
2006-06-08 09:48:08 +00:00
tom_at_work
c5cbdda62e * fixed generation of ANDI and ANDIS instructions in the optimizer, properly casting the immediate parameter to an unsigned integer
git-svn-id: trunk@3800 -
2006-06-04 21:16:10 +00:00
Jonas Maebe
488d8ae766 * improved support for merging two consecutive rlwinm's (now also works
if both perform a rotation)

git-svn-id: trunk@3759 -
2006-05-31 20:25:39 +00:00
Jonas Maebe
67dc63048c * fixed and enhanced rlwinm optimizations somewhat
git-svn-id: trunk@3555 -
2006-05-17 19:04:31 +00:00
peter
b7fe6797bf Merged revisions 2921-2922,2925 via svnmerge from
http://svn.freepascal.org/svn/fpc/branches/linker/compiler

........
r2921 | peter | 2006-03-15 08:35:00 +0100 (Wed, 15 Mar 2006) | 2 lines

  * pass ObjectWriter to ObjectOuput

........
r2922 | peter | 2006-03-15 12:40:30 +0100 (Wed, 15 Mar 2006) | 2 lines

  * refactor asmdata

........
r2925 | peter | 2006-03-15 16:09:39 +0100 (Wed, 15 Mar 2006) | 3 lines

  * add cfi to asmdata
  * move asmlist, asmcfi, asmdata to own unit

........

git-svn-id: trunk@2932 -
2006-03-16 08:52:22 +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
b458554f5b + some optimizations for comparisons with zero whereby the result has to
go to a register

git-svn-id: trunk@1379 -
2005-10-15 11:09:44 +00:00
Jonas Maebe
4558cd705e + optimize some slwi/rlwinm combos
git-svn-id: trunk@1378 -
2005-10-14 21:03:48 +00:00
Jonas Maebe
9cf0865d0e * remove a number of superfluous register moves
git-svn-id: trunk@1377 -
2005-10-14 20:34:53 +00:00
Jonas Maebe
e14d8e6611 * don't replace cmplwi's with flag-setting variants of integer operations,
as the latter perform a signed comparison with 0

git-svn-id: trunk@1365 -
2005-10-13 07:49:02 +00:00
Jonas Maebe
cd3f064a33 + enabled postpeepholeopts phase
+ optimize "integer op" followed by comparison of target register with zero
    to a variant of that integer op which sets the flags (ppc)
  + change rlwinm. instructions which do nothing but an "and" operation into
    andi./andis., since the rlwinm. is cracked on the G5 while andi./andis.
    isn't

git-svn-id: trunk@1361 -
2005-10-12 19:47:21 +00:00
Jonas Maebe
42e49ccd90 + srwi followed by slwi optimized
+ srwi followed by certain rlwinm's optimized

git-svn-id: trunk@1351 -
2005-10-10 20:43:23 +00:00
Jonas Maebe
cd93450fd6 * fixed a few bugs in yesterday's optimization
git-svn-id: trunk@1322 -
2005-10-08 11:37:18 +00:00
Jonas Maebe
ab3bc45fa4 * cpu-specific overrides of optimizer methods now get called
+ first simple rlwinm optimization for ppc

git-svn-id: trunk@1320 -
2005-10-07 21:44:00 +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
peter
e417e34496 * truncate log 2005-02-14 17:13:06 +00:00
florian
8a9758c5e2 * logs truncated 2004-06-20 08:55:28 +00:00
peter
06ebac4e27 * readded missing revisions 2002-05-18 13:34:04 +00:00
carl
21b3a10f02 + defines.inc -> fpcdefs.inc to avoid conflicts if compiling by hand
+ try to fix temp allocation (still in ifdef)
+ generic constructor calls
+ start of tassembler / tmodulebase class cleanup
2002-05-16 19:46:34 +00:00
peter
2992e1819c * removed old logs and updated copyright year 2002-05-14 19:34:38 +00:00
florian
525be77ced * some cg reorganisation
* some PPC updates
2001-08-26 13:29:33 +00:00