tcg: Save flags and computed sizemask in TCGHelperInfo
Signed-off-by: Richard Henderson <rth@twiddle.net>
This commit is contained in:
		
							parent
							
								
									72866e823e
								
							
						
					
					
						commit
						afb49896fa
					
				| @ -6,22 +6,34 @@ | ||||
| 
 | ||||
| #include <exec/helper-head.h> | ||||
| 
 | ||||
| #define DEF_HELPER_FLAGS_0(name, flags, ret)  { HELPER(name), #name }, | ||||
| #define DEF_HELPER_FLAGS_0(NAME, FLAGS, ret) \ | ||||
|   { .func = HELPER(NAME), .name = #NAME, .flags = FLAGS, \ | ||||
|     .sizemask = dh_sizemask(ret, 0) }, | ||||
| 
 | ||||
| #define DEF_HELPER_FLAGS_1(name, flags, ret, t1) \ | ||||
| DEF_HELPER_FLAGS_0(name, flags, ret) | ||||
| #define DEF_HELPER_FLAGS_1(NAME, FLAGS, ret, t1) \ | ||||
|   { .func = HELPER(NAME), .name = #NAME, .flags = FLAGS, \ | ||||
|     .sizemask = dh_sizemask(ret, 0) | dh_sizemask(t1, 1) }, | ||||
| 
 | ||||
| #define DEF_HELPER_FLAGS_2(name, flags, ret, t1, t2) \ | ||||
| DEF_HELPER_FLAGS_0(name, flags, ret) | ||||
| #define DEF_HELPER_FLAGS_2(NAME, FLAGS, ret, t1, t2) \ | ||||
|   { .func = HELPER(NAME), .name = #NAME, .flags = FLAGS, \ | ||||
|     .sizemask = dh_sizemask(ret, 0) | dh_sizemask(t1, 1) \ | ||||
|     | dh_sizemask(t2, 2) }, | ||||
| 
 | ||||
| #define DEF_HELPER_FLAGS_3(name, flags, ret, t1, t2, t3) \ | ||||
| DEF_HELPER_FLAGS_0(name, flags, ret) | ||||
| #define DEF_HELPER_FLAGS_3(NAME, FLAGS, ret, t1, t2, t3) \ | ||||
|   { .func = HELPER(NAME), .name = #NAME, .flags = FLAGS, \ | ||||
|     .sizemask = dh_sizemask(ret, 0) | dh_sizemask(t1, 1) \ | ||||
|     | dh_sizemask(t2, 2) | dh_sizemask(t3, 3) }, | ||||
| 
 | ||||
| #define DEF_HELPER_FLAGS_4(name, flags, ret, t1, t2, t3, t4) \ | ||||
| DEF_HELPER_FLAGS_0(name, flags, ret) | ||||
| #define DEF_HELPER_FLAGS_4(NAME, FLAGS, ret, t1, t2, t3, t4) \ | ||||
|   { .func = HELPER(NAME), .name = #NAME, .flags = FLAGS, \ | ||||
|     .sizemask = dh_sizemask(ret, 0) | dh_sizemask(t1, 1) \ | ||||
|     | dh_sizemask(t2, 2) | dh_sizemask(t3, 3) | dh_sizemask(t4, 4) }, | ||||
| 
 | ||||
| #define DEF_HELPER_FLAGS_5(name, flags, ret, t1, t2, t3, t4, t5) \ | ||||
| DEF_HELPER_FLAGS_0(name, flags, ret) | ||||
| #define DEF_HELPER_FLAGS_5(NAME, FLAGS, ret, t1, t2, t3, t4, t5) \ | ||||
|   { .func = HELPER(NAME), .name = #NAME, .flags = FLAGS, \ | ||||
|     .sizemask = dh_sizemask(ret, 0) | dh_sizemask(t1, 1) \ | ||||
|     | dh_sizemask(t2, 2) | dh_sizemask(t3, 3) | dh_sizemask(t4, 4) \ | ||||
|     | dh_sizemask(t5, 5) }, | ||||
| 
 | ||||
| #include "helper.h" | ||||
| #include "tcg-runtime.h" | ||||
|  | ||||
| @ -310,6 +310,8 @@ void tcg_pool_reset(TCGContext *s) | ||||
| typedef struct TCGHelperInfo { | ||||
|     void *func; | ||||
|     const char *name; | ||||
|     unsigned flags; | ||||
|     unsigned sizemask; | ||||
| } TCGHelperInfo; | ||||
| 
 | ||||
| #include "exec/helper-proto.h" | ||||
| @ -696,6 +698,11 @@ void tcg_gen_callN(TCGContext *s, void *func, unsigned int flags, | ||||
|     int real_args; | ||||
|     int nb_rets; | ||||
|     TCGArg *nparam; | ||||
|     TCGHelperInfo *info; | ||||
| 
 | ||||
|     info = g_hash_table_lookup(s->helpers, (gpointer)func); | ||||
|     assert(info != NULL); | ||||
|     assert(info->sizemask == sizemask); | ||||
| 
 | ||||
| #if defined(__sparc__) && !defined(__arch64__) \ | ||||
|     && !defined(CONFIG_TCG_INTERPRETER) | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Richard Henderson
						Richard Henderson