33; RUN: llc -global-isel=true -mtriple=amdgcn -mcpu=gfx900 < %s | FileCheck -check-prefix=GFX9 %s
44; RUN: llc -global-isel=true -mtriple=amdgcn -mcpu=fiji < %s | FileCheck -check-prefix=GFX8 %s
55; RUN: llc -global-isel=true -mtriple=amdgcn -mcpu=gfx1010 < %s | FileCheck -check-prefix=GFX10 %s
6- ; RUN: llc -global-isel=true -mtriple=amdgcn -mcpu=gfx1100 < %s | FileCheck -check-prefix=GFX10 %s
6+ ; RUN: llc -global-isel=true -mtriple=amdgcn -mcpu=gfx1100 < %s | FileCheck -check-prefix=GFX11 %s
77
88define <2 x i128 > @v_and_v2i128 (<2 x i128 > %a , <2 x i128 > %b ) {
99; GFX7-LABEL: v_and_v2i128:
@@ -57,6 +57,19 @@ define <2 x i128> @v_and_v2i128(<2 x i128> %a, <2 x i128> %b) {
5757; GFX10-NEXT: v_and_b32_e32 v6, v6, v14
5858; GFX10-NEXT: v_and_b32_e32 v7, v7, v15
5959; GFX10-NEXT: s_setpc_b64 s[30:31]
60+ ;
61+ ; GFX11-LABEL: v_and_v2i128:
62+ ; GFX11: ; %bb.0:
63+ ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
64+ ; GFX11-NEXT: v_and_b32_e32 v0, v0, v8
65+ ; GFX11-NEXT: v_and_b32_e32 v1, v1, v9
66+ ; GFX11-NEXT: v_and_b32_e32 v2, v2, v10
67+ ; GFX11-NEXT: v_and_b32_e32 v3, v3, v11
68+ ; GFX11-NEXT: v_and_b32_e32 v4, v4, v12
69+ ; GFX11-NEXT: v_and_b32_e32 v5, v5, v13
70+ ; GFX11-NEXT: v_and_b32_e32 v6, v6, v14
71+ ; GFX11-NEXT: v_and_b32_e32 v7, v7, v15
72+ ; GFX11-NEXT: s_setpc_b64 s[30:31]
6073 %and = and <2 x i128 > %a , %b
6174 ret <2 x i128 > %and
6275}
@@ -65,53 +78,63 @@ define <2 x i128> @v_and_v2i128_inline_imm(<2 x i128> %a) {
6578; GFX7-LABEL: v_and_v2i128_inline_imm:
6679; GFX7: ; %bb.0:
6780; GFX7-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
68- ; GFX7-NEXT: s_mov_b64 s[4:5], 64
69- ; GFX7-NEXT: s_mov_b64 s[6:7], 0
70- ; GFX7-NEXT: s_mov_b64 s[4:5], s[4:5]
71- ; GFX7-NEXT: s_mov_b64 s[6:7], s[6:7]
72- ; GFX7-NEXT: v_and_b32_e32 v0, s4, v0
73- ; GFX7-NEXT: v_and_b32_e32 v1, s5, v1
74- ; GFX7-NEXT: v_and_b32_e32 v2, s6, v2
75- ; GFX7-NEXT: v_and_b32_e32 v3, s7, v3
76- ; GFX7-NEXT: v_and_b32_e32 v4, s4, v4
77- ; GFX7-NEXT: v_and_b32_e32 v5, s5, v5
78- ; GFX7-NEXT: v_and_b32_e32 v6, s6, v6
79- ; GFX7-NEXT: v_and_b32_e32 v7, s7, v7
81+ ; GFX7-NEXT: v_and_b32_e32 v0, 64, v0
82+ ; GFX7-NEXT: v_and_b32_e32 v4, 64, v4
83+ ; GFX7-NEXT: v_mov_b32_e32 v1, 0
84+ ; GFX7-NEXT: v_mov_b32_e32 v2, 0
85+ ; GFX7-NEXT: v_mov_b32_e32 v3, 0
86+ ; GFX7-NEXT: v_mov_b32_e32 v5, 0
87+ ; GFX7-NEXT: v_mov_b32_e32 v6, 0
88+ ; GFX7-NEXT: v_mov_b32_e32 v7, 0
8089; GFX7-NEXT: s_setpc_b64 s[30:31]
8190;
8291; GFX9-LABEL: v_and_v2i128_inline_imm:
8392; GFX9: ; %bb.0:
8493; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
85- ; GFX9-NEXT: s_mov_b64 s[4:5], 64
86- ; GFX9-NEXT: s_mov_b64 s[6:7], 0
87- ; GFX9-NEXT: s_mov_b64 s[4:5], s[4:5]
88- ; GFX9-NEXT: s_mov_b64 s[6:7], s[6:7]
89- ; GFX9-NEXT: v_and_b32_e32 v0, s4, v0
90- ; GFX9-NEXT: v_and_b32_e32 v1, s5, v1
91- ; GFX9-NEXT: v_and_b32_e32 v2, s6, v2
92- ; GFX9-NEXT: v_and_b32_e32 v3, s7, v3
93- ; GFX9-NEXT: v_and_b32_e32 v4, s4, v4
94- ; GFX9-NEXT: v_and_b32_e32 v5, s5, v5
95- ; GFX9-NEXT: v_and_b32_e32 v6, s6, v6
96- ; GFX9-NEXT: v_and_b32_e32 v7, s7, v7
94+ ; GFX9-NEXT: v_and_b32_e32 v0, 64, v0
95+ ; GFX9-NEXT: v_and_b32_e32 v4, 64, v4
96+ ; GFX9-NEXT: v_mov_b32_e32 v1, 0
97+ ; GFX9-NEXT: v_mov_b32_e32 v2, 0
98+ ; GFX9-NEXT: v_mov_b32_e32 v3, 0
99+ ; GFX9-NEXT: v_mov_b32_e32 v5, 0
100+ ; GFX9-NEXT: v_mov_b32_e32 v6, 0
101+ ; GFX9-NEXT: v_mov_b32_e32 v7, 0
97102; GFX9-NEXT: s_setpc_b64 s[30:31]
98103;
99104; GFX8-LABEL: v_and_v2i128_inline_imm:
100105; GFX8: ; %bb.0:
101106; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
102- ; GFX8-NEXT: s_mov_b64 s[4:5], 64
103- ; GFX8-NEXT: s_mov_b64 s[6:7], 0
104- ; GFX8-NEXT: s_mov_b64 s[4:5], s[4:5]
105- ; GFX8-NEXT: s_mov_b64 s[6:7], s[6:7]
106- ; GFX8-NEXT: v_and_b32_e32 v0, s4, v0
107- ; GFX8-NEXT: v_and_b32_e32 v1, s5, v1
108- ; GFX8-NEXT: v_and_b32_e32 v2, s6, v2
109- ; GFX8-NEXT: v_and_b32_e32 v3, s7, v3
110- ; GFX8-NEXT: v_and_b32_e32 v4, s4, v4
111- ; GFX8-NEXT: v_and_b32_e32 v5, s5, v5
112- ; GFX8-NEXT: v_and_b32_e32 v6, s6, v6
113- ; GFX8-NEXT: v_and_b32_e32 v7, s7, v7
107+ ; GFX8-NEXT: v_and_b32_e32 v0, 64, v0
108+ ; GFX8-NEXT: v_and_b32_e32 v4, 64, v4
109+ ; GFX8-NEXT: v_mov_b32_e32 v1, 0
110+ ; GFX8-NEXT: v_mov_b32_e32 v2, 0
111+ ; GFX8-NEXT: v_mov_b32_e32 v3, 0
112+ ; GFX8-NEXT: v_mov_b32_e32 v5, 0
113+ ; GFX8-NEXT: v_mov_b32_e32 v6, 0
114+ ; GFX8-NEXT: v_mov_b32_e32 v7, 0
114115; GFX8-NEXT: s_setpc_b64 s[30:31]
116+ ;
117+ ; GFX10-LABEL: v_and_v2i128_inline_imm:
118+ ; GFX10: ; %bb.0:
119+ ; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
120+ ; GFX10-NEXT: v_and_b32_e32 v0, 64, v0
121+ ; GFX10-NEXT: v_and_b32_e32 v4, 64, v4
122+ ; GFX10-NEXT: v_mov_b32_e32 v1, 0
123+ ; GFX10-NEXT: v_mov_b32_e32 v2, 0
124+ ; GFX10-NEXT: v_mov_b32_e32 v3, 0
125+ ; GFX10-NEXT: v_mov_b32_e32 v5, 0
126+ ; GFX10-NEXT: v_mov_b32_e32 v6, 0
127+ ; GFX10-NEXT: v_mov_b32_e32 v7, 0
128+ ; GFX10-NEXT: s_setpc_b64 s[30:31]
129+ ;
130+ ; GFX11-LABEL: v_and_v2i128_inline_imm:
131+ ; GFX11: ; %bb.0:
132+ ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
133+ ; GFX11-NEXT: v_dual_mov_b32 v1, 0 :: v_dual_and_b32 v0, 64, v0
134+ ; GFX11-NEXT: v_dual_mov_b32 v3, 0 :: v_dual_and_b32 v4, 64, v4
135+ ; GFX11-NEXT: v_dual_mov_b32 v2, 0 :: v_dual_mov_b32 v5, 0
136+ ; GFX11-NEXT: v_dual_mov_b32 v6, 0 :: v_dual_mov_b32 v7, 0
137+ ; GFX11-NEXT: s_setpc_b64 s[30:31]
115138 %and = and <2 x i128 > %a , <i128 64 , i128 64 >
116139 ret <2 x i128 > %and
117140}
0 commit comments