[LLVMdev] initialize register attributes in instruction definition

kewuzhang kewu.zhang at amd.com
Thu Jul 31 15:41:06 PDT 2014


Hi All, 

Is it possible to initialize(set up)  register attributes when we define an instruction?

like  

if a register is defined like this:

" class SC_Register<bits<8> register_num, 
                   	 REG_FLAG  SC_X,
			 REG_FLAG  SC_Y,
			 REG_FLAG  SC_Z,
			 REG_FLAG  SC_W,
                  	 string asmstr> : Register<asmstr>
{
	
    	let HWEncoding{7-0}     = register_num;         // register_num
	let HWEncoding{8}     = SC_X;  
	let HWEncoding{9}     = SC_Y;  
…..
}”

can I set up the input/ouput register flags like this? or some other way in codegen to make the register flags are set up based on the instructions?

let Constraints = “$dst.SC_X =1, $src.SC_Y =0" in 
{
    def GENri : my_instr  <op,  0,   (outs GPR_V4_R32:$dst),  (ins GPR_V4_R32:$src),
                                      !strconcat(asmstr, " $dst, ""$src"), 
                                     [(set v4i32:$dst, (node v4i32:$src)]>;
                                       
}



tks


kevin
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140731/57ca8208/attachment.html>


More information about the llvm-dev mailing list