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