summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* * correctly take care of short boolean evaluation when rearranging nodes ↵laksenflorian2018-09-252-7/+18
| | | | | | during CSE git-svn-id: https://svn.freepascal.org/svn/fpc/branches/laksen@39803 3ad0048d-3df7-0310-abae-a5850022a9f2
* Clean up peephole optimization code.laksen2018-09-247-84/+136
| | | | | | | Add hardfloat ABI option for RiscV. Still needs proper implementation though. Add CG support for profiling. git-svn-id: https://svn.freepascal.org/svn/fpc/branches/laksen@39798 3ad0048d-3df7-0310-abae-a5850022a9f2
* asm-generic syscalls only selectively include nr_renameat. Instead ↵laksen2018-09-222-1/+6
| | | | | | nr_renameat2 seems to be the new default. git-svn-id: https://svn.freepascal.org/svn/fpc/branches/laksen@39795 3ad0048d-3df7-0310-abae-a5850022a9f2
* Add a number of optimizations.laksen2018-09-202-1/+183
| | | | | | Don't do CSE restructuring when has full evaluation enabled. git-svn-id: https://svn.freepascal.org/svn/fpc/branches/laksen@39781 3ad0048d-3df7-0310-abae-a5850022a9f2
* Fix bug in lui+addi immediate load for spilling code.laksen2018-09-161-2/+2
| | | | git-svn-id: https://svn.freepascal.org/svn/fpc/branches/laksen@39764 3ad0048d-3df7-0310-abae-a5850022a9f2
* Redo overflow checking code.laksen2018-09-166-116/+147
| | | | | | | Fix shift operators in case of unsigned subreg operations. There should be no sign extension here. Add some unittest implementations that test stack execution and writing to readonly constants. git-svn-id: https://svn.freepascal.org/svn/fpc/branches/laksen@39762 3ad0048d-3df7-0310-abae-a5850022a9f2
* A subscript can also trigger an exception.laksen2018-09-091-1/+1
| | | | git-svn-id: https://svn.freepascal.org/svn/fpc/branches/laksen@39718 3ad0048d-3df7-0310-abae-a5850022a9f2
* Removed reuse of src and dest registers in g_concatcopy as thatlaksen2018-09-091-26/+10
| | | | | | could modify registers used for other stuff(ex. framepointer). git-svn-id: https://svn.freepascal.org/svn/fpc/branches/laksen@39717 3ad0048d-3df7-0310-abae-a5850022a9f2
* Fixed unittests that needed arch specific inline assembler.laksen2018-09-092-0/+14
| | | | git-svn-id: https://svn.freepascal.org/svn/fpc/branches/laksen@39716 3ad0048d-3df7-0310-abae-a5850022a9f2
* * cleanupflorian2018-09-071-18/+2
| | | | git-svn-id: https://svn.freepascal.org/svn/fpc/branches/laksen@39712 3ad0048d-3df7-0310-abae-a5850022a9f2
* Add rounding mode operands.laksen2018-09-015-1/+132
| | | | | | Add support for trunc and round methods. git-svn-id: https://svn.freepascal.org/svn/fpc/branches/laksen@39698 3ad0048d-3df7-0310-abae-a5850022a9f2
* Fix bugs caused by swapping of operands in float comparisons.laksen2018-09-011-5/+2
| | | | git-svn-id: https://svn.freepascal.org/svn/fpc/branches/laksen@39697 3ad0048d-3df7-0310-abae-a5850022a9f2
* argc is a longint.laksen2018-09-013-11/+11
| | | | git-svn-id: https://svn.freepascal.org/svn/fpc/branches/laksen@39696 3ad0048d-3df7-0310-abae-a5850022a9f2
* * fix SetRoundingMode on RiscV64florian2018-08-191-6/+8
| | | | git-svn-id: https://svn.freepascal.org/svn/fpc/branches/laksen@39646 3ad0048d-3df7-0310-abae-a5850022a9f2
* o fix several issues with floating point exceptionsflorian2018-08-195-15/+34
| | | | | | | | | + mask underflow and precision on startup + check for floating point exceptions after inlined float routine helpers - do not check for floating point exceptions after floating point moves git-svn-id: https://svn.freepascal.org/svn/fpc/branches/laksen@39645 3ad0048d-3df7-0310-abae-a5850022a9f2
* + couple of { %OPT=-CE } to tests addedflorian2018-08-1910-0/+10
| | | | git-svn-id: https://svn.freepascal.org/svn/fpc/branches/laksen@39641 3ad0048d-3df7-0310-abae-a5850022a9f2
* + support to generate software based floating point exception checkingflorian2018-08-193-5/+42
| | | | | | | (enabled by -CE) git-svn-id: https://svn.freepascal.org/svn/fpc/branches/laksen@39639 3ad0048d-3df7-0310-abae-a5850022a9f2
* * fixed floating point exception masking support for RiscV64florian2018-08-192-69/+106
| | | | git-svn-id: https://svn.freepascal.org/svn/fpc/branches/laksen@39638 3ad0048d-3df7-0310-abae-a5850022a9f2
* + basic infrastructure to generate code for floating point exceptionflorian2018-08-197-172/+197
| | | | | | | checking for CPUs without floating point exception support git-svn-id: https://svn.freepascal.org/svn/fpc/branches/laksen@39637 3ad0048d-3df7-0310-abae-a5850022a9f2
* Write real atomic operations, and add memory barrier operations.laksen2018-07-299-47/+322
| | | | | | | Add support for fence, and acquire/release syntax to assembler reader. Fix broken register aliases. git-svn-id: https://svn.freepascal.org/svn/fpc/branches/laksen@39524 3ad0048d-3df7-0310-abae-a5850022a9f2
* Fix missing alignment call.laksen2018-07-291-4/+6
| | | | git-svn-id: https://svn.freepascal.org/svn/fpc/branches/laksen@39523 3ad0048d-3df7-0310-abae-a5850022a9f2
* Added library search paths.laksen2018-07-296-75/+63
| | | | | | | | Removed GP and TP from allocatable registers for now. GP should not be overwritten. Ported dllprt0.as Fixed register usage in cprt0.as git-svn-id: https://svn.freepascal.org/svn/fpc/branches/laksen@39522 3ad0048d-3df7-0310-abae-a5850022a9f2
* Updated dynlinker filename.laksen2018-07-283-46/+21
| | | | | | | | Fix passing of vararg register pairs. Fix passing of big record, and return of records. Disabled framepointer elimination for the time being. git-svn-id: https://svn.freepascal.org/svn/fpc/branches/laksen@39519 3ad0048d-3df7-0310-abae-a5850022a9f2
* * integer and float registers do not overlay on Risc-Vflorian2018-07-261-5/+6
| | | | git-svn-id: https://svn.freepascal.org/svn/fpc/branches/laksen@39512 3ad0048d-3df7-0310-abae-a5850022a9f2
* * RISC-V 32 compilation fixedflorian2018-07-267-14/+103
| | | | | | | + lazarus project file for the compiler added git-svn-id: https://svn.freepascal.org/svn/fpc/branches/laksen@39511 3ad0048d-3df7-0310-abae-a5850022a9f2
* * compiled the calling convention test files by riscv64-linux-gnu-gcc ↵florian2018-07-247-0/+0
| | | | | | | | | (Ubuntu 7.3.0-16ubuntu3) 7.3.0 with -O3 git-svn-id: https://svn.freepascal.org/svn/fpc/branches/laksen@39508 3ad0048d-3df7-0310-abae-a5850022a9f2
* Regenerated utils makefiles.laksen2018-07-2321-42/+718
| | | | git-svn-id: https://svn.freepascal.org/svn/fpc/branches/laksen@39496 3ad0048d-3df7-0310-abae-a5850022a9f2
* Fixed the elfreader, so it correctly reads the riscv type.laksen2018-07-233-0/+12
| | | | | | Set the default machineflag to rvc+rvf+rvd. git-svn-id: https://svn.freepascal.org/svn/fpc/branches/laksen@39495 3ad0048d-3df7-0310-abae-a5850022a9f2
* Fixed _fini and _init references in cprt0.aslaksen2018-07-237-7/+38
| | | | | | | Add RiscV to fcl-res and fpcres. Check that constant is a valid imm12 when doing overflow checking. git-svn-id: https://svn.freepascal.org/svn/fpc/branches/laksen@39494 3ad0048d-3df7-0310-abae-a5850022a9f2
* Fixed missing maybeadjust calls after not operation.laksen2018-07-231-2/+8
| | | | git-svn-id: https://svn.freepascal.org/svn/fpc/branches/laksen@39493 3ad0048d-3df7-0310-abae-a5850022a9f2
* Changed order in stack unravelling RTL code, to match the most common cases.laksen2018-07-233-56/+60
| | | | | | | | Fixed unsigned conditions for branch conditions. Added some additional const loading cases. Changed the temporary register used during calls because it could otherwise clash with the argument passing registers. git-svn-id: https://svn.freepascal.org/svn/fpc/branches/laksen@39492 3ad0048d-3df7-0310-abae-a5850022a9f2
* * fix int to real for non-register locationsflorian2018-07-221-11/+3
| | | | git-svn-id: https://svn.freepascal.org/svn/fpc/branches/laksen@39491 3ad0048d-3df7-0310-abae-a5850022a9f2
* * generate no uleb with differences for line informationflorian2018-07-221-4/+6
| | | | git-svn-id: https://svn.freepascal.org/svn/fpc/branches/laksen@39490 3ad0048d-3df7-0310-abae-a5850022a9f2
* Fix shift operations on 32bit operands.laksen2018-07-221-2/+46
| | | | git-svn-id: https://svn.freepascal.org/svn/fpc/branches/laksen@39489 3ad0048d-3df7-0310-abae-a5850022a9f2
* * empty dummy object filesflorian2018-07-228-0/+0
| | | | git-svn-id: https://svn.freepascal.org/svn/fpc/branches/laksen@39488 3ad0048d-3df7-0310-abae-a5850022a9f2
* Added implementation of InstructionLoadsFromReg.laksen2018-07-222-9/+29
| | | | | | Fixed spilling_get_operation_type_ref, no mem operation modifies ref registers. git-svn-id: https://svn.freepascal.org/svn/fpc/branches/laksen@39487 3ad0048d-3df7-0310-abae-a5850022a9f2
* Fixed bug in peephole optimizer.laksen2018-07-222-0/+9
| | | | git-svn-id: https://svn.freepascal.org/svn/fpc/branches/laksen@39486 3ad0048d-3df7-0310-abae-a5850022a9f2
* Pass aggregates larger than 2*XLEN as a reference.laksen2018-07-223-33/+50
| | | | | | | Fix load_reg_reg and make it do proper type conversions. Added maybeadjust to tcgrv. git-svn-id: https://svn.freepascal.org/svn/fpc/branches/laksen@39485 3ad0048d-3df7-0310-abae-a5850022a9f2
* * SLTIU -> SLTUflorian2018-07-221-1/+1
| | | | git-svn-id: https://svn.freepascal.org/svn/fpc/branches/laksen@39484 3ad0048d-3df7-0310-abae-a5850022a9f2
* * might_have_sideeffects gets flags: if mhs_exceptions is passed, nodes ↵florian2018-07-222-4/+18
| | | | | | which might cause an exception are considered as having a side effect git-svn-id: https://svn.freepascal.org/svn/fpc/branches/laksen@39483 3ad0048d-3df7-0310-abae-a5850022a9f2
* * fix assembling with official binutilsflorian2018-07-223-13/+13
| | | | | | | * fix compilation on 32 bit hosts + compile with -Sew git-svn-id: https://svn.freepascal.org/svn/fpc/branches/laksen@39482 3ad0048d-3df7-0310-abae-a5850022a9f2
* Add RV64GC cpu type.laksen2018-07-2110-108/+80
| | | | | | | | | Fix float loading. Fix a number of small issues with wrong operand sizes. Fixed concatcopy code generation. Align jump table for case statements. git-svn-id: https://svn.freepascal.org/svn/fpc/branches/laksen@39481 3ad0048d-3df7-0310-abae-a5850022a9f2
* Added overflow checking in for add instructions.laksen2018-07-201-0/+124
| | | | git-svn-id: https://svn.freepascal.org/svn/fpc/branches/laksen@39479 3ad0048d-3df7-0310-abae-a5850022a9f2
* Fixed setjmp that overwrote a callee save register.laksen2018-07-209-429/+77
| | | | | | | Disable relaxation for the gp load part of the prt0 code. Fixed up some syscall definitions. git-svn-id: https://svn.freepascal.org/svn/fpc/branches/laksen@39478 3ad0048d-3df7-0310-abae-a5850022a9f2
* Regenerated makefiles.laksen2018-07-2046-767/+2892
| | | | git-svn-id: https://svn.freepascal.org/svn/fpc/branches/laksen@39476 3ad0048d-3df7-0310-abae-a5850022a9f2
* Update packages with information about RiscV.laksen2018-07-2015-2657/+3617
| | | | | | | | Fix g_external_wrapper, since it uses a register. Fixed calling of gas. Ported cprt0. git-svn-id: https://svn.freepascal.org/svn/fpc/branches/laksen@39475 3ad0048d-3df7-0310-abae-a5850022a9f2
* Added RiscV32/64 target, from a cleaned up version of ↵laksen2018-07-20136-72/+15951
| | | | | | branches/laksen/riscv/trunk. git-svn-id: https://svn.freepascal.org/svn/fpc/branches/laksen@39474 3ad0048d-3df7-0310-abae-a5850022a9f2
* New branch for RiscV work.laksen2018-07-2017397-0/+7920768
| | | | git-svn-id: https://svn.freepascal.org/svn/fpc/branches/laksen@39473 3ad0048d-3df7-0310-abae-a5850022a9f2
* Fix syscalls on RV64. Needed PC rel jump, and qword stack save.laksen2016-10-266-73/+164
| | | | | | | | Optimize RV64 entry code. Doesn't clear .bss and uses some shorter instructions forms. Add alignment requirement for linux target info. Add setjump implementation for targets with HW FPU. git-svn-id: http://svn.freepascal.org/svn/fpc/branches/laksen@34766 3ad0048d-3df7-0310-abae-a5850022a9f2
* Fix emulated floating point double negation on 64bit architectures.laksen2016-10-243-17/+28
| | | | git-svn-id: http://svn.freepascal.org/svn/fpc/branches/laksen@34765 3ad0048d-3df7-0310-abae-a5850022a9f2