49 lines · c
1// RUN: %clang_cc1 -fopenacc -emit-cir -fclangir %s -o - | FileCheck %s2 3void acc_init(int cond) {4 // CHECK: cir.func{{.*}} @acc_init(%[[ARG:.*]]: !s32i{{.*}}) {5 // CHECK-NEXT: %[[COND:.*]] = cir.alloca !s32i, !cir.ptr<!s32i>, ["cond", init]6 // CHECK-NEXT: cir.store %[[ARG]], %[[COND]] : !s32i, !cir.ptr<!s32i>7#pragma acc init8// CHECK-NEXT: acc.init loc(#{{[a-zA-Z0-9]+}}){{$}}9 10#pragma acc init device_type(*)11 // CHECK-NEXT: acc.init attributes {device_types = [#acc.device_type<star>]}12#pragma acc init device_type(nvidia)13 // CHECK-NEXT: acc.init attributes {device_types = [#acc.device_type<nvidia>]}14#pragma acc init device_type(NVIDIA)15 // CHECK-NEXT: acc.init attributes {device_types = [#acc.device_type<nvidia>]}16#pragma acc init device_type(HoSt) device_type(MuLtIcORe)17 // CHECK-NEXT: acc.init attributes {device_types = [#acc.device_type<host>, #acc.device_type<multicore>]}18 19#pragma acc init if(cond)20 // CHECK-NEXT: %[[COND_LOAD:.*]] = cir.load{{.*}} %[[COND]] : !cir.ptr<!s32i>, !s32i21 // CHECK-NEXT: %[[COND_CAST:.*]] = cir.cast int_to_bool %[[COND_LOAD]] : !s32i -> !cir.bool22 // CHECK-NEXT: %[[BOOL_CONV:.*]] = builtin.unrealized_conversion_cast %[[COND_CAST]] : !cir.bool to i123 // CHECK-NEXT: acc.init if(%[[BOOL_CONV]])24 25#pragma acc init if(1)26 // CHECK-NEXT: %[[ONE_LITERAL:.*]] = cir.const #cir.int<1> : !s32i27 // CHECK-NEXT: %[[ONE_TO_BOOL_CAST:.*]] = cir.cast int_to_bool %[[ONE_LITERAL]] : !s32i -> !cir.bool28 // CHECK-NEXT: %[[BOOL_CONV:.*]] = builtin.unrealized_conversion_cast %[[ONE_TO_BOOL_CAST]] : !cir.bool to i129 // CHECK-NEXT: acc.init if(%[[BOOL_CONV]])30 31#pragma acc init device_num(cond)32 // CHECK-NEXT: %[[COND_LOAD:.*]] = cir.load{{.*}} %[[COND]] : !cir.ptr<!s32i>, !s32i33 // CHECK-NEXT: %[[COND_CONV:.*]] = builtin.unrealized_conversion_cast %[[COND_LOAD]] : !s32i to si3234 // CHECK-NEXT: acc.init device_num(%[[COND_CONV]] : si32)35 36#pragma acc init device_num(1)37 // CHECK-NEXT: %[[ONE_LITERAL:.*]] = cir.const #cir.int<1> : !s32i38 // CHECK-NEXT: %[[ONE_CONV:.*]] = builtin.unrealized_conversion_cast %[[ONE_LITERAL]] : !s32i to si3239 // CHECK-NEXT: acc.init device_num(%[[ONE_CONV]] : si32)40 41#pragma acc init if(cond) device_num(cond) device_type(*)42 // CHECK-NEXT: %[[COND_LOAD:.*]] = cir.load{{.*}} %[[COND]] : !cir.ptr<!s32i>, !s32i43 // CHECK-NEXT: %[[COND_CAST:.*]] = cir.cast int_to_bool %[[COND_LOAD]] : !s32i -> !cir.bool44 // CHECK-NEXT: %[[BOOL_CONV:.*]] = builtin.unrealized_conversion_cast %[[COND_CAST]] : !cir.bool to i145 // CHECK-NEXT: %[[COND_LOAD:.*]] = cir.load{{.*}} %[[COND]] : !cir.ptr<!s32i>, !s32i46 // CHECK-NEXT: %[[COND_CONV:.*]] = builtin.unrealized_conversion_cast %[[COND_LOAD]] : !s32i to si3247 // CHECK-NEXT: acc.init device_num(%[[COND_CONV]] : si32) if(%[[BOOL_CONV]]) attributes {device_types = [#acc.device_type<star>]}48}49