Guest User

Untitled

a guest
Jun 1st, 2017
23
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. diff --git a/tests/checkasm/checkasm.h b/tests/checkasm/checkasm.h
  2. index 695d871220..393b55fd11 100644
  3. --- a/tests/checkasm/checkasm.h
  4. +++ b/tests/checkasm/checkasm.h
  5. @@ -84,6 +84,7 @@ static av_unused void *func_ref, *func_new;
  6.  /* Declare the function prototype. The first argument is the return value, the remaining
  7.   * arguments are the function parameters. Naming parameters is optional. */
  8.  #define declare_func(ret, ...) declare_new(ret, __VA_ARGS__) typedef ret func_type(__VA_ARGS__)
  9. +#define declare_func_float(ret, ...) declare_new_float(ret, __VA_ARGS__) typedef ret func_type(__VA_ARGS__)
  10.  #define declare_func_emms(cpu_flags, ret, ...) declare_new_emms(cpu_flags, ret, __VA_ARGS__) typedef ret func_type(__VA_ARGS__)
  11.  
  12.  /* Indicate that the current test has failed */
  13. @@ -102,6 +103,7 @@ void checkasm_checked_call(void *func, ...);
  14.  /* Verifies that clobbered callee-saved registers are properly saved and restored
  15.   * and issues emms for asm functions which are not required to do so */
  16.  void checkasm_checked_call_emms(void *func, ...);
  17. +void checkasm_checked_call_float(void *func, ...);
  18.  
  19.  #if ARCH_X86_64
  20.  /* Evil hack: detect incorrect assumptions that 32-bit ints are zero-extended to 64-bit.
  21. @@ -116,6 +118,8 @@ void checkasm_checked_call_emms(void *func, ...);
  22.  void checkasm_stack_clobber(uint64_t clobber, ...);
  23.  #define declare_new(ret, ...) ret (*checked_call)(void *, int, int, int, int, int, __VA_ARGS__)\
  24.                                = (void *)checkasm_checked_call;
  25. +#define declare_new_float(ret, ...) ret (*checked_call)(void *, int, int, int, int, int, __VA_ARGS__)\
  26. +                              = (void *)checkasm_checked_call_float;
  27.  #define declare_new_emms(cpu_flags, ret, ...) \
  28.      ret (*checked_call)(void *, int, int, int, int, int, __VA_ARGS__) = \
  29.          ((cpu_flags) & av_get_cpu_flags()) ? (void *)checkasm_checked_call_emms : \
  30. @@ -126,6 +130,7 @@ void checkasm_stack_clobber(uint64_t clobber, ...);
  31.                        checked_call(func_new, 0, 0, 0, 0, 0, __VA_ARGS__))
  32.  #elif ARCH_X86_32
  33.  #define declare_new(ret, ...) ret (*checked_call)(void *, __VA_ARGS__) = (void *)checkasm_checked_call;
  34. +#define declare_new_float(ret, ...) ret (*checked_call)(void *, __VA_ARGS__) = (void *)checkasm_checked_call_float;
  35.  #define declare_new_emms(cpu_flags, ret, ...) ret (*checked_call)(void *, __VA_ARGS__) = \
  36.          ((cpu_flags) & av_get_cpu_flags()) ? (void *)checkasm_checked_call_emms :        \
  37.                                               (void *)checkasm_checked_call;
  38. @@ -151,6 +156,7 @@ void checkasm_checked_call(void *func, ...);
  39.                        checked_call(func_new, 0, 0, 0, 0, 0, 0, 0, __VA_ARGS__))
  40.  #else
  41.  #define declare_new(ret, ...)
  42. +#define declare_new_float(ret, ...)
  43.  #define declare_new_emms(cpu_flags, ret, ...)
  44.  /* Call the function */
  45.  #define call_new(...) ((func_type *)func_new)(__VA_ARGS__)
  46. @@ -159,6 +165,9 @@ void checkasm_checked_call(void *func, ...);
  47.  #ifndef declare_new_emms
  48.  #define declare_new_emms(cpu_flags, ret, ...) declare_new(ret, __VA_ARGS__)
  49.  #endif
  50. +#ifndef declare_new_float
  51. +#define declare_new_float(ret, ...) declare_new(ret, __VA_ARGS__)
  52. +#endif
  53.  
  54.  /* Benchmark the function */
  55.  #ifdef AV_READ_TIME
  56. diff --git a/tests/checkasm/x86/checkasm.asm b/tests/checkasm/x86/checkasm.asm
  57. index d12333b308..683aae80e3 100644
  58. --- a/tests/checkasm/x86/checkasm.asm
  59. +++ b/tests/checkasm/x86/checkasm.asm
  60. @@ -169,15 +169,15 @@ cglobal checked_call%1, 2,15,16,max_args*8+8
  61.      jz .clobber_ok
  62.      report_fail error_message
  63.  .clobber_ok:
  64. -%ifnid %1, _emms
  65. +%ifidn %1, _emms
  66. +    emms
  67. +%elifnidn %1, _float
  68.      fstenv [rsp]
  69.      cmp  word [rsp + 8], 0xffff
  70.      je   .emms_ok
  71.      report_fail error_message_emms
  72.      emms
  73.  .emms_ok:
  74. -%else
  75. -    emms
  76.  %endif
  77.      RET
  78.  %endmacro
  79. @@ -223,15 +223,15 @@ cglobal checked_call%1, 1,7
  80.      jz .clobber_ok
  81.      report_fail error_message
  82.  .clobber_ok:
  83. -%ifnid %1, _emms
  84. +%ifidn %1, _emms
  85. +    emms
  86. +%elifnidn %1, _float
  87.      fstenv [esp]
  88.      cmp  word [esp + 8], 0xffff
  89.      je   .emms_ok
  90.      report_fail error_message_emms
  91.      emms
  92.  .emms_ok:
  93. -%else
  94. -    emms
  95.  %endif
  96.      add  esp, max_args*4
  97.      REP_RET
  98. @@ -241,3 +241,4 @@ cglobal checked_call%1, 1,7
  99.  
  100.  CHECKED_CALL
  101.  CHECKED_CALL _emms
  102. +CHECKED_CALL _float
RAW Paste Data

Adblocker detected! Please consider disabling it...

We've detected AdBlock Plus or some other adblocking software preventing Pastebin.com from fully loading.

We don't have any obnoxious sound, or popup ads, we actively block these annoying types of ads!

Please add Pastebin.com to your ad blocker whitelist or disable your adblocking software.

×