(original) (raw)
On Jul 9, 2015, at 12:54 PM, kewuzhang <kewu.zhang@amd.com> wrote:HI Guys,
I have a �normal� load instruction like the following:
"
%2 = load i16 addressspace(1) \* %1, align 2, !tbaa !10
�
where the metadata tbaa is telling me that the source is a signed short.
So I want to do a �signed load� when I am lowering the Load operation.( LLVM now just tells me �load i16� without any sign or unsign info)
This isn�t want the TBAA metadata is for. You shouldn�t be trying to decide if a type is signed or not, especially not using metadata which is likely to not be present. If a load is used in a sign extended way, the DAG node will report that it�s extension type is SEXTLOAD by the time it reaches the custom lowering. You should not be concerned with the C type this happens to correspond to, only the specific load operation the target is asked to handle.
questions:
(1) How could I pass the �sign� flag to customLowering?
You should only be checking if a load is a sextload.
(2) I wanted to �trick� llvm by � inserting an extend, and followed by an truncate� instructions, so I am hoping that LLVM can send me a �SextLoad� and �Truncate�.
But LLVM is smart enough, it just ignores my effort.
Is there anyway to �workaround� this problem?
best
kevin
If you really want to hack around folding conversions, you would need to insert a new node type / target node that the DAG combiner doesn�t understand
-Matt