@@ -41,10 +41,10 @@ llvm.func @type_offset(%arg0: !ptr.ptr<#llvm.address_space<0>>) -> !llvm.struct<
4141 %2 = ptr.type_offset i16 : i32
4242 %3 = ptr.type_offset i32 : i32
4343 %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 )>
4848 llvm.return %8 : !llvm.struct <(i32 , i32 , i32 , i32 )>
4949}
5050
@@ -194,7 +194,7 @@ llvm.func @scatter_ops_i64(%value: vector<8xi64>, %ptrs: vector<8x!ptr.ptr<#llvm
194194// 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]])
195195// CHECK-NEXT: ret void
196196// 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 >>>,
198198 %mask: vector <4 xi1 >, %value: vector <4 xf64 >, %passthrough: vector <4 xf64 >) {
199199 // Test with shared memory address space (3) and f64 elements
200200 %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
233233 %res = ptr.ptr_add %ptrs , %offset : vector <4 x!ptr.ptr <#llvm.address_space <0 >>>, i32
234234 llvm.return %res : vector <4 x!ptr.ptr <#llvm.address_space <0 >>>
235235}
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