[llvm] [AArch64] Add CodeGen support for FEAT_CPA (PR #79569)
David Green via llvm-commits
llvm-commits at lists.llvm.org
Fri Jan 26 02:38:29 PST 2024
https://github.com/davemgreen commented:
I don't think the patterns will work for SDAG, it doesn't know the difference between a i64 and a ptr. Please add a test like this and make sure it doesn't miscompile:
```
define i64 @subi64(i64 %ptr, i32 %index) {
; CHECK-CPA-O0-LABEL: subi64:
; CHECK-CPA-O0: // %bb.0: // %entry
; CHECK-CPA-O0-NEXT: mov x8, #-1 // =0xffffffffffffffff
; CHECK-CPA-O0-NEXT: addpt x0, x0, x8
; CHECK-CPA-O0-NEXT: ret
;
; CHECK-CPA-O3-LABEL: subi64:
; CHECK-CPA-O3: // %bb.0: // %entry
; CHECK-CPA-O3-NEXT: mov x8, #-1 // =0xffffffffffffffff
; CHECK-CPA-O3-NEXT: addpt x0, x0, x8
; CHECK-CPA-O3-NEXT: ret
;
; CHECK-NOCPA-O0-LABEL: subi64:
; CHECK-NOCPA-O0: // %bb.0: // %entry
; CHECK-NOCPA-O0-NEXT: subs x0, x0, #1
; CHECK-NOCPA-O0-NEXT: ret
;
; CHECK-NOCPA-O3-LABEL: subi64:
; CHECK-NOCPA-O3: // %bb.0: // %entry
; CHECK-NOCPA-O3-NEXT: sub x0, x0, #1
; CHECK-NOCPA-O3-NEXT: ret
entry:
%incdec.ptr.i.i.i = add i64 %ptr, -1
ret i64 %incdec.ptr.i.i.i
}
```
It might be better too to have a GlobalISel patch and a SelectionDAG version.
https://github.com/llvm/llvm-project/pull/79569
More information about the llvm-commits
mailing list