Displaying 20 results from an estimated 300 matches similar to: "[LLVMdev] Assertion failed after my storeRegToStackSlot/loadFromStackSlot"
2013 Mar 04
0
[LLVMdev] Assertion failed after my storeRegToStackSlot/loadFromStackSlot
Hi Dmitriy,
As you've seen our current spill code assumes that spill/reloads are single
instructions. I think the best way to work around this is to introduce
load/store pseudo-instructions and expand these after register allocation.
Cheers,
Lang.
On Sat, Feb 23, 2013 at 12:15 AM, Dmitriy Limonov <earl at excluzive.ws> wrote:
> Hi All.
>
> I'm writing
2013 Mar 06
1
[LLVMdev] Assertion failed after my storeRegToStackSlot/loadFromStackSlot
Hi Lang.
Thank you. I added pseudo-instructions for spill/reloads and expanded it
in expandPostRAPseudo.
Regards,
Dmitriy.
04.03.2013 8:24, Lang Hames wrote:
> Hi Dmitriy,
>
> As you've seen our current spill code assumes that spill/reloads are
> single instructions. I think the best way to work around this is to
> introduce load/store pseudo-instructions and expand these
2011 Jan 25
1
[LLVMdev] Trouble with virtual registers
I'm having trouble with virtual registers/register allocation in my
back-end. Basically the FastRegAlloc pass is generating calls to
storeToStackSlot and loadFromStackSlot, in which we build new machine
instructions, which are then _not_ processed by the reg allocator. I
understand that BuildMI is changing the list of MachInst. that the allocator
is iterating over, but we need to have a new
2016 Oct 04
2
LLVM z80 backend and llvm-dis missing?
Inspired by Jason Turner's talk at CppCon 2016: Jason Turner “Rich Code
for Tiny Computers: A Simple Commodore 64 Game in C++17”
I got interested in writing a Zilog Z80 backend for LLVM. Jason actually
did no such thing, but instead wrote a x86-to-6502 translator (reassembler
he calls it) https://github.com/lefticus/x86-to-6502
So I'm now trying to bootstrap this project.
Goal:
- be
2018 Jul 10
2
Stuck with instruction in tablegen
Hi,
I'm trying to revive jacobly0's Z80 back-end (from
https://github.com/jacobly0/llvm-z80) and build it with a current
version of LLVM.
Apart from some interface changes, I'm stuck at building the tables.
Specifically, the generation of the DAG instruction selector causes an
assertion in the table generator:
Assertion failed: Ops.size() >= NumSrcResults &&
2018 Jul 10
2
Stuck with instruction in tablegen
2018 Jul 25
2
Question about target instruction optimization
Yes, such optimizations are something for the "last 20%" of the project,
nice to have's.
As of now, I have yet to get a feeling of what LLVM can do on its own,
depending on what it's from the instruction tables and where it needs
help, and how much in other processing stages.
As this affects the way how the instruction info table will be set-up, I
appreciate your suggestions
2012 Apr 25
2
[LLVMdev] LLVM Backend for Z80. ADD -> replaced -> OR
Hello.
I am playing with LLVM and trying to make Z80 (Zilog Z80) backend.
The source code is attached.
I have succesfully made some simple test. But now I have problem with ADD
instruction.
The source C code is:
typedef struct
{
unsigned char id1;
unsigned char id2;
unsigned char id3;
} testS;
void simple()
{
testS test;
test.id1 = 0x40;
test.id2 = 0x80;
test.id3 = 0xc0;
}
It
2018 Jul 18
2
Lowering SEXT (and ZEXT) efficiently on Z80
I'm working on a Z80 backend and am trying to efficiently lower SEXT,
specifically 8 to 16 bit, in LowerOperation() according to the following
rules:
The Z80 has 8 bit registers and 16 bit registers, which are aliased
versions of two 8 bit registers.
8 bit registers are named A, H, L, D, E and some more.
16 bit registers are HL (composed of H + L), DE (D + E) - and some more
- with L and
2018 Aug 06
2
Lowering ISD::TRUNCATE
I'm working on defining the instructions and implementing the lowering
code for a Z80 backend. For now, the backend supports only the native
CPU-supported datatypes, which are 8 and 16 bits wide (i.e. no 32 bit
long, float, ... yet).
So far, a lot of the simple stuff like immediate loads and return values
is very straightforward, but now I got stuck with ISD::TRUNCATE, as in:
2012 Apr 25
1
[LLVMdev] LLVM Backend for Z80. ADD -> replaced -> OR
Hello.
I have played with DataLayout and found a solution with is uknown to me.
I added S16 and also s0:16:16, but it had not worked.
Then I found that in Z80FrameLowering.h I am calling TargetFrameLowering
with stack aligment set to 8. So I changed it to 2 bytes. But this also
didn't help.
Then I changed llc to show TargetDataLayout and found that a option is set
to a0:0:64.
So I changed
2012 Apr 25
0
[LLVMdev] LLVM Backend for Z80. ADD -> replaced -> OR
Hi Peter,
I think the problem is that you did not explicitly define stack alignment
in Z80TargetMachine.cpp
DataLayout("e-p:16:8:8-i8:8:8-i16:8:8-i32:8:8-n8")
Try to add S16 to the string if your stack is 2-byte aligned. Refer to
http://llvm.org/docs/LangRef.html#datalayout .
If it does not work, try to specify the layout in the input module using
target layout directive.
David
On
2018 Jul 22
2
Finding scratch register after function call
Thanks Bruce,
and elaborately as ever. Again, I'm surprised about your very thorough
Z80 knowledge when you said you only did little on the ZX81 in the
eighties :D
OK, understood. I was first thinking about doing something like this for
small frames:
1. push bc # 1 byte; 11 cycles - part of call frame-cleanup: save
scratch register
+-----begin call-related
2. ld
2013 Feb 02
1
[LLVMdev] Trouble with instructions for lowering load/store.
Hello.
I write backend for Z80 cpu and I have some trouble with lowering
load/store nodes to different machine opcodes. Some target instructions
work with specified registers (not all registers in RegisterClass).
Often it's one or two registers. I don't understand how use
ComplexPattern in this case. But if I don't use ComplexPattern I'll have
other problems - not all
2018 Jul 22
2
Finding scratch register after function call
>It should be possible to get llvm to produce very good code for the Z80...
Yes, I was thinking that too. These techniques didn't exist back then,
so I'm really looking forward to the point where the first regular C
sources can be compiled and see the magic happening in action live :)
------------------------------------------------------------------------
*From:* Bruce Hoult
2018 Jul 21
2
Finding scratch register after function call
For a Z80 backend, "eliminateCallFramePseudoInstr()" shall adjust the
stack pointer in three possible ways, e.g. after a function call,
depending on the amount (= adjustment size) *and some other rules*:
1. via one or more target "pop <reg>" instructions (SP increments +2 per
instruction), using an unused reg (disregarding the contents after the
operation), followed
2018 Jul 25
2
Question about target instruction optimization
This is a question about optimizing the code generation in a (new) Z80
backend:
The CPU has a couple of 8 bit physical registers, e.g. H, L, D and E,
which are overlaid in 16 bit register pairs named HL and DE.
It has also a native instruction to load a 16 bit immediate value into a
16 bit register pair (HL or DE), e.g.:
LD HL,<imm16>
Now when having a sequence of loading two 16
2007 Jul 24
1
[LLVMdev] alias information on machine instructions
Dan Gohman wrote:
> I tried out your patch on x86 and it didn't appear to need any special changes.
it might be needed to look at the addressing modes of a load/store to
get the right offset. but i think it should work, if the lowering does
not rewrite loads/stores into custom DAG nodes.
> For the [??], it looks like the IsFrameIndex isn't getting set for the first
> instruction
2019 Jun 26
2
How to handle ISD::STORE when both operands are FrameIndex?
On Wed, Jun 26, 2019 at 12:38 PM Tim Northover <t.p.northover at gmail.com>
wrote:
> Hi Gleb,
>
> On Wed, 26 Jun 2019 at 07:28, Gleb Popov <6yearold at gmail.com> wrote:
> > def StoreStackF : InstRI<2, (outs), (ins IntRegs:$reg, i32imm:$i),
> > "storestackf $reg, [$i]", [(store_stack i32:$reg,
> AddrFI:$i)]>;
> >
>
2018 May 30
3
Q: Samba4 AD DC & small office file sharing
>
> Yeah you're right. The main thing to do I think is set expectations
> appropriately. e.g. for a so-and-so spec'ed machine, you can expect
> x authentications per/second and y IO operations per second
> simultaneously.
>
> Problem is, I have no idea what x and y are :-).
>
> --
Yes ,Jeremy, io is the thing people should think about most and forget about.