119 lines · plain
1// RUN: not mlir-opt %s -pass-pipeline='builtin.module(builtin.module(test-module-pass{))' 2>&1 | FileCheck --check-prefix=CHECK_ERROR_1 %s2// RUN: not mlir-opt %s -pass-pipeline='builtin.module(builtin.module(test-module-pass{test-option=3}))' 2>&1 | FileCheck --check-prefix=CHECK_ERROR_2 %s3// RUN: not mlir-opt %s -pass-pipeline='builtin.module(builtin.module(func.func(test-options-pass{list=3}), test-module-pass{invalid-option=3}))' 2>&1 | FileCheck --check-prefix=CHECK_ERROR_3 %s4// RUN: not mlir-opt %s -pass-pipeline='builtin.module(test-options-pass{list=3 list=notaninteger})' 2>&1 | FileCheck --check-prefix=CHECK_ERROR_4 %s5// RUN: not mlir-opt %s -pass-pipeline='builtin.module(test-options-pass{enum=invalid})' 2>&1 | FileCheck --check-prefix=CHECK_ERROR_5 %s6// RUN: mlir-opt %s -pass-pipeline='builtin.module(func.func(test-options-pass{list=1,2,3,4 list=5 string=value1 string=value2}))'7// RUN: mlir-opt %s -verify-each=false -pass-pipeline='builtin.module(func.func(test-options-pass{string-list=a list=1,2,3,4 string-list=b,c list=5 string-list=d string=nested_pipeline{arg1=10 arg2=" {} " arg3=true}}))' -dump-pass-pipeline 2>&1 | FileCheck --check-prefix=CHECK_1 %s8// RUN: mlir-opt %s -verify-each=false -test-options-pass-pipeline='list=1 string-list=a,b enum=one' -dump-pass-pipeline 2>&1 | FileCheck --check-prefix=CHECK_2 %s9// RUN: mlir-opt %s -verify-each=false -pass-pipeline='builtin.module(builtin.module(func.func(test-options-pass{list=3}), func.func(test-options-pass{enum=one list=1,2,3,4})))' -dump-pass-pipeline 2>&1 | FileCheck --check-prefix=CHECK_3 %s10// RUN: mlir-opt %s -verify-each=false -pass-pipeline='builtin.module(builtin.module(func.func(test-options-pass{list=3}), func.func(test-options-pass{enum=one list=1,2,3,4 string="foobar"})))' -dump-pass-pipeline 2>&1 | FileCheck --check-prefix=CHECK_4 %s11// RUN: mlir-opt %s -verify-each=false -pass-pipeline='builtin.module(builtin.module(func.func(test-options-pass{list=3}), func.func(test-options-pass{enum=one list=1,2,3,4 string="foo bar baz"})))' -dump-pass-pipeline 2>&1 | FileCheck --check-prefix=CHECK_5 %s12// RUN: mlir-opt %s -verify-each=false -pass-pipeline='builtin.module(builtin.module(func.func(test-options-pass{list=3}), func.func(test-options-pass{enum=one list=1,2,3,4 string={foo bar baz}})))' -dump-pass-pipeline 2>&1 | FileCheck --check-prefix=CHECK_5 %s13// RUN: mlir-opt %s -verify-each=false -pass-pipeline='builtin.module(builtin.module(func.func(test-options-pass{list=3}), func.func(test-options-pass{enum=one list=1,2,3,4 string=foo"bar"baz})))' -dump-pass-pipeline 2>&1 | FileCheck --check-prefix=CHECK_6 %s14// RUN: mlir-opt %s -verify-each=false '-test-options-super-pass-pipeline=super-list={{enum=zero list=1 string=foo},{enum=one list=2 string="bar"},{enum=two list=3 string={baz}}}' -dump-pass-pipeline 2>&1 | FileCheck --check-prefix=CHECK_7 %s15// RUN: mlir-opt %s -verify-each=false -pass-pipeline='builtin.module(func.func(test-options-super-pass{list={{enum=zero list={1} string=foo },{enum=one list={2} string=bar },{enum=two list={3} string=baz }}}))' -dump-pass-pipeline 2>&1 | FileCheck --check-prefix=CHECK_7 %s16// RUN: mlir-opt %s -verify-each=false -test-options-super-set-ab-pipeline='foo=true bar=false' -dump-pass-pipeline 2>&1 | FileCheck --check-prefix=CHECK_11 %s17 18 19// This test checks that lists-of-nested-options like 'option1={...},{....}' can be parsed20// just like how 'option=1,2,3' is also allowed:21 22// RUN: mlir-opt %s -verify-each=false -pass-pipeline='builtin.module(func.func(test-options-super-pass{list={enum=zero list={1} string=foo },{enum=one list={2} string=bar },{enum=two list={3} string=baz }}))' -dump-pass-pipeline 2>&1 | FileCheck --check-prefix=CHECK_7 %s23 24// This test checks that it is legal to specify an empty list using '{}'.25// RUN: mlir-opt %s -verify-each=false '--test-options-super-pass=list={enum=zero list={1} string=foo},{enum=one list={} string=bar}' -dump-pass-pipeline 2>&1 | FileCheck --check-prefix=CHECK_8 %s26 27// It is not possible to specify a size-1 list of empty string.28// It is possible to specify a size > 1 list of empty strings.29// RUN: mlir-opt %s -verify-each=false '--pass-pipeline=builtin.module(func.func(test-options-pass{string-list={""}}))' -dump-pass-pipeline 2>&1 | FileCheck --check-prefix=CHECK_9 %s30// RUN: mlir-opt %s -verify-each=false '--pass-pipeline=builtin.module(func.func(test-options-pass{string-list={,}}))' -dump-pass-pipeline 2>&1 | FileCheck --check-prefix=CHECK_10 %s31// RUN: mlir-opt %s -verify-each=false '--pass-pipeline=builtin.module(func.func(test-options-pass{string-list={"",}}))' -dump-pass-pipeline 2>&1 | FileCheck --check-prefix=CHECK_10 %s32 33 34// CHECK_ERROR_1: missing closing '}' while processing pass options35// CHECK_ERROR_2: no such option test-option36// CHECK_ERROR_3: no such option invalid-option37// CHECK_ERROR_4: 'notaninteger' value invalid for integer argument38// CHECK_ERROR_5: for the --enum option: Cannot find option named 'invalid'!39 40// CHECK_1: test-options-pass{enum=zero list={1,2,3,4,5} string=nested_pipeline{arg1=10 arg2=" {} " arg3=true} string-list={a,b,c,d}}41// CHECK_2: test-options-pass{enum=one list={1} string= string-list={a,b}}42 43// CHECK_3: builtin.module(44// CHECK_3-NEXT: builtin.module(45// CHECK_3-NEXT: func.func(46// CHECK_3-NEXT: test-options-pass{enum=zero list={3} string= }47// CHECK_3-NEXT: ),48// CHECK_3-NEXT: func.func(49// CHECK_3-NEXT: test-options-pass{enum=one list={1,2,3,4} string= }50// CHECK_3-NEXT: )51// CHECK_3-NEXT: )52// CHECK_3-NEXT: )53 54// CHECK_4: builtin.module(55// CHECK_4-NEXT: builtin.module(56// CHECK_4-NEXT: func.func(57// CHECK_4-NEXT: test-options-pass{enum=zero list={3} string= }58// CHECK_4-NEXT: ),59// CHECK_4-NEXT: func.func(60// CHECK_4-NEXT: test-options-pass{enum=one list={1,2,3,4} string=foobar }61// CHECK_4-NEXT: )62// CHECK_4-NEXT: )63// CHECK_4-NEXT: )64 65// CHECK_5: builtin.module(66// CHECK_5-NEXT: builtin.module(67// CHECK_5-NEXT: func.func(68// CHECK_5-NEXT: test-options-pass{enum=zero list={3} string= }69// CHECK_5-NEXT: ),70// CHECK_5-NEXT: func.func(71// CHECK_5-NEXT: test-options-pass{enum=one list={1,2,3,4} string={foo bar baz} }72// CHECK_5-NEXT: )73// CHECK_5-NEXT: )74// CHECK_5-NEXT: )75 76// CHECK_6: builtin.module(77// CHECK_6-NEXT: builtin.module(78// CHECK_6-NEXT: func.func(79// CHECK_6-NEXT: test-options-pass{enum=zero list={3} string= }80// CHECK_6-NEXT: ),81// CHECK_6-NEXT: func.func(82// CHECK_6-NEXT: test-options-pass{enum=one list={1,2,3,4} string=foo"bar"baz }83// CHECK_6-NEXT: )84// CHECK_6-NEXT: )85// CHECK_6-NEXT: )86 87// CHECK_7{LITERAL}: builtin.module(88// CHECK_7{LITERAL}-NEXT: func.func(89// CHECK_7{LITERAL}-NEXT: test-options-super-pass{list={{enum=zero list={1} string=foo },{enum=one list={2} string=bar },{enum=two list={3} string=baz }}}90// CHECK_7{LITERAL}-NEXT: )91// CHECK_7{LITERAL}-NEXT: )92 93// CHECK_8{LITERAL}: builtin.module(94// CHECK_8{LITERAL}-NEXT: func.func(95// CHECK_8{LITERAL}-NEXT: test-options-super-pass{list={{enum=zero list={1} string=foo },{enum=one string=bar }}}96// CHECK_8{LITERAL}-NEXT: )97// CHECK_8{LITERAL}-NEXT: )98 99// CHECK_9: builtin.module(100// CHECK_9-NEXT: func.func(101// CHECK_9-NEXT: test-options-pass{enum=zero string= string-list={}}102// CHECK_9-NEXT: )103// CHECK_9-NEXT: )104 105// CHECK_10: builtin.module(106// CHECK_10-NEXT: func.func(107// CHECK_10-NEXT: test-options-pass{enum=zero string= string-list={,}}108// CHECK_10-NEXT: )109// CHECK_10-NEXT: )110 111// CHECK_11: builtin.module(112// CHECK_11-NEXT: func.func(113// CHECK_11-NEXT: test-options-pass-a114// CHECK_11-NEXT: )115// CHECK_11-NEXT: func.func(116// CHECK_11-NEXT: test-options-pass-b117// CHECK_11-NEXT: )118// CHECK_11-NEXT: )119