Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / licm-valu.mir
blob00a5a4f1b32ea48b5984310fe1b477fd440fcb9a
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 -run-pass=machinelicm -verify-machineinstrs -o - %s | FileCheck -check-prefix=GCN %s
4 ---
5 name: hoist_move
6 tracksRegLiveness: true
7 body:             |
8   ; GCN-LABEL: name: hoist_move
9   ; GCN: bb.0:
10   ; GCN-NEXT:   successors: %bb.1(0x80000000)
11   ; GCN-NEXT: {{  $}}
12   ; GCN-NEXT:   [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 1, implicit $exec
13   ; GCN-NEXT:   S_BRANCH %bb.1
14   ; GCN-NEXT: {{  $}}
15   ; GCN-NEXT: bb.1:
16   ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
17   ; GCN-NEXT: {{  $}}
18   ; GCN-NEXT:   $exec = S_OR_B64 $exec, 1, implicit-def $scc
19   ; GCN-NEXT:   S_CBRANCH_EXECNZ %bb.1, implicit $exec
20   ; GCN-NEXT:   S_BRANCH %bb.2
21   ; GCN-NEXT: {{  $}}
22   ; GCN-NEXT: bb.2:
23   ; GCN-NEXT:   S_ENDPGM 0
24   bb.0:
25     S_BRANCH %bb.1
27   bb.1:
28     %0:vgpr_32 = V_MOV_B32_e32 1, implicit $exec
29     $exec = S_OR_B64 $exec, 1, implicit-def $scc
30     S_CBRANCH_EXECNZ %bb.1, implicit $exec
31     S_BRANCH %bb.2
33   bb.2:
34     S_ENDPGM 0
35 ...
36 ---
37 name: no_hoist_cmp
38 tracksRegLiveness: true
39 body:             |
40   ; GCN-LABEL: name: no_hoist_cmp
41   ; GCN: bb.0:
42   ; GCN-NEXT:   successors: %bb.1(0x80000000)
43   ; GCN-NEXT: {{  $}}
44   ; GCN-NEXT:   S_BRANCH %bb.1
45   ; GCN-NEXT: {{  $}}
46   ; GCN-NEXT: bb.1:
47   ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
48   ; GCN-NEXT: {{  $}}
49   ; GCN-NEXT:   [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64 = V_CMP_EQ_U32_e64 1, 2, implicit $exec
50   ; GCN-NEXT:   $exec = S_OR_B64 $exec, [[V_CMP_EQ_U32_e64_]], implicit-def $scc
51   ; GCN-NEXT:   S_CBRANCH_EXECNZ %bb.1, implicit $exec
52   ; GCN-NEXT:   S_BRANCH %bb.2
53   ; GCN-NEXT: {{  $}}
54   ; GCN-NEXT: bb.2:
55   ; GCN-NEXT:   S_ENDPGM 0
56   bb.0:
57     S_BRANCH %bb.1
59   bb.1:
60     %0:sreg_64 = V_CMP_EQ_U32_e64 1, 2, implicit $exec
61     $exec = S_OR_B64 $exec, %0:sreg_64, implicit-def $scc
62     S_CBRANCH_EXECNZ %bb.1, implicit $exec
63     S_BRANCH %bb.2
65   bb.2:
66     S_ENDPGM 0
67 ...
68 ---
69 name: allowable_hoist_cmp
70 tracksRegLiveness: true
71 body:             |
72   ; GCN-LABEL: name: allowable_hoist_cmp
73   ; GCN: bb.0:
74   ; GCN-NEXT:   successors: %bb.1(0x80000000)
75   ; GCN-NEXT: {{  $}}
76   ; GCN-NEXT:   [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64 = V_CMP_EQ_U32_e64 1, 2, implicit $exec
77   ; GCN-NEXT:   S_BRANCH %bb.1
78   ; GCN-NEXT: {{  $}}
79   ; GCN-NEXT: bb.1:
80   ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
81   ; GCN-NEXT: {{  $}}
82   ; GCN-NEXT:   $exec = S_AND_B64 $exec, [[V_CMP_EQ_U32_e64_]], implicit-def $scc
83   ; GCN-NEXT:   S_CBRANCH_EXECNZ %bb.1, implicit $exec
84   ; GCN-NEXT:   S_BRANCH %bb.2
85   ; GCN-NEXT: {{  $}}
86   ; GCN-NEXT: bb.2:
87   ; GCN-NEXT:   S_ENDPGM 0
88   bb.0:
89     S_BRANCH %bb.1
91   bb.1:
92     %0:sreg_64 = V_CMP_EQ_U32_e64 1, 2, implicit $exec
93     $exec = S_AND_B64 $exec, %0:sreg_64, implicit-def $scc
94     S_CBRANCH_EXECNZ %bb.1, implicit $exec
95     S_BRANCH %bb.2
97   bb.2:
98     S_ENDPGM 0
99 ...
101 name: no_hoist_readfirstlane
102 tracksRegLiveness: true
103 body:             |
104   ; GCN-LABEL: name: no_hoist_readfirstlane
105   ; GCN: bb.0:
106   ; GCN-NEXT:   successors: %bb.1(0x80000000)
107   ; GCN-NEXT: {{  $}}
108   ; GCN-NEXT:   [[DEF:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF
109   ; GCN-NEXT:   S_BRANCH %bb.1
110   ; GCN-NEXT: {{  $}}
111   ; GCN-NEXT: bb.1:
112   ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
113   ; GCN-NEXT: {{  $}}
114   ; GCN-NEXT:   [[V_READFIRSTLANE_B32_:%[0-9]+]]:sgpr_32 = V_READFIRSTLANE_B32 [[DEF]], implicit $exec
115   ; GCN-NEXT:   $exec = S_OR_B64 $exec, 1, implicit-def $scc
116   ; GCN-NEXT:   S_CBRANCH_EXECNZ %bb.1, implicit $exec
117   ; GCN-NEXT:   S_BRANCH %bb.2
118   ; GCN-NEXT: {{  $}}
119   ; GCN-NEXT: bb.2:
120   ; GCN-NEXT:   S_ENDPGM 0
121   bb.0:
122     %0:vgpr_32 = IMPLICIT_DEF
123     S_BRANCH %bb.1
125   bb.1:
126     %1:sgpr_32 = V_READFIRSTLANE_B32 %0:vgpr_32, implicit $exec
127     $exec = S_OR_B64 $exec, 1, implicit-def $scc
128     S_CBRANCH_EXECNZ %bb.1, implicit $exec
129     S_BRANCH %bb.2
131   bb.2:
132     S_ENDPGM 0