@@ -16,6 +16,52 @@ entry:
16
16
ret i64 %br
17
17
}
18
18
19
+ define i64 @test_s_bitreplicate_constant_zero () {
20
+ ; GFX11-LABEL: test_s_bitreplicate_constant_zero:
21
+ ; GFX11: ; %bb.0: ; %entry
22
+ ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23
+ ; GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, 0
24
+ ; GFX11-NEXT: s_setpc_b64 s[30:31]
25
+ entry:
26
+ %br = call i64 @llvm.amdgcn.s.bitreplicate (i32 0 )
27
+ ret i64 %br
28
+ }
29
+
30
+ define i64 @test_s_bitreplicate_constant_neg_one () {
31
+ ; GFX11-LABEL: test_s_bitreplicate_constant_neg_one:
32
+ ; GFX11: ; %bb.0: ; %entry
33
+ ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34
+ ; GFX11-NEXT: v_dual_mov_b32 v0, -1 :: v_dual_mov_b32 v1, -1
35
+ ; GFX11-NEXT: s_setpc_b64 s[30:31]
36
+ entry:
37
+ %br = call i64 @llvm.amdgcn.s.bitreplicate (i32 -1 )
38
+ ret i64 %br
39
+ }
40
+
41
+ define i64 @test_s_bitreplicate_constant_undef () {
42
+ ; GFX11-LABEL: test_s_bitreplicate_constant_undef:
43
+ ; GFX11: ; %bb.0: ; %entry
44
+ ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
45
+ ; GFX11-NEXT: s_bitreplicate_b64_b32 s[0:1], s0
46
+ ; GFX11-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
47
+ ; GFX11-NEXT: s_setpc_b64 s[30:31]
48
+ entry:
49
+ %br = call i64 @llvm.amdgcn.s.bitreplicate (i32 undef )
50
+ ret i64 %br
51
+ }
52
+
53
+ define i64 @test_s_bitreplicate_constant_poison () {
54
+ ; GFX11-LABEL: test_s_bitreplicate_constant_poison:
55
+ ; GFX11: ; %bb.0: ; %entry
56
+ ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
57
+ ; GFX11-NEXT: s_bitreplicate_b64_b32 s[0:1], s0
58
+ ; GFX11-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
59
+ ; GFX11-NEXT: s_setpc_b64 s[30:31]
60
+ entry:
61
+ %br = call i64 @llvm.amdgcn.s.bitreplicate (i32 poison)
62
+ ret i64 %br
63
+ }
64
+
19
65
define amdgpu_cs void @test_s_bitreplicate_sgpr (i32 inreg %mask , ptr addrspace (1 ) %out ) {
20
66
; GFX11-LABEL: test_s_bitreplicate_sgpr:
21
67
; GFX11: ; %bb.0: ; %entry
0 commit comments