Displaying 20 results from an estimated 500 matches similar to: "[LLVMdev] Assembly Printer"
2010 Jan 03
0
[LLVMdev] Assembly Printer
On Jan 1, 2010, at 12:51 PM, mmms1841 wrote:
> I am trying to understand how LLVM does code generation and I have a couple of questions.
> I am using LLVM 2.6.
>
> First,
> if I want to change the name of an instruction, all I need to do is to modify the XXXInstrInfo.td, right?
> Using Sparc as an example, if I wanted to output "mysra" instead of "sra",
2010 Jan 04
1
[LLVMdev] Assembly Printer
On Sunday 03 January 2010 01:00, Chris Lattner wrote:
> On Jan 1, 2010, at 12:51 PM, mmms1841 wrote:
> > I am trying to understand how LLVM does code generation and I have a
> > couple of questions. I am using LLVM 2.6.
> >
> > First,
> > if I want to change the name of an instruction, all I need to do is to
> > modify the XXXInstrInfo.td, right? Using Sparc
2006 Oct 02
0
[LLVMdev] Instruction descriptions question
On Sun, 1 Oct 2006, Roman Levenstein wrote:
> I'm trying to implement a new backend for an embedded CISC processor.
> Therefore I thought that it makes sense to take X86 target as a basis,
> to save some time.
Ok. Note that the X86 backend is one of the most complex though, because
it supports several subtargets and ABIs, which makes it more complex than
some other targets.
>
2006 Oct 01
2
[LLVMdev] Instruction descriptions question
Hi,
I'm trying to implement a new backend for an embedded CISC processor.
Therefore I thought that it makes sense to take X86 target as a basis,
to save some time.
But when I look into the X86InstrInfo.td, I have a very strong feeling
that it is one of the most complex instruction set descriptions
compared to other targets. I can imagine that this is due to the
complexity of X86's
2016 Nov 16
6
[SPARC]: leon2 and leon3: not respecting delayed-write to Y-register
Hi,
in section B.29. (Write State Register Instructions) of 'The SPARC
Architecture Manual Version 8' it is said that the "The write state
register instructions are delayed-write instructions."
The Y-register is a state-register.
Furthermore in the B.29-secion there is a programming note saying:
MULScc, RDY, SDIV, SDIVcc, UDIV, and UDIVcc implicitly read the Y
register.
2006 Oct 02
2
[LLVMdev] Instruction descriptions question
Hi Chris,
Thanks a lot for your answer!
Chris Lattner wrote:
>> 1. Why does X86 instruction set description provide different
>> descriptions for the same instructions, which differ only in the
size
>> of operands?
>> E.g.
>>
>> def MOV8rm : I<0x8A, MRMSrcMem, (ops GR8 :$dst, i8mem :$src),
>> "mov{b} {$src, $dst|$dst, $src}",
2019 Jun 10
2
Bug: Library functions for ISD::SRA, ISD::SHL, and ISD::SRL
LLVM appears to support Library functions for ISD::SRA ,ISD::SHL, and ISD::SRL, as they are properly defined in RuntimeLibCalls.def.
The library functions defined in RuntimeLibCalls.def (among others) are these:
HANDLE_LIBCALL(SRA_I16, "__ashrhi3")
HANDLE_LIBCALL(SRA_I32, "__ashrsi3")
HANDLE_LIBCALL(SRA_I64, "__ashrdi3")
However, setting
2009 Apr 20
1
[LLVMdev] How to prevent LLVM from undoing a custom lowering
My target has only logical shifts and lacks an arithmetic right shift
instruction.
I have a custom LowerSRA function that rewrites SRA as SHL + SIGN_EXTEND
when the shift width is either constant 16 or 24. Unfortunately, I
observe that a
later pass combines the SHL + SIGN_EXTEND back into SRA so we crash.
The idea I had for defeating this behavior is lower to a target-specific
version of SHL
2007 Oct 19
2
[LLVMdev] Adding address registers to back-end
Hi!
I'm writing a new back-end for a new architecture. First, I'll do
some "tests" with an existing back-end (I chose the Sparc back-end).
My architecture has special address-registers and I want to add such
new address-registers to my Sparc back-end.
1) I defined a new register call AddrRegs
2) I registered the class AddrRegs (addRegisterClass(MVT::iPTR, .. ))
3) I
2019 Jun 10
2
Bug: Library functions for ISD::SRA, ISD::SHL, and ISD::SRL
Hi Eli,
Thanks for pointing to the CTLZ_ZERO_UNDEF “LibCall” implementation. I have not it in the version that I am currently using, so it’s nice to know that it’s implemented now.
Incidentally, the CTLZ… implementation is IDENTICAL to what I am proposing for the Shifts. This is not just adding support for “out-of-tree-targets”, but giving consistency to the fact that we have perfectly defined
2009 Dec 01
4
[LLVMdev] Possible bug in ExpandShiftWithUnknownAmountBit
Hello,
I'm working in adding support for 64-bit integers to my target. I'm using
LLVM to decompose the 64-bit integer operations by using 32-bit registers
wherever possible and emulating support where not. When looking at the bit
shift decomposition I saw what seems to be a bug in the implementation. The
affected function is ExpandShiftWithUnknownAmountBit in
LegalizeIntegerTypes.cpp.
2007 Oct 21
1
[LLVMdev] Adding address registers to back-end
Hi!
>> I'm writing a new back-end for a new architecture. First, I'll do
>> some "tests" with an existing back-end (I chose the Sparc back-end).
>> My architecture has special address-registers and I want to add such
>> new address-registers to my Sparc back-end.
>> ....
>> The GlobalAddress for variable c is replaced by an ADD(HI(c), LO
2015 May 28
1
[LLVMdev] [ARM backend] adding pattern for SMLALBB
Hi James/Tim,
I am trying to add a patterns for SMLALBB
I think these two assembly patterns can be reduced to SMLALBB using tablegen.
1)
smulbb r2, r3, r2
adds r0, r2, r0 (RdLo)
asr r3, r2, #31
adc r1, r3, r1 (RdHi) ==> smlalbb r0, r1, r3, r2
I have added pattern in def SMLALBB : AMulxyI64< ..... as below :-
[] modified to ---> [((set GPR:$RdLo,
2007 Oct 19
0
[LLVMdev] Adding address registers to back-end
On Oct 19, 2007, at 8:15 AM, Boris Boesler wrote:
> Hi!
>
> I'm writing a new back-end for a new architecture. First, I'll do
> some "tests" with an existing back-end (I chose the Sparc back-end).
> My architecture has special address-registers and I want to add such
> new address-registers to my Sparc back-end.
>
> 1) I defined a new register call
2013 May 28
2
[LLVMdev] Error on VSELECT Dagcombiner with some architecture
Hi all,
I met the error while compiling the code with vector type with some
architecture. IR is as following.
%cmp = icmp sgt <3 x i8> %x, zeroinitializer
%sub = sub <3 x i8> zeroinitializer, %x
%cond = select <3 x i1> %cmp, <3 x i8> %x, <3 x i8> %sub
'select' IR is converted to 'vselect' dag and is combined to 'sra (X,
size(X)-1); xor
2019 Jun 11
2
Bug: Library functions for ISD::SRA, ISD::SHL, and ISD::SRL
Hi Eli,
First of all, please I would appreciate that you try to not confuse my limited use of English with stupidity or lack or criteria in other subjects. I’m not English native, so please keep that in mind. You have been significantly helpful in the recent past so please keep on.
Interestingly, you made a mention of a related but not identical issue. It is true that most (or all) processors
2020 May 28
2
Question: llvm-link type merge behaviour of c++ classes
Hi LLVM community,
I'd like to ask a question regarding the behavior of llvm-link:
My code contains Classes which are structurally equivalent but they are totally unrelated and distinct on a c++ point of view.
However, if the compiled IR gets processed by llvm-link, these types are merged together.
My question is: Is this expected behavior or a bug?
To explain it more in detail, a reduced
2013 May 28
0
[LLVMdev] Error on VSELECT Dagcombiner with some architecture
Hi JinGu Kang,
On 28/05/13 17:18, jingu kang wrote:
> Hi all,
>
> I met the error while compiling the code with vector type with some
> architecture. IR is as following.
>
> %cmp = icmp sgt <3 x i8> %x, zeroinitializer
> %sub = sub <3 x i8> zeroinitializer, %x
> %cond = select <3 x i1> %cmp, <3 x i8> %x, <3 x i8> %sub
>
>
2017 Mar 03
3
Why ISel Shifts operations can only be expanded for Value type vector ?
Hello LLVM Devs,
I am working on a target on which no SHL instruction is available. So
wanted to expand it through MUL. But currently it is only possible to
expand SHL for vector types.
One possible reason I can think is because LLVM tries to optimize MUL to
SHL in certain cases and that can make compiler co in loop or may end up
generating wrong code.
But I think SHL should be able to expanded
2015 Aug 19
3
[RFC] Improving integer divide optimization (related to D12082)
Hello LLVM, A recent commit creates the isIntDivCheap() target query.
http://reviews.llvm.org/D12082
The current approach has a couple shortcomings.
First, when targets decide divide is cheap, the DAGCombiner ignores
obvious power-of-2 optimizations. In the targets I know, shifts are
cheaper than divides in both speed and size. The target cannot see
the value in the isIntDivCheap() call, so