[PATCH] D130339: [CodeGen] Generate efficient assembly for freeze(poison) version of `mm*_cast*` intel intrinsics

Craig Topper via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Jul 29 10:30:04 PDT 2022


craig.topper added inline comments.


================
Comment at: llvm/include/llvm/Target/TargetSelectionDAG.td:456
 def addrspacecast : SDNode<"ISD::ADDRSPACECAST", SDTUnaryOp>;
+def freeze     : SDNode<"ISD::FREEZE"     , SDTUnaryOp>;
 def extractelt : SDNode<"ISD::EXTRACT_VECTOR_ELT", SDTVecExtract>;
----------------
Don't use SDTUnaryOp here. Use `SDTypeProfile<1, 1, [SDTCisSameAs<0, 1>]>`

SDTUnaryOp doesn't force the input and output to have the same type. I think that prevented `VT` from propagating through the freeze to the undef and that left the undef untyped causing the pattern to be dropped.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D130339/new/

https://reviews.llvm.org/D130339



More information about the llvm-commits mailing list