/[pcre]/code/trunk/sljit/sljitLir.h
ViewVC logotype

Diff of /code/trunk/sljit/sljitLir.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1505 by zherczeg, Mon Aug 11 06:42:28 2014 UTC revision 1506 by zherczeg, Sat Sep 27 06:25:26 2014 UTC
# Line 95  of sljitConfigInternal.h */ Line 95  of sljitConfigInternal.h */
95  /* Cannot allocate executable memory.  /* Cannot allocate executable memory.
96     Only for sljit_generate_code() */     Only for sljit_generate_code() */
97  #define SLJIT_ERR_EX_ALLOC_FAILED       3  #define SLJIT_ERR_EX_ALLOC_FAILED       3
98  /* return value for SLJIT_CONFIG_UNSUPPORTED empty architecture. */  /* Return value for SLJIT_CONFIG_UNSUPPORTED placeholder architecture. */
99  #define SLJIT_ERR_UNSUPPORTED           4  #define SLJIT_ERR_UNSUPPORTED           4
100    /* An ivalid argument is passed to any SLJIT function. */
101    #define SLJIT_ERR_BAD_ARGUMENT          5
102    
103  /* --------------------------------------------------------------------- */  /* --------------------------------------------------------------------- */
104  /*  Registers                                                            */  /*  Registers                                                            */
# Line 359  struct sljit_compiler { Line 361  struct sljit_compiler {
361  #endif  #endif
362    
363  #if (defined SLJIT_CONFIG_ARM_64 && SLJIT_CONFIG_ARM_64)  #if (defined SLJIT_CONFIG_ARM_64 && SLJIT_CONFIG_ARM_64)
         sljit_si locals_offset;  
364          sljit_si cache_arg;          sljit_si cache_arg;
365          sljit_sw cache_argw;          sljit_sw cache_argw;
366  #endif  #endif
# Line 391  struct sljit_compiler { Line 392  struct sljit_compiler {
392          FILE* verbose;          FILE* verbose;
393  #endif  #endif
394    
395  #if (defined SLJIT_DEBUG && SLJIT_DEBUG)  #if (defined SLJIT_ARGUMENT_CHECKS && SLJIT_ARGUMENT_CHECKS) \
396                    || (defined SLJIT_DEBUG && SLJIT_DEBUG)
397          /* Local size passed to the functions. */          /* Local size passed to the functions. */
398          sljit_si logical_local_size;          sljit_si logical_local_size;
399  #endif  #endif
400    
401  #if (defined SLJIT_VERBOSE && SLJIT_VERBOSE) || (defined SLJIT_DEBUG && SLJIT_DEBUG)  #if (defined SLJIT_ARGUMENT_CHECKS && SLJIT_ARGUMENT_CHECKS) \
402                    || (defined SLJIT_DEBUG && SLJIT_DEBUG) \
403                    || (defined SLJIT_VERBOSE && SLJIT_VERBOSE)
404          sljit_si skip_checks;          sljit_si skip_checks;
405  #endif  #endif
406  };  };
# Line 461  static SLJIT_INLINE sljit_uw sljit_get_g Line 465  static SLJIT_INLINE sljit_uw sljit_get_g
465     sljit_emit_enter function emits the necessary instructions for     sljit_emit_enter function emits the necessary instructions for
466     setting up a new context for the executable code and moves function     setting up a new context for the executable code and moves function
467     arguments to the saved registers. Furthermore the options argument     arguments to the saved registers. Furthermore the options argument
468     can be used to pass configuration options to the compiler. Currently     can be used to pass configuration options to the compiler. The
469     there are no options, so it must be set to 0.     available options are listed before sljit_emit_enter.
470    
471     The number of sljit_sw arguments passed to the generated function     The number of sljit_sw arguments passed to the generated function
472     are specified in the "args" parameter. The number of arguments must     are specified in the "args" parameter. The number of arguments must
# Line 493  static SLJIT_INLINE sljit_uw sljit_get_g Line 497  static SLJIT_INLINE sljit_uw sljit_get_g
497           overwrites the previous context.           overwrites the previous context.
498  */  */
499    
500    /* The absolute address returned by sljit_get_local_base with
501    offset 0 is aligned to sljit_d. Otherwise it is aligned to sljit_uw. */
502    #define SLJIT_DOUBLE_ALIGNMENT 0x00000001
503    
504    /* The local_size must be >= 0 and <= SLJIT_MAX_LOCAL_SIZE. */
505  #define SLJIT_MAX_LOCAL_SIZE    65536  #define SLJIT_MAX_LOCAL_SIZE    65536
506    
507  SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_emit_enter(struct sljit_compiler *compiler,  SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_emit_enter(struct sljit_compiler *compiler,
# Line 509  SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_ Line 518  SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_
518     Note: every call of sljit_emit_enter and sljit_set_context overwrites     Note: every call of sljit_emit_enter and sljit_set_context overwrites
519           the previous context. */           the previous context. */
520    
521  SLJIT_API_FUNC_ATTRIBUTE void sljit_set_context(struct sljit_compiler *compiler,  SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_set_context(struct sljit_compiler *compiler,
522          sljit_si options, sljit_si args, sljit_si scratches, sljit_si saveds,          sljit_si options, sljit_si args, sljit_si scratches, sljit_si saveds,
523          sljit_si fscratches, sljit_si fsaveds, sljit_si local_size);          sljit_si fscratches, sljit_si fsaveds, sljit_si local_size);
524    
# Line 674  SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_ Line 683  SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_
683  /* Flags: - (may destroy flags)  /* Flags: - (may destroy flags)
684     Unsigned multiplication of SLJIT_R0 and SLJIT_R1.     Unsigned multiplication of SLJIT_R0 and SLJIT_R1.
685     Result goes to SLJIT_R1:SLJIT_R0 (high:low) word */     Result goes to SLJIT_R1:SLJIT_R0 (high:low) word */
686  #define SLJIT_UMUL                      (SLJIT_OP0_BASE + 2)  #define SLJIT_LUMUL                     (SLJIT_OP0_BASE + 2)
687  /* Flags: - (may destroy flags)  /* Flags: - (may destroy flags)
688     Signed multiplication of SLJIT_R0 and SLJIT_R1.     Signed multiplication of SLJIT_R0 and SLJIT_R1.
689     Result goes to SLJIT_R1:SLJIT_R0 (high:low) word */     Result goes to SLJIT_R1:SLJIT_R0 (high:low) word */
690  #define SLJIT_SMUL                      (SLJIT_OP0_BASE + 3)  #define SLJIT_LSMUL                     (SLJIT_OP0_BASE + 3)
691  /* Flags: I - (may destroy flags)  /* Flags: I - (may destroy flags)
692     Unsigned divide of the value in SLJIT_R0 by the value in SLJIT_R1.     Unsigned divide of the value in SLJIT_R0 by the value in SLJIT_R1.
693     The result is placed in SLJIT_R0 and the remainder goes to SLJIT_R1.     The result is placed in SLJIT_R0 and the remainder goes to SLJIT_R1.
694     Note: if SLJIT_R1 contains 0, the behaviour is undefined. */     Note: if SLJIT_R1 contains 0, the behaviour is undefined. */
695  #define SLJIT_UDIV                      (SLJIT_OP0_BASE + 4)  #define SLJIT_LUDIV                     (SLJIT_OP0_BASE + 4)
696  #define SLJIT_IUDIV                     (SLJIT_UDIV | SLJIT_INT_OP)  #define SLJIT_ILUDIV                    (SLJIT_LUDIV | SLJIT_INT_OP)
697  /* Flags: I - (may destroy flags)  /* Flags: I - (may destroy flags)
698     Signed divide of the value in SLJIT_R0 by the value in SLJIT_R1.     Signed divide of the value in SLJIT_R0 by the value in SLJIT_R1.
699     The result is placed in SLJIT_R0 and the remainder goes to SLJIT_R1.     The result is placed in SLJIT_R0 and the remainder goes to SLJIT_R1.
700     Note: if SLJIT_R1 contains 0, the behaviour is undefined. */     Note: if SLJIT_R1 contains 0, the behaviour is undefined. */
701  #define SLJIT_SDIV                      (SLJIT_OP0_BASE + 5)  #define SLJIT_LSDIV                     (SLJIT_OP0_BASE + 5)
702  #define SLJIT_ISDIV                     (SLJIT_SDIV | SLJIT_INT_OP)  #define SLJIT_ILSDIV                    (SLJIT_LSDIV | SLJIT_INT_OP)
703    
704  SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_emit_op0(struct sljit_compiler *compiler, sljit_si op);  SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_emit_op0(struct sljit_compiler *compiler, sljit_si op);
705    
# Line 838  SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_ Line 847  SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_
847    
848  /* The following function is a helper function for sljit_emit_op_custom.  /* The following function is a helper function for sljit_emit_op_custom.
849     It returns with the real machine register index of any SLJIT_FLOAT register.     It returns with the real machine register index of any SLJIT_FLOAT register.
850    
851     Note: the index is always an even number on ARM (except ARM-64), MIPS, and SPARC. */     Note: the index is always an even number on ARM (except ARM-64), MIPS, and SPARC. */
852    
853  SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_get_float_register_index(sljit_si reg);  SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_get_float_register_index(sljit_si reg);
# Line 864  SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_ Line 873  SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_
873  #define SLJIT_FOP1_BASE                 128  #define SLJIT_FOP1_BASE                 128
874    
875  /* Flags: SP - (never set any flags) */  /* Flags: SP - (never set any flags) */
876  #define SLJIT_MOVD                      (SLJIT_FOP1_BASE + 0)  #define SLJIT_DMOV                      (SLJIT_FOP1_BASE + 0)
877  #define SLJIT_MOVS                      (SLJIT_MOVD | SLJIT_SINGLE_OP)  #define SLJIT_SMOV                      (SLJIT_DMOV | SLJIT_SINGLE_OP)
878  /* Convert opcodes: CONV[DST_TYPE].FROM[SRC_TYPE]  /* Convert opcodes: CONV[DST_TYPE].FROM[SRC_TYPE]
879     SRC/DST TYPE can be: D - double, S - single, W - signed word, I - signed int     SRC/DST TYPE can be: D - double, S - single, W - signed word, I - signed int
880     Rounding mode when the destination is W or I: round towards zero. */     Rounding mode when the destination is W or I: round towards zero. */
# Line 888  SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_ Line 897  SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_
897     Note: NaN check is always performed. If SLJIT_C_FLOAT_UNORDERED flag     Note: NaN check is always performed. If SLJIT_C_FLOAT_UNORDERED flag
898           is set, the comparison result is unpredictable.           is set, the comparison result is unpredictable.
899     Flags: SP | E | S (see SLJIT_C_FLOAT_*) */     Flags: SP | E | S (see SLJIT_C_FLOAT_*) */
900  #define SLJIT_CMPD                      (SLJIT_FOP1_BASE + 6)  #define SLJIT_DCMP                      (SLJIT_FOP1_BASE + 6)
901  #define SLJIT_CMPS                      (SLJIT_CMPD | SLJIT_SINGLE_OP)  #define SLJIT_SCMP                      (SLJIT_DCMP | SLJIT_SINGLE_OP)
902  /* Flags: SP - (never set any flags) */  /* Flags: SP - (never set any flags) */
903  #define SLJIT_NEGD                      (SLJIT_FOP1_BASE + 7)  #define SLJIT_DNEG                      (SLJIT_FOP1_BASE + 7)
904  #define SLJIT_NEGS                      (SLJIT_NEGD | SLJIT_SINGLE_OP)  #define SLJIT_SNEG                      (SLJIT_DNEG | SLJIT_SINGLE_OP)
905  /* Flags: SP - (never set any flags) */  /* Flags: SP - (never set any flags) */
906  #define SLJIT_ABSD                      (SLJIT_FOP1_BASE + 8)  #define SLJIT_DABS                      (SLJIT_FOP1_BASE + 8)
907  #define SLJIT_ABSS                      (SLJIT_ABSD | SLJIT_SINGLE_OP)  #define SLJIT_SABS                      (SLJIT_DABS | SLJIT_SINGLE_OP)
908    
909  SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_emit_fop1(struct sljit_compiler *compiler, sljit_si op,  SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_emit_fop1(struct sljit_compiler *compiler, sljit_si op,
910          sljit_si dst, sljit_sw dstw,          sljit_si dst, sljit_sw dstw,
# Line 905  SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_ Line 914  SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_
914  #define SLJIT_FOP2_BASE                 160  #define SLJIT_FOP2_BASE                 160
915    
916  /* Flags: SP - (never set any flags) */  /* Flags: SP - (never set any flags) */
917  #define SLJIT_ADDD                      (SLJIT_FOP2_BASE + 0)  #define SLJIT_DADD                      (SLJIT_FOP2_BASE + 0)
918  #define SLJIT_ADDS                      (SLJIT_ADDD | SLJIT_SINGLE_OP)  #define SLJIT_SADD                      (SLJIT_DADD | SLJIT_SINGLE_OP)
919  /* Flags: SP - (never set any flags) */  /* Flags: SP - (never set any flags) */
920  #define SLJIT_SUBD                      (SLJIT_FOP2_BASE + 1)  #define SLJIT_DSUB                      (SLJIT_FOP2_BASE + 1)
921  #define SLJIT_SUBS                      (SLJIT_SUBD | SLJIT_SINGLE_OP)  #define SLJIT_SSUB                      (SLJIT_DSUB | SLJIT_SINGLE_OP)
922  /* Flags: SP - (never set any flags) */  /* Flags: SP - (never set any flags) */
923  #define SLJIT_MULD                      (SLJIT_FOP2_BASE + 2)  #define SLJIT_DMUL                      (SLJIT_FOP2_BASE + 2)
924  #define SLJIT_MULS                      (SLJIT_MULD | SLJIT_SINGLE_OP)  #define SLJIT_SMUL                      (SLJIT_DMUL | SLJIT_SINGLE_OP)
925  /* Flags: SP - (never set any flags) */  /* Flags: SP - (never set any flags) */
926  #define SLJIT_DIVD                      (SLJIT_FOP2_BASE + 3)  #define SLJIT_DDIV                      (SLJIT_FOP2_BASE + 3)
927  #define SLJIT_DIVS                      (SLJIT_DIVD | SLJIT_SINGLE_OP)  #define SLJIT_SDIV                      (SLJIT_DDIV | SLJIT_SINGLE_OP)
928    
929  SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_emit_fop2(struct sljit_compiler *compiler, sljit_si op,  SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_emit_fop2(struct sljit_compiler *compiler, sljit_si op,
930          sljit_si dst, sljit_sw dstw,          sljit_si dst, sljit_sw dstw,
# Line 926  SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_ Line 935  SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_
935    
936  SLJIT_API_FUNC_ATTRIBUTE struct sljit_label* sljit_emit_label(struct sljit_compiler *compiler);  SLJIT_API_FUNC_ATTRIBUTE struct sljit_label* sljit_emit_label(struct sljit_compiler *compiler);
937    
938  /* Invert conditional instruction: xor (^) with 0x1 */  /* Invert (negate) conditional type: xor (^) with 0x1 */
939  #define SLJIT_C_EQUAL                   0  
940  #define SLJIT_C_ZERO                    0  /* Integer comparison types. */
941  #define SLJIT_C_NOT_EQUAL               1  #define SLJIT_EQUAL                     0
942  #define SLJIT_C_NOT_ZERO                1  #define SLJIT_I_EQUAL                   (SLJIT_EQUAL | SLJIT_INT_OP)
943    #define SLJIT_ZERO                      0
944  #define SLJIT_C_LESS                    2  #define SLJIT_I_ZERO                    (SLJIT_ZERO | SLJIT_INT_OP)
945  #define SLJIT_C_GREATER_EQUAL           3  #define SLJIT_NOT_EQUAL                 1
946  #define SLJIT_C_GREATER                 4  #define SLJIT_I_NOT_EQUAL               (SLJIT_NOT_EQUAL | SLJIT_INT_OP)
947  #define SLJIT_C_LESS_EQUAL              5  #define SLJIT_NOT_ZERO                  1
948  #define SLJIT_C_SIG_LESS                6  #define SLJIT_I_NOT_ZERO                (SLJIT_NOT_ZERO | SLJIT_INT_OP)
949  #define SLJIT_C_SIG_GREATER_EQUAL       7  
950  #define SLJIT_C_SIG_GREATER             8  #define SLJIT_LESS                      2
951  #define SLJIT_C_SIG_LESS_EQUAL          9  #define SLJIT_I_LESS                    (SLJIT_LESS | SLJIT_INT_OP)
952    #define SLJIT_GREATER_EQUAL             3
953  #define SLJIT_C_OVERFLOW                10  #define SLJIT_I_GREATER_EQUAL           (SLJIT_GREATER_EQUAL | SLJIT_INT_OP)
954  #define SLJIT_C_NOT_OVERFLOW            11  #define SLJIT_GREATER                   4
955    #define SLJIT_I_GREATER                 (SLJIT_GREATER | SLJIT_INT_OP)
956  #define SLJIT_C_MUL_OVERFLOW            12  #define SLJIT_LESS_EQUAL                5
957  #define SLJIT_C_MUL_NOT_OVERFLOW        13  #define SLJIT_I_LESS_EQUAL              (SLJIT_LESS_EQUAL | SLJIT_INT_OP)
958    #define SLJIT_SIG_LESS                  6
959  #define SLJIT_C_FLOAT_EQUAL             14  #define SLJIT_I_SIG_LESS                (SLJIT_SIG_LESS | SLJIT_INT_OP)
960  #define SLJIT_C_FLOAT_NOT_EQUAL         15  #define SLJIT_SIG_GREATER_EQUAL         7
961  #define SLJIT_C_FLOAT_LESS              16  #define SLJIT_I_SIG_GREATER_EQUAL       (SLJIT_SIG_GREATER_EQUAL | SLJIT_INT_OP)
962  #define SLJIT_C_FLOAT_GREATER_EQUAL     17  #define SLJIT_SIG_GREATER               8
963  #define SLJIT_C_FLOAT_GREATER           18  #define SLJIT_I_SIG_GREATER             (SLJIT_SIG_GREATER | SLJIT_INT_OP)
964  #define SLJIT_C_FLOAT_LESS_EQUAL        19  #define SLJIT_SIG_LESS_EQUAL            9
965  #define SLJIT_C_FLOAT_UNORDERED         20  #define SLJIT_I_SIG_LESS_EQUAL          (SLJIT_SIG_LESS_EQUAL | SLJIT_INT_OP)
966  #define SLJIT_C_FLOAT_ORDERED           21  
967    #define SLJIT_OVERFLOW                  10
968    #define SLJIT_I_OVERFLOW                (SLJIT_OVERFLOW | SLJIT_INT_OP)
969    #define SLJIT_NOT_OVERFLOW              11
970    #define SLJIT_I_NOT_OVERFLOW            (SLJIT_NOT_OVERFLOW | SLJIT_INT_OP)
971    
972    #define SLJIT_MUL_OVERFLOW              12
973    #define SLJIT_I_MUL_OVERFLOW            (SLJIT_MUL_OVERFLOW | SLJIT_INT_OP)
974    #define SLJIT_MUL_NOT_OVERFLOW          13
975    #define SLJIT_I_MUL_NOT_OVERFLOW        (SLJIT_MUL_NOT_OVERFLOW | SLJIT_INT_OP)
976    
977    /* Floating point comparison types. */
978    #define SLJIT_D_EQUAL                   14
979    #define SLJIT_S_EQUAL                   (SLJIT_D_EQUAL | SLJIT_SINGLE_OP)
980    #define SLJIT_D_NOT_EQUAL               15
981    #define SLJIT_S_NOT_EQUAL               (SLJIT_D_NOT_EQUAL | SLJIT_SINGLE_OP)
982    #define SLJIT_D_LESS                    16
983    #define SLJIT_S_LESS                    (SLJIT_D_LESS | SLJIT_SINGLE_OP)
984    #define SLJIT_D_GREATER_EQUAL           17
985    #define SLJIT_S_GREATER_EQUAL           (SLJIT_D_GREATER_EQUAL | SLJIT_SINGLE_OP)
986    #define SLJIT_D_GREATER                 18
987    #define SLJIT_S_GREATER                 (SLJIT_D_GREATER | SLJIT_SINGLE_OP)
988    #define SLJIT_D_LESS_EQUAL              19
989    #define SLJIT_S_LESS_EQUAL              (SLJIT_D_LESS_EQUAL | SLJIT_SINGLE_OP)
990    #define SLJIT_D_UNORDERED               20
991    #define SLJIT_S_UNORDERED               (SLJIT_D_UNORDERED | SLJIT_SINGLE_OP)
992    #define SLJIT_D_ORDERED                 21
993    #define SLJIT_S_ORDERED                 (SLJIT_D_ORDERED | SLJIT_SINGLE_OP)
994    
995    /* Unconditional jump types. */
996  #define SLJIT_JUMP                      22  #define SLJIT_JUMP                      22
997  #define SLJIT_FAST_CALL                 23  #define SLJIT_FAST_CALL                 23
998  #define SLJIT_CALL0                     24  #define SLJIT_CALL0                     24
# Line 969  SLJIT_API_FUNC_ATTRIBUTE struct sljit_la Line 1006  SLJIT_API_FUNC_ATTRIBUTE struct sljit_la
1006  #define SLJIT_REWRITABLE_JUMP           0x1000  #define SLJIT_REWRITABLE_JUMP           0x1000
1007    
1008  /* Emit a jump instruction. The destination is not set, only the type of the jump.  /* Emit a jump instruction. The destination is not set, only the type of the jump.
1009      type must be between SLJIT_C_EQUAL and SLJIT_CALL3      type must be between SLJIT_EQUAL and SLJIT_CALL3
1010      type can be combined (or'ed) with SLJIT_REWRITABLE_JUMP      type can be combined (or'ed) with SLJIT_REWRITABLE_JUMP
1011     Flags: - (never set any flags) for both conditional and unconditional jumps.     Flags: - (never set any flags) for both conditional and unconditional jumps.
1012     Flags: destroy all flags for calls. */     Flags: destroy all flags for calls. */
# Line 978  SLJIT_API_FUNC_ATTRIBUTE struct sljit_ju Line 1015  SLJIT_API_FUNC_ATTRIBUTE struct sljit_ju
1015  /* Basic arithmetic comparison. In most architectures it is implemented as  /* Basic arithmetic comparison. In most architectures it is implemented as
1016     an SLJIT_SUB operation (with SLJIT_UNUSED destination and setting     an SLJIT_SUB operation (with SLJIT_UNUSED destination and setting
1017     appropriate flags) followed by a sljit_emit_jump. However some     appropriate flags) followed by a sljit_emit_jump. However some
1018     architectures (i.e: MIPS) may employ special optimizations here. It is     architectures (i.e: ARM64 or MIPS) may employ special optimizations here.
1019     suggested to use this comparison form when appropriate.     It is suggested to use this comparison form when appropriate.
1020      type must be between SLJIT_C_EQUAL and SLJIT_C_SIG_LESS_EQUAL      type must be between SLJIT_EQUAL and SLJIT_I_SIG_LESS_EQUAL
1021      type can be combined (or'ed) with SLJIT_REWRITABLE_JUMP or SLJIT_INT_OP      type can be combined (or'ed) with SLJIT_REWRITABLE_JUMP
1022     Flags: destroy flags. */     Flags: destroy flags. */
1023  SLJIT_API_FUNC_ATTRIBUTE struct sljit_jump* sljit_emit_cmp(struct sljit_compiler *compiler, sljit_si type,  SLJIT_API_FUNC_ATTRIBUTE struct sljit_jump* sljit_emit_cmp(struct sljit_compiler *compiler, sljit_si type,
1024          sljit_si src1, sljit_sw src1w,          sljit_si src1, sljit_sw src1w,
# Line 992  SLJIT_API_FUNC_ATTRIBUTE struct sljit_ju Line 1029  SLJIT_API_FUNC_ATTRIBUTE struct sljit_ju
1029     sljit_emit_jump. However some architectures (i.e: MIPS) may employ     sljit_emit_jump. However some architectures (i.e: MIPS) may employ
1030     special optimizations here. It is suggested to use this comparison form     special optimizations here. It is suggested to use this comparison form
1031     when appropriate.     when appropriate.
1032      type must be between SLJIT_C_FLOAT_EQUAL and SLJIT_C_FLOAT_ORDERED      type must be between SLJIT_D_EQUAL and SLJIT_S_ORDERED
1033      type can be combined (or'ed) with SLJIT_REWRITABLE_JUMP and SLJIT_SINGLE_OP      type can be combined (or'ed) with SLJIT_REWRITABLE_JUMP
1034     Flags: destroy flags.     Flags: destroy flags.
1035     Note: if either operand is NaN, the behaviour is undefined for     Note: if either operand is NaN, the behaviour is undefined for
1036           type <= SLJIT_C_FLOAT_LESS_EQUAL. */           types up to SLJIT_S_LESS_EQUAL. */
1037  SLJIT_API_FUNC_ATTRIBUTE struct sljit_jump* sljit_emit_fcmp(struct sljit_compiler *compiler, sljit_si type,  SLJIT_API_FUNC_ATTRIBUTE struct sljit_jump* sljit_emit_fcmp(struct sljit_compiler *compiler, sljit_si type,
1038          sljit_si src1, sljit_sw src1w,          sljit_si src1, sljit_sw src1w,
1039          sljit_si src2, sljit_sw src2w);          sljit_si src2, sljit_sw src2w);
# Line 1015  SLJIT_API_FUNC_ATTRIBUTE void sljit_set_ Line 1052  SLJIT_API_FUNC_ATTRIBUTE void sljit_set_
1052  SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_emit_ijump(struct sljit_compiler *compiler, sljit_si type, sljit_si src, sljit_sw srcw);  SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_emit_ijump(struct sljit_compiler *compiler, sljit_si type, sljit_si src, sljit_sw srcw);
1053    
1054  /* Perform the operation using the conditional flags as the second argument.  /* Perform the operation using the conditional flags as the second argument.
1055     Type must always be between SLJIT_C_EQUAL and SLJIT_C_FLOAT_ORDERED. The     Type must always be between SLJIT_EQUAL and SLJIT_S_ORDERED. The value
1056     value represented by the type is 1, if the condition represented by the type     represented by the type is 1, if the condition represented by the type
1057     is fulfilled, and 0 otherwise.     is fulfilled, and 0 otherwise.
1058    
1059     If op == SLJIT_MOV, SLJIT_MOV_SI, SLJIT_MOV_UI:     If op == SLJIT_MOV, SLJIT_MOV_SI, SLJIT_MOV_UI:

Legend:
Removed from v.1505  
changed lines
  Added in v.1506

  ViewVC Help
Powered by ViewVC 1.1.5