Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / GlobalISel / insertelement.large.ll
blobd910058f0ebd921658e4a007783e8245db670f7b
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -global-isel -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 -verify-machineinstrs < %s | FileCheck -check-prefix=GCN %s
3 ; RUN: llc -global-isel -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1010 -verify-machineinstrs < %s | FileCheck -check-prefix=GFX10 %s
4 ; RUN: llc -global-isel -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 -verify-machineinstrs < %s | FileCheck -check-prefix=GFX11 %s
6 define amdgpu_kernel void @v_insert_v64i32_37(ptr addrspace(1) %ptr.in, ptr addrspace(1) %ptr.out) #0 {
7 ; GCN-LABEL: v_insert_v64i32_37:
8 ; GCN:       ; %bb.0:
9 ; GCN-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
10 ; GCN-NEXT:    v_lshlrev_b32_e32 v64, 8, v0
11 ; GCN-NEXT:    s_waitcnt lgkmcnt(0)
12 ; GCN-NEXT:    global_load_dwordx4 v[4:7], v64, s[0:1] offset:144
13 ; GCN-NEXT:    global_load_dwordx4 v[0:3], v64, s[0:1]
14 ; GCN-NEXT:    global_load_dwordx4 v[8:11], v64, s[0:1] offset:16
15 ; GCN-NEXT:    global_load_dwordx4 v[12:15], v64, s[0:1] offset:32
16 ; GCN-NEXT:    global_load_dwordx4 v[16:19], v64, s[0:1] offset:48
17 ; GCN-NEXT:    global_load_dwordx4 v[20:23], v64, s[0:1] offset:64
18 ; GCN-NEXT:    global_load_dwordx4 v[24:27], v64, s[0:1] offset:80
19 ; GCN-NEXT:    global_load_dwordx4 v[28:31], v64, s[0:1] offset:96
20 ; GCN-NEXT:    global_load_dwordx4 v[32:35], v64, s[0:1] offset:112
21 ; GCN-NEXT:    global_load_dwordx4 v[36:39], v64, s[0:1] offset:128
22 ; GCN-NEXT:    global_load_dwordx4 v[40:43], v64, s[0:1] offset:160
23 ; GCN-NEXT:    global_load_dwordx4 v[44:47], v64, s[0:1] offset:176
24 ; GCN-NEXT:    global_load_dwordx4 v[48:51], v64, s[0:1] offset:192
25 ; GCN-NEXT:    global_load_dwordx4 v[52:55], v64, s[0:1] offset:208
26 ; GCN-NEXT:    global_load_dwordx4 v[56:59], v64, s[0:1] offset:224
27 ; GCN-NEXT:    global_load_dwordx4 v[60:63], v64, s[0:1] offset:240
28 ; GCN-NEXT:    s_waitcnt vmcnt(15)
29 ; GCN-NEXT:    v_mov_b32_e32 v5, 0x3e7
30 ; GCN-NEXT:    global_store_dwordx4 v64, v[4:7], s[2:3] offset:144
31 ; GCN-NEXT:    s_waitcnt vmcnt(15)
32 ; GCN-NEXT:    global_store_dwordx4 v64, v[0:3], s[2:3]
33 ; GCN-NEXT:    s_waitcnt vmcnt(15)
34 ; GCN-NEXT:    global_store_dwordx4 v64, v[8:11], s[2:3] offset:16
35 ; GCN-NEXT:    s_waitcnt vmcnt(15)
36 ; GCN-NEXT:    global_store_dwordx4 v64, v[12:15], s[2:3] offset:32
37 ; GCN-NEXT:    s_waitcnt vmcnt(15)
38 ; GCN-NEXT:    global_store_dwordx4 v64, v[16:19], s[2:3] offset:48
39 ; GCN-NEXT:    s_waitcnt vmcnt(15)
40 ; GCN-NEXT:    global_store_dwordx4 v64, v[20:23], s[2:3] offset:64
41 ; GCN-NEXT:    s_waitcnt vmcnt(15)
42 ; GCN-NEXT:    global_store_dwordx4 v64, v[24:27], s[2:3] offset:80
43 ; GCN-NEXT:    s_waitcnt vmcnt(15)
44 ; GCN-NEXT:    global_store_dwordx4 v64, v[28:31], s[2:3] offset:96
45 ; GCN-NEXT:    s_waitcnt vmcnt(15)
46 ; GCN-NEXT:    global_store_dwordx4 v64, v[32:35], s[2:3] offset:112
47 ; GCN-NEXT:    s_waitcnt vmcnt(15)
48 ; GCN-NEXT:    global_store_dwordx4 v64, v[36:39], s[2:3] offset:128
49 ; GCN-NEXT:    s_waitcnt vmcnt(15)
50 ; GCN-NEXT:    global_store_dwordx4 v64, v[40:43], s[2:3] offset:160
51 ; GCN-NEXT:    s_waitcnt vmcnt(15)
52 ; GCN-NEXT:    global_store_dwordx4 v64, v[44:47], s[2:3] offset:176
53 ; GCN-NEXT:    s_waitcnt vmcnt(15)
54 ; GCN-NEXT:    global_store_dwordx4 v64, v[48:51], s[2:3] offset:192
55 ; GCN-NEXT:    s_waitcnt vmcnt(15)
56 ; GCN-NEXT:    global_store_dwordx4 v64, v[52:55], s[2:3] offset:208
57 ; GCN-NEXT:    s_waitcnt vmcnt(15)
58 ; GCN-NEXT:    global_store_dwordx4 v64, v[56:59], s[2:3] offset:224
59 ; GCN-NEXT:    s_waitcnt vmcnt(15)
60 ; GCN-NEXT:    global_store_dwordx4 v64, v[60:63], s[2:3] offset:240
61 ; GCN-NEXT:    s_endpgm
63 ; GFX10-LABEL: v_insert_v64i32_37:
64 ; GFX10:       ; %bb.0:
65 ; GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
66 ; GFX10-NEXT:    v_lshlrev_b32_e32 v64, 8, v0
67 ; GFX10-NEXT:    s_waitcnt lgkmcnt(0)
68 ; GFX10-NEXT:    s_clause 0xf
69 ; GFX10-NEXT:    global_load_dwordx4 v[0:3], v64, s[0:1]
70 ; GFX10-NEXT:    global_load_dwordx4 v[8:11], v64, s[0:1] offset:16
71 ; GFX10-NEXT:    global_load_dwordx4 v[12:15], v64, s[0:1] offset:32
72 ; GFX10-NEXT:    global_load_dwordx4 v[16:19], v64, s[0:1] offset:48
73 ; GFX10-NEXT:    global_load_dwordx4 v[20:23], v64, s[0:1] offset:64
74 ; GFX10-NEXT:    global_load_dwordx4 v[24:27], v64, s[0:1] offset:80
75 ; GFX10-NEXT:    global_load_dwordx4 v[28:31], v64, s[0:1] offset:96
76 ; GFX10-NEXT:    global_load_dwordx4 v[32:35], v64, s[0:1] offset:112
77 ; GFX10-NEXT:    global_load_dwordx4 v[36:39], v64, s[0:1] offset:160
78 ; GFX10-NEXT:    global_load_dwordx4 v[40:43], v64, s[0:1] offset:176
79 ; GFX10-NEXT:    global_load_dwordx4 v[44:47], v64, s[0:1] offset:192
80 ; GFX10-NEXT:    global_load_dwordx4 v[48:51], v64, s[0:1] offset:208
81 ; GFX10-NEXT:    global_load_dwordx4 v[52:55], v64, s[0:1] offset:224
82 ; GFX10-NEXT:    global_load_dwordx4 v[56:59], v64, s[0:1] offset:240
83 ; GFX10-NEXT:    global_load_dwordx4 v[60:63], v64, s[0:1] offset:128
84 ; GFX10-NEXT:    global_load_dwordx4 v[4:7], v64, s[0:1] offset:144
85 ; GFX10-NEXT:    s_waitcnt vmcnt(0)
86 ; GFX10-NEXT:    v_mov_b32_e32 v5, 0x3e7
87 ; GFX10-NEXT:    global_store_dwordx4 v64, v[0:3], s[2:3]
88 ; GFX10-NEXT:    global_store_dwordx4 v64, v[8:11], s[2:3] offset:16
89 ; GFX10-NEXT:    global_store_dwordx4 v64, v[12:15], s[2:3] offset:32
90 ; GFX10-NEXT:    global_store_dwordx4 v64, v[16:19], s[2:3] offset:48
91 ; GFX10-NEXT:    global_store_dwordx4 v64, v[20:23], s[2:3] offset:64
92 ; GFX10-NEXT:    global_store_dwordx4 v64, v[24:27], s[2:3] offset:80
93 ; GFX10-NEXT:    global_store_dwordx4 v64, v[28:31], s[2:3] offset:96
94 ; GFX10-NEXT:    global_store_dwordx4 v64, v[32:35], s[2:3] offset:112
95 ; GFX10-NEXT:    global_store_dwordx4 v64, v[60:63], s[2:3] offset:128
96 ; GFX10-NEXT:    global_store_dwordx4 v64, v[4:7], s[2:3] offset:144
97 ; GFX10-NEXT:    global_store_dwordx4 v64, v[36:39], s[2:3] offset:160
98 ; GFX10-NEXT:    global_store_dwordx4 v64, v[40:43], s[2:3] offset:176
99 ; GFX10-NEXT:    global_store_dwordx4 v64, v[44:47], s[2:3] offset:192
100 ; GFX10-NEXT:    global_store_dwordx4 v64, v[48:51], s[2:3] offset:208
101 ; GFX10-NEXT:    global_store_dwordx4 v64, v[52:55], s[2:3] offset:224
102 ; GFX10-NEXT:    global_store_dwordx4 v64, v[56:59], s[2:3] offset:240
103 ; GFX10-NEXT:    s_endpgm
105 ; GFX11-LABEL: v_insert_v64i32_37:
106 ; GFX11:       ; %bb.0:
107 ; GFX11-NEXT:    s_load_b128 s[0:3], s[0:1], 0x0
108 ; GFX11-NEXT:    v_lshlrev_b32_e32 v64, 8, v0
109 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
110 ; GFX11-NEXT:    s_clause 0xf
111 ; GFX11-NEXT:    global_load_b128 v[0:3], v64, s[0:1]
112 ; GFX11-NEXT:    global_load_b128 v[8:11], v64, s[0:1] offset:16
113 ; GFX11-NEXT:    global_load_b128 v[12:15], v64, s[0:1] offset:32
114 ; GFX11-NEXT:    global_load_b128 v[16:19], v64, s[0:1] offset:48
115 ; GFX11-NEXT:    global_load_b128 v[20:23], v64, s[0:1] offset:64
116 ; GFX11-NEXT:    global_load_b128 v[24:27], v64, s[0:1] offset:80
117 ; GFX11-NEXT:    global_load_b128 v[28:31], v64, s[0:1] offset:96
118 ; GFX11-NEXT:    global_load_b128 v[32:35], v64, s[0:1] offset:112
119 ; GFX11-NEXT:    global_load_b128 v[36:39], v64, s[0:1] offset:128
120 ; GFX11-NEXT:    global_load_b128 v[4:7], v64, s[0:1] offset:144
121 ; GFX11-NEXT:    global_load_b128 v[40:43], v64, s[0:1] offset:160
122 ; GFX11-NEXT:    global_load_b128 v[44:47], v64, s[0:1] offset:176
123 ; GFX11-NEXT:    global_load_b128 v[48:51], v64, s[0:1] offset:192
124 ; GFX11-NEXT:    global_load_b128 v[52:55], v64, s[0:1] offset:208
125 ; GFX11-NEXT:    global_load_b128 v[56:59], v64, s[0:1] offset:224
126 ; GFX11-NEXT:    global_load_b128 v[60:63], v64, s[0:1] offset:240
127 ; GFX11-NEXT:    s_waitcnt vmcnt(6)
128 ; GFX11-NEXT:    v_mov_b32_e32 v5, 0x3e7
129 ; GFX11-NEXT:    s_clause 0x9
130 ; GFX11-NEXT:    global_store_b128 v64, v[0:3], s[2:3]
131 ; GFX11-NEXT:    global_store_b128 v64, v[8:11], s[2:3] offset:16
132 ; GFX11-NEXT:    global_store_b128 v64, v[12:15], s[2:3] offset:32
133 ; GFX11-NEXT:    global_store_b128 v64, v[16:19], s[2:3] offset:48
134 ; GFX11-NEXT:    global_store_b128 v64, v[20:23], s[2:3] offset:64
135 ; GFX11-NEXT:    global_store_b128 v64, v[24:27], s[2:3] offset:80
136 ; GFX11-NEXT:    global_store_b128 v64, v[28:31], s[2:3] offset:96
137 ; GFX11-NEXT:    global_store_b128 v64, v[32:35], s[2:3] offset:112
138 ; GFX11-NEXT:    global_store_b128 v64, v[36:39], s[2:3] offset:128
139 ; GFX11-NEXT:    global_store_b128 v64, v[4:7], s[2:3] offset:144
140 ; GFX11-NEXT:    s_waitcnt vmcnt(5)
141 ; GFX11-NEXT:    global_store_b128 v64, v[40:43], s[2:3] offset:160
142 ; GFX11-NEXT:    s_waitcnt vmcnt(4)
143 ; GFX11-NEXT:    global_store_b128 v64, v[44:47], s[2:3] offset:176
144 ; GFX11-NEXT:    s_waitcnt vmcnt(3)
145 ; GFX11-NEXT:    global_store_b128 v64, v[48:51], s[2:3] offset:192
146 ; GFX11-NEXT:    s_waitcnt vmcnt(2)
147 ; GFX11-NEXT:    global_store_b128 v64, v[52:55], s[2:3] offset:208
148 ; GFX11-NEXT:    s_waitcnt vmcnt(1)
149 ; GFX11-NEXT:    global_store_b128 v64, v[56:59], s[2:3] offset:224
150 ; GFX11-NEXT:    s_waitcnt vmcnt(0)
151 ; GFX11-NEXT:    global_store_b128 v64, v[60:63], s[2:3] offset:240
152 ; GFX11-NEXT:    s_nop 0
153 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
154 ; GFX11-NEXT:    s_endpgm
155   %id = call i32 @llvm.amdgcn.workitem.id.x()
156   %gep.in = getelementptr <64 x i32>, ptr addrspace(1) %ptr.in, i32 %id
157   %vec = load <64 x i32>, ptr addrspace(1) %gep.in
158   %insert = insertelement <64 x i32> %vec, i32 999, i32 37
159   %gep.out = getelementptr <64 x i32>, ptr addrspace(1) %ptr.out, i32 %id
160   store <64 x i32> %insert, ptr addrspace(1) %gep.out
161   ret void
164 declare i32 @llvm.amdgcn.workitem.id.x() #1
166 attributes #0 = { "amdgpu-flat-work-group-size"="1,256" "amdgpu-waves-per-eu"="1,10" }
167 attributes #1 = { nounwind readnone speculatable willreturn }