Fix encoding of prfm

PiperOrigin-RevId: 424628305
diff --git a/src/jit/aarch64-assembler.cc b/src/jit/aarch64-assembler.cc
index a38e747..62eb81c 100644
--- a/src/jit/aarch64-assembler.cc
+++ b/src/jit/aarch64-assembler.cc
@@ -280,7 +280,7 @@
     return;
   }
 
-  emit32(0xF9800000 | xn.offset << 10 | rn(xn.base) | static_cast<uint32_t>(prfop));
+  emit32(0xF9800000 | xn.offset >> 3 << 10 | rn(xn.base) | prfop);
 }
 
 void Assembler::ret() {
diff --git a/test/aarch64-assembler.cc b/test/aarch64-assembler.cc
index d52113b..ceb1282 100644
--- a/test/aarch64-assembler.cc
+++ b/test/aarch64-assembler.cc
@@ -54,6 +54,7 @@
   EXPECT_ERROR(Error::kInvalidOperand, a.ldr(x8, MemOperand(sp, 16, AddressingMode::kPostIndex)));
 
   CHECK_ENCODING(0xF98000A0, a.prfm(kPLDL1KEEP, mem[x5]));
+  CHECK_ENCODING(0xF98020A0, a.prfm(kPLDL1KEEP, mem[x5, 64]));
   EXPECT_ERROR(Error::kInvalidOperand, a.prfm(kPLDL1KEEP, mem[x5, -8]));
   EXPECT_ERROR(Error::kInvalidOperand, a.prfm(kPLDL1KEEP, mem[x5, 32761]));