@@ -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 >
@@ -255,3 +255,29 @@ llvm.func @llvm_ops_with_ptr_nvvm_values(%arg0: !llvm.ptr) {
255
255
llvm.store %1 , %arg0 : !ptr.ptr <#nvvm.memory_space <global >>, !llvm.ptr
256
256
llvm.return
257
257
}
258
+
259
+ // CHECK-LABEL: define { ptr, ptr addrspace(1), ptr addrspace(2) } @constant_address_op() {
260
+ // 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)) }
261
+ llvm.func @constant_address_op () ->
262
+ !llvm.struct <(!ptr.ptr <#llvm.address_space <0 >>,
263
+ !ptr.ptr <#llvm.address_space <1 >>,
264
+ !ptr.ptr <#llvm.address_space <2 >>)> {
265
+ %0 = ptr.constant #ptr.null : !ptr.ptr <#llvm.address_space <0 >>
266
+ %1 = ptr.constant #ptr.address <0x1000 > : !ptr.ptr <#llvm.address_space <1 >>
267
+ %2 = ptr.constant #ptr.address <3735928559 > : !ptr.ptr <#llvm.address_space <2 >>
268
+ %3 = llvm.mlir.poison : !llvm.struct <(!ptr.ptr <#llvm.address_space <0 >>, !ptr.ptr <#llvm.address_space <1 >>, !ptr.ptr <#llvm.address_space <2 >>)>
269
+ %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 >>)>
270
+ %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 >>)>
271
+ %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 >>)>
272
+ llvm.return %6 : !llvm.struct <(!ptr.ptr <#llvm.address_space <0 >>, !ptr.ptr <#llvm.address_space <1 >>, !ptr.ptr <#llvm.address_space <2 >>)>
273
+ }
274
+
275
+ // Test gep folders.
276
+ // CHECK-LABEL: define ptr @ptr_add_cst() {
277
+ // CHECK-NEXT: ret ptr inttoptr (i64 42 to ptr)
278
+ llvm.func @ptr_add_cst () -> !ptr.ptr <#llvm.address_space <0 >> {
279
+ %off = llvm.mlir.constant (42 : i32 ) : i32
280
+ %ptr = ptr.constant #ptr.null : !ptr.ptr <#llvm.address_space <0 >>
281
+ %res = ptr.ptr_add %ptr , %off : !ptr.ptr <#llvm.address_space <0 >>, i32
282
+ llvm.return %res : !ptr.ptr <#llvm.address_space <0 >>
283
+ }
0 commit comments