|
5 | 5 | declare i32 @llvm.amdgcn.s.quadmask.i32(i32)
|
6 | 6 | declare i64 @llvm.amdgcn.s.quadmask.i64(i64)
|
7 | 7 |
|
| 8 | +define i32 @test_quadmask_constant_zero_i32() { |
| 9 | +; GFX11-LABEL: test_quadmask_constant_zero_i32: |
| 10 | +; GFX11: ; %bb.0: ; %entry |
| 11 | +; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) |
| 12 | +; GFX11-NEXT: v_mov_b32_e32 v0, 0 |
| 13 | +; GFX11-NEXT: s_setpc_b64 s[30:31] |
| 14 | +entry: |
| 15 | + %qm = call i32 @llvm.amdgcn.s.quadmask.i32(i32 0) |
| 16 | + ret i32 %qm |
| 17 | +} |
| 18 | + |
| 19 | +define i32 @test_quadmask_constant_neg_one_i32() { |
| 20 | +; GFX11-LABEL: test_quadmask_constant_neg_one_i32: |
| 21 | +; GFX11: ; %bb.0: ; %entry |
| 22 | +; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) |
| 23 | +; GFX11-NEXT: v_mov_b32_e32 v0, 0xff |
| 24 | +; GFX11-NEXT: s_setpc_b64 s[30:31] |
| 25 | +entry: |
| 26 | + %qm = call i32 @llvm.amdgcn.s.quadmask.i32(i32 -1) |
| 27 | + ret i32 %qm |
| 28 | +} |
| 29 | + |
| 30 | +define i32 @test_quadmask_constant_undef_i32() { |
| 31 | +; GFX11-LABEL: test_quadmask_constant_undef_i32: |
| 32 | +; GFX11: ; %bb.0: ; %entry |
| 33 | +; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) |
| 34 | +; GFX11-NEXT: s_quadmask_b32 s0, s0 |
| 35 | +; GFX11-NEXT: v_mov_b32_e32 v0, s0 |
| 36 | +; GFX11-NEXT: s_setpc_b64 s[30:31] |
| 37 | +entry: |
| 38 | + %qm = call i32 @llvm.amdgcn.s.quadmask.i32(i32 undef) |
| 39 | + ret i32 %qm |
| 40 | +} |
| 41 | + |
| 42 | +define i32 @test_quadmask_constant_poison_i32() { |
| 43 | +; GFX11-LABEL: test_quadmask_constant_poison_i32: |
| 44 | +; GFX11: ; %bb.0: ; %entry |
| 45 | +; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) |
| 46 | +; GFX11-NEXT: s_quadmask_b32 s0, s0 |
| 47 | +; GFX11-NEXT: v_mov_b32_e32 v0, s0 |
| 48 | +; GFX11-NEXT: s_setpc_b64 s[30:31] |
| 49 | +entry: |
| 50 | + %qm = call i32 @llvm.amdgcn.s.quadmask.i32(i32 poison) |
| 51 | + ret i32 %qm |
| 52 | +} |
| 53 | + |
8 | 54 | define i32 @test_quadmask_constant_i32() {
|
9 | 55 | ; GFX11-LABEL: test_quadmask_constant_i32:
|
10 | 56 | ; GFX11: ; %bb.0: ; %entry
|
11 | 57 | ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
|
12 |
| -; GFX11-NEXT: s_quadmask_b32 s0, 0x85fe3a92 |
13 |
| -; GFX11-NEXT: v_mov_b32_e32 v0, s0 |
| 58 | +; GFX11-NEXT: v_mov_b32_e32 v0, 0xcb |
14 | 59 | ; GFX11-NEXT: s_setpc_b64 s[30:31]
|
15 | 60 | entry:
|
16 |
| - %qm = call i32 @llvm.amdgcn.s.quadmask.i32(i32 u0x85FE3A92) |
| 61 | + %qm = call i32 @llvm.amdgcn.s.quadmask.i32(i32 u0x85003092) |
17 | 62 | ret i32 %qm
|
18 | 63 | }
|
19 | 64 |
|
@@ -50,13 +95,56 @@ define i64 @test_quadmask_constant_i64() {
|
50 | 95 | ; GFX11-LABEL: test_quadmask_constant_i64:
|
51 | 96 | ; GFX11: ; %bb.0: ; %entry
|
52 | 97 | ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
|
53 |
| -; GFX11-NEXT: s_mov_b32 s0, 0x85fe3a92 |
54 |
| -; GFX11-NEXT: s_mov_b32 s1, 0x67de48fc |
| 98 | +; GFX11-NEXT: v_dual_mov_b32 v0, 0xe3e6 :: v_dual_mov_b32 v1, 0 |
| 99 | +; GFX11-NEXT: s_setpc_b64 s[30:31] |
| 100 | +entry: |
| 101 | + %qm = call i64 @llvm.amdgcn.s.quadmask.i64(i64 u0x67D000FC85F00A90) |
| 102 | + ret i64 %qm |
| 103 | +} |
| 104 | + |
| 105 | +define i64 @test_quadmask_constant_zero_i64() { |
| 106 | +; GFX11-LABEL: test_quadmask_constant_zero_i64: |
| 107 | +; GFX11: ; %bb.0: ; %entry |
| 108 | +; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) |
| 109 | +; GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, 0 |
| 110 | +; GFX11-NEXT: s_setpc_b64 s[30:31] |
| 111 | +entry: |
| 112 | + %qm = call i64 @llvm.amdgcn.s.quadmask.i64(i64 0) |
| 113 | + ret i64 %qm |
| 114 | +} |
| 115 | + |
| 116 | +define i64 @test_quadmask_constant_neg_one_i64() { |
| 117 | +; GFX11-LABEL: test_quadmask_constant_neg_one_i64: |
| 118 | +; GFX11: ; %bb.0: ; %entry |
| 119 | +; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) |
| 120 | +; GFX11-NEXT: v_dual_mov_b32 v0, 0xffff :: v_dual_mov_b32 v1, 0 |
| 121 | +; GFX11-NEXT: s_setpc_b64 s[30:31] |
| 122 | +entry: |
| 123 | + %qm = call i64 @llvm.amdgcn.s.quadmask.i64(i64 -1) |
| 124 | + ret i64 %qm |
| 125 | +} |
| 126 | + |
| 127 | +define i64 @test_quadmask_constant_undef_i64() { |
| 128 | +; GFX11-LABEL: test_quadmask_constant_undef_i64: |
| 129 | +; GFX11: ; %bb.0: ; %entry |
| 130 | +; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) |
| 131 | +; GFX11-NEXT: s_quadmask_b64 s[0:1], s[0:1] |
| 132 | +; GFX11-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1 |
| 133 | +; GFX11-NEXT: s_setpc_b64 s[30:31] |
| 134 | +entry: |
| 135 | + %qm = call i64 @llvm.amdgcn.s.quadmask.i64(i64 undef) |
| 136 | + ret i64 %qm |
| 137 | +} |
| 138 | + |
| 139 | +define i64 @test_quadmask_constant_poison_i64() { |
| 140 | +; GFX11-LABEL: test_quadmask_constant_poison_i64: |
| 141 | +; GFX11: ; %bb.0: ; %entry |
| 142 | +; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) |
55 | 143 | ; GFX11-NEXT: s_quadmask_b64 s[0:1], s[0:1]
|
56 | 144 | ; GFX11-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
|
57 | 145 | ; GFX11-NEXT: s_setpc_b64 s[30:31]
|
58 | 146 | entry:
|
59 |
| - %qm = call i64 @llvm.amdgcn.s.quadmask.i64(i64 u0x67DE48FC85FE3A92) |
| 147 | + %qm = call i64 @llvm.amdgcn.s.quadmask.i64(i64 poison) |
60 | 148 | ret i64 %qm
|
61 | 149 | }
|
62 | 150 |
|
|
0 commit comments