Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Xtensa patches (15.x) (Do not merge, PR created for easier review only) #62

Closed
wants to merge 150 commits into from

Conversation

gerekon
Copy link
Collaborator

@gerekon gerekon commented Sep 25, 2022

No description provided.

Add Xtensa.td, XtensaInstrInfo.td etc. Currently add just part of Core
Instructions like ALU, processor control, memory barrier and some move
instructions. Add instructions formats and basic registers.
Add instruction printer and basic tests of the
Xtensa instructions.
Add td descriptions of the Xtensa shift/load/store instructions.
Add relocations and fixups support in object files generation.
Modify tests to support new instructions. Add tests for relocations
and fixups.
Initial codegen support for simple ALU operations.
Lower ConstantPool, GlobalAddress, BlockAddress and JumpTable.
Implement lowering of External and JumpTable symbols to MCInst
representation.
Implement lowering of dynamic_stackalloc,
stacksave, stackrestore.
Also lower SHL, SRA, SRL with register operands.
Implement load unsigned 8-bit pseudo operation. Implement
extending loads patterns extloadi1/i8/i16.
Add support for llvm.{frameaddress,returnaddress} intrinsics.
Implement volatile load/store from/to volatile memory location.
gerekon and others added 23 commits September 13, 2022 13:22
- Forces 128bit arguments to have 128bit alignment as per the Xtensa ABI
  in LLVM & Clang.
- Adds a check in the Xtensa calling convention to ensure 128bit aligned
  arguments are always passed as the first argument _or_ passed via the
  stack.
Fix register liveness in emitAtomicRMW function.
If block with LOOPEND instruction has smaller offset then loop heeader block
then try to find appropriate place for LOOPEND instruction after
loop header
For large mcmodel always emit contsant pool just before code.
Create block and insert it before loop end address as
target for jump/branch instruction to avoid premature
exit from loop.
The constant islands pass is always executed for large code model.
Also currently is disabled support of the hardware loops for large code model, need to
add support for hwloops in constant islands pass in future.
Disable hwloop by default and fix hwloop tests.
Add different diagnotstics messages for different branch
relocations fixups.
@gerekon
Copy link
Collaborator Author

gerekon commented Apr 26, 2023

Close in favor of #67

@gerekon gerekon closed this Apr 26, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants