<div dir="ltr">Hi Craig,<div><br></div><div>In our internal codebase, we had a file xop-instrinsics-x86.ll (not the one upstream, xop-intrinsics-x86_64.ll), a remnant of an internal implementation while PS4's architecture was still confidential. ToT passes the tests in our xop-instrinsics-x86.ll, so really it's just a matter of getting all the goodness out of it and sent upstream, and then throw it away and rely on just xop-intrinsics-x86_64.ll.</div><div><br></div><div>There is some overlap with the upstream xop-intrinsics-x86_64.ll, the rundown is as follows for the intrinsics tested:</div><div>Intrinsics where both have test: 53</div><div>Intrinsics where xop-instrinsics-x86.ll has test, but not xop-intrinsics-x86_64.ll: 20</div><div>Intrinsics where xop-intrinsics-x86_64.ll has test, but not xop-instrinsics-x86.ll: 71</div><div><br></div><div>The ones that xop-instrinsics-x86.ll has a test for, but not ToT xop-intrinsics-x86_64.ll, are the following:</div><div><br></div><div><div>llvm.x86.xop.vfrczpd</div><div>llvm.x86.xop.vfrczpd256</div><div>llvm.x86.xop.vfrczps</div><div>llvm.x86.xop.vfrczps256</div><div>llvm.x86.xop.vfrczsd</div><div>llvm.x86.xop.vfrczss</div><div>llvm.x86.xop.vpcmov.v16qi</div><div>llvm.x86.xop.vpcmov.v2df</div><div>llvm.x86.xop.vpcmov.v2di</div><div>llvm.x86.xop.vpcmov.v4df256</div><div>llvm.x86.xop.vpcmov.v4di256</div><div>llvm.x86.xop.vpcmov.v4sf</div><div>llvm.x86.xop.vpcmov.v4si</div><div>llvm.x86.xop.vpcmov.v8hi</div><div>llvm.x86.xop.vpcmov.v8sf256</div><div>llvm.x86.xop.vpcmov.v8si256</div><div>llvm.x86.xop.vprotbi</div><div>llvm.x86.xop.vprotdi</div><div>llvm.x86.xop.vprotqi</div><div>llvm.x86.xop.vprotwi</div><div><br></div></div><div>I assume that we would probably want to just add tests for the missing intrinsics to the ToT xop-intrinsics-x86_64.ll? Anyway, I've attached the whole file xop-instrinsics-x86.ll so you can take a look.</div><div><br></div><div>-- Sean Silva</div></div>