在 2024/12/16 下午9:20, Xi Ruoyao 写道: /* snip */
+;; For HImode it's a little complicated... +(define_expand "rbithi"
I didn't find rtithi's template description. Are there any test cases ?
+ [(match_operand:HI 0 "register_operand") + (match_operand:HI 1 "register_operand")] + "" + { + rtx t = gen_reg_rtx (word_mode); + + /* Oh, using paradoxical subreg. I learnt the trick from RISC-V, + hoping we won't be blown up altogether one day. */ + emit_insn (gen_rbit(word_mode, t, + gen_lowpart (word_mode, operands[1]))); + t = expand_simple_binop (word_mode, LSHIFTRT, t, + GEN_INT (GET_MODE_BITSIZE (word_mode) - 16), + NULL_RTX, false, OPTAB_DIRECT); + + t = gen_lowpart (HImode, t); + SUBREG_PROMOTED_VAR_P (t) = 1; + SUBREG_PROMOTED_SET (t, SRP_UNSIGNED); + emit_move_insn (operands[0], t); + + DONE; + }) + (define_insn "@stack_tie<mode>" [(set (mem:BLK (scratch)) (unspec:BLK [(match_operand:X 0 "register_operand" "r")