[LLVMdev] IntrNoMem causing

Villmow, Micah Micah.Villmow at amd.com
Thu Mar 31 16:51:41 PDT 2011


So I have debugged into my problem w/ VerifySDNode more  to try to figure out why this is occuring and I ran across another peculiarity.

I have a intrinsic that reads from a special register a vec4 i32 value.
The intrinsic is specified as:
def int_AMDIL_get_global_id : GCCBuiltin<"__amdil_get_global_id_int">,
      Intrinsic<[llvm_v4i32_ty], [], []>;

My pattern for the intrinsic is:
def GET_GLOBAL_ID : ILFormat<IL_OP_MOV, (outs GPRV4I32:$dst),
      (ins), !strconcat(IL_OP_MOV.Text, " $dst, r1021.xyz0"),
      [(set GPRV4I32:$dst, (int_AMDIL_get_global_id))]>;

There is no problem here and works fine.

However if I do this:
def int_AMDIL_get_global_id : GCCBuiltin<"__amdil_get_global_id_int">,
      Intrinsic<[llvm_v4i32_ty], [], [IntrNoMem]>;

Then my pattern fails and my intrinsic has two extra arguments(Entry Token and some constant value which I am guessing is the intrinsic opcode).

Does anyone have an idea of what would cause IntroNoMem to stop my pattern from being matched? It isn't just this intrinsic, any intrinsic I add it to no longer matches. If I remove the field, it matches correctly.

Thanks,
Micah
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20110331/6798da99/attachment.html>


More information about the llvm-dev mailing list