@@ -41,10 +41,10 @@ llvm.func @type_offset(%arg0: !ptr.ptr<#llvm.address_space<0>>) -> !llvm.struct<
41
41
%2 = ptr.type_offset i16 : i32
42
42
%3 = ptr.type_offset i32 : i32
43
43
%4 = llvm.mlir.poison : !llvm.struct <(i32 , i32 , i32 , i32 )>
44
- %5 = llvm.insertvalue %0 , %4 [0 ] : !llvm.struct <(i32 , i32 , i32 , i32 )>
45
- %6 = llvm.insertvalue %1 , %5 [1 ] : !llvm.struct <(i32 , i32 , i32 , i32 )>
46
- %7 = llvm.insertvalue %2 , %6 [2 ] : !llvm.struct <(i32 , i32 , i32 , i32 )>
47
- %8 = llvm.insertvalue %3 , %7 [3 ] : !llvm.struct <(i32 , i32 , i32 , i32 )>
44
+ %5 = llvm.insertvalue %0 , %4 [0 ] : !llvm.struct <(i32 , i32 , i32 , i32 )>
45
+ %6 = llvm.insertvalue %1 , %5 [1 ] : !llvm.struct <(i32 , i32 , i32 , i32 )>
46
+ %7 = llvm.insertvalue %2 , %6 [2 ] : !llvm.struct <(i32 , i32 , i32 , i32 )>
47
+ %8 = llvm.insertvalue %3 , %7 [3 ] : !llvm.struct <(i32 , i32 , i32 , i32 )>
48
48
llvm.return %8 : !llvm.struct <(i32 , i32 , i32 , i32 )>
49
49
}
50
50
@@ -194,7 +194,7 @@ llvm.func @scatter_ops_i64(%value: vector<8xi64>, %ptrs: vector<8x!ptr.ptr<#llvm
194
194
// CHECK-NEXT: call void @llvm.masked.store.v4f64.p3(<4 x double> %[[VALUE_F64]], ptr addrspace(3) %[[PTR_SHARED]], i32 8, <4 x i1> %[[MASK]])
195
195
// CHECK-NEXT: ret void
196
196
// CHECK-NEXT: }
197
- llvm.func @mixed_masked_ops_address_spaces (%ptr: !ptr.ptr <#llvm.address_space <3 >>, %ptrs: vector <4 x!ptr.ptr <#llvm.address_space <3 >>>,
197
+ llvm.func @mixed_masked_ops_address_spaces (%ptr: !ptr.ptr <#llvm.address_space <3 >>, %ptrs: vector <4 x!ptr.ptr <#llvm.address_space <3 >>>,
198
198
%mask: vector <4 xi1 >, %value: vector <4 xf64 >, %passthrough: vector <4 xf64 >) {
199
199
// Test with shared memory address space (3) and f64 elements
200
200
%0 = ptr.gather %ptrs , %mask , %passthrough alignment = 8 : vector <4 x!ptr.ptr <#llvm.address_space <3 >>> -> vector <4 xf64 >
@@ -233,3 +233,29 @@ llvm.func @ptr_add_vector_base_scalar_offset(%ptrs: vector<4x!ptr.ptr<#llvm.addr
233
233
%res = ptr.ptr_add %ptrs , %offset : vector <4 x!ptr.ptr <#llvm.address_space <0 >>>, i32
234
234
llvm.return %res : vector <4 x!ptr.ptr <#llvm.address_space <0 >>>
235
235
}
236
+
237
+ // CHECK-LABEL: define { ptr, ptr addrspace(1), ptr addrspace(2) } @constant_address_op() {
238
+ // CHECK-NEXT: ret { ptr, ptr addrspace(1), ptr addrspace(2) } { ptr null, ptr addrspace(1) inttoptr (i64 4096 to ptr addrspace(1)), ptr addrspace(2) inttoptr (i64 3735928559 to ptr addrspace(2)) }
239
+ llvm.func @constant_address_op () ->
240
+ !llvm.struct <(!ptr.ptr <#llvm.address_space <0 >>,
241
+ !ptr.ptr <#llvm.address_space <1 >>,
242
+ !ptr.ptr <#llvm.address_space <2 >>)> {
243
+ %0 = ptr.constant #ptr.null : !ptr.ptr <#llvm.address_space <0 >>
244
+ %1 = ptr.constant #ptr.address <0x1000 > : !ptr.ptr <#llvm.address_space <1 >>
245
+ %2 = ptr.constant #ptr.address <3735928559 > : !ptr.ptr <#llvm.address_space <2 >>
246
+ %3 = llvm.mlir.poison : !llvm.struct <(!ptr.ptr <#llvm.address_space <0 >>, !ptr.ptr <#llvm.address_space <1 >>, !ptr.ptr <#llvm.address_space <2 >>)>
247
+ %4 = llvm.insertvalue %0 , %3 [0 ] : !llvm.struct <(!ptr.ptr <#llvm.address_space <0 >>, !ptr.ptr <#llvm.address_space <1 >>, !ptr.ptr <#llvm.address_space <2 >>)>
248
+ %5 = llvm.insertvalue %1 , %4 [1 ] : !llvm.struct <(!ptr.ptr <#llvm.address_space <0 >>, !ptr.ptr <#llvm.address_space <1 >>, !ptr.ptr <#llvm.address_space <2 >>)>
249
+ %6 = llvm.insertvalue %2 , %5 [2 ] : !llvm.struct <(!ptr.ptr <#llvm.address_space <0 >>, !ptr.ptr <#llvm.address_space <1 >>, !ptr.ptr <#llvm.address_space <2 >>)>
250
+ llvm.return %6 : !llvm.struct <(!ptr.ptr <#llvm.address_space <0 >>, !ptr.ptr <#llvm.address_space <1 >>, !ptr.ptr <#llvm.address_space <2 >>)>
251
+ }
252
+
253
+ // Test gep folders.
254
+ // CHECK-LABEL: define ptr @ptr_add_cst() {
255
+ // CHECK-NEXT: ret ptr inttoptr (i64 42 to ptr)
256
+ llvm.func @ptr_add_cst () -> !ptr.ptr <#llvm.address_space <0 >> {
257
+ %off = llvm.mlir.constant (42 : i32 ) : i32
258
+ %ptr = ptr.constant #ptr.null : !ptr.ptr <#llvm.address_space <0 >>
259
+ %res = ptr.ptr_add %ptr , %off : !ptr.ptr <#llvm.address_space <0 >>, i32
260
+ llvm.return %res : !ptr.ptr <#llvm.address_space <0 >>
261
+ }
0 commit comments