[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