@@ -5155,6 +5155,12 @@ def xed_mode_removal(env,ii):
5155
5155
return True
5156
5156
if 'CET=0' in ii .pattern :
5157
5157
return True
5158
+ if env .short_ud0 :
5159
+ if 'MODE_SHORT_UD0=0' in ii .pattern : # long UD0
5160
+ return True # skip
5161
+ else : # long ud0
5162
+ if 'MODE_SHORT_UD0=1' in ii .pattern : # short UD0
5163
+ return True # skip
5158
5164
return False
5159
5165
5160
5166
@@ -5331,12 +5337,13 @@ def gather_stats(db):
5331
5337
5332
5338
# object used for the env we pass to the generator
5333
5339
class enc_env_t (object ):
5334
- def __init__ (self , mode , asz , width_info_dict , test_checked_interface = False ):
5340
+ def __init__ (self , mode , asz , width_info_dict , test_checked_interface = False , short_ud0 = False ):
5335
5341
self .mode = mode
5336
5342
self .asz = asz
5337
5343
self .function_names = {}
5338
5344
self .test_checked_interface = test_checked_interface
5339
5345
self .tests_per_form = 1
5346
+ self .short_ud0 = short_ud0
5340
5347
# dictionary by oc2 of the various memop bit widths.
5341
5348
self .width_info_dict = width_info_dict
5342
5349
def __str__ (self ):
@@ -5404,6 +5411,12 @@ def emit_encode_functions(args,
5404
5411
def work ():
5405
5412
5406
5413
arg_parser = argparse .ArgumentParser (description = "Create XED encoder2" )
5414
+ arg_parser .add_argument ('-short-ud0' ,
5415
+ help = 'Encode 2-byte UD0 (default is long UD0 as implemented on modern Intel Core processors. Intel Atom processors implement short 2-byte UD0)' ,
5416
+ dest = 'short_ud0' ,
5417
+ action = 'store_true' ,
5418
+ default = False )
5419
+
5407
5420
arg_parser .add_argument ('-m64' ,
5408
5421
help = '64b mode (default)' ,
5409
5422
dest = 'modes' , action = 'append_const' , const = 64 )
@@ -5509,7 +5522,8 @@ def prune_asz_list_for_mode(mode,alist):
5509
5522
#extra_headers = ['xed/xed-encode-direct.h']
5510
5523
for mode in args .modes :
5511
5524
for asz in prune_asz_list_for_mode (mode ,args .asz_list ):
5512
- env = enc_env_t (mode , asz , width_info_dict )
5525
+ env = enc_env_t (mode , asz , width_info_dict ,
5526
+ short_ud0 = args .short_ud0 )
5513
5527
enc2test .set_test_gen_counters (env )
5514
5528
env .tests_per_form = 1
5515
5529
env .test_checked_interface = args .chk
0 commit comments