@@ -21,78 +21,6 @@ define ptr @ptrmask_flat_i64(ptr %ptr, i64 %mask) {
21
21
ret ptr %masked
22
22
}
23
23
24
- define ptr @ptrmask_flat_i32 (ptr %ptr , i32 %mask ) {
25
- ; CHECK-LABEL: name: ptrmask_flat_i32
26
- ; CHECK: bb.1 (%ir-block.0):
27
- ; CHECK-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2
28
- ; CHECK-NEXT: {{ $}}
29
- ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
30
- ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
31
- ; CHECK-NEXT: [[MV:%[0-9]+]]:_(p0) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)
32
- ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
33
- ; CHECK-NEXT: [[PTRMASK:%[0-9]+]]:_(p0) = G_PTRMASK [[MV]], [[COPY2]](s32)
34
- ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[PTRMASK]](p0)
35
- ; CHECK-NEXT: $vgpr0 = COPY [[UV]](s32)
36
- ; CHECK-NEXT: $vgpr1 = COPY [[UV1]](s32)
37
- ; CHECK-NEXT: SI_RETURN implicit $vgpr0, implicit $vgpr1
38
- %masked = call ptr @llvm.ptrmask.p0.i32 (ptr %ptr , i32 %mask )
39
- ret ptr %masked
40
- }
41
-
42
- define ptr @ptrmask_flat_i16 (ptr %ptr , i16 %mask ) {
43
- ; CHECK-LABEL: name: ptrmask_flat_i16
44
- ; CHECK: bb.1 (%ir-block.0):
45
- ; CHECK-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2
46
- ; CHECK-NEXT: {{ $}}
47
- ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
48
- ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
49
- ; CHECK-NEXT: [[MV:%[0-9]+]]:_(p0) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)
50
- ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
51
- ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY2]](s32)
52
- ; CHECK-NEXT: [[PTRMASK:%[0-9]+]]:_(p0) = G_PTRMASK [[MV]], [[TRUNC]](s16)
53
- ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[PTRMASK]](p0)
54
- ; CHECK-NEXT: $vgpr0 = COPY [[UV]](s32)
55
- ; CHECK-NEXT: $vgpr1 = COPY [[UV1]](s32)
56
- ; CHECK-NEXT: SI_RETURN implicit $vgpr0, implicit $vgpr1
57
- %masked = call ptr @llvm.ptrmask.p0.i16 (ptr %ptr , i16 %mask )
58
- ret ptr %masked
59
- }
60
-
61
- define ptr @ptrmask_flat_i1 (ptr %ptr , i1 %mask ) {
62
- ; CHECK-LABEL: name: ptrmask_flat_i1
63
- ; CHECK: bb.1 (%ir-block.0):
64
- ; CHECK-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2
65
- ; CHECK-NEXT: {{ $}}
66
- ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
67
- ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
68
- ; CHECK-NEXT: [[MV:%[0-9]+]]:_(p0) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)
69
- ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
70
- ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[COPY2]](s32)
71
- ; CHECK-NEXT: [[PTRMASK:%[0-9]+]]:_(p0) = G_PTRMASK [[MV]], [[TRUNC]](s1)
72
- ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[PTRMASK]](p0)
73
- ; CHECK-NEXT: $vgpr0 = COPY [[UV]](s32)
74
- ; CHECK-NEXT: $vgpr1 = COPY [[UV1]](s32)
75
- ; CHECK-NEXT: SI_RETURN implicit $vgpr0, implicit $vgpr1
76
- %masked = call ptr @llvm.ptrmask.p0.i1 (ptr %ptr , i1 %mask )
77
- ret ptr %masked
78
- }
79
-
80
- define ptr addrspace (3 ) @ptrmask_local_i64 (ptr addrspace (3 ) %ptr , i64 %mask ) {
81
- ; CHECK-LABEL: name: ptrmask_local_i64
82
- ; CHECK: bb.1 (%ir-block.0):
83
- ; CHECK-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2
84
- ; CHECK-NEXT: {{ $}}
85
- ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p3) = COPY $vgpr0
86
- ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
87
- ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
88
- ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY1]](s32), [[COPY2]](s32)
89
- ; CHECK-NEXT: [[PTRMASK:%[0-9]+]]:_(p3) = G_PTRMASK [[COPY]], [[MV]](s64)
90
- ; CHECK-NEXT: $vgpr0 = COPY [[PTRMASK]](p3)
91
- ; CHECK-NEXT: SI_RETURN implicit $vgpr0
92
- %masked = call ptr addrspace (3 ) @llvm.ptrmask.p3.i64 (ptr addrspace (3 ) %ptr , i64 %mask )
93
- ret ptr addrspace (3 ) %masked
94
- }
95
-
96
24
define ptr addrspace (3 ) @ptrmask_local_i32 (ptr addrspace (3 ) %ptr , i32 %mask ) {
97
25
; CHECK-LABEL: name: ptrmask_local_i32
98
26
; CHECK: bb.1 (%ir-block.0):
@@ -107,47 +35,11 @@ define ptr addrspace(3) @ptrmask_local_i32(ptr addrspace(3) %ptr, i32 %mask) {
107
35
ret ptr addrspace (3 ) %masked
108
36
}
109
37
110
- define ptr addrspace (3 ) @ptrmask_local_i16 (ptr addrspace (3 ) %ptr , i16 %mask ) {
111
- ; CHECK-LABEL: name: ptrmask_local_i16
112
- ; CHECK: bb.1 (%ir-block.0):
113
- ; CHECK-NEXT: liveins: $vgpr0, $vgpr1
114
- ; CHECK-NEXT: {{ $}}
115
- ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p3) = COPY $vgpr0
116
- ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
117
- ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)
118
- ; CHECK-NEXT: [[PTRMASK:%[0-9]+]]:_(p3) = G_PTRMASK [[COPY]], [[TRUNC]](s16)
119
- ; CHECK-NEXT: $vgpr0 = COPY [[PTRMASK]](p3)
120
- ; CHECK-NEXT: SI_RETURN implicit $vgpr0
121
- %masked = call ptr addrspace (3 ) @llvm.ptrmask.p3.i16 (ptr addrspace (3 ) %ptr , i16 %mask )
122
- ret ptr addrspace (3 ) %masked
123
- }
124
-
125
- define ptr addrspace (3 ) @ptrmask_local_i1 (ptr addrspace (3 ) %ptr , i1 %mask ) {
126
- ; CHECK-LABEL: name: ptrmask_local_i1
127
- ; CHECK: bb.1 (%ir-block.0):
128
- ; CHECK-NEXT: liveins: $vgpr0, $vgpr1
129
- ; CHECK-NEXT: {{ $}}
130
- ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p3) = COPY $vgpr0
131
- ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
132
- ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[COPY1]](s32)
133
- ; CHECK-NEXT: [[PTRMASK:%[0-9]+]]:_(p3) = G_PTRMASK [[COPY]], [[TRUNC]](s1)
134
- ; CHECK-NEXT: $vgpr0 = COPY [[PTRMASK]](p3)
135
- ; CHECK-NEXT: SI_RETURN implicit $vgpr0
136
- %masked = call ptr addrspace (3 ) @llvm.ptrmask.p3.i1 (ptr addrspace (3 ) %ptr , i1 %mask )
137
- ret ptr addrspace (3 ) %masked
138
- }
139
-
140
38
; Seems to not work
141
39
; define <2 x ptr> @ptrmask_flat_i64_v2(<2 x ptr> %ptr, <2 x i64> %mask) {
142
40
; %masked = call <2 x ptr> @llvm.ptrmask.v2p0.v2i64(<2 x ptr> %ptr, <2 x i64> %mask)
143
41
; ret <2 x ptr> %masked
144
42
; }
145
43
146
44
declare ptr @llvm.ptrmask.p0.i64 (ptr , i64 )
147
- declare ptr @llvm.ptrmask.p0.i32 (ptr , i32 )
148
- declare ptr @llvm.ptrmask.p0.i16 (ptr , i16 )
149
- declare ptr @llvm.ptrmask.p0.i1 (ptr , i1 )
150
- declare ptr addrspace (3 ) @llvm.ptrmask.p3.i64 (ptr addrspace (3 ), i64 )
151
45
declare ptr addrspace (3 ) @llvm.ptrmask.p3.i32 (ptr addrspace (3 ), i32 )
152
- declare ptr addrspace (3 ) @llvm.ptrmask.p3.i16 (ptr addrspace (3 ), i16 )
153
- declare ptr addrspace (3 ) @llvm.ptrmask.p3.i1 (ptr addrspace (3 ), i1 )
0 commit comments