new file mode 100644
@@ -0,0 +1,13 @@
+#as: -march=rv32gc_zicfiss_zicfilp
+#objdump: -d
+
+.*:[ ]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <foo>:
+[ ]+[0-9a-f]+:[ ]+00000317[ ]+auipc[ ]+t1,0x0
+[ ]+[0-9a-f]+:[ ]+00030067[ ]+jr[ ]+t1 # 0 <foo>
+[ ]+[0-9a-f]+:[ ]+00000397[ ]+auipc[ ]+t2,0x0
+[ ]+[0-9a-f]+:[ ]+00038067[ ]+jr[ ]+t2 # 8 <foo\+0x8>
new file mode 100644
@@ -0,0 +1,9 @@
+foo:
+.option push
+.option arch, rv32i
+ tail foo
+.option pop
+.option push
+.option arch, rv32i_zicfilp
+ tail foo
+.option pop
@@ -472,6 +472,7 @@ const struct riscv_opcode riscv_opcodes[] =
{"jal", 0, INSN_CLASS_I, "d,a", MATCH_JAL, MASK_JAL, match_opcode, INSN_JSR },
{"call", 0, INSN_CLASS_I, "d,c", (X_T1 << OP_SH_RS1), (int) M_CALL, NULL, INSN_MACRO },
{"call", 0, INSN_CLASS_I, "c", (X_RA << OP_SH_RS1)|(X_RA << OP_SH_RD), (int) M_CALL, NULL, INSN_MACRO },
+{"tail", 0, INSN_CLASS_ZICFILP, "c", (X_T2 << OP_SH_RS1), (int) M_CALL, NULL, INSN_MACRO },
{"tail", 0, INSN_CLASS_I, "c", (X_T1 << OP_SH_RS1), (int) M_CALL, NULL, INSN_MACRO },
{"jump", 0, INSN_CLASS_I, "c,s", 0, (int) M_CALL, match_rs1_nonzero, INSN_MACRO },
{"nop", 0, INSN_CLASS_C, "", MATCH_C_ADDI, 0xffff, match_opcode, INSN_ALIAS },