@@ -3452,36 +3452,68 @@ llvm.func @nested_task_with_deps() {
34523452
34533453// -----
34543454
3455- // CHECK: @_QFsubEx = internal global i32 undef
3455+ module attributes {omp.is_target_device = false } {
3456+ llvm.mlir.global internal @any () : i32
3457+ llvm.mlir.global internal @host () : i32
3458+ llvm.mlir.global internal @nohost () : i32
3459+ llvm.func @omp_groupprivate_host () {
3460+ %0 = llvm.mlir.constant (1 : i32 ) : i32
3461+ %1 = llvm.mlir.addressof @any : !llvm.ptr
3462+ %2 = omp.groupprivate %1 : !llvm.ptr , device_type (any ) -> !llvm.ptr
3463+ llvm.store %0 , %2 : i32 , !llvm.ptr
3464+
3465+ %3 = llvm.mlir.addressof @host : !llvm.ptr
3466+ %4 = omp.groupprivate %3 : !llvm.ptr , device_type (host ) -> !llvm.ptr
3467+ llvm.store %0 , %4 : i32 , !llvm.ptr
3468+
3469+ %5 = llvm.mlir.addressof @nohost : !llvm.ptr
3470+ %6 = omp.groupprivate %5 : !llvm.ptr , device_type (nohost ) -> !llvm.ptr
3471+ llvm.store %0 , %6 : i32 , !llvm.ptr
3472+ llvm.return
3473+ }
3474+ }
34563475
3457- // CHECK-LABEL: @omp_groupprivate
3458- llvm.func @omp_groupprivate () {
3476+ // CHECK: @any = internal global i32 undef
3477+ // CHECK: @host = internal global i32 undef
3478+ // CHECK: @nohost = internal global i32 undef
3479+ // CHECK-LABEL: @omp_groupprivate_host
34593480// CHECK: [[TMP1:%.*]] = call ptr @__kmpc_alloc_shared(i64 4)
34603481// CHECK: store i32 1, ptr [[TMP1]], align 4
3461-
3462- // CHECK-LABEL: omp.teams.region{{.*}}
34633482// CHECK: [[TMP2:%.*]] = call ptr @__kmpc_alloc_shared(i64 4)
3464- // CHECK: store i32 2, ptr [[TMP2]], align 4
3483+ // CHECK: store i32 1, ptr [[TMP2]], align 4
3484+ // CHECK: store i32 1, ptr @nohost, align 4
34653485
3466- %0 = llvm.mlir.constant (1 : i32 ) : i32
3467- %1 = llvm.mlir.constant (2 : i32 ) : i32
3468- %2 = llvm.mlir.constant (3 : i32 ) : i32
3486+ // -----
34693487
3470- %3 = llvm.mlir.addressof @_QFsubEx : !llvm.ptr
3471- %4 = omp.groupprivate %3 : !llvm.ptr -> !llvm.ptr
3488+ module attributes {omp.is_target_device = true } {
3489+ llvm.mlir.global internal @any () : i32
3490+ llvm.mlir.global internal @host () : i32
3491+ llvm.mlir.global internal @nohost () : i32
3492+ llvm.func @omp_groupprivate_device () {
3493+ %0 = llvm.mlir.constant (1 : i32 ) : i32
3494+ %1 = llvm.mlir.addressof @any : !llvm.ptr
3495+ %2 = omp.groupprivate %1 : !llvm.ptr , device_type (any ) -> !llvm.ptr
3496+ llvm.store %0 , %2 : i32 , !llvm.ptr
34723497
3498+ %3 = llvm.mlir.addressof @host : !llvm.ptr
3499+ %4 = omp.groupprivate %3 : !llvm.ptr , device_type (host ) -> !llvm.ptr
34733500 llvm.store %0 , %4 : i32 , !llvm.ptr
34743501
3475- omp.teams {
3476- %5 = omp.groupprivate %3 : !llvm.ptr -> !llvm.ptr
3477- llvm.store %1 , %5 : i32 , !llvm.ptr
3478- omp.terminator
3479- }
3480-
3481- llvm.store %2 , %4 : i32 , !llvm.ptr
3502+ %5 = llvm.mlir.addressof @nohost : !llvm.ptr
3503+ %6 = omp.groupprivate %5 : !llvm.ptr , device_type (nohost ) -> !llvm.ptr
3504+ llvm.store %0 , %6 : i32 , !llvm.ptr
34823505 llvm.return
34833506}
3507+ }
34843508
3485- llvm.mlir.global internal @_QFsubEx () : i32
3509+ // CHECK: @any = internal global i32 undef
3510+ // CHECK: @host = internal global i32 undef
3511+ // CHECK: @nohost = internal global i32 undef
3512+ // CHECK-LABEL: @omp_groupprivate_device
3513+ // CHECK: [[TMP1:%.*]] = call ptr @__kmpc_alloc_shared(i64 4)
3514+ // CHECK: store i32 1, ptr [[TMP1]], align 4
3515+ // CHECK: store i32 1, ptr @host, align 4
3516+ // CHECK: [[TMP2:%.*]] = call ptr @__kmpc_alloc_shared(i64 4)
3517+ // CHECK: store i32 1, ptr [[TMP2]], align 4
34863518
34873519// -----
0 commit comments