You've already forked llvm-project
mirror of
https://github.com/encounter/llvm-project.git
synced 2026-03-30 11:27:19 -07:00
d29d1e2ffd
* The binding for Type is trivial and should be non-controversial. * The way that I define the IntegerType should serve as a pattern for what I want to do next. * I propose defining the rest of the standard types in this fashion and then generalizing for dialect types as necessary. * Essentially, creating/accessing a concrete Type (vs interacting with the string form) is done by "casting" to the concrete type (i.e. IntegerType can be constructed with a Type and will throw if the cast is illegal). * This deviates from some of our previous discussions about global objects but I think produces a usable API and we should go this way. Differential Revision: https://reviews.llvm.org/D86179
50 lines
1.3 KiB
Python
50 lines
1.3 KiB
Python
# RUN: %PYTHON %s | FileCheck %s
|
|
|
|
import mlir
|
|
|
|
def run(f):
|
|
print("\nTEST:", f.__name__)
|
|
f()
|
|
|
|
# Verify successful parse.
|
|
# CHECK-LABEL: TEST: testParseSuccess
|
|
# CHECK: module @successfulParse
|
|
def testParseSuccess():
|
|
ctx = mlir.ir.Context()
|
|
module = ctx.parse_module(r"""module @successfulParse {}""")
|
|
module.dump() # Just outputs to stderr. Verifies that it functions.
|
|
print(str(module))
|
|
|
|
run(testParseSuccess)
|
|
|
|
|
|
# Verify parse error.
|
|
# CHECK-LABEL: TEST: testParseError
|
|
# CHECK: testParseError: Unable to parse module assembly (see diagnostics)
|
|
def testParseError():
|
|
ctx = mlir.ir.Context()
|
|
try:
|
|
module = ctx.parse_module(r"""}SYNTAX ERROR{""")
|
|
except ValueError as e:
|
|
print("testParseError:", e)
|
|
else:
|
|
print("Exception not produced")
|
|
|
|
run(testParseError)
|
|
|
|
|
|
# Verify round-trip of ASM that contains unicode.
|
|
# Note that this does not test that the print path converts unicode properly
|
|
# because MLIR asm always normalizes it to the hex encoding.
|
|
# CHECK-LABEL: TEST: testRoundtripUnicode
|
|
# CHECK: func @roundtripUnicode()
|
|
# CHECK: foo = "\F0\9F\98\8A"
|
|
def testRoundtripUnicode():
|
|
ctx = mlir.ir.Context()
|
|
module = ctx.parse_module(r"""
|
|
func @roundtripUnicode() attributes { foo = "😊" }
|
|
""")
|
|
print(str(module))
|
|
|
|
run(testRoundtripUnicode)
|