The LLVM shift operations require the shift amount to have the same type as the shift base. The B3 shift operations require the shift amount to be an Int32. DFG concurs with this. But the initial lowering will probably involve pretending the FTLOutput's shift operations still take an LLVM-style shift amount, and then on B3 they will emit a Trunc. That means that we'll want to be able to constant fold Trunc and be able to fold Trunc(ZExt).
Created attachment 265907 [details] the patch
Attachment 265907 [details] did not pass style-queue: ERROR: Source/JavaScriptCore/ftl/FTLB3Output.cpp:133: Multi line control clauses should use braces. [whitespace/braces] [4] Total errors found: 1 in 7 files If any of these errors are false positives, please file a bug against check-webkit-style.
Comment on attachment 265907 [details] the patch r=me
Landed in http://trac.webkit.org/changeset/192665