hi all I write a pattern like this: (define_insn "extrv4di" [(set (match_operand:V4DI 0 "register_operand" "=Z") (unspec:V4DI [(match_operand:V4DI 1 "register_operand" "Z") (match_operand:SI 2 "immediate_operand" "")] UNSPEC_EXTR))] "TARGET_VECTORS" "extrd\t%0,%1,%2" [(set_attr "type" "vadd")])
and the the code in mips.c: #define CODE_FOR_extrd CODE_FOR_extrv4di XX_BUILTIN (extrd, MIPS_V4DI_FTYPE_V4DI_INT), define a macro in mips.md: (UNSPEC_EXTR 821) the xx.h: __extension__ static __inline int64x4_t __attribute__ ((__always_inline__)) extrd (int64x4_t s, const int i) { return __builtin_extrd (s, i); } When I write a testcase like: int64x4_t vec_vpextrd (int64x4_t s, const int t) { int64x4_t r; r = vpextrd (s, t); return r; } I get a error: /opt/cross-tools/bin/../lib/gcc/mips64el-unknown-linux-gnu/4.5.1/include/xx.h:1535:31: error: invalid argument to built-in function What should I do? What's the type of imm8/imm16 in builtin-func? Thanks. --Liu