[llvm] AArch64: Clear hasSideEffects on AUT and AUTPAC. (PR #141330)

Peter Collingbourne via llvm-commits llvm-commits at lists.llvm.org
Fri May 30 17:56:54 PDT 2025


pcc wrote:

Here is an example extracted from [fleetbench](https://github.com/google/fleetbench). With my PFP patch series and hasSideEffects=0 on AUTxMxN:
```
0000000000dad294 <_ZNK9grpc_core14filters_detail9StackData5emptyEv>:
  dad294:	aa0003e8 	mov	x8, x0
  dad298:	a9c12909 	ldp	x9, x10, [x8, #16]!
  dad29c:	dac11909 	autda	x9, x8
  dad2a0:	dac1190a 	autda	x10, x8
  dad2a4:	eb0a013f 	cmp	x9, x10
  dad2a8:	54000060 	b.eq	dad2b4 <_ZNK9grpc_core14filters_detail9StackData5emptyEv+0x20>  // b.none
  dad2ac:	2a1f03e0 	mov	w0, wzr
  dad2b0:	d65f03c0 	ret
  dad2b4:	aa0003e8 	mov	x8, x0
  dad2b8:	a9c2a909 	ldp	x9, x10, [x8, #40]!
  dad2bc:	dac11909 	autda	x9, x8
  dad2c0:	dac1190a 	autda	x10, x8
  dad2c4:	eb0a013f 	cmp	x9, x10
  dad2c8:	54000060 	b.eq	dad2d4 <_ZNK9grpc_core14filters_detail9StackData5emptyEv+0x40>  // b.none
  dad2cc:	2a1f03e0 	mov	w0, wzr
  dad2d0:	d65f03c0 	ret
  dad2d4:	aa0003e8 	mov	x8, x0
  dad2d8:	a9c52909 	ldp	x9, x10, [x8, #80]!
  dad2dc:	dac11909 	autda	x9, x8
  dad2e0:	dac1190a 	autda	x10, x8
  dad2e4:	eb0a013f 	cmp	x9, x10
  dad2e8:	54000060 	b.eq	dad2f4 <_ZNK9grpc_core14filters_detail9StackData5emptyEv+0x60>  // b.none
  dad2ec:	2a1f03e0 	mov	w0, wzr
  dad2f0:	d65f03c0 	ret
  dad2f4:	aa0003e8 	mov	x8, x0
  dad2f8:	a9c7a909 	ldp	x9, x10, [x8, #120]!
  dad2fc:	dac11909 	autda	x9, x8
  dad300:	dac1190a 	autda	x10, x8
  dad304:	eb0a013f 	cmp	x9, x10
  dad308:	54000060 	b.eq	dad314 <_ZNK9grpc_core14filters_detail9StackData5emptyEv+0x80>  // b.none
  dad30c:	2a1f03e0 	mov	w0, wzr
  dad310:	d65f03c0 	ret
  dad314:	aa0003e8 	mov	x8, x0
  dad318:	a9ca2909 	ldp	x9, x10, [x8, #160]!
  dad31c:	dac11909 	autda	x9, x8
  dad320:	dac1190a 	autda	x10, x8
  dad324:	eb0a013f 	cmp	x9, x10
  dad328:	54000060 	b.eq	dad334 <_ZNK9grpc_core14filters_detail9StackData5emptyEv+0xa0>  // b.none
  dad32c:	2a1f03e0 	mov	w0, wzr
  dad330:	d65f03c0 	ret
  dad334:	aa0003e8 	mov	x8, x0
  dad338:	a9cba909 	ldp	x9, x10, [x8, #184]!
  dad33c:	dac11909 	autda	x9, x8
  dad340:	dac1190a 	autda	x10, x8
  dad344:	eb0a013f 	cmp	x9, x10
  dad348:	54000060 	b.eq	dad354 <_ZNK9grpc_core14filters_detail9StackData5emptyEv+0xc0>  // b.none
  dad34c:	2a1f03e0 	mov	w0, wzr
  dad350:	d65f03c0 	ret
  dad354:	aa0003e8 	mov	x8, x0
  dad358:	a9ce2909 	ldp	x9, x10, [x8, #224]!
  dad35c:	dac11909 	autda	x9, x8
  dad360:	dac1190a 	autda	x10, x8
  dad364:	eb0a013f 	cmp	x9, x10
  dad368:	54000060 	b.eq	dad374 <_ZNK9grpc_core14filters_detail9StackData5emptyEv+0xe0>  // b.none
  dad36c:	2a1f03e0 	mov	w0, wzr
  dad370:	d65f03c0 	ret
  dad374:	aa0003e8 	mov	x8, x0
  dad378:	a9cfa909 	ldp	x9, x10, [x8, #248]!
  dad37c:	dac11909 	autda	x9, x8
  dad380:	dac1190a 	autda	x10, x8
  dad384:	eb0a013f 	cmp	x9, x10
  dad388:	54000060 	b.eq	dad394 <_ZNK9grpc_core14filters_detail9StackData5emptyEv+0x100>  // b.none
  dad38c:	2a1f03e0 	mov	w0, wzr
  dad390:	d65f03c0 	ret
  dad394:	a9512808 	ldp	x8, x10, [x0, #272]
  dad398:	91044009 	add	x9, x0, #0x110
  dad39c:	dac11928 	autda	x8, x9
  dad3a0:	dac1192a 	autda	x10, x9
  dad3a4:	eb0a011f 	cmp	x8, x10
  dad3a8:	54000060 	b.eq	dad3b4 <_ZNK9grpc_core14filters_detail9StackData5emptyEv+0x120>  // b.none
  dad3ac:	2a1f03e0 	mov	w0, wzr
  dad3b0:	d65f03c0 	ret
  dad3b4:	a952a808 	ldp	x8, x10, [x0, #296]
  dad3b8:	9104a009 	add	x9, x0, #0x128
  dad3bc:	dac11928 	autda	x8, x9
  dad3c0:	dac1192a 	autda	x10, x9
  dad3c4:	eb0a011f 	cmp	x8, x10
  dad3c8:	1a9f17e0 	cset	w0, eq	// eq = none
  dad3cc:	d65f03c0 	ret
```
The same but with hasSideEffects=1 on AUTxMxN:
```
0000000000dae788 <_ZNK9grpc_core14filters_detail9StackData5emptyEv>:
  dae788:	aa0003e8 	mov	x8, x0
  dae78c:	f8410d09 	ldr	x9, [x8, #16]!
  dae790:	dac11909 	autda	x9, x8
  dae794:	f940050a 	ldr	x10, [x8, #8]
  dae798:	dac1190a 	autda	x10, x8
  dae79c:	eb0a013f 	cmp	x9, x10
  dae7a0:	54000060 	b.eq	dae7ac <_ZNK9grpc_core14filters_detail9StackData5emptyEv+0x24>  // b.none
  dae7a4:	2a1f03e0 	mov	w0, wzr
  dae7a8:	d65f03c0 	ret
  dae7ac:	aa0003e8 	mov	x8, x0
  dae7b0:	f8428d09 	ldr	x9, [x8, #40]!
  dae7b4:	dac11909 	autda	x9, x8
  dae7b8:	f940050a 	ldr	x10, [x8, #8]
  dae7bc:	dac1190a 	autda	x10, x8
  dae7c0:	eb0a013f 	cmp	x9, x10
  dae7c4:	54000060 	b.eq	dae7d0 <_ZNK9grpc_core14filters_detail9StackData5emptyEv+0x48>  // b.none
  dae7c8:	2a1f03e0 	mov	w0, wzr
  dae7cc:	d65f03c0 	ret
  dae7d0:	aa0003e8 	mov	x8, x0
  dae7d4:	f8450d09 	ldr	x9, [x8, #80]!
  dae7d8:	dac11909 	autda	x9, x8
  dae7dc:	f940050a 	ldr	x10, [x8, #8]
  dae7e0:	dac1190a 	autda	x10, x8
  dae7e4:	eb0a013f 	cmp	x9, x10
  dae7e8:	54000060 	b.eq	dae7f4 <_ZNK9grpc_core14filters_detail9StackData5emptyEv+0x6c>  // b.none
  dae7ec:	2a1f03e0 	mov	w0, wzr
  dae7f0:	d65f03c0 	ret
  dae7f4:	aa0003e8 	mov	x8, x0
  dae7f8:	f8478d09 	ldr	x9, [x8, #120]!
  dae7fc:	dac11909 	autda	x9, x8
  dae800:	f940050a 	ldr	x10, [x8, #8]
  dae804:	dac1190a 	autda	x10, x8
  dae808:	eb0a013f 	cmp	x9, x10
  dae80c:	54000060 	b.eq	dae818 <_ZNK9grpc_core14filters_detail9StackData5emptyEv+0x90>  // b.none
  dae810:	2a1f03e0 	mov	w0, wzr
  dae814:	d65f03c0 	ret
  dae818:	aa0003e8 	mov	x8, x0
  dae81c:	f84a0d09 	ldr	x9, [x8, #160]!
  dae820:	dac11909 	autda	x9, x8
  dae824:	f940050a 	ldr	x10, [x8, #8]
  dae828:	dac1190a 	autda	x10, x8
  dae82c:	eb0a013f 	cmp	x9, x10
  dae830:	54000060 	b.eq	dae83c <_ZNK9grpc_core14filters_detail9StackData5emptyEv+0xb4>  // b.none
  dae834:	2a1f03e0 	mov	w0, wzr
  dae838:	d65f03c0 	ret
  dae83c:	aa0003e8 	mov	x8, x0
  dae840:	f84b8d09 	ldr	x9, [x8, #184]!
  dae844:	dac11909 	autda	x9, x8
  dae848:	f940050a 	ldr	x10, [x8, #8]
  dae84c:	dac1190a 	autda	x10, x8
  dae850:	eb0a013f 	cmp	x9, x10
  dae854:	54000060 	b.eq	dae860 <_ZNK9grpc_core14filters_detail9StackData5emptyEv+0xd8>  // b.none
  dae858:	2a1f03e0 	mov	w0, wzr
  dae85c:	d65f03c0 	ret
  dae860:	aa0003e8 	mov	x8, x0
  dae864:	f84e0d09 	ldr	x9, [x8, #224]!
  dae868:	dac11909 	autda	x9, x8
  dae86c:	f940050a 	ldr	x10, [x8, #8]
  dae870:	dac1190a 	autda	x10, x8
  dae874:	eb0a013f 	cmp	x9, x10
  dae878:	54000060 	b.eq	dae884 <_ZNK9grpc_core14filters_detail9StackData5emptyEv+0xfc>  // b.none
  dae87c:	2a1f03e0 	mov	w0, wzr
  dae880:	d65f03c0 	ret
  dae884:	aa0003e8 	mov	x8, x0
  dae888:	f84f8d09 	ldr	x9, [x8, #248]!
  dae88c:	dac11909 	autda	x9, x8
  dae890:	f940050a 	ldr	x10, [x8, #8]
  dae894:	dac1190a 	autda	x10, x8
  dae898:	eb0a013f 	cmp	x9, x10
  dae89c:	54000060 	b.eq	dae8a8 <_ZNK9grpc_core14filters_detail9StackData5emptyEv+0x120>  // b.none
  dae8a0:	2a1f03e0 	mov	w0, wzr
  dae8a4:	d65f03c0 	ret
  dae8a8:	f9408808 	ldr	x8, [x0, #272]
  dae8ac:	91044009 	add	x9, x0, #0x110
  dae8b0:	dac11928 	autda	x8, x9
  dae8b4:	f9408c0a 	ldr	x10, [x0, #280]
  dae8b8:	dac1192a 	autda	x10, x9
  dae8bc:	eb0a011f 	cmp	x8, x10
  dae8c0:	54000060 	b.eq	dae8cc <_ZNK9grpc_core14filters_detail9StackData5emptyEv+0x144>  // b.none
  dae8c4:	2a1f03e0 	mov	w0, wzr
  dae8c8:	d65f03c0 	ret
  dae8cc:	f9409408 	ldr	x8, [x0, #296]
  dae8d0:	9104a009 	add	x9, x0, #0x128
  dae8d4:	dac11928 	autda	x8, x9
  dae8d8:	f940980a 	ldr	x10, [x0, #304]
  dae8dc:	dac1192a 	autda	x10, x9
  dae8e0:	eb0a011f 	cmp	x8, x10
  dae8e4:	1a9f17e0 	cset	w0, eq	// eq = none
  dae8e8:	d65f03c0 	ret
```

https://github.com/llvm/llvm-project/pull/141330


More information about the llvm-commits mailing list