[llvm] [LegalizeTypes][X86][PowerPC] Use shift by 1 instead of adding a value to itself to double. (PR #86857)
zhijian lin via llvm-commits
llvm-commits at lists.llvm.org
Thu Apr 11 13:00:04 PDT 2024
================
@@ -187,10 +187,11 @@ define <2 x i64> @testDoubleword(<2 x i64> %a, i64 %b, i64 %idx) {
;
; CHECK-32-P10-LABEL: testDoubleword:
; CHECK-32-P10: # %bb.0: # %entry
-; CHECK-32-P10-NEXT: add 5, 6, 6
-; CHECK-32-P10-NEXT: slwi 6, 5, 2
+; CHECK-32-P10-NEXT: slwi 5, 6, 1
+; CHECK-32-P10-NEXT: slwi 6, 6, 3
; CHECK-32-P10-NEXT: vinswlx 2, 6, 3
-; CHECK-32-P10-NEXT: addi 3, 5, 1
+; CHECK-32-P10-NEXT: li 3, 1
+; CHECK-32-P10-NEXT: rlwimi 3, 5, 0, 0, 30
----------------
diggerlin wrote:
we do it in more generically.
```
slwi 5, 6, n
li 3, Val (if Val != 0,1,-1, li is not zero operation onP10
rlwimi 3, 5, 0, 0, K (K=31-n...31)
```
if 2^(31-n) >val
we can convert to
` addi 3, 5, Val`
or
`ori 3, 5, Val`
https://github.com/llvm/llvm-project/pull/86857
More information about the llvm-commits
mailing list