animeshk-amd created this revision. animeshk-amd added reviewers: saiislam, JonChesterfield. Herald added subscribers: guansong, yaxunl. Herald added a project: All. animeshk-amd requested review of this revision. Herald added a reviewer: jdoerfert. Herald added subscribers: cfe-commits, sstefan1. Herald added a project: clang.
Although the `uses_allocators` clause was already present in the test, it didn't have CHECK lines for the respective IR. Few RUN lines are fixed based upon the OpenMP constructs being tested. Respective CHECK lines are added for various allocators. This test is inspired from the test 5.0/target/test_target_allocate.c of the SOLLVE repo: https://github.com/SOLLVE/sollve_vv Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D132855 Files: clang/test/OpenMP/target_uses_allocators.c Index: clang/test/OpenMP/target_uses_allocators.c =================================================================== --- clang/test/OpenMP/target_uses_allocators.c +++ clang/test/OpenMP/target_uses_allocators.c @@ -1,7 +1,7 @@ // Test host codegen. -// RUN: %clang_cc1 -verify -fopenmp -fopenmp-version=50 -triple powerpc64le-unknown-unknown -fopenmp-targets=powerpc64le-ibm-linux-gnu -emit-llvm %s -o - | FileCheck %s --check-prefix CHECK --check-prefix CHECK-64 +// RUN: %clang_cc1 -verify -fopenmp -fopenmp-version=50 -triple powerpc64le-unknown-unknown -fopenmp-targets=powerpc64le-ibm-linux-gnu -emit-llvm %s -o - | FileCheck %s // RUN: %clang_cc1 -fopenmp -fopenmp-version=50 -x c++ -triple powerpc64le-unknown-unknown -fopenmp-targets=powerpc64le-ibm-linux-gnu -emit-pch -o %t %s -// RUN: %clang_cc1 -fopenmp -fopenmp-version=50 -x c++ -triple powerpc64le-unknown-unknown -fopenmp-targets=powerpc64le-ibm-linux-gnu +// RUN: %clang_cc1 -fopenmp -fopenmp-version=50 -x c++ -triple powerpc64le-unknown-unknown -fopenmp-targets=powerpc64le-ibm-linux-gnu -include-pch %t -verify %s -emit-llvm -o - | FileCheck %s // expected-no-diagnostics #ifndef HEADER @@ -42,3 +42,59 @@ } #endif + +// CHECK: %[[#R0:]] = call i32 @__kmpc_global_thread_num(ptr @1) +// CHECK-NEXT: store i64 %x, ptr %x.addr, align 8 +// CHECK-NEXT: %.x..void.addr = call ptr @__kmpc_alloc(i32 %[[#R0]], i64 4, ptr null) +// CHECK-NEXT: %[[#R1:]] = load i32, ptr %x.addr, align 4 +// CHECK-NEXT: store i32 %[[#R1]], ptr %.x..void.addr, align 4 +// CHECK-NEXT: call void @__kmpc_free(i32 %[[#R0]], ptr %.x..void.addr, ptr null) + +// CHECK: %[[#R0:]] = call i32 @__kmpc_global_thread_num(ptr @1) +// CHECK-NEXT: store i64 %x, ptr %x.addr, align 8 +// CHECK-NEXT: %.x..void.addr = call ptr @__kmpc_alloc(i32 %[[#R0]], i64 4, ptr inttoptr (i64 1 to ptr)) +// CHECK-NEXT: %[[#R1:]] = load i32, ptr %x.addr, align 4 +// CHECK-NEXT: store i32 %[[#R1]], ptr %.x..void.addr, align 4 +// CHECK-NEXT: call void @__kmpc_free(i32 %[[#R0]], ptr %.x..void.addr, ptr inttoptr (i64 1 to ptr)) + +// CHECK: %[[#R0:]] = call i32 @__kmpc_global_thread_num(ptr @1) +// CHECK-NEXT: store i64 %x, ptr %x.addr, align 8 +// CHECK-NEXT: %.x..void.addr = call ptr @__kmpc_alloc(i32 %[[#R0]], i64 4, ptr inttoptr (i64 2 to ptr)) +// CHECK-NEXT: %[[#R1:]] = load i32, ptr %x.addr, align 4 +// CHECK-NEXT: store i32 %[[#R1]], ptr %.x..void.addr, align 4 +// CHECK-NEXT: call void @__kmpc_free(i32 %[[#R0]], ptr %.x..void.addr, ptr inttoptr (i64 2 to ptr)) + +// CHECK: %[[#R0:]] = call i32 @__kmpc_global_thread_num(ptr @1) +// CHECK-NEXT: store i64 %x, ptr %x.addr, align 8 +// CHECK-NEXT: %.x..void.addr = call ptr @__kmpc_alloc(i32 %[[#R0]], i64 4, ptr inttoptr (i64 3 to ptr)) +// CHECK-NEXT: %[[#R1:]] = load i32, ptr %x.addr, align 4 +// CHECK-NEXT: store i32 %[[#R1]], ptr %.x..void.addr, align 4 +// CHECK-NEXT: call void @__kmpc_free(i32 %[[#R0]], ptr %.x..void.addr, ptr inttoptr (i64 3 to ptr)) + +// CHECK: %[[#R0:]] = call i32 @__kmpc_global_thread_num(ptr @1) +// CHECK-NEXT: store i64 %x, ptr %x.addr, align 8 +// CHECK-NEXT: %.x..void.addr = call ptr @__kmpc_alloc(i32 %[[#R0]], i64 4, ptr inttoptr (i64 4 to ptr)) +// CHECK-NEXT: %[[#R1:]] = load i32, ptr %x.addr, align 4 +// CHECK-NEXT: store i32 %[[#R1]], ptr %.x..void.addr, align 4 +// CHECK-NEXT: call void @__kmpc_free(i32 %[[#R0]], ptr %.x..void.addr, ptr inttoptr (i64 4 to ptr)) + +// CHECK: %[[#R0:]] = call i32 @__kmpc_global_thread_num(ptr @1) +// CHECK-NEXT: store i64 %x, ptr %x.addr, align 8 +// CHECK-NEXT: %.x..void.addr = call ptr @__kmpc_alloc(i32 %[[#R0]], i64 4, ptr inttoptr (i64 5 to ptr)) +// CHECK-NEXT: %[[#R1:]] = load i32, ptr %x.addr, align 4 +// CHECK-NEXT: store i32 %[[#R1]], ptr %.x..void.addr, align 4 +// CHECK-NEXT: call void @__kmpc_free(i32 %[[#R0]], ptr %.x..void.addr, ptr inttoptr (i64 5 to ptr)) + +// CHECK: %[[#R0:]] = call i32 @__kmpc_global_thread_num(ptr @1) +// CHECK-NEXT: store i64 %x, ptr %x.addr, align 8 +// CHECK-NEXT: %.x..void.addr = call ptr @__kmpc_alloc(i32 %[[#R0]], i64 4, ptr inttoptr (i64 6 to ptr)) +// CHECK-NEXT: %[[#R1:]] = load i32, ptr %x.addr, align 4 +// CHECK-NEXT: store i32 %[[#R1]], ptr %.x..void.addr, align 4 +// CHECK-NEXT: call void @__kmpc_free(i32 %[[#R0]], ptr %.x..void.addr, ptr inttoptr (i64 6 to ptr)) + +// CHECK: %[[#R0:]] = call i32 @__kmpc_global_thread_num(ptr @1) +// CHECK-NEXT: store i64 %x, ptr %x.addr, align 8 +// CHECK-NEXT: %.x..void.addr = call ptr @__kmpc_alloc(i32 %[[#R0]], i64 4, ptr inttoptr (i64 7 to ptr)) +// CHECK-NEXT: %[[#R1:]] = load i32, ptr %x.addr, align 4 +// CHECK-NEXT: store i32 %[[#R1]], ptr %.x..void.addr, align 4 +// CHECK-NEXT: call void @__kmpc_free(i32 %[[#R0]], ptr %.x..void.addr, ptr inttoptr (i64 7 to ptr))
Index: clang/test/OpenMP/target_uses_allocators.c =================================================================== --- clang/test/OpenMP/target_uses_allocators.c +++ clang/test/OpenMP/target_uses_allocators.c @@ -1,7 +1,7 @@ // Test host codegen. -// RUN: %clang_cc1 -verify -fopenmp -fopenmp-version=50 -triple powerpc64le-unknown-unknown -fopenmp-targets=powerpc64le-ibm-linux-gnu -emit-llvm %s -o - | FileCheck %s --check-prefix CHECK --check-prefix CHECK-64 +// RUN: %clang_cc1 -verify -fopenmp -fopenmp-version=50 -triple powerpc64le-unknown-unknown -fopenmp-targets=powerpc64le-ibm-linux-gnu -emit-llvm %s -o - | FileCheck %s // RUN: %clang_cc1 -fopenmp -fopenmp-version=50 -x c++ -triple powerpc64le-unknown-unknown -fopenmp-targets=powerpc64le-ibm-linux-gnu -emit-pch -o %t %s -// RUN: %clang_cc1 -fopenmp -fopenmp-version=50 -x c++ -triple powerpc64le-unknown-unknown -fopenmp-targets=powerpc64le-ibm-linux-gnu +// RUN: %clang_cc1 -fopenmp -fopenmp-version=50 -x c++ -triple powerpc64le-unknown-unknown -fopenmp-targets=powerpc64le-ibm-linux-gnu -include-pch %t -verify %s -emit-llvm -o - | FileCheck %s // expected-no-diagnostics #ifndef HEADER @@ -42,3 +42,59 @@ } #endif + +// CHECK: %[[#R0:]] = call i32 @__kmpc_global_thread_num(ptr @1) +// CHECK-NEXT: store i64 %x, ptr %x.addr, align 8 +// CHECK-NEXT: %.x..void.addr = call ptr @__kmpc_alloc(i32 %[[#R0]], i64 4, ptr null) +// CHECK-NEXT: %[[#R1:]] = load i32, ptr %x.addr, align 4 +// CHECK-NEXT: store i32 %[[#R1]], ptr %.x..void.addr, align 4 +// CHECK-NEXT: call void @__kmpc_free(i32 %[[#R0]], ptr %.x..void.addr, ptr null) + +// CHECK: %[[#R0:]] = call i32 @__kmpc_global_thread_num(ptr @1) +// CHECK-NEXT: store i64 %x, ptr %x.addr, align 8 +// CHECK-NEXT: %.x..void.addr = call ptr @__kmpc_alloc(i32 %[[#R0]], i64 4, ptr inttoptr (i64 1 to ptr)) +// CHECK-NEXT: %[[#R1:]] = load i32, ptr %x.addr, align 4 +// CHECK-NEXT: store i32 %[[#R1]], ptr %.x..void.addr, align 4 +// CHECK-NEXT: call void @__kmpc_free(i32 %[[#R0]], ptr %.x..void.addr, ptr inttoptr (i64 1 to ptr)) + +// CHECK: %[[#R0:]] = call i32 @__kmpc_global_thread_num(ptr @1) +// CHECK-NEXT: store i64 %x, ptr %x.addr, align 8 +// CHECK-NEXT: %.x..void.addr = call ptr @__kmpc_alloc(i32 %[[#R0]], i64 4, ptr inttoptr (i64 2 to ptr)) +// CHECK-NEXT: %[[#R1:]] = load i32, ptr %x.addr, align 4 +// CHECK-NEXT: store i32 %[[#R1]], ptr %.x..void.addr, align 4 +// CHECK-NEXT: call void @__kmpc_free(i32 %[[#R0]], ptr %.x..void.addr, ptr inttoptr (i64 2 to ptr)) + +// CHECK: %[[#R0:]] = call i32 @__kmpc_global_thread_num(ptr @1) +// CHECK-NEXT: store i64 %x, ptr %x.addr, align 8 +// CHECK-NEXT: %.x..void.addr = call ptr @__kmpc_alloc(i32 %[[#R0]], i64 4, ptr inttoptr (i64 3 to ptr)) +// CHECK-NEXT: %[[#R1:]] = load i32, ptr %x.addr, align 4 +// CHECK-NEXT: store i32 %[[#R1]], ptr %.x..void.addr, align 4 +// CHECK-NEXT: call void @__kmpc_free(i32 %[[#R0]], ptr %.x..void.addr, ptr inttoptr (i64 3 to ptr)) + +// CHECK: %[[#R0:]] = call i32 @__kmpc_global_thread_num(ptr @1) +// CHECK-NEXT: store i64 %x, ptr %x.addr, align 8 +// CHECK-NEXT: %.x..void.addr = call ptr @__kmpc_alloc(i32 %[[#R0]], i64 4, ptr inttoptr (i64 4 to ptr)) +// CHECK-NEXT: %[[#R1:]] = load i32, ptr %x.addr, align 4 +// CHECK-NEXT: store i32 %[[#R1]], ptr %.x..void.addr, align 4 +// CHECK-NEXT: call void @__kmpc_free(i32 %[[#R0]], ptr %.x..void.addr, ptr inttoptr (i64 4 to ptr)) + +// CHECK: %[[#R0:]] = call i32 @__kmpc_global_thread_num(ptr @1) +// CHECK-NEXT: store i64 %x, ptr %x.addr, align 8 +// CHECK-NEXT: %.x..void.addr = call ptr @__kmpc_alloc(i32 %[[#R0]], i64 4, ptr inttoptr (i64 5 to ptr)) +// CHECK-NEXT: %[[#R1:]] = load i32, ptr %x.addr, align 4 +// CHECK-NEXT: store i32 %[[#R1]], ptr %.x..void.addr, align 4 +// CHECK-NEXT: call void @__kmpc_free(i32 %[[#R0]], ptr %.x..void.addr, ptr inttoptr (i64 5 to ptr)) + +// CHECK: %[[#R0:]] = call i32 @__kmpc_global_thread_num(ptr @1) +// CHECK-NEXT: store i64 %x, ptr %x.addr, align 8 +// CHECK-NEXT: %.x..void.addr = call ptr @__kmpc_alloc(i32 %[[#R0]], i64 4, ptr inttoptr (i64 6 to ptr)) +// CHECK-NEXT: %[[#R1:]] = load i32, ptr %x.addr, align 4 +// CHECK-NEXT: store i32 %[[#R1]], ptr %.x..void.addr, align 4 +// CHECK-NEXT: call void @__kmpc_free(i32 %[[#R0]], ptr %.x..void.addr, ptr inttoptr (i64 6 to ptr)) + +// CHECK: %[[#R0:]] = call i32 @__kmpc_global_thread_num(ptr @1) +// CHECK-NEXT: store i64 %x, ptr %x.addr, align 8 +// CHECK-NEXT: %.x..void.addr = call ptr @__kmpc_alloc(i32 %[[#R0]], i64 4, ptr inttoptr (i64 7 to ptr)) +// CHECK-NEXT: %[[#R1:]] = load i32, ptr %x.addr, align 4 +// CHECK-NEXT: store i32 %[[#R1]], ptr %.x..void.addr, align 4 +// CHECK-NEXT: call void @__kmpc_free(i32 %[[#R0]], ptr %.x..void.addr, ptr inttoptr (i64 7 to ptr))
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits