================
@@ -0,0 +1,34 @@
+// RUN: %clang_cc1 -triple spirv64-intel -fclangir -emit-cir %s -o %t.cir
+// RUN: FileCheck --input-file=%t.cir %s -check-prefix=CIR
+// RUN: %clang_cc1 -triple spirv64-intel -fclangir -emit-llvm %s -o %t-cir.ll
+// RUN: FileCheck --input-file=%t-cir.ll %s -check-prefix=LLVM
+// RUN: %clang_cc1 -triple spirv64-intel -emit-llvm %s -o %t.ll
+// RUN: FileCheck --input-file=%t.ll %s -check-prefix=OGCG
+
+// CIR-LABEL: cir.func{{.*}} @fp_to_void_ptr
+// CIR: %[[FP:.*]] = cir.load{{.*}} : {{.*}}, !cir.ptr<!cir.func<()>, 
target_address_space(9)>
+// CIR: %[[AS:.*]] = cir.cast address_space %[[FP]] : !cir.ptr<!cir.func<()>, 
target_address_space(9)> -> !cir.ptr<!cir.func<()>, target_address_space(4)>
+// CIR: cir.cast bitcast %[[AS]] : !cir.ptr<!cir.func<()>, 
target_address_space(4)> -> !cir.ptr<!void, target_address_space(4)>
+
+// LLVM-LABEL: define{{.*}} ptr addrspace(4) @fp_to_void_ptr
+// LLVM: %[[FP:.*]] = load ptr addrspace(9), ptr addrspace(4)
+// LLVM: addrspacecast ptr addrspace(9) %[[FP]] to ptr addrspace(4)
+
+// OGCG-LABEL: define{{.*}} ptr addrspace(4) @fp_to_void_ptr
+// OGCG: %[[FP:.*]] = load ptr addrspace(9), ptr addrspace(4)
+// OGCG: addrspacecast ptr addrspace(9) %[[FP]] to ptr addrspace(4)
+void *fp_to_void_ptr(void (*fp)(void)) { return (void *)fp; }
+
+// CIR-LABEL: cir.func{{.*}} @void_ptr_to_fp
+// CIR: %[[P:.*]] = cir.load{{.*}} : {{.*}}, !cir.ptr<!void, 
target_address_space(4)>
+// CIR: %[[AS:.*]] = cir.cast address_space %[[P]] : !cir.ptr<!void, 
target_address_space(4)> -> !cir.ptr<!void, target_address_space(9)>
+// CIR: cir.cast bitcast %[[AS]] : !cir.ptr<!void, target_address_space(9)> -> 
!cir.ptr<!cir.func<()>, target_address_space(9)>
+
+// LLVM-LABEL: define{{.*}} ptr addrspace(9) @void_ptr_to_fp
+// LLVM: %[[P:.*]] = load ptr addrspace(4), ptr addrspace(4)
+// LLVM: addrspacecast ptr addrspace(4) %[[P]] to ptr addrspace(9)
+
+// OGCG-LABEL: define{{.*}} ptr addrspace(9) @void_ptr_to_fp
+// OGCG: %[[P:.*]] = load ptr addrspace(4), ptr addrspace(4)
+// OGCG: addrspacecast ptr addrspace(4) %[[P]] to ptr addrspace(9)
----------------
RiverDave wrote:

Given LLVM and OGCG checks are identical; consider running the OGCG output 
through --check-prefix=LLVM and dropping the OGCG blocks.

https://github.com/llvm/llvm-project/pull/233828
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to