Commit Graph

42 Commits

Author SHA1 Message Date
florian
8cafafc3e6 + add missing instructions 2024-07-05 21:06:21 +02:00
J. Gareth "Curious Kit" Moreton
23e514621d * a64: Corrected supported shifter/extender mnemonics for arithmetic/logical instructions 2023-10-22 13:13:58 +00:00
J. Gareth "Curious Kit" Moreton
bb2e626fc3 * a64: Fixed bug where BIC instructions were treated as having 2 operands rather than 3 2023-10-22 13:13:58 +00:00
Jonas Maebe
230142e183 AArch64 cgcpu: add missing brackets around and/or expression 2022-12-03 21:17:18 +01:00
florian
67f3a7502d + Aaarch64: support adr instructions with local labels in the assembler reader
+ throw an error if an illegal instruction extension is passed as command line option
2021-11-19 22:37:47 +01:00
florian
b5c7997c88 + Aarch64: AndCmpB.E/NE2Tbnz/Tbz optimization 2021-10-02 15:46:37 +02:00
florian
2d1ebe4cb3 + re-added accidently removed internal error 2021-09-26 09:50:30 +02:00
florian
2805e44ccb * Aarch64: taicpu.spilling_get_operation_type with new instructions extended 2021-09-25 22:00:36 +02:00
Jonas Maebe
5ca1e37fb6 * AArch64: fix spilling information for BFI
git-svn-id: trunk@49312 -
2021-05-01 13:58:07 +00:00
florian
d53b17cadc + Aarch64: completed LSE support for all interlocked operations
git-svn-id: trunk@49212 -
2021-04-16 19:33:31 +00:00
Jonas Maebe
4b4ae79609 * AArch64: fixed spilling info for MOVK (part of mantis #38053)
git-svn-id: trunk@49206 -
2021-04-14 20:56:29 +00:00
florian
f3d8efc8ec * Aarch64: support LSE instructions
git-svn-id: trunk@49112 -
2021-04-03 11:30:23 +00:00
florian
2519fb1266 * patch by J. Gareth Moreton: aarch64 EXTDEBUG fixes and extensions, resolves #38383
git-svn-id: trunk@48337 -
2021-01-22 22:02:44 +00:00
florian
76406dbc36 + implement prefetch intrinsic for aarch64
git-svn-id: trunk@47526 -
2020-11-22 10:27:06 +00:00
Jonas Maebe
9376f5a43a * AArch64: added SIMD instructions (only plain ARMv8-A for now)
o added AArch64 regset parsing support in assembler reader, means that "{"
     no longer starts comments there (like in the ARM assembler reader)
   o added AArch64 indexed SIMD register support and removed old cg hacks
     that worked around its absence

git-svn-id: trunk@47116 -
2020-10-15 20:29:36 +00:00
florian
637976e83f * patch by Marģers to unify internal error numbers, resolves #37888
git-svn-id: trunk@47103 -
2020-10-13 19:59:01 +00:00
pierre
8aa844e2fe Fix compilation with -dEXTDEBUG for aarch64
git-svn-id: trunk@46690 -
2020-08-25 14:33:22 +00:00
svenbarth
5ef9a78f5f * fix for Mantis #36951: B and BL can take immediate literals as well
+ added test

git-svn-id: trunk@44999 -
2020-04-22 20:19:14 +00:00
svenbarth
1fb2d9540c * allow ADD instructions with a page offset load with either a symbol or a base register
git-svn-id: trunk@44932 -
2020-04-21 06:05:28 +00:00
Jonas Maebe
9bd33f7a45 + support for LLVM metadata constant string parameters
o they are implemented as a new metadata register class, whereby the
     subregister indicates the metadata type (currently always a string)
     and the superregister is an index in the metadata array (which
     contains the strings). LLVM metadata can only be passed as parameters
     to intrinsics in bitcode, so moves of metadata into other registers
     triggers internal errors and when moving them into parameters, we
     replace the parameter's register with the metadata register (and look
     up the corresponding string when writing out the bitcode)

git-svn-id: trunk@43816 -
2019-12-30 15:04:57 +00:00
Jonas Maebe
4deb62ad87 * fix for "ldr label" support in AArch64 assembler reader (r42988)
git-svn-id: trunk@43016 -
2019-09-15 17:26:25 +00:00
florian
bc473508ff * AArch64: several issues with taicpu.spilling_get_operation_type fixed
git-svn-id: trunk@42961 -
2019-09-08 20:53:42 +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
yury
4357caaad8 * Removed unused local vars.
git-svn-id: trunk@40183 -
2018-11-02 18:44:29 +00:00
florian
efef9125b5 * another compilation fix
git-svn-id: trunk@38211 -
2018-02-11 18:39:49 +00:00
nickysn
c8487c4150 + added individual bits of the x86 flags register as subregisters
git-svn-id: trunk@35955 -
2017-04-26 13:52:52 +00:00
Jonas Maebe
8d77de6b22 - removed InsertPData leftover from ARM copy of this file
git-svn-id: trunk@34162 -
2016-07-20 20:52:53 +00:00
Jonas Maebe
67b8aceaee * synchronized with privatetrunk till r30095
git-svn-id: branches/hlcgllvm@30101 -
2015-03-05 20:32:15 +00:00
Jonas Maebe
c41759a026 - removed a lot of unused copied internal assembler code
git-svn-id: trunk@29985 -
2015-02-23 22:57:21 +00:00
Jonas Maebe
7fc9d775df + support for @page and @pageoffs addressing on AArch64: these are PIC
references that directly take the address of a symbol, rather than
    of its GOT entry
   o use these addressing modes to access local symbols

git-svn-id: trunk@29932 -
2015-02-23 22:53:43 +00:00
Jonas Maebe
28a713494c * fixed/completed spilling_get_operation_type
+ implemented spilling_get_operation_type_ref

git-svn-id: trunk@29926 -
2015-02-23 22:53:17 +00:00
Jonas Maebe
5fff543c73 - removed unused taicpu.insoffset field
git-svn-id: trunk@29916 -
2015-02-23 22:52:45 +00:00
Jonas Maebe
71bd4e23d9 + taicpu.op_reg_reg_const_const() and taicpu.op_reg_reg_reg_cond() methods
git-svn-id: trunk@29915 -
2015-02-23 22:52:42 +00:00
Jonas Maebe
d246ababff + condition code operand for aarch64
+ taicpu.op_reg_cond() constructor
  * use this operand for cset

git-svn-id: trunk@29889 -
2015-02-23 22:51:19 +00:00
Jonas Maebe
0ce5a1de7f + IsSimpleRef() function that can be used to determine whether a reference
is a valid AArch64 memory reference or not. It returns an enum that says
    it's either valid, invalid, or invalid in a way that should trigger an
    internal error in case we created the reference ourselves (as opposed to
    it coming in via the assembler reader)

git-svn-id: trunk@29846 -
2015-02-23 22:49:07 +00:00
Jonas Maebe
84cea76f7a * ARM64 -> AArch64
git-svn-id: trunk@29845 -
2015-02-23 22:49:04 +00:00
Jonas Maebe
19d47610ad * added error checking to spilling_create_load/store
git-svn-id: trunk@29844 -
2015-02-23 22:49:01 +00:00
Jonas Maebe
92b644a19f + taicpu.op_reg_reg_const_shifterop()
* made shifterop parameter of taicpu.op_reg_reg_reg_shifterop() const

git-svn-id: trunk@29843 -
2015-02-23 22:48:58 +00:00
Jonas Maebe
544c8d34ec + taicpu.op_reg_const_shifterop() constructor
git-svn-id: trunk@29837 -
2015-02-23 22:48:40 +00:00
Jonas Maebe
fc235c9400 * fixed warnings
git-svn-id: trunk@29834 -
2015-02-23 22:48:30 +00:00
Jonas Maebe
b0ff41406a * grouped all tai_real* types into a single tai_realconst type,
to free up space for more ait_* types in taitype (can't have
    more than 32 because they have to fit in a small set)
   o factored out writing of floating point numbers as an array of
     byte in the external assemblers

git-svn-id: branches/hlcgllvm@28105 -
2014-07-01 16:29:58 +00:00
florian
5e738710d4 + initial implementation of aasmcpu unit for ARM64
git-svn-id: trunk@22910 -
2012-11-01 20:10:31 +00:00