@@ -107,6 +107,7 @@ def __init__(self, name, **kwargs):
107107 self .ops = [] # the operands that this instruction takes
108108 self .is_allowed = True # whether this instruction is allowed in a DXIL program
109109 self .oload_types = "" # overload types if applicable
110+ # Always call process_oload_types() after setting oload_types.
110111 self .extended_oload_types = None # extended overload types if applicable
111112 self .vector_oload_types = None # vector overload types if applicable
112113 self .fn_attr = "" # attribute shorthands: rn=does not access memory,ro=only reads from memory,
@@ -140,8 +141,15 @@ def process_oload_types(self):
140141 raise ValueError (
141142 f"overload for '{ self .name } ' should be a string - use empty if n/a"
142143 )
143- # Early out for LLVM instructions or void overloads.
144- if self .oload_types == "v" or not self .is_dxil_op :
144+ # Early out for LLVM instructions
145+ if not self .is_dxil_op :
146+ return
147+
148+ self .extended_oload_types = ["" ] * dxil_max_overload_dims
149+ self .vector_oload_types = ["" ] * dxil_max_overload_dims
150+
151+ # Early out for void overloads.
152+ if self .oload_types == "v" :
145153 return
146154
147155 if self .oload_types == "" :
@@ -186,7 +194,6 @@ def process_oload_types(self):
186194 "Too many overload dimensions for DXIL op "
187195 f"{ self .name } : '{ self .oload_types } '"
188196 )
189- self .vector_oload_types = ["" ] * len (oload_types )
190197 for n , oloads in enumerate (oload_types ):
191198 if len (oloads ) == 0 :
192199 raise ValueError (
@@ -225,11 +232,6 @@ def process_oload_types(self):
225232 self .vector_oload_types [n ] = vector_oloads
226233 if len (oload_types ) > 1 :
227234 self .oload_types = "x"
228- self .extended_oload_types = oload_types
229- self .check_extended_oload_ops ()
230- else :
231- self .oload_types = oload_types [0 ]
232- self .extended_oload_types = None
233235
234236 def check_extended_oload_ops (self ):
235237 "Ensure ops has sequential extended overload references with $x0, $x1, etc."
0 commit comments