[llvm-dev] How to change IR type?

Krzysztof Parzyszek via llvm-dev llvm-dev at lists.llvm.org
Tue Oct 15 05:34:56 PDT 2019


In general you can use Value::mutateType to change the type of a value.  You can't change the types arbitrarily though, I think that the operands to "add" still need to have the same type.

--
Krzysztof Parzyszek  kparzysz at quicinc.com<mailto:kparzysz at quicinc.com>   AI tools development

From: llvm-dev <llvm-dev-bounces at lists.llvm.org> On Behalf Of Celine via llvm-dev
Sent: Tuesday, October 15, 2019 5:25 AM
To: llvm-dev <llvm-dev at lists.llvm.org>
Subject: [EXT] [llvm-dev] How to change IR type?

hello,

I want to change the following IR:
  %2 = tail call i16 @llvm.nvvm.read.ptx.sreg.tid.x() #2
  %add = add i16 %mul6, %2
to
  %2 = tail call i16v @llvm.nvvm.read.ptx.sreg.tid.x() #2
(i16v)%add = add i16 %mul6, (i16v)%2     //Here keep %mul6 i16 as it is.

I'm not familar with LLVM IR API, it's not easy to get the type and change it right away. Seems need to create a new IR and replace the old one?
But it's also hard to CreateCall() or CreateAdd(), hard to get the original IR's info to fill in those CreateXXX parameter.

Any ideas or reference code?
How to learn LLVM IR API quickly?

--
Best Regards
Celine

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20191015/96997961/attachment.html>


More information about the llvm-dev mailing list