[LLVMdev] ptrtoint
reed kotler
rkotler at mips.com
Mon Sep 29 15:15:53 PDT 2014
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 tests for x86 now and adapting them for
Mips.
(will do the same for AArch64 and other ports).
I want an executable variant for all of them.
On 09/29/2014 03:11 PM, Duncan P. N. Exon Smith wrote:
>> On Sep 29, 2014, at 2:29 PM, reed kotler <rkotler at mips.com> wrote:
>>
>> Thanks.
>>
>> So what about a fragment like this: (taken from fast-isel.ll in X86 )
>>
>> define void @ptrtoint_i1(i8* %p, i1* %q) nounwind {
>> %t = ptrtoint i8* %p to i1
>> store i1 %t, i1* %q
>> ret void
>> }
> Intuitively, this looks like:
>
> void ptrtoint_i1(char *p, bool *q) { *q = (bool)p; }
>
> However, `q` needs to be addressable in C/C++, so it's left as an `i8`.
>
> `git log` suggests this particular testcase evolved incrementally out
> of hand-written IR.
>
> Why do you need C/C++ code for it? Just interested?
>
>> TIA.
>>
>> On 09/29/2014 02:16 PM, Duncan P. N. Exon Smith wrote:
>>>> On Sep 29, 2014, at 1:51 PM, reed kotler <rkotler at mips.com> wrote:
>>>>
>>>> What kind of C or C++ code will emit a "ptrtoint" op?
>>> This C code:
>>>
>>> long ptrtoint(void *p) { return (long)p; }
>>>
>>> gives:
>>>
>>> define i64 @ptrtoint(i8* %p) {
>>> %1 = ptrtoint i8* %p to i64
>>> ret i64 %1
>>> }
>>>
>>>
>>>> Also, what causes i1 to be emitted?
>>> This C++ code:
>>>
>>> bool i1() { return false; }
>>>
>>> gives:
>>>
>>> define zeroext i1 @_Z2i1v() {
>>> ret i1 false
>>> }
>>>
>>>
>>>> Tia.
>>>>
>>>> Reed
>>>> _______________________________________________
>>>> LLVM Developers mailing list
>>>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
>>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
More information about the llvm-dev
mailing list