[llvm] r372277 - [utils] Add minimal support for MIR inputs to update_llc_test_checks.py
Roman Tereshin via llvm-commits
llvm-commits at lists.llvm.org
Thu Sep 19 07:09:34 PDT 2019
> The question i initially had was basically "is this the right tool for
> that, not the _mir one?",
I believe the first sentence of the description explicitly addresses exactly this question.
> but on a second look all appears to be in order.
Great!
Thank you,
Roman
> On Sep 19, 2019, at 7:06 AM, Roman Lebedev <lebedev.ri at gmail.com> wrote:
>
> On Thu, Sep 19, 2019 at 4:52 PM Roman Tereshin <rtereshin at apple.com> wrote:
>>
>> Hi Roman,
>>
>>> Was this reviewed?
>>
>> On Phabricator - no, internally - yes (+ Justin).
>
>>> The patch description does not mention utils/update_mir_test_checks.py
>>
>> Not sure what do you mean:
>> 1. The patch description does mention utils/update_mir_test_checks.py, though in the passing: "update_{llc,mir}_test_checks.py applicability is ...”
> Oops, skimmed through patch too quickly and did not see that ",mir}" part.
>
>> 2. The patch does not change utils/update_mir_test_checks.py, it only changes utils/update_llc_test_checks.py
> Yes
>
>> Is there any problem with the patch?
> Not that i can tell right now.
> The question i initially had was basically "is this the right tool for
> that, not the _mir one?",
> but on a second look all appears to be in order.
>
>> Thanks,
> Roman
>
>>> On Sep 19, 2019, at 1:06 AM, Roman Lebedev <lebedev.ri at gmail.com> wrote:
>>>
>>> Was this reviewed?
>>> The patch description does not mention utils/update_mir_test_checks.py
>>>
>>> On Thu, Sep 19, 2019 at 2:42 AM Roman Tereshin via llvm-commits
>>> <llvm-commits at lists.llvm.org> wrote:
>>>>
>>>> Author: rtereshin
>>>> Date: Wed Sep 18 16:44:17 2019
>>>> New Revision: 372277
>>>>
>>>> URL: http://llvm.org/viewvc/llvm-project?rev=372277&view=rev
>>>> Log:
>>>> [utils] Add minimal support for MIR inputs to update_llc_test_checks.py
>>>>
>>>> update_{llc,mir}_test_checks.py applicability is determined by the
>>>> output (assembly or MIR), not the input, which makes
>>>> update_llc_test_checks.py the right tool to generate tests that start at
>>>> MIR and stop at the final assembly.
>>>>
>>>> This commit adds the minimal support for this path. Main limitation that
>>>> remains:
>>>>
>>>> - MIR has to have LLVM IR section, and the CHECK lines will be inserted
>>>> into the LLVM IR functions that correspond to the MIR functions.
>>>>
>>>> Running
>>>> ../utils/update_llc_test_checks.py --llc-binary ./bin/llc
>>>> on a slightly modified ../test/CodeGen/X86/bad-tls-fold.mir
>>>>
>>>> produces the following diff:
>>>>
>>>> +# NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
>>>> +# RUN: llc %s -o - | FileCheck %s
>>>> --- |
>>>> target triple = "x86_64-unknown-linux-gnu"
>>>>
>>>> @@ -6,17 +7,31 @@
>>>> @i = external thread_local global i32
>>>>
>>>> define i32 @or() {
>>>> + ; CHECK-LABEL: or:
>>>> + ; CHECK: # %bb.0: # %entry
>>>> + ; CHECK-NEXT: movq {{.*}}(%rip), %rax
>>>> + ; CHECK-NEXT: orq $7, %rax
>>>> + ; CHECK-NEXT: movq i@{{.*}}(%rip), %rcx
>>>> + ; CHECK-NEXT: orq %rax, %rcx
>>>> + ; CHECK-NEXT: movl %fs:(%rcx), %eax
>>>> + ; CHECK-NEXT: retq
>>>> entry:
>>>> ret i32 undef
>>>> }
>>>> -
>>>> define i32 @and() {
>>>> + ; CHECK-LABEL: and:
>>>> + ; CHECK: # %bb.0: # %entry
>>>> + ; CHECK-NEXT: movq {{.*}}(%rip), %rax
>>>> + ; CHECK-NEXT: orq $7, %rax
>>>> + ; CHECK-NEXT: movq i@{{.*}}(%rip), %rcx
>>>> + ; CHECK-NEXT: andq %rax, %rcx
>>>> + ; CHECK-NEXT: movl %fs:(%rcx), %eax
>>>> + ; CHECK-NEXT: retq
>>>> entry:
>>>> ret i32 undef
>>>> }
>>>> ...
>>>>
>>>> (not applied)
>>>>
>>>> Modified:
>>>> llvm/trunk/utils/update_llc_test_checks.py
>>>>
>>>> Modified: llvm/trunk/utils/update_llc_test_checks.py
>>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/update_llc_test_checks.py?rev=372277&r1=372276&r2=372277&view=diff
>>>> ==============================================================================
>>>> --- llvm/trunk/utils/update_llc_test_checks.py (original)
>>>> +++ llvm/trunk/utils/update_llc_test_checks.py Wed Sep 18 16:44:17 2019
>>>> @@ -19,7 +19,7 @@ import re
>>>>
>>>> from UpdateTestChecks import asm, common
>>>>
>>>> -ADVERT = '; NOTE: Assertions have been autogenerated by '
>>>> +ADVERT = ' NOTE: Assertions have been autogenerated by '
>>>>
>>>>
>>>> def main():
>>>> @@ -44,7 +44,6 @@ def main():
>>>> args = parser.parse_args()
>>>>
>>>> script_name = os.path.basename(__file__)
>>>> - autogenerated_note = (ADVERT + 'utils/' + script_name)
>>>>
>>>> test_paths = [test for pattern in args.tests for test in glob.glob(pattern)]
>>>> for test in test_paths:
>>>> @@ -118,6 +117,13 @@ def main():
>>>>
>>>> llc_cmd_args = llc_cmd[len(llc_tool):].strip()
>>>> llc_cmd_args = llc_cmd_args.replace('< %s', '').replace('%s', '').strip()
>>>> + if test.endswith('.mir'):
>>>> + llc_cmd_args += ' -x mir'
>>>> + comment_sym = '#'
>>>> + check_indent = ' '
>>>> + else:
>>>> + comment_sym = ';'
>>>> + check_indent = ''
>>>>
>>>> check_prefixes = [item for m in common.CHECK_PREFIX_RE.finditer(filecheck_cmd)
>>>> for item in m.group(1).split(',')]
>>>> @@ -128,6 +134,8 @@ def main():
>>>> # now, we just ignore all but the last.
>>>> run_list.append((check_prefixes, llc_cmd_args, triple_in_cmd, march_in_cmd))
>>>>
>>>> + autogenerated_note = (comment_sym + ADVERT + 'utils/' + script_name)
>>>> +
>>>> func_dict = {}
>>>> for p in run_list:
>>>> prefixes = p[0]
>>>> @@ -166,7 +174,7 @@ def main():
>>>> continue
>>>>
>>>> # Print out the various check lines here.
>>>> - asm.add_asm_checks(output_lines, ';', run_list, func_dict, func_name)
>>>> + asm.add_asm_checks(output_lines, check_indent + ';', run_list, func_dict, func_name)
>>>> is_in_function_start = False
>>>>
>>>> if is_in_function:
>>>> @@ -180,7 +188,7 @@ def main():
>>>> continue
>>>>
>>>> # Discard any previous script advertising.
>>>> - if input_line.startswith(ADVERT):
>>>> + if input_line.startswith(comment_sym + ADVERT):
>>>> continue
>>>>
>>>> # If it's outside a function, it just gets copied to the output.
>>>>
>>>>
>>>> _______________________________________________
>>>> llvm-commits mailing list
>>>> llvm-commits at lists.llvm.org
>>>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>>
More information about the llvm-commits
mailing list