The preferred form of the str/ldr for predicate registers with an immediate of zero is to omit the zero, and the clang built in assembler rejects the zero immediate. Drop the immediate.
Signed-off-by: Mark Brown broonie@kernel.org --- tools/testing/selftests/arm64/abi/syscall-abi-asm.S | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/tools/testing/selftests/arm64/abi/syscall-abi-asm.S b/tools/testing/selftests/arm64/abi/syscall-abi-asm.S index b523c21c2278..acd5e9f3bc0b 100644 --- a/tools/testing/selftests/arm64/abi/syscall-abi-asm.S +++ b/tools/testing/selftests/arm64/abi/syscall-abi-asm.S @@ -153,7 +153,7 @@ do_syscall: // Only set a non-zero FFR, test patterns must be zero since the // syscall should clear it - this lets us handle FA64. ldr x2, =ffr_in - ldr p0, [x2, #0] + ldr p0, [x2] ldr x2, [x2, #0] cbz x2, 2f wrffr p0.b @@ -298,7 +298,7 @@ do_syscall: cbz x2, 1f ldr x2, =ffr_out rdffr p0.b - str p0, [x2, #0] + str p0, [x2] 1:
// Restore callee saved registers x19-x30
base-commit: 30a0b95b1335e12efef89dd78518ed3e4a71a763
On Thu, Nov 17, 2022 at 11:41:30AM +0000, Mark Brown wrote:
The preferred form of the str/ldr for predicate registers with an immediate of zero is to omit the zero, and the clang built in assembler rejects the zero immediate. Drop the immediate.
Rejecting that outright seems like a bug in clang, given there are legitimate reasons to write code that way (e.g. using asm-offsets style definitions); has that been reported so that it can be fixed?
Regardless, the patch itself looks fine, and I don't mean to block this as-is!
Thanks, Mark.
Signed-off-by: Mark Brown broonie@kernel.org
tools/testing/selftests/arm64/abi/syscall-abi-asm.S | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/tools/testing/selftests/arm64/abi/syscall-abi-asm.S b/tools/testing/selftests/arm64/abi/syscall-abi-asm.S index b523c21c2278..acd5e9f3bc0b 100644 --- a/tools/testing/selftests/arm64/abi/syscall-abi-asm.S +++ b/tools/testing/selftests/arm64/abi/syscall-abi-asm.S @@ -153,7 +153,7 @@ do_syscall: // Only set a non-zero FFR, test patterns must be zero since the // syscall should clear it - this lets us handle FA64. ldr x2, =ffr_in
- ldr p0, [x2, #0]
- ldr p0, [x2] ldr x2, [x2, #0] cbz x2, 2f wrffr p0.b
@@ -298,7 +298,7 @@ do_syscall: cbz x2, 1f ldr x2, =ffr_out rdffr p0.b
- str p0, [x2, #0]
- str p0, [x2]
1: // Restore callee saved registers x19-x30
base-commit: 30a0b95b1335e12efef89dd78518ed3e4a71a763
2.30.2
linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
On Thu, Nov 17, 2022 at 11:52:22AM +0000, Mark Rutland wrote:
On Thu, Nov 17, 2022 at 11:41:30AM +0000, Mark Brown wrote:
The preferred form of the str/ldr for predicate registers with an immediate of zero is to omit the zero, and the clang built in assembler rejects the zero immediate. Drop the immediate.
Rejecting that outright seems like a bug in clang, given there are legitimate reasons to write code that way (e.g. using asm-offsets style definitions); has that been reported so that it can be fixed?
I believe it's been reported, yes.
On Thu, 17 Nov 2022 11:41:30 +0000, Mark Brown wrote:
The preferred form of the str/ldr for predicate registers with an immediate of zero is to omit the zero, and the clang built in assembler rejects the zero immediate. Drop the immediate.
Applied to arm64 (for-next/selftests), thanks!
[1/1] kselftest/arm64: Use preferred form for predicate load/stores https://git.kernel.org/arm64/c/284d2b44a8cc
Cheers,
linux-kselftest-mirror@lists.linaro.org