================
@@ -4212,6 +4213,89 @@ MachineSDNode *X86DAGToDAGISel::emitPCMPESTR(unsigned 
ROpc, unsigned MOpc,
   return CNode;
 }
 
+// When the consumer of a right shift (arithmetic or logical) wouldn't
+// notice the difference if the instruction was a rotate right instead
+// (because the bits shifted in are truncated away), the shift can be
+// replaced by the RORX instruction from BMI2. This doesn't set flags and
+// can output to a different register. This increases code size in most
+// cases, can have a false dependency when promoting the operand size,
----------------
topperc wrote:

Every Intel CPU that implements RORX renames AL, AX, EAX, and RAX together. 
Only the H registers can be separated. Converting an 8-bit read to a 16-bit 
read may create a false dependency on one of the H registers, but I'm not sure 
any of the other cases do. 

https://github.com/llvm/llvm-project/pull/77964
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to