<div dir="ltr">Hi, All,<div><br></div><div>I want to lower 64 Bits constant such as 'long' and 'double'. So I define them like this:</div><div><br></div><div><div>def CONSTI64 : InstFOO<(outs GRWideRegs:$dst), </div><div>                       (ins i64imm:$src), </div><div>                       "const-long $dst, $src", </div><div>                       [(set (i64 GRWideRegs:$dst), imm:$src)]>{</div><div>  let isMoveImm = 1;</div><div>}</div></div><div><br></div><div><div>def CONSTF64 : InstFOO<(outs GRWideRegs:$dst), </div><div>                       (ins f64imm:$src), </div><div>                       "const-double $dst, $src", </div><div>                       [(set (f64 GRWideRegs:$dst), fpimm:$src)]>{</div><div>  let isMoveImm = 1;</div><div>}</div></div><div><br></div><div>GRWideRegs can be f64 and i64. However, the 'const-long' works while the 'const-double' doesn't work. From the -debug log, it seems "f64 = ConstantFP" is replaced by "f64,ch = load" and this is where the error happens. Can anyone tell me why this happens and how to make this work?</div><div><br></div><div>Any suggestion is appreciated. </div><div><br></div><div>Regards,</div><div><br></div><div>Xiangyang</div></div>