This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Using intrinsic functions to extend the isa


On Wed, Apr 13, 2011 at 5:45 PM, Feng LI <nemokingdom@gmail.com> wrote:
> On Wed, Apr 13, 2011 at 5:32 PM, Ian Lance Taylor <iant@google.com> wrote:
>> Feng LI <nemokingdom@gmail.com> writes:
>>
>>> I use unspec_volatile for a function with void arguments and
>>> void return value for some initialization work. But it didn't generate
>>> code in this case. I think probably I need to add more restrictions
>>> some where but I don't know why and how. The code looks like:
>>>
>>> extern __inline void __attribute__((__gnu_inline__, __always_inline__,
>>> __artificial__))
>>> __TEnd (void)
>>> {
>>> ? __builtin_ia32_tend ();
>>> }
>>>
>>> (define_expand "dta_tend"
>>> ? [(unspec_volatile [(const_int 0)] UNSPEC_TEND)]
>>> ? ""
>>> ? "")
>>>
>>> (define_insn "*dta_tend"
>>> ? [(unspec_volatile [(const_int 0)] UNSPEC_TEND)]
>>> ? ""
>>> ? "tend"
>>> ? [(set_attr "length" "3")
>>> ? ?(set_attr "mode" "none")])
>>
>> In the RTL dumps generated by -da, where does the insn appear and where
>> does it disappear?
>
> It seems that it disappear at the ffork.c.143r.expand at the very beginning.
> I suppose there should be some thing like
> (call_insn ....) generated for ?__builtin_ia32_tend (); But there isn't.
> instead, it generated:
>
> ;; Generating RTL for gimple basic block 2
> ;; __builtin_ia32_tend ();
> (nil)

You need to expand builtins yourself, a "named" expander doesn't do
that for you.

Richard.

> Feng
>>
>> Ian
>>
>


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]