<div dir="ltr">Hello all,<div><br></div><div>I am trying to implement intrinsics __readeflags and __writeeflags reading and writing EFLAGS register on x86.</div><div>These intrinsics expand to two instructions popf and push to register for __readeflags and pushf and pop to register for __writeeflags.</div>
<div>These instructions are not connected explicitly so I can't use patterns in .td file to match intrinsics.</div><div><br clear="all"><div>I tried to implement custom expansion making COPY DAG node with copy from EFLAGS to register.</div>
<div>But this solution works only at -O0 level and failed at -O1 and higher: the problem is that Post-RA pseudo instruction expansion pass seems to be called only at -O0.</div><div><br></div><div>Another way is to expand intrinsics to DAG nodes for each PUSH, POP, PUSHF and POPF instructions.</div>
<div>This will add 4 new X86ISD types for DAG nodes for these instructions.</div><div><br></div><div>What is the proper way to expand these intrinsics?</div><div><br></div>-- <br><div dir="ltr">Alexey Volkov<div>Intel Corporation</div>
</div>
</div></div>