This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
how to modify sign-extend instruction generation
- From: ååå <wuxb45 at gmail dot com>
- To: gcc-help at gcc dot gnu dot org
- Date: Mon, 13 Jun 2011 20:05:48 +0800
- Subject: how to modify sign-extend instruction generation
I'm now modifying the gcc's md file, for a mips(el) target. gcc src's
version is 4.6.0.
I want to modify the sign-extend insn generation.
originally, mips use "lb"/"lh" instruction to sign-extend a byte/half.
but in my target CPU it doesn't has "lb" and "lh", it only support
"lbu" and "lhu". so I have to generate such instructions to implement
a sign-ext.
e.g.
lb %0,%1
become:
lbu %0,%1
srl %0,%0,24
sra %0,%0,24
similarly:
lh %0,%1
become:
lhu %0,%1
srl %0,%0,16
sra %0,%0,16
But, In original "md" file, two of these is a single pattern, it use
macro to generate lb/lh instruction:
"l<SHORT:size>"
<SHORT:size> may be "b" or "h" --> "lb" or "lh"
but I want to get "24" from "b" ; get "16" form "h". How can I achieve this?
--
----------------
ÂWu Xingbo