Skip to content

[mlir][generate-test-checks] Emit attributes with rest of CHECK lines #143759

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Jun 11, 2025
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 23 additions & 5 deletions mlir/utils/generate-test-checks.py
Original file line number Diff line number Diff line change
Expand Up @@ -220,12 +220,19 @@ def process_source_lines(source_lines, note, args):
source_segments[-1].append(line + "\n")
return source_segments

def process_attribute_definition(line, attribute_namer, output):

def process_attribute_definition(line, attribute_namer):
m = ATTR_DEF_RE.match(line)
if m:
attribute_name = attribute_namer.generate_name(m.group(1))
line = '// CHECK: #[[' + attribute_name + ':.+]] =' + line[len(m.group(0)):] + '\n'
output.write(line)
return (
"// CHECK: #[["
+ attribute_name
+ ":.+]] ="
+ line[len(m.group(0)) :]
+ "\n"
)
return None

def process_attribute_references(line, attribute_namer):

Expand Down Expand Up @@ -340,6 +347,9 @@ def main():
variable_namer = VariableNamer(args.variable_names)
attribute_namer = AttributeNamer(args.attribute_names)

# Store attribute definitions to emit at appropriate scope
pending_attr_defs = []

# Process lines
for input_line in input_lines:
if not input_line:
Expand All @@ -350,8 +360,9 @@ def main():
if input_line.startswith("// -----"):
continue

# Check if this is an attribute definition and process it
process_attribute_definition(input_line, attribute_namer, output)
if ATTR_DEF_RE.match(input_line):
pending_attr_defs.append(input_line)
continue

# Lines with blocks begin with a ^. These lines have a trailing comment
# that needs to be stripped.
Expand Down Expand Up @@ -407,6 +418,13 @@ def main():
output_line += process_line(ssa_split[1:], variable_namer)

else:
# Emit any pending attribute definitions at the start of this scope
for attr in pending_attr_defs:
attr_line = process_attribute_definition(attr, attribute_namer)
if attr_line:
output_segments[-1].append(attr_line)
pending_attr_defs.clear()

# Output the first line chunk that does not contain an SSA name for the
# label.
output_line = "// " + args.check_prefix + "-LABEL: " + ssa_split[0] + "\n"
Expand Down