@@ -225,6 +225,13 @@ MakeFunccall(AST *func, AST *params, AST *numresults)
225225 return NewAST (AST_FUNCCALL, func, params);
226226}
227227
228+ static AST *
229+ MakeFunccall1 (AST *func, AST *arg1)
230+ {
231+ AST *exprlist = NewAST (AST_EXPRLIST, arg1, NULL );
232+ return MakeFunccall (func, exprlist, NULL );
233+ }
234+
228235// special handling for things like "abc" | x
229236// in Spin this is the same as "ab", "c" | x
230237
@@ -626,6 +633,11 @@ SpinDeclareInterface(AST *ident, AST *defs)
626633%token SP_EXP " EXP"
627634%token SP_POW " POW"
628635
636+ %token SP_MOVBYTS " MOVBYTS"
637+ %token SP_ENDIANL " ENDIANL"
638+ %token SP_ENDIANW " ENDIANW"
639+ %token SP_DEBUG_END_SESSION " DEBUG_END_SESSION"
640+
629641%token SP_FADD " +."
630642%token SP_FSUB " -."
631643%token SP_FMUL " *."
@@ -2683,42 +2695,63 @@ funccall:
26832695 AST *arg1 = $3 ;
26842696 AST *ident = AstIdentifier (" __builtin_log2f" );
26852697
2686- $$ = MakeFunccall (ident, arg1, NULL );
2698+ $$ = MakeFunccall1 (ident, arg1);
26872699 }
26882700 | SP_EXP2 ' (' expr ' )'
26892701 {
26902702 AST *arg1 = $3 ;
26912703 AST *ident = AstIdentifier (" __builtin_exp2f" );
26922704
2693- $$ = MakeFunccall (ident, arg1, NULL );
2705+ $$ = MakeFunccall1 (ident, arg1);
26942706 }
26952707 | SP_LOG10 ' (' expr ' )'
26962708 {
26972709 AST *arg1 = $3 ;
26982710 AST *ident = AstIdentifier (" __builtin_log10f" );
26992711
2700- $$ = MakeFunccall (ident, arg1, NULL );
2712+ $$ = MakeFunccall1 (ident, arg1);
27012713 }
27022714 | SP_EXP10 ' (' expr ' )'
27032715 {
27042716 AST *arg1 = $3 ;
27052717 AST *ident = AstIdentifier (" __builtin_exp10f" );
27062718
2707- $$ = MakeFunccall (ident, arg1, NULL );
2719+ $$ = MakeFunccall1 (ident, arg1);
27082720 }
27092721 | SP_LOG ' (' expr ' )'
27102722 {
27112723 AST *arg1 = $3 ;
27122724 AST *ident = AstIdentifier (" __builtin_logf" );
27132725
2714- $$ = MakeFunccall (ident, arg1, NULL );
2726+ $$ = MakeFunccall1 (ident, arg1);
27152727 }
27162728 | SP_EXP ' (' expr ' )'
27172729 {
27182730 AST *arg1 = $3 ;
27192731 AST *ident = AstIdentifier (" __builtin_expf" );
27202732
2721- $$ = MakeFunccall (ident, arg1, NULL );
2733+ $$ = MakeFunccall1 (ident, arg1);
2734+ }
2735+ | SP_ENDIANL ' (' expr ' )'
2736+ {
2737+ AST *arg1 = $3 ;
2738+ AST *ident = AstIdentifier (" __builtin_bswap32" );
2739+
2740+ $$ = MakeFunccall1 (ident, arg1);
2741+ }
2742+ | SP_ENDIANW ' (' expr ' )'
2743+ {
2744+ AST *arg1 = $3 ;
2745+ AST *ident = AstIdentifier (" __builtin_bswap16" );
2746+
2747+ $$ = MakeFunccall1 (ident, arg1);
2748+ }
2749+ | SP_MOVBYTS ' (' operandlist ' )'
2750+ {
2751+ AST *args = $3 ;
2752+ AST *ident = AstIdentifier (" __builtin_movbyts" );
2753+
2754+ $$ = MakeFunccall (ident, args, NULL );
27222755 }
27232756;
27242757
0 commit comments