Commit History

Autor SHA1 Mensaxe Data
  florian bd57ca99a8 * cosmetics %!s(int64=8) %!d(string=hai) anos
  florian ea8774c18d * split the sparc code generator into a generic base class and separate classes for sparc32 and sparc64 %!s(int64=8) %!d(string=hai) anos
  florian 1f4432af6b * sparc64 compiler can be build, not working yet %!s(int64=8) %!d(string=hai) anos
  Jonas Maebe a25ebbba3e + added volatility information to all memory references %!s(int64=8) %!d(string=hai) anos
  Jonas Maebe aa1be3276f - removed default value of _typ parameter of TAsmData.(Weak)RefAsmSymbol(): %!s(int64=9) %!d(string=hai) anos
  Jonas Maebe 61e4a1b811 + added tasmlist parameter to getintparaloc() (needed for llvm) %!s(int64=10) %!d(string=hai) anos
  Jonas Maebe b745dcc64c * moved g_external_wrapper() to the hlcg, and also g_intf_wrapper() because %!s(int64=11) %!d(string=hai) anos
  sergei e4fea2ebc8 * Dummy implementations of a_bit_scan_reg_reg and g_stackpointer_alloc in tcg, removes the need to override these methods in every descendant code generator solely to avoid "constructing a class with abstract method" warning. %!s(int64=11) %!d(string=hai) anos
  sergei 77d97303a9 * SPARC: cleanup and simplify 64-bit code generator. Call cg.a_op64_const_reg_reg where possible to make use of its optimization abilities. %!s(int64=11) %!d(string=hai) anos
  sergei 51f6092672 * SPARC: OP_NOT can always be done in 32 bits, because for 8 and 16-bit operations the high bits of result are adjusted immediately afterwards. %!s(int64=11) %!d(string=hai) anos
  sergei f20b6c73ef * SPARC: convert carry flag into register without branching. %!s(int64=11) %!d(string=hai) anos
  sergei f3801d13de * SPARC: cleaned up and actualized TAsmCond (stuff copy-pasted from x86 removed, conditions for unordered floating-point comparisons added). Fixes Mantis #9362 on this target. %!s(int64=11) %!d(string=hai) anos
  sergei 534ecbda9f * SPARC: r26561 caused a_op_const_reg_reg used for zero-extending 8-bit values to be optimized away. Fixed by replacing it with an explicit instruction. %!s(int64=11) %!d(string=hai) anos
  nickysn 85dd9e5789 + added a size parameter to optimize_op_const and do a sign extension of the 'a' parameter up from the specified size, so that things like (i and $ffffffff) get optimized away the same way as (i and -1) %!s(int64=11) %!d(string=hai) anos
  sergei 4168388235 + SPARC: support 8 and 16-bit arithmetic shifts. %!s(int64=11) %!d(string=hai) anos
  sergei 63c1a05718 * SPARC: Removed hacks with g1_used that were used for g_intf_wrapper to be operational without initialized reg.allocator, and replaced them with a proper solution (which is basically a clone from MIPS cg). %!s(int64=11) %!d(string=hai) anos
  sergei 05489d6e05 * SPARC: fixed g_intf_wrapper for non-virtual methods once again, my initial assumption was not correct: a wrapper does not necessarily reference methods from the class that implements the interface, it may be methods from parent classes, which can be located arbitrarily far away in address space. %!s(int64=11) %!d(string=hai) anos
  sergei bf94257310 * SPARC: simplified and fixed a_load_const_reg method, was generating redundant instructions for constants with non-zero bits 10..12. %!s(int64=11) %!d(string=hai) anos
  sergei f8a60522d4 - SPARC: removed 3 code generator methods, they provide no difference in generated code from generic code generator. %!s(int64=11) %!d(string=hai) anos
  sergei 176d8434e4 * SPARC: completely rewrote PIC-related code, got it twice shorter in source lines and much less instructions in generated code. %!s(int64=11) %!d(string=hai) anos
  sergei eaba90dda7 * SPARC: since peephole optimizer recognizes only one conditional branching instruction, generate all branches using A_Bxx opcode, and change it to A_FBxx if necessary when writing assembler. This enables optimization of floating-point branches. %!s(int64=11) %!d(string=hai) anos
  sergei 890d757573 + SPARC: override g_external_wrapper method and emit PIC-safe jump without distance limit. Mantis #25455. %!s(int64=11) %!d(string=hai) anos
  sergei e6a9bfdc1d * SPARC, g_concatcopy and g_concatcopy_unaligned: removed strange (probably long outdated) comments and unnecessary operations. %!s(int64=11) %!d(string=hai) anos
  sergei 03fb83cc01 * SPARC: fixed PIC interface wrappers for non-virtual methods. The fix uses branching with 8 MB distance limit, but in particular case of interface wrappers this limit applies to code size of a single unit, not to entire program, and is therefore hard enough to reach. %!s(int64=11) %!d(string=hai) anos
  sergei 65d24e000f * SPARC: generate PIC prologue as recommended by ABI, it does not require FPC_GETGOT helper. %!s(int64=11) %!d(string=hai) anos
  sergei 5ccdfcf106 * SPARC: optimized a_op_const_reg and a_op_const_reg_reg, take advantage of optimize_op_const functionality. %!s(int64=11) %!d(string=hai) anos
  sergei c3fe0c7379 * On SPARC, using shifts for zero-extending to OS_16 is more efficient than ANDing with 65535 (two instructions and no temp registers vs. three instructions and a temp register). %!s(int64=11) %!d(string=hai) anos
  florian 4d5119bf1c * fixes several issues which cause warnings by the dfa code when using it to detect uninitialized variables %!s(int64=11) %!d(string=hai) anos
  paul 51825b6f2e compiler: change ret_in_param to accept tabstractprocdef instead of tproccalloption to allow check more options (required for record constructor implementation) %!s(int64=12) %!d(string=hai) anos
  Jonas Maebe 69c29a415f * pass the procdef to getintparaloc instead of only the proccalloption, so %!s(int64=12) %!d(string=hai) anos