Hi,

I'm trying to expand a builtin functions into assembles, with
processing a little bit for the operands.

Like for the builtin function:
tcreate (arg0, arg1, arg2)
I'm trying to generate the assemble code (pseudo):
TCREATE arg0<<32|arg1, arg2

but I got the following error:
-----------------------------------------------------
fib.c:38:1: error: unrecognizable insn:
(insn 15 14 16 4 (set (reg:DI 100)
        (ashift:DI (reg:DI 100)
            (const_int 32 [0x20]))) fib.c:25 -1
     (nil))
-----------------------------------------------------

Not sure why this happens,

Here is the related source code for generating this insn:

  switch (fcode)
    {
    case BUILT_IN_WSTREAM_DF_TCREATE:
      arg0 = CALL_EXPR_ARG (exp, 0);
      arg1 = CALL_EXPR_ARG (exp, 1);
      arg2 = CALL_EXPR_ARG (exp, 2);

      op0 = expand_normal (arg0);
      op1 = expand_normal (arg1);
      op2 = expand_normal (arg2);

      op0 = copy_to_mode_reg (DImode,op0);
      insn = emit_move_insn (op0, gen_rtx_ASHIFT (DImode, op0, GEN_INT (32)));
      insn = emit_insn (gen_rtx_SET (VOIDmode, op0,
                                     gen_rtx_PLUS (DImode, op0, op1)));
      insn = emit_insn (gen_tstar_write (op2,op0,op2));
      ... ...

Any ideas?

Thanks,
Feng

Reply via email to