[LLVMdev] What CCAssignToXXXWithShadow means?

陳韋任 chenwj at iis.sinica.edu.tw
Fri Sep 23 03:47:24 PDT 2011


Hi, all

  On the website, it says,

CCAssignToRegWithShadow <registerList, shadowList>
  — similar to CCAssignToReg, but with a shadow list of registers

  I don't know when we should use CCAssignToRegWithShadow. Because
I am not a architecture expert, please bear with my naive question.
Take ARMCallingConv.td as an example,

CCIfType<[i32], CCIfAlign<"8", CCAssignToRegWithShadow<[R0, R2], [R0, R1]>>>

  If we assign a value to R0(R2), then what happen to R0(R1)?

def RetCC_ARM_AAPCS_Common : CallingConv<[
  CCIfType<[i32], CCAssignToReg<[R0, R1, R2, R3]>>,
  CCIfType<[i64], CCAssignToRegWithShadow<[R0, R2], [R1, R3]>>
]>;

  Does it mean the samething as above? I searched the web and found
the link below,
  http://www.heyrick.co.uk/assembler/regs.html

It says in some (ARM) processer modes, some register are shadowed.
Does the word "shadow" mean the same thing?

  Thanks!

Regards,
chenwj

-- 
Wei-Ren Chen (陳韋任)
Computer Systems Lab, Institute of Information Science,
Academia Sinica, Taiwan (R.O.C.)
Tel:886-2-2788-3799 #1667




More information about the llvm-dev mailing list