about named address space

Ian Lance Taylor iant@google.com
Sat May 21 07:15:00 GMT 2011


Rony Paul <ronypaul77@gmail.com> writes:

> Can you explain me the following piece of code?
>
>       rtx result, ls;
>
>       ls = gen_const_mem (DImode,
> 			  gen_rtx_SYMBOL_REF (Pmode, "__ea_local_store"));

Build a memory reference to the address __ea_local_store in DImode
(64-bit).

>       set_mem_align (ls, 128);

Set the alignment of that memory to 128 bits.

>       result = gen_reg_rtx (Pmode);

Build a pseudo-register of type Pmode.

>       ls = force_reg (Pmode, convert_modes (Pmode, DImode, ls, 1));

Copy ls to a new pseudo-register, converting it from DImode to Pmode.

>       op = force_reg (Pmode, convert_modes (Pmode, EAmode, op, 1));

Copy op to a new pseudo-register, converting it from EAmode to Pmode.

>       ls = emit_conditional_move (ls, NE, op, const0_rtx, Pmode,
> 					  ls, const0_rtx, Pmode, 1);

Equivalent to ls = op != 0 ? ls : 0.

>       emit_insn (gen_subsi3 (result, op, ls));

Equivalent to result = op - ls.

So basically if op is not 0, this subtracts __ea_local_store from it.

Ian



More information about the Gcc-help mailing list