RISC-V: prefetch.* only take base register with zero-offset for the address
authorKito Cheng <kito.cheng@sifive.com>
Mon, 20 Feb 2023 13:47:01 +0000 (21:47 +0800)
committerKito Cheng <kito.cheng@sifive.com>
Mon, 20 Feb 2023 15:26:28 +0000 (23:26 +0800)
Catched by running gcc.c-torture/execute/builtin-prefetch-2.c with
-march=rv64gc_zicbop.

gcc/ChangeLog:

* config/riscv/riscv.md (prefetch): Use r instead of p for the
address operand.
(riscv_prefetchi_<mode>): Ditto.

gcc/config/riscv/riscv.md

index 487059e..a5507fa 100644 (file)
 )
 
 (define_insn "prefetch"
-  [(prefetch (match_operand 0 "address_operand" "p")
+  [(prefetch (match_operand 0 "address_operand" "r")
              (match_operand 1 "imm5_operand" "i")
              (match_operand 2 "const_int_operand" "n"))]
   "TARGET_ZICBOP"
 })
 
 (define_insn "riscv_prefetchi_<mode>"
-  [(unspec_volatile:X [(match_operand:X 0 "address_operand" "p")
+  [(unspec_volatile:X [(match_operand:X 0 "address_operand" "r")
               (match_operand:X 1 "imm5_operand" "i")]
               UNSPECV_PREI)]
   "TARGET_ZICBOP"