在 2024/1/4 上午11:51, Xi Ruoyao 写道:
On Wed, 2023-12-27 at 16:46 +0800, Lulu Cheng wrote:
+(define_insn "movdi_pcrel64"
+ [(set (match_operand:DI 0 "register_operand" "=&r")
+       (match_operand:DI 1 "symbolic_pcrel64_operand"))
+  (unspec:DI [(const_int 0)]
+    UNSPEC_MOV_PCREL64)
+  (use (reg:DI T3_REGNUM))
+  (clobber (reg:DI T3_REGNUM))]
It's better not to hard code $t3 here.  We can write

[(set (match_operand:DI 0 "register_operand" "=r")
       (match_operand:DI 1 "symbolic_pcrel64_operand"))
  (clobber (match_operand:DI 2 "register_operand "=&r"))]

And use

   gen_movdi_pcrel64 (operands[0], operands[1], gen_reg_rtx(DImode))

in expand.

I tried using (clobber (match_scratch)) when implementing it, but it didn't work.

I will try this implementation now, thank you!

+ "TARGET_64BIT"
+ "la.local %0,$r15,%1"
+ [(set_attr "mode" "DI")
+  (set_attr "length" "5")])

Reply via email to