1+ # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 5
12
23# This file is licensed under the Apache License v2.0 with LLVM Exceptions.
34# See https://llvm.org/LICENSE.txt for license information.
45# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
56#
67# (c) Copyright 2025 Advanced Micro Devices, Inc. or its affiliates
78#
8- # RUN: not --crash llc -O2 -mtriple=aie2p -start-before=greedy \
9- # RUN: -stop-before=aie-unallocated-superreg-rewrite -o /dev/null %s 2>&1 | FileCheck %s
9+ # RUN: llc -O2 -mtriple=aie2p -start-before=greedy \
10+ # RUN: -stop-before=aie-unallocated-superreg-rewrite %s -o - | FileCheck %s
1011
1112# The goal of this test is to check if we properly insert undef flag on the def side
1213# of a expanded full copy. On a sub-register def operand, it refers to the part of the
1516# force the related register to be inserted in liveout set of the predecessors block,
1617# causing dominance problems.
1718
18- # CHECK: LLVM ERROR: Found 1 machine code errors
19-
2019---
2120name : use_all_2d_regs
2221tracksRegLiveness : true
2322body : |
23+ ; CHECK-LABEL: name: use_all_2d_regs
24+ ; CHECK: bb.0:
25+ ; CHECK-NEXT: successors: %bb.1(0x80000000)
26+ ; CHECK-NEXT: {{ $}}
27+ ; CHECK-NEXT: undef [[MOV_PD_imm11_pseudo:%[0-9]+]].sub_dim_stride:ed = MOV_PD_imm11_pseudo 1
28+ ; CHECK-NEXT: [[MOV_PD_imm11_pseudo:%[0-9]+]].sub_mod:ed = MOV_PD_imm11_pseudo 0
29+ ; CHECK-NEXT: [[MOV_PD_imm11_pseudo1:%[0-9]+]]:edn = MOV_PD_imm11_pseudo -1
30+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:em = COPY [[MOV_PD_imm11_pseudo]].sub_dim_stride
31+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:edj = COPY [[MOV_PD_imm11_pseudo]].sub_mod
32+ ; CHECK-NEXT: [[COPY2:%[0-9]+]]:edn = COPY [[MOV_PD_imm11_pseudo]].sub_mod
33+ ; CHECK-NEXT: [[COPY3:%[0-9]+]]:edn = COPY [[MOV_PD_imm11_pseudo]].sub_mod
34+ ; CHECK-NEXT: [[COPY4:%[0-9]+]]:edn = COPY [[MOV_PD_imm11_pseudo]].sub_mod
35+ ; CHECK-NEXT: [[COPY5:%[0-9]+]]:edn = COPY [[MOV_PD_imm11_pseudo]].sub_mod
36+ ; CHECK-NEXT: [[COPY6:%[0-9]+]]:edn = COPY [[MOV_PD_imm11_pseudo]].sub_mod
37+ ; CHECK-NEXT: [[MOV_PD_imm11_pseudo:%[0-9]+]].sub_dim_size:ed = COPY [[MOV_PD_imm11_pseudo]].sub_mod
38+ ; CHECK-NEXT: [[COPY7:%[0-9]+]]:edc = COPY [[MOV_PD_imm11_pseudo]].sub_mod
39+ ; CHECK-NEXT: [[COPY8:%[0-9]+]]:edc = COPY [[MOV_PD_imm11_pseudo]].sub_mod
40+ ; CHECK-NEXT: [[COPY9:%[0-9]+]]:edc = COPY [[MOV_PD_imm11_pseudo]].sub_mod
41+ ; CHECK-NEXT: [[COPY10:%[0-9]+]]:edc = COPY [[MOV_PD_imm11_pseudo]].sub_mod
42+ ; CHECK-NEXT: [[COPY11:%[0-9]+]]:edc = COPY [[MOV_PD_imm11_pseudo]].sub_mod
43+ ; CHECK-NEXT: [[COPY12:%[0-9]+]]:edc = COPY [[MOV_PD_imm11_pseudo]].sub_mod
44+ ; CHECK-NEXT: [[COPY13:%[0-9]+]]:edc = COPY [[MOV_PD_imm11_pseudo]].sub_mod
45+ ; CHECK-NEXT: [[MOV_PD_imm11_pseudo:%[0-9]+]].sub_dim_count:ed = COPY [[MOV_PD_imm11_pseudo]].sub_mod
46+ ; CHECK-NEXT: [[COPY14:%[0-9]+]]:ed = COPY [[MOV_PD_imm11_pseudo]]
47+ ; CHECK-NEXT: [[COPY15:%[0-9]+]]:edc = COPY [[MOV_PD_imm11_pseudo]].sub_mod
48+ ; CHECK-NEXT: {{ $}}
49+ ; CHECK-NEXT: bb.1:
50+ ; CHECK-NEXT: successors: %bb.1(0x80000000)
51+ ; CHECK-NEXT: {{ $}}
52+ ; CHECK-NEXT: [[MOV_PD_imm11_pseudo2:%[0-9]+]]:ep = MOV_PD_imm11_pseudo 0
53+ ; CHECK-NEXT: [[MOV_PD_imm11_pseudo3:%[0-9]+]]:ep = MOV_PD_imm11_pseudo 0
54+ ; CHECK-NEXT: [[MOV_PD_imm11_pseudo4:%[0-9]+]]:ep = MOV_PD_imm11_pseudo 0
55+ ; CHECK-NEXT: [[MOV_PD_imm11_pseudo5:%[0-9]+]]:ep = MOV_PD_imm11_pseudo 0
56+ ; CHECK-NEXT: dead [[MOV_PD_imm11_pseudo2:%[0-9]+]]:ep, [[COPY7:%[0-9]+]]:edc = PADD_2D_pseudo_split [[MOV_PD_imm11_pseudo2]], [[COPY]], [[MOV_PD_imm11_pseudo1]], [[COPY1]], [[COPY7]]
57+ ; CHECK-NEXT: [[MOV_PD_imm11_pseudo6:%[0-9]+]]:ep = MOV_PD_imm11_pseudo 0
58+ ; CHECK-NEXT: [[COPY16:%[0-9]+]]:em = COPY [[COPY]]
59+ ; CHECK-NEXT: [[COPY17:%[0-9]+]]:edj = COPY [[COPY1]]
60+ ; CHECK-NEXT: dead [[MOV_PD_imm11_pseudo3:%[0-9]+]]:ep, [[COPY10:%[0-9]+]]:edc = PADD_2D_pseudo_split [[MOV_PD_imm11_pseudo3]], [[COPY16]], [[COPY2]], [[COPY17]], [[COPY10]]
61+ ; CHECK-NEXT: [[MOV_PD_imm11_pseudo7:%[0-9]+]]:ep = MOV_PD_imm11_pseudo 0
62+ ; CHECK-NEXT: [[COPY18:%[0-9]+]]:em = COPY [[COPY]]
63+ ; CHECK-NEXT: [[COPY19:%[0-9]+]]:edj = COPY [[COPY1]]
64+ ; CHECK-NEXT: dead [[MOV_PD_imm11_pseudo4:%[0-9]+]]:ep, [[COPY8:%[0-9]+]]:edc = PADD_2D_pseudo_split [[MOV_PD_imm11_pseudo4]], [[COPY18]], [[COPY3]], [[COPY19]], [[COPY8]]
65+ ; CHECK-NEXT: [[COPY20:%[0-9]+]]:em = COPY [[COPY]]
66+ ; CHECK-NEXT: [[COPY21:%[0-9]+]]:edn = COPY [[MOV_PD_imm11_pseudo1]]
67+ ; CHECK-NEXT: [[MOV_PD_imm11_pseudo8:%[0-9]+]]:ep = MOV_PD_imm11_pseudo 0
68+ ; CHECK-NEXT: [[COPY22:%[0-9]+]]:edj = COPY [[COPY1]]
69+ ; CHECK-NEXT: dead [[MOV_PD_imm11_pseudo5:%[0-9]+]]:ep, [[COPY11:%[0-9]+]]:edc = PADD_2D_pseudo_split [[MOV_PD_imm11_pseudo5]], [[COPY20]], [[COPY21]], [[COPY22]], [[COPY11]]
70+ ; CHECK-NEXT: [[COPY23:%[0-9]+]]:em = COPY [[COPY]]
71+ ; CHECK-NEXT: [[COPY24:%[0-9]+]]:edj = COPY [[COPY1]]
72+ ; CHECK-NEXT: dead [[MOV_PD_imm11_pseudo6:%[0-9]+]]:ep, [[COPY9:%[0-9]+]]:edc = PADD_2D_pseudo_split [[MOV_PD_imm11_pseudo6]], [[COPY23]], [[COPY4]], [[COPY24]], [[COPY9]]
73+ ; CHECK-NEXT: [[MOV_PD_imm11_pseudo9:%[0-9]+]]:ep = MOV_PD_imm11_pseudo 0
74+ ; CHECK-NEXT: [[COPY25:%[0-9]+]]:em = COPY [[COPY]]
75+ ; CHECK-NEXT: [[COPY26:%[0-9]+]]:edj = COPY [[COPY1]]
76+ ; CHECK-NEXT: dead [[MOV_PD_imm11_pseudo7:%[0-9]+]]:ep, [[COPY12:%[0-9]+]]:edc = PADD_2D_pseudo_split [[MOV_PD_imm11_pseudo7]], [[COPY25]], [[COPY5]], [[COPY26]], [[COPY12]]
77+ ; CHECK-NEXT: undef [[COPY27:%[0-9]+]].sub_dim_count:ed = COPY [[COPY10]] {
78+ ; CHECK-NEXT: internal [[COPY27]].sub_dim_size:ed = COPY [[COPY2]]
79+ ; CHECK-NEXT: }
80+ ; CHECK-NEXT: [[COPY28:%[0-9]+]]:edc = COPY [[COPY14]].sub_dim_count
81+ ; CHECK-NEXT: [[COPY29:%[0-9]+]]:edn = COPY [[COPY14]].sub_dim_size
82+ ; CHECK-NEXT: [[COPY30:%[0-9]+]]:edj = COPY [[COPY14]].sub_dim_stride
83+ ; CHECK-NEXT: [[COPY31:%[0-9]+]]:em = COPY [[COPY14]].sub_mod
84+ ; CHECK-NEXT: dead [[MOV_PD_imm11_pseudo9:%[0-9]+]]:ep, [[COPY28:%[0-9]+]]:edc = PADD_2D_pseudo_split [[MOV_PD_imm11_pseudo9]], [[COPY31]], [[COPY29]], [[COPY30]], [[COPY28]]
85+ ; CHECK-NEXT: [[COPY32:%[0-9]+]]:em = COPY [[COPY]]
86+ ; CHECK-NEXT: [[MOV_PD_imm11_pseudo10:%[0-9]+]]:ep = MOV_PD_imm11_pseudo 0
87+ ; CHECK-NEXT: [[COPY33:%[0-9]+]]:edj = COPY [[COPY1]]
88+ ; CHECK-NEXT: dead [[MOV_PD_imm11_pseudo8:%[0-9]+]]:ep, [[COPY13:%[0-9]+]]:edc = PADD_2D_pseudo_split [[MOV_PD_imm11_pseudo8]], [[COPY32]], [[COPY6]], [[COPY33]], [[COPY13]]
89+ ; CHECK-NEXT: [[COPY34:%[0-9]+]]:edn = COPY [[COPY31]]
90+ ; CHECK-NEXT: undef [[COPY14:%[0-9]+]].sub_dim_count:ed = COPY [[COPY28]]
91+ ; CHECK-NEXT: undef [[COPY14:%[0-9]+]].sub_dim_size:ed = COPY [[COPY29]]
92+ ; CHECK-NEXT: undef [[COPY14:%[0-9]+]].sub_dim_stride:ed = COPY [[COPY30]]
93+ ; CHECK-NEXT: undef [[COPY14:%[0-9]+]].sub_mod:ed = COPY [[COPY31]]
94+ ; CHECK-NEXT: [[COPY35:%[0-9]+]]:em = COPY [[COPY31]]
95+ ; CHECK-NEXT: [[COPY10:%[0-9]+]]:edc = COPY [[COPY27]].sub_dim_count {
96+ ; CHECK-NEXT: internal [[COPY2]]:edn = COPY [[COPY27]].sub_dim_size
97+ ; CHECK-NEXT: }
98+ ; CHECK-NEXT: [[COPY36:%[0-9]+]]:edj = COPY [[COPY1]]
99+ ; CHECK-NEXT: dead [[MOV_PD_imm11_pseudo10:%[0-9]+]]:ep, [[COPY15:%[0-9]+]]:edc = PADD_2D_pseudo_split [[MOV_PD_imm11_pseudo10]], [[COPY35]], [[COPY34]], [[COPY36]], [[COPY15]]
100+ ; CHECK-NEXT: PseudoJ_jump_imm %bb.1
24101 bb.0:
25102 successors: %bb.1(0x80000000)
26-
103+
27104 undef %80.sub_dim_stride:ed = MOV_PD_imm11_pseudo 1
28105 %80.sub_mod:ed = MOV_PD_imm11_pseudo 0
29106 undef %105.sub_dim_size:ed = MOV_PD_imm11_pseudo -1
@@ -44,10 +121,10 @@ body: |
44121 %82.sub_dim_count:ed = COPY %80.sub_mod
45122 %80.sub_dim_count:ed = COPY %80.sub_mod
46123 undef %77.sub_dim_count:ed = COPY %80.sub_mod
47-
124+
48125 bb.1:
49126 successors: %bb.1(0x80000000)
50-
127+
51128 %10:ep = MOV_PD_imm11_pseudo 0
52129 %18:ep = MOV_PD_imm11_pseudo 0
53130 %22:ep = MOV_PD_imm11_pseudo 0
0 commit comments