[MachineScheduler] Fix physreg dependencies of ExitSU (#123541)
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / commute-frame-index-operand.mir
bloba891d8f18e861f0642dfeb5cff6fbe94fff1f9e2
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 5
2 # RUN: llc -mtriple=amdgcn -mcpu=gfx900 -run-pass=machine-cse -verify-machineinstrs %s -o - | FileCheck --check-prefix=GCN %s
4 # Check that invalid MIR is not produced with a frame index in a
5 # commutable operand.
7 ---
8 name: commute_frame_index__v_add_co_u32_e32__sgpr_fi
9 tracksRegLiveness: true
10 stack:
11   - { id: 0, size: 8, alignment: 4, local-offset: 0 }
12 body:             |
13   bb.0:
14     liveins: $sgpr4
16     ; GCN-LABEL: name: commute_frame_index__v_add_co_u32_e32__sgpr_fi
17     ; GCN: liveins: $sgpr4
18     ; GCN-NEXT: {{  $}}
19     ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr4
20     ; GCN-NEXT: [[V_ADD_CO_U32_e32_:%[0-9]+]]:vgpr_32 = V_ADD_CO_U32_e32 killed [[COPY]], %stack.0, implicit-def dead $vcc, implicit $exec
21     ; GCN-NEXT: S_ENDPGM 0, implicit [[V_ADD_CO_U32_e32_]]
22     %0:sreg_32 = COPY $sgpr4
23     %1:vgpr_32 = V_ADD_CO_U32_e32 killed %0, %stack.0, implicit-def dead $vcc, implicit $exec
24     S_ENDPGM 0, implicit %1
26 ...
28 ---
29 name: commute_frame_index__v_add_co_u32_e64__fi_sgpr
30 tracksRegLiveness: true
31 stack:
32   - { id: 0, size: 8, alignment: 4, local-offset: 0 }
33 body:             |
34   bb.0:
35     liveins: $sgpr4
37     ; GCN-LABEL: name: commute_frame_index__v_add_co_u32_e64__fi_sgpr
38     ; GCN: liveins: $sgpr4
39     ; GCN-NEXT: {{  $}}
40     ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr4
41     ; GCN-NEXT: [[V_ADD_CO_U32_e64_:%[0-9]+]]:vgpr_32, [[V_ADD_CO_U32_e64_1:%[0-9]+]]:sreg_64 = V_ADD_CO_U32_e64 %stack.0, killed [[COPY]], 0, implicit $exec
42     ; GCN-NEXT: S_ENDPGM 0, implicit [[V_ADD_CO_U32_e64_]]
43     %0:sreg_32 = COPY $sgpr4
44     %1:vgpr_32, %2:sreg_64 = V_ADD_CO_U32_e64 %stack.0, killed %0, 0, implicit $exec
45     S_ENDPGM 0, implicit %1
47 ...
49 ---
50 name: commute_frame_index__v_add_co_u32__vgpr_fi
51 tracksRegLiveness: true
52 stack:
53   - { id: 0, size: 8, alignment: 4, local-offset: 0 }
54 body:             |
55   bb.0:
56     liveins: $vgpr0
58     ; GCN-LABEL: name: commute_frame_index__v_add_co_u32__vgpr_fi
59     ; GCN: liveins: $vgpr0
60     ; GCN-NEXT: {{  $}}
61     ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
62     ; GCN-NEXT: [[V_ADD_CO_U32_e32_:%[0-9]+]]:vgpr_32 = V_ADD_CO_U32_e32 %stack.0, killed [[COPY]], implicit-def dead $vcc, implicit $exec
63     ; GCN-NEXT: S_ENDPGM 0, implicit [[V_ADD_CO_U32_e32_]]
64     %0:vgpr_32 = COPY $vgpr0
65     %1:vgpr_32 = V_ADD_CO_U32_e32 killed %0, %stack.0, implicit-def dead $vcc, implicit $exec
66     S_ENDPGM 0, implicit %1
68 ...
70 ---
71 name: commute_frame_index__v_add_co_u32__fi_vgpr
72 tracksRegLiveness: true
73 stack:
74   - { id: 0, size: 8, alignment: 4, local-offset: 0 }
75 body:             |
76   bb.0.entry:
77     liveins: $vgpr0
79     ; GCN-LABEL: name: commute_frame_index__v_add_co_u32__fi_vgpr
80     ; GCN: liveins: $vgpr0
81     ; GCN-NEXT: {{  $}}
82     ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
83     ; GCN-NEXT: [[V_ADD_CO_U32_e32_:%[0-9]+]]:vgpr_32 = V_ADD_CO_U32_e32 %stack.0, killed [[COPY]], implicit-def dead $vcc, implicit $exec
84     ; GCN-NEXT: S_ENDPGM 0, implicit [[V_ADD_CO_U32_e32_]]
85     %0:vgpr_32 = COPY $vgpr0
86     %1:vgpr_32 = V_ADD_CO_U32_e32 %stack.0, killed %0, implicit-def dead $vcc, implicit $exec
87     S_ENDPGM 0, implicit %1
89 ...
91 ---
92 name: commute_frame_index__v_add_co_u32_e32__fi_fi
93 tracksRegLiveness: true
94 stack:
95   - { id: 0, size: 8, alignment: 4, local-offset: 0 }
96   - { id: 1, size: 8, alignment: 4, local-offset: 0 }
97 body:             |
98   bb.0:
100     ; GCN-LABEL: name: commute_frame_index__v_add_co_u32_e32__fi_fi
101     ; GCN: [[V_ADD_CO_U32_e32_:%[0-9]+]]:vgpr_32 = V_ADD_CO_U32_e32 %stack.0, %stack.1, implicit-def dead $vcc, implicit $exec
102     ; GCN-NEXT: S_ENDPGM 0, implicit [[V_ADD_CO_U32_e32_]]
103     %0:vgpr_32 = V_ADD_CO_U32_e32 %stack.0, %stack.1, implicit-def dead $vcc, implicit $exec
104     S_ENDPGM 0, implicit %0