@@ -9,13 +9,55 @@ define i32 @test_s_wqm_constant_i32() {
9
9
; GFX11-LABEL: test_s_wqm_constant_i32:
10
10
; GFX11: ; %bb.0:
11
11
; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12
- ; GFX11-NEXT: s_wqm_b32 s0, 0x85fe3a92
12
+ ; GFX11-NEXT: v_mov_b32_e32 v0, 0xff00ff0f
13
+ ; GFX11-NEXT: s_setpc_b64 s[30:31]
14
+ %br = call i32 @llvm.amdgcn.s.wqm.i32 (i32 u0x85003A02)
15
+ ret i32 %br
16
+ }
17
+
18
+ define i32 @test_s_wqm_constant_zero_i32 () {
19
+ ; GFX11-LABEL: test_s_wqm_constant_zero_i32:
20
+ ; GFX11: ; %bb.0:
21
+ ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22
+ ; GFX11-NEXT: v_mov_b32_e32 v0, 0
23
+ ; GFX11-NEXT: s_setpc_b64 s[30:31]
24
+ %br = call i32 @llvm.amdgcn.s.wqm.i32 (i32 0 )
25
+ ret i32 %br
26
+ }
27
+
28
+ define i32 @test_s_wqm_constant_neg_one_i32 () {
29
+ ; GFX11-LABEL: test_s_wqm_constant_neg_one_i32:
30
+ ; GFX11: ; %bb.0:
31
+ ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32
+ ; GFX11-NEXT: v_mov_b32_e32 v0, -1
33
+ ; GFX11-NEXT: s_setpc_b64 s[30:31]
34
+ %br = call i32 @llvm.amdgcn.s.wqm.i32 (i32 -1 )
35
+ ret i32 %br
36
+ }
37
+
38
+ define i32 @test_s_wqm_constant_undef_i32 () {
39
+ ; GFX11-LABEL: test_s_wqm_constant_undef_i32:
40
+ ; GFX11: ; %bb.0:
41
+ ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
42
+ ; GFX11-NEXT: s_wqm_b32 s0, s0
43
+ ; GFX11-NEXT: v_mov_b32_e32 v0, s0
44
+ ; GFX11-NEXT: s_setpc_b64 s[30:31]
45
+ %br = call i32 @llvm.amdgcn.s.wqm.i32 (i32 undef )
46
+ ret i32 %br
47
+ }
48
+
49
+ define i32 @test_s_wqm_constant_poison_i32 () {
50
+ ; GFX11-LABEL: test_s_wqm_constant_poison_i32:
51
+ ; GFX11: ; %bb.0:
52
+ ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
53
+ ; GFX11-NEXT: s_wqm_b32 s0, s0
13
54
; GFX11-NEXT: v_mov_b32_e32 v0, s0
14
55
; GFX11-NEXT: s_setpc_b64 s[30:31]
15
- %br = call i32 @llvm.amdgcn.s.wqm.i32 (i32 u0x85FE3A92 )
56
+ %br = call i32 @llvm.amdgcn.s.wqm.i32 (i32 poison )
16
57
ret i32 %br
17
58
}
18
59
60
+
19
61
define amdgpu_cs void @test_s_wqm_sgpr_i32 (i32 inreg %mask , ptr addrspace (1 ) %out ) {
20
62
; GFX11-LABEL: test_s_wqm_sgpr_i32:
21
63
; GFX11: ; %bb.0: ; %entry
@@ -48,12 +90,52 @@ define i64 @test_s_wqm_constant_i64() {
48
90
; GFX11-LABEL: test_s_wqm_constant_i64:
49
91
; GFX11: ; %bb.0:
50
92
; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
51
- ; GFX11-NEXT: s_mov_b32 s0, 0x85fe3a92
52
- ; GFX11-NEXT: s_mov_b32 s1, 0x3a9285fe
93
+ ; GFX11-NEXT: v_mov_b32_e32 v0, 0xff00ffff
94
+ ; GFX11-NEXT: v_mov_b32_e32 v1, 0xffff0fff
95
+ ; GFX11-NEXT: s_setpc_b64 s[30:31]
96
+ %br = call i64 @llvm.amdgcn.s.wqm.i64 (i64 u0x12480FDBAC00753E)
97
+ ret i64 %br
98
+ }
99
+
100
+ define i64 @test_s_wqm_constant_zero_i64 () {
101
+ ; GFX11-LABEL: test_s_wqm_constant_zero_i64:
102
+ ; GFX11: ; %bb.0:
103
+ ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
104
+ ; GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, 0
105
+ ; GFX11-NEXT: s_setpc_b64 s[30:31]
106
+ %br = call i64 @llvm.amdgcn.s.wqm.i64 (i64 0 )
107
+ ret i64 %br
108
+ }
109
+
110
+ define i64 @test_s_wqm_constant_neg_one_i64 () {
111
+ ; GFX11-LABEL: test_s_wqm_constant_neg_one_i64:
112
+ ; GFX11: ; %bb.0:
113
+ ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
114
+ ; GFX11-NEXT: v_dual_mov_b32 v0, -1 :: v_dual_mov_b32 v1, -1
115
+ ; GFX11-NEXT: s_setpc_b64 s[30:31]
116
+ %br = call i64 @llvm.amdgcn.s.wqm.i64 (i64 -1 )
117
+ ret i64 %br
118
+ }
119
+
120
+ define i64 @test_s_wqm_constant_undef_i64 () {
121
+ ; GFX11-LABEL: test_s_wqm_constant_undef_i64:
122
+ ; GFX11: ; %bb.0:
123
+ ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
124
+ ; GFX11-NEXT: s_wqm_b64 s[0:1], s[0:1]
125
+ ; GFX11-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
126
+ ; GFX11-NEXT: s_setpc_b64 s[30:31]
127
+ %br = call i64 @llvm.amdgcn.s.wqm.i64 (i64 undef )
128
+ ret i64 %br
129
+ }
130
+
131
+ define i64 @test_s_wqm_constant_poison_i64 () {
132
+ ; GFX11-LABEL: test_s_wqm_constant_poison_i64:
133
+ ; GFX11: ; %bb.0:
134
+ ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
53
135
; GFX11-NEXT: s_wqm_b64 s[0:1], s[0:1]
54
136
; GFX11-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
55
137
; GFX11-NEXT: s_setpc_b64 s[30:31]
56
- %br = call i64 @llvm.amdgcn.s.wqm.i64 (i64 u0x3A9285FE85FE3A92 )
138
+ %br = call i64 @llvm.amdgcn.s.wqm.i64 (i64 poison )
57
139
ret i64 %br
58
140
}
59
141
0 commit comments