Displaying 20 results from an estimated 50000 matches similar to: "[LLVMdev] forcing two instructions to be together"
2013 Sep 18
0
[LLVMdev] forcing two instructions to be together
On 09/17/2013 04:51 PM, Micah Villmow wrote:
> Reed,
> Couldn't you also use instruction scheduling classes and specify that the second instruction has a bypass from the first instruction? The scheduler should always schedule them together in that case.
>
> Micah
>
I'm not sure exactly what you mean.
Can you point me to an example of that?
TIA.
Reed
>>
2013 Sep 18
0
[LLVMdev] forcing two instructions to be together
That doesn't actually give you a guarantee that they won't be split up. Phases other than the scheduler may insert instructions in the middle of block (constant island pass, for example). Pseudo-instructions are the canonical answer to that problem.
--Owen
On Sep 17, 2013, at 11:09 PM, Micah Villmow <micah.villmow at smachines.com> wrote:
> I used the A9 schedule as an
2013 Sep 17
0
[LLVMdev] forcing two instructions to be together
On 09/17/2013 03:52 PM, Owen Anderson wrote:
> +the list again
> On Sep 17, 2013, at 3:48 PM, reed kotler <rkotler at mips.com> wrote:
>
>> On 09/17/2013 03:46 PM, Owen Anderson wrote:
>>> On Sep 17, 2013, at 3:08 PM, reed kotler <rkotler at mips.com> wrote:
>>>
>>>> Is there any way, except for using bundles, to force two instructions to be
2013 Sep 17
2
[LLVMdev] forcing two instructions to be together
+the list again
On Sep 17, 2013, at 3:48 PM, reed kotler <rkotler at mips.com> wrote:
> On 09/17/2013 03:46 PM, Owen Anderson wrote:
>> On Sep 17, 2013, at 3:08 PM, reed kotler <rkotler at mips.com> wrote:
>>
>>> Is there any way, except for using bundles, to force two instructions to be sequentially executed?
>> What level of codegen are you working at?
2013 Sep 18
2
[LLVMdev] forcing two instructions to be together
I used the A9 schedule as an example:
http://llvm.org/svn/llvm-project/llvm/trunk/lib/Target/ARM/ARMScheduleA9.td
The documentation could use more clarity, but this is how I was able to do it to always get two specific instructions to be scheduled together.
________________________________________
From: reed kotler [rkotler at mips.com]
Sent: Tuesday, September 17, 2013 8:54 PM
To: Micah Villmow
2013 Sep 17
2
[LLVMdev] forcing two instructions to be together
Reed,
Couldn't you also use instruction scheduling classes and specify that the second instruction has a bypass from the first instruction? The scheduler should always schedule them together in that case.
Micah
> -----Original Message-----
> From: llvmdev-bounces at cs.uiuc.edu [mailto:llvmdev-bounces at cs.uiuc.edu] On
> Behalf Of reed kotler
> Sent: Tuesday, September 17, 2013
2013 Feb 17
0
[LLVMdev] keeping instructions in order and hidden dependencies
Sounds like bundles will be the simplest to start with though I suppose
I could just lower the pseudos after scheduling is done; for now.
Bundles will prevent things from being able to be scheduled in more
creative ways but for that I need to think more about the problem.
So I can just create a bundle, insert instructions in it, and all will
work more or less?
I'm trying to take the next
2013 Feb 17
0
[LLVMdev] keeping instructions in order and hidden dependencies
One of my reasons for lowering things early is that I need to get an
accurate count of the size of things.
Some of the pseudos even have instructions like compare immediate, which
in Mips 16 has two forms depending on the magnitude of the immediate field.
Though I suppose it's possible to leave things as a pseudo and calculate
their size, though I'm not sure where I could store the
2013 Feb 17
4
[LLVMdev] keeping instructions in order and hidden dependencies
You are trying to do a few different things here, and a uniform solution may not work for all of them. For a fixed instruction sequence, e.g. a special kind of move-and-branch sequence used for tail calls, you probably want a pseudo. If you are trying to combine arbitrary instructions together, e.g. Thumb IT blocks, you probably want to use bundles, even if the sequences are a fixed length. I
2013 Feb 17
3
[LLVMdev] keeping instructions in order and hidden dependencies
AFAIK, You have two choices: use a pseudo that is lowered into separate instructions later as part of asm emission, or use MI bundles. The former is generally what existing targets use for this sort of thing, but perhaps the second would work better for you.
Cameron
On Feb 16, 2013, at 8:37 PM, Reed Kotler <rkotler at mips.com> wrote:
> Some of my pseudos do conditional branch .+4 and
2014 Jun 11
2
[LLVMdev] constraining two virtual registers to be the same physical register
On 06/10/2014 05:51 PM, Pete Cooper wrote:
> Hi Reed
>
> You can do this on the instruction itself by telling it 2 operands
> must be the same register. For example, from X86:
>
> let Constraints = "$src1 = $dst" in
> defm INSERTPS : SS41I_insertf32<0x21, "insertps">;
>
> Thanks,
Hi Pete,
Sorry.
I should have been more specific.
I'm
2013 Feb 18
0
[LLVMdev] splitting a branch within a pseudo
Reed,
Have a look at custom inserters. In particular, how they're used for atomics in the ARM backend.
-Jim
On Feb 17, 2013, at 12:51 PM, Reed Kotler <rkotler at mips.com> wrote:
> After discussions last night, I'm leaning towards going legit with all my pseudo expansions in Mips 16.
>
> Some I think I can clearly do by just putting in the proper side effects of
2013 Feb 17
0
[LLVMdev] keeping instructions in order and hidden dependencies
Some of my pseudos do conditional branch .+4 and such.
I don't want the instruction scheduler to get creative on me.
On 02/16/2013 07:20 PM, reed kotler wrote:
> I have some pseudos that I am expanding in the Mips 16 port. Currently
> they are blasted in one chunk as a multi line instruction sequence but I
> am changing the code now to expand them
> after register allocation.
2014 Jun 11
2
[LLVMdev] constraining two virtual registers to be the same physical register
Does anyone know if there is a way to constrain two virtual registers to
be allocated
to the same physical register?
Tia.
Reed
2013 Feb 17
2
[LLVMdev] keeping instructions in order and hidden dependencies
I have some pseudos that I am expanding in the Mips 16 port. Currently
they are blasted in one chunk as a multi line instruction sequence but I
am changing the code now to expand them
after register allocation.
They are essentially macros and I need to make sure, at this time at
least, that the individual instructions are not reordered or moved around.
There are dependencies sometimes between
2014 Sep 30
2
[LLVMdev] ptrtoint
If you can't make an executable test from C or C++ code then how do you
know something works.
Just by examination of the .s?
On 09/30/2014 03:18 PM, Reed Kotler wrote:
> If I wanted to call this function that they generated by hand, from C or
> C+ code, how would that be done?
>
> if have seen cases where a real boolean gets generated but it was
> something fairly involved.
2013 Feb 17
4
[LLVMdev] pseudo lowering
On Feb 16, 2013, at 1:31 PM, Cameron Zwarich <zwarich at apple.com> wrote:
> That's exactly the right place.
Really? You don't want the expansion to be optimized? You want to specify a machine model for the pseudo's as if they're real instructions? You don't want to schedule or register allocate the real instructions?
-Andy
> On Feb 16, 2013, at 1:08 PM, Reed
2014 Feb 25
3
[LLVMdev] configure with clang vs gcc
On 02/24/2014 04:42 PM, Eric Christopher wrote:
> On Mon, Feb 24, 2014 at 4:40 PM, reed kotler <rkotler at mips.com> wrote:
>> I need to leave soon and will take a look in the morning.
>>
>> I did look at the autoconf input files configure.ac
>>
>> There is a disable-zlib but not a disable-valgrind, even though it seems
>> like there used to be.
2014 Sep 29
2
[LLVMdev] ptrtoint
Technically I don't need C/C++ code for it.
I'm not really very good at writing LLVM assembly code by hand
(but I should be - lol ).
I'm working on fast-isel and I want to have executable tests for all of this
and not just make check tests.
It's easier for me to do that in C/C++ and then save the .ll and morph
it into
a make check test.
I'm going through the fast-isel
2014 Feb 25
2
[LLVMdev] configure with clang vs gcc
I see what my problem is here....
I'll continue to move further.
Seems like Richards fix is still okay.
On 02/25/2014 02:42 PM, Eric Christopher wrote:
> On Tue, Feb 25, 2014 at 2:41 PM, reed kotler <rkotler at mips.com> wrote:
>> On 02/25/2014 02:38 PM, Eric Christopher wrote:
>>> On Tue, Feb 25, 2014 at 2:32 PM, reed kotler <rkotler at mips.com> wrote: