@@ -154,8 +154,8 @@ define ptr addrspace(1) @ptrmask_combine_improve_alignment_fail(ptr addrspace(1)
154
154
define i64 @ptrtoint_of_ptrmask (ptr %p , i64 %m ) {
155
155
; CHECK-LABEL: define i64 @ptrtoint_of_ptrmask
156
156
; CHECK-SAME: (ptr [[P:%.*]], i64 [[M:%.*]]) {
157
- ; CHECK-NEXT: [[PM :%.*]] = call ptr @llvm.ptrmask.p0.i64(ptr [[P]], i64 [[M]])
158
- ; CHECK-NEXT: [[R:%.*]] = ptrtoint ptr [[PM]] to i64
157
+ ; CHECK-NEXT: [[TMP1 :%.*]] = ptrtoint ptr [[P]] to i64
158
+ ; CHECK-NEXT: [[R:%.*]] = and i64 [[TMP1]], [[M]]
159
159
; CHECK-NEXT: ret i64 [[R]]
160
160
;
161
161
%pm = call ptr @llvm.ptrmask.p0.i64 (ptr %p , i64 %m )
@@ -167,9 +167,9 @@ define i64 @ptrtoint_of_ptrmask(ptr %p, i64 %m) {
167
167
define i32 @ptrtoint_of_ptrmask2 (ptr %p , i64 %m ) {
168
168
; CHECK-LABEL: define i32 @ptrtoint_of_ptrmask2
169
169
; CHECK-SAME: (ptr [[P:%.*]], i64 [[M:%.*]]) {
170
- ; CHECK-NEXT: [[PM :%.*]] = call ptr @llvm.ptrmask.p0.i64(ptr [[P]], i64 [[M]])
171
- ; CHECK-NEXT: [[TMP1 :%.*]] = ptrtoint ptr [[PM]] to i64
172
- ; CHECK-NEXT: [[R:%.*]] = trunc i64 [[TMP1 ]] to i32
170
+ ; CHECK-NEXT: [[TMP1 :%.*]] = ptrtoint ptr [[P]] to i64
171
+ ; CHECK-NEXT: [[TMP2 :%.*]] = and i64 [[TMP1]], [[M]]
172
+ ; CHECK-NEXT: [[R:%.*]] = trunc i64 [[TMP2 ]] to i32
173
173
; CHECK-NEXT: ret i32 [[R]]
174
174
;
175
175
%pm = call ptr @llvm.ptrmask.p0.i64 (ptr %p , i64 %m )
@@ -180,8 +180,8 @@ define i32 @ptrtoint_of_ptrmask2(ptr %p, i64 %m) {
180
180
define <2 x i64 > @ptrtoint_of_ptrmask_vec (<2 x ptr > %p , <2 x i64 > %m ) {
181
181
; CHECK-LABEL: define <2 x i64> @ptrtoint_of_ptrmask_vec
182
182
; CHECK-SAME: (<2 x ptr> [[P:%.*]], <2 x i64> [[M:%.*]]) {
183
- ; CHECK-NEXT: [[PM :%.*]] = call <2 x ptr> @llvm.ptrmask.v2p0.v2i64(<2 x ptr> [[P]], <2 x i64> [[M]])
184
- ; CHECK-NEXT: [[R:%.*]] = ptrtoint <2 x ptr > [[PM]] to <2 x i64>
183
+ ; CHECK-NEXT: [[TMP1 :%.*]] = ptrtoint <2 x ptr> [[P]] to <2 x i64>
184
+ ; CHECK-NEXT: [[R:%.*]] = and <2 x i64 > [[TMP1]], [[M]]
185
185
; CHECK-NEXT: ret <2 x i64> [[R]]
186
186
;
187
187
%pm = call <2 x ptr > @llvm.ptrmask.v2p0.v2i64 (<2 x ptr > %p , <2 x i64 > %m )
@@ -192,9 +192,9 @@ define <2 x i64> @ptrtoint_of_ptrmask_vec(<2 x ptr> %p, <2 x i64> %m) {
192
192
define <2 x i32 > @ptrtoint_of_ptrmask_vec2 (<2 x ptr > %p , <2 x i64 > %m ) {
193
193
; CHECK-LABEL: define <2 x i32> @ptrtoint_of_ptrmask_vec2
194
194
; CHECK-SAME: (<2 x ptr> [[P:%.*]], <2 x i64> [[M:%.*]]) {
195
- ; CHECK-NEXT: [[PM :%.*]] = call <2 x ptr> @llvm.ptrmask.v2p0.v2i64(<2 x ptr> [[P]], <2 x i64> [[M]])
196
- ; CHECK-NEXT: [[TMP1 :%.*]] = ptrtoint <2 x ptr > [[PM]] to <2 x i64>
197
- ; CHECK-NEXT: [[R:%.*]] = trunc <2 x i64> [[TMP1 ]] to <2 x i32>
195
+ ; CHECK-NEXT: [[TMP1 :%.*]] = ptrtoint <2 x ptr> [[P]] to <2 x i64>
196
+ ; CHECK-NEXT: [[TMP2 :%.*]] = and <2 x i64 > [[TMP1]], [[M]]
197
+ ; CHECK-NEXT: [[R:%.*]] = trunc <2 x i64> [[TMP2 ]] to <2 x i32>
198
198
; CHECK-NEXT: ret <2 x i32> [[R]]
199
199
;
200
200
%pm = call <2 x ptr > @llvm.ptrmask.v2p0.v2i64 (<2 x ptr > %p , <2 x i64 > %m )
0 commit comments