[LLVMdev] hard values in SequentialType::indexValid () method

Alireza.Moshtaghi at microchip.com Alireza.Moshtaghi at microchip.com
Tue Aug 19 16:14:14 PDT 2008


> Two options: 1) change LLVM IR to allow it, or 2) just insert sign/
> zero extension instructions.
> 
> Does this actually affect the code being generated in practice?

Inserting sign/zero extension instructions actually do tend to increase
the generated code pretty dramatically on our target. So I prefer option
(1)

Does this change have dramatic affect on LLVM IR?

PS.
Currently (in our local code repository) we have modified the
indexValid() method to also allow i16 and so far our test cases are
going through. 
I also tried :

float *p1;
float *p3;
short i;
...
p1 = p2 + i;

to generate your example:

%tmp = sext i16 %idx to i32
%tmp2 = getelementptr float* %P, i32 %tmp

On x86; but the sign extension does not get eliminated while lowering
the GEP.
Maybe I understand better if you could give me a C code that shows the
difference.

Thanks
Ali




More information about the llvm-dev mailing list