annotate llvm/unittests/Frontend/OpenMPContextTest.cpp @ 266:00f31e85ec16 default tip

Added tag current for changeset 31d058e83c98
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 14 Oct 2023 10:13:55 +0900
parents 1f2b6ac9f198
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
150
anatofuz
parents:
diff changeset
1 //===- unittest/IR/OpenMPContextTest.cpp - OpenMP Context handling tests --===//
anatofuz
parents:
diff changeset
2 //
anatofuz
parents:
diff changeset
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
anatofuz
parents:
diff changeset
4 // See https://llvm.org/LICENSE.txt for license information.
anatofuz
parents:
diff changeset
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
anatofuz
parents:
diff changeset
6 //
anatofuz
parents:
diff changeset
7 //===----------------------------------------------------------------------===//
anatofuz
parents:
diff changeset
8
anatofuz
parents:
diff changeset
9 #include "llvm/Frontend/OpenMP/OMPConstants.h"
anatofuz
parents:
diff changeset
10 #include "llvm/Frontend/OpenMP/OMPContext.h"
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
11 #include "llvm/TargetParser/Triple.h"
150
anatofuz
parents:
diff changeset
12 #include "gtest/gtest.h"
anatofuz
parents:
diff changeset
13
anatofuz
parents:
diff changeset
14 using namespace llvm;
anatofuz
parents:
diff changeset
15 using namespace omp;
anatofuz
parents:
diff changeset
16
anatofuz
parents:
diff changeset
17 namespace {
anatofuz
parents:
diff changeset
18
anatofuz
parents:
diff changeset
19 class OpenMPContextTest : public testing::Test {
anatofuz
parents:
diff changeset
20 protected:
anatofuz
parents:
diff changeset
21 void SetUp() override {}
anatofuz
parents:
diff changeset
22
anatofuz
parents:
diff changeset
23 void TearDown() override {}
anatofuz
parents:
diff changeset
24 };
anatofuz
parents:
diff changeset
25
anatofuz
parents:
diff changeset
26 TEST_F(OpenMPContextTest, RoundTripAndAssociation) {
anatofuz
parents:
diff changeset
27 #define OMP_TRAIT_SET(Enum, Str) \
anatofuz
parents:
diff changeset
28 EXPECT_EQ(TraitSet::Enum, \
anatofuz
parents:
diff changeset
29 getOpenMPContextTraitSetKind( \
anatofuz
parents:
diff changeset
30 getOpenMPContextTraitSetName(TraitSet::Enum))); \
anatofuz
parents:
diff changeset
31 EXPECT_EQ(Str, \
anatofuz
parents:
diff changeset
32 getOpenMPContextTraitSetName(getOpenMPContextTraitSetKind(Str)));
anatofuz
parents:
diff changeset
33 #define OMP_TRAIT_SELECTOR(Enum, TraitSetEnum, Str, RequiresProperty) \
anatofuz
parents:
diff changeset
34 EXPECT_EQ(TraitSelector::Enum, \
anatofuz
parents:
diff changeset
35 getOpenMPContextTraitSelectorKind( \
anatofuz
parents:
diff changeset
36 getOpenMPContextTraitSelectorName(TraitSelector::Enum))); \
anatofuz
parents:
diff changeset
37 EXPECT_EQ(Str, getOpenMPContextTraitSelectorName( \
anatofuz
parents:
diff changeset
38 getOpenMPContextTraitSelectorKind(Str)));
anatofuz
parents:
diff changeset
39 #define OMP_TRAIT_PROPERTY(Enum, TraitSetEnum, TraitSelectorEnum, Str) \
anatofuz
parents:
diff changeset
40 EXPECT_EQ(TraitProperty::Enum, \
anatofuz
parents:
diff changeset
41 getOpenMPContextTraitPropertyKind( \
221
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 173
diff changeset
42 TraitSet::TraitSetEnum, TraitSelector::TraitSelectorEnum, \
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 173
diff changeset
43 getOpenMPContextTraitPropertyName(TraitProperty::Enum, Str))); \
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
44 EXPECT_EQ(Str, getOpenMPContextTraitPropertyName( \
221
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 173
diff changeset
45 getOpenMPContextTraitPropertyKind( \
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 173
diff changeset
46 TraitSet::TraitSetEnum, \
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 173
diff changeset
47 TraitSelector::TraitSelectorEnum, Str), \
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 173
diff changeset
48 Str)); \
150
anatofuz
parents:
diff changeset
49 EXPECT_EQ(TraitSet::TraitSetEnum, \
anatofuz
parents:
diff changeset
50 getOpenMPContextTraitSetForProperty(TraitProperty::Enum)); \
anatofuz
parents:
diff changeset
51 EXPECT_EQ(TraitSelector::TraitSelectorEnum, \
anatofuz
parents:
diff changeset
52 getOpenMPContextTraitSelectorForProperty(TraitProperty::Enum));
anatofuz
parents:
diff changeset
53 #include "llvm/Frontend/OpenMP/OMPKinds.def"
anatofuz
parents:
diff changeset
54 }
anatofuz
parents:
diff changeset
55
anatofuz
parents:
diff changeset
56 TEST_F(OpenMPContextTest, ValidNesting) {
anatofuz
parents:
diff changeset
57 bool AllowsTraitScore, ReqProperty;
anatofuz
parents:
diff changeset
58 #define OMP_TRAIT_SELECTOR(Enum, TraitSetEnum, Str, RequiresProperty) \
anatofuz
parents:
diff changeset
59 EXPECT_TRUE(isValidTraitSelectorForTraitSet(TraitSelector::Enum, \
anatofuz
parents:
diff changeset
60 TraitSet::TraitSetEnum, \
anatofuz
parents:
diff changeset
61 AllowsTraitScore, ReqProperty)); \
anatofuz
parents:
diff changeset
62 EXPECT_EQ(RequiresProperty, ReqProperty);
anatofuz
parents:
diff changeset
63 #define OMP_TRAIT_PROPERTY(Enum, TraitSetEnum, TraitSelectorEnum, Str) \
anatofuz
parents:
diff changeset
64 EXPECT_TRUE(isValidTraitPropertyForTraitSetAndSelector( \
anatofuz
parents:
diff changeset
65 TraitProperty::Enum, TraitSelector::TraitSelectorEnum, \
anatofuz
parents:
diff changeset
66 TraitSet::TraitSetEnum));
anatofuz
parents:
diff changeset
67 #include "llvm/Frontend/OpenMP/OMPKinds.def"
anatofuz
parents:
diff changeset
68 }
anatofuz
parents:
diff changeset
69
anatofuz
parents:
diff changeset
70 TEST_F(OpenMPContextTest, ApplicabilityNonConstruct) {
anatofuz
parents:
diff changeset
71 OMPContext HostLinux(false, Triple("x86_64-unknown-linux"));
anatofuz
parents:
diff changeset
72 OMPContext DeviceLinux(true, Triple("x86_64-unknown-linux"));
anatofuz
parents:
diff changeset
73 OMPContext HostNVPTX(false, Triple("nvptx64-nvidia-cuda"));
anatofuz
parents:
diff changeset
74 OMPContext DeviceNVPTX(true, Triple("nvptx64-nvidia-cuda"));
anatofuz
parents:
diff changeset
75
anatofuz
parents:
diff changeset
76 VariantMatchInfo Empty;
anatofuz
parents:
diff changeset
77 EXPECT_TRUE(isVariantApplicableInContext(Empty, HostLinux));
anatofuz
parents:
diff changeset
78 EXPECT_TRUE(isVariantApplicableInContext(Empty, DeviceLinux));
anatofuz
parents:
diff changeset
79 EXPECT_TRUE(isVariantApplicableInContext(Empty, HostNVPTX));
anatofuz
parents:
diff changeset
80 EXPECT_TRUE(isVariantApplicableInContext(Empty, DeviceNVPTX));
anatofuz
parents:
diff changeset
81
anatofuz
parents:
diff changeset
82 VariantMatchInfo UserCondFalse;
221
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 173
diff changeset
83 UserCondFalse.addTrait(TraitProperty::user_condition_false, "");
150
anatofuz
parents:
diff changeset
84 EXPECT_FALSE(isVariantApplicableInContext(UserCondFalse, HostLinux));
anatofuz
parents:
diff changeset
85 EXPECT_FALSE(isVariantApplicableInContext(UserCondFalse, DeviceLinux));
anatofuz
parents:
diff changeset
86 EXPECT_FALSE(isVariantApplicableInContext(UserCondFalse, HostNVPTX));
anatofuz
parents:
diff changeset
87 EXPECT_FALSE(isVariantApplicableInContext(UserCondFalse, DeviceNVPTX));
anatofuz
parents:
diff changeset
88
anatofuz
parents:
diff changeset
89 VariantMatchInfo DeviceArchArm;
221
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 173
diff changeset
90 DeviceArchArm.addTrait(TraitProperty::device_arch_arm, "");
150
anatofuz
parents:
diff changeset
91 EXPECT_FALSE(isVariantApplicableInContext(DeviceArchArm, HostLinux));
anatofuz
parents:
diff changeset
92 EXPECT_FALSE(isVariantApplicableInContext(DeviceArchArm, DeviceLinux));
anatofuz
parents:
diff changeset
93 EXPECT_FALSE(isVariantApplicableInContext(DeviceArchArm, HostNVPTX));
anatofuz
parents:
diff changeset
94 EXPECT_FALSE(isVariantApplicableInContext(DeviceArchArm, DeviceNVPTX));
anatofuz
parents:
diff changeset
95
anatofuz
parents:
diff changeset
96 VariantMatchInfo LLVMHostUserCondTrue;
221
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 173
diff changeset
97 LLVMHostUserCondTrue.addTrait(TraitProperty::implementation_vendor_llvm, "");
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 173
diff changeset
98 LLVMHostUserCondTrue.addTrait(TraitProperty::device_kind_host, "");
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 173
diff changeset
99 LLVMHostUserCondTrue.addTrait(TraitProperty::device_kind_any, "");
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 173
diff changeset
100 LLVMHostUserCondTrue.addTrait(TraitProperty::user_condition_true, "");
150
anatofuz
parents:
diff changeset
101 EXPECT_TRUE(isVariantApplicableInContext(LLVMHostUserCondTrue, HostLinux));
anatofuz
parents:
diff changeset
102 EXPECT_FALSE(isVariantApplicableInContext(LLVMHostUserCondTrue, DeviceLinux));
anatofuz
parents:
diff changeset
103 EXPECT_TRUE(isVariantApplicableInContext(LLVMHostUserCondTrue, HostNVPTX));
anatofuz
parents:
diff changeset
104 EXPECT_FALSE(isVariantApplicableInContext(LLVMHostUserCondTrue, DeviceNVPTX));
anatofuz
parents:
diff changeset
105
anatofuz
parents:
diff changeset
106 VariantMatchInfo LLVMHostUserCondTrueCPU = LLVMHostUserCondTrue;
221
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 173
diff changeset
107 LLVMHostUserCondTrueCPU.addTrait(TraitProperty::device_kind_cpu, "");
150
anatofuz
parents:
diff changeset
108 EXPECT_TRUE(isVariantApplicableInContext(LLVMHostUserCondTrueCPU, HostLinux));
anatofuz
parents:
diff changeset
109 EXPECT_FALSE(
anatofuz
parents:
diff changeset
110 isVariantApplicableInContext(LLVMHostUserCondTrueCPU, DeviceLinux));
anatofuz
parents:
diff changeset
111 EXPECT_FALSE(
anatofuz
parents:
diff changeset
112 isVariantApplicableInContext(LLVMHostUserCondTrueCPU, HostNVPTX));
anatofuz
parents:
diff changeset
113 EXPECT_FALSE(
anatofuz
parents:
diff changeset
114 isVariantApplicableInContext(LLVMHostUserCondTrueCPU, DeviceNVPTX));
anatofuz
parents:
diff changeset
115
anatofuz
parents:
diff changeset
116 VariantMatchInfo GPU;
221
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 173
diff changeset
117 GPU.addTrait(TraitProperty::device_kind_gpu, "");
150
anatofuz
parents:
diff changeset
118 EXPECT_FALSE(isVariantApplicableInContext(GPU, HostLinux));
anatofuz
parents:
diff changeset
119 EXPECT_FALSE(isVariantApplicableInContext(GPU, DeviceLinux));
anatofuz
parents:
diff changeset
120 EXPECT_TRUE(isVariantApplicableInContext(GPU, HostNVPTX));
anatofuz
parents:
diff changeset
121 EXPECT_TRUE(isVariantApplicableInContext(GPU, DeviceNVPTX));
anatofuz
parents:
diff changeset
122
anatofuz
parents:
diff changeset
123 VariantMatchInfo NoHost;
221
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 173
diff changeset
124 NoHost.addTrait(TraitProperty::device_kind_nohost, "");
150
anatofuz
parents:
diff changeset
125 EXPECT_FALSE(isVariantApplicableInContext(NoHost, HostLinux));
anatofuz
parents:
diff changeset
126 EXPECT_TRUE(isVariantApplicableInContext(NoHost, DeviceLinux));
anatofuz
parents:
diff changeset
127 EXPECT_FALSE(isVariantApplicableInContext(NoHost, HostNVPTX));
anatofuz
parents:
diff changeset
128 EXPECT_TRUE(isVariantApplicableInContext(NoHost, DeviceNVPTX));
anatofuz
parents:
diff changeset
129 }
anatofuz
parents:
diff changeset
130
anatofuz
parents:
diff changeset
131 TEST_F(OpenMPContextTest, ApplicabilityAllTraits) {
anatofuz
parents:
diff changeset
132 OMPContext HostLinuxParallelParallel(false, Triple("x86_64-unknown-linux"));
anatofuz
parents:
diff changeset
133 HostLinuxParallelParallel.addTrait(
anatofuz
parents:
diff changeset
134 TraitProperty::construct_parallel_parallel);
anatofuz
parents:
diff changeset
135 HostLinuxParallelParallel.addTrait(
anatofuz
parents:
diff changeset
136 TraitProperty::construct_parallel_parallel);
anatofuz
parents:
diff changeset
137 OMPContext DeviceLinuxTargetParallel(true, Triple("x86_64-unknown-linux"));
anatofuz
parents:
diff changeset
138 DeviceLinuxTargetParallel.addTrait(TraitProperty::construct_target_target);
anatofuz
parents:
diff changeset
139 DeviceLinuxTargetParallel.addTrait(
anatofuz
parents:
diff changeset
140 TraitProperty::construct_parallel_parallel);
anatofuz
parents:
diff changeset
141 OMPContext HostNVPTXFor(false, Triple("nvptx64-nvidia-cuda"));
anatofuz
parents:
diff changeset
142 HostNVPTXFor.addTrait(TraitProperty::construct_for_for);
anatofuz
parents:
diff changeset
143 OMPContext DeviceNVPTXTargetTeamsParallel(true,
anatofuz
parents:
diff changeset
144 Triple("nvptx64-nvidia-cuda"));
anatofuz
parents:
diff changeset
145 DeviceNVPTXTargetTeamsParallel.addTrait(
anatofuz
parents:
diff changeset
146 TraitProperty::construct_target_target);
anatofuz
parents:
diff changeset
147 DeviceNVPTXTargetTeamsParallel.addTrait(TraitProperty::construct_teams_teams);
anatofuz
parents:
diff changeset
148 DeviceNVPTXTargetTeamsParallel.addTrait(
anatofuz
parents:
diff changeset
149 TraitProperty::construct_parallel_parallel);
anatofuz
parents:
diff changeset
150
anatofuz
parents:
diff changeset
151 { // non-construct variants
anatofuz
parents:
diff changeset
152 VariantMatchInfo Empty;
anatofuz
parents:
diff changeset
153 EXPECT_TRUE(isVariantApplicableInContext(Empty, HostLinuxParallelParallel));
anatofuz
parents:
diff changeset
154 EXPECT_TRUE(isVariantApplicableInContext(Empty, DeviceLinuxTargetParallel));
anatofuz
parents:
diff changeset
155 EXPECT_TRUE(isVariantApplicableInContext(Empty, HostNVPTXFor));
anatofuz
parents:
diff changeset
156 EXPECT_TRUE(
anatofuz
parents:
diff changeset
157 isVariantApplicableInContext(Empty, DeviceNVPTXTargetTeamsParallel));
anatofuz
parents:
diff changeset
158
anatofuz
parents:
diff changeset
159 VariantMatchInfo UserCondFalse;
221
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 173
diff changeset
160 UserCondFalse.addTrait(TraitProperty::user_condition_false, "");
150
anatofuz
parents:
diff changeset
161 EXPECT_FALSE(
anatofuz
parents:
diff changeset
162 isVariantApplicableInContext(UserCondFalse, HostLinuxParallelParallel));
anatofuz
parents:
diff changeset
163 EXPECT_FALSE(
anatofuz
parents:
diff changeset
164 isVariantApplicableInContext(UserCondFalse, DeviceLinuxTargetParallel));
anatofuz
parents:
diff changeset
165 EXPECT_FALSE(isVariantApplicableInContext(UserCondFalse, HostNVPTXFor));
anatofuz
parents:
diff changeset
166 EXPECT_FALSE(isVariantApplicableInContext(UserCondFalse,
anatofuz
parents:
diff changeset
167 DeviceNVPTXTargetTeamsParallel));
anatofuz
parents:
diff changeset
168
anatofuz
parents:
diff changeset
169 VariantMatchInfo DeviceArchArm;
221
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 173
diff changeset
170 DeviceArchArm.addTrait(TraitProperty::device_arch_arm, "");
150
anatofuz
parents:
diff changeset
171 EXPECT_FALSE(
anatofuz
parents:
diff changeset
172 isVariantApplicableInContext(DeviceArchArm, HostLinuxParallelParallel));
anatofuz
parents:
diff changeset
173 EXPECT_FALSE(
anatofuz
parents:
diff changeset
174 isVariantApplicableInContext(DeviceArchArm, DeviceLinuxTargetParallel));
anatofuz
parents:
diff changeset
175 EXPECT_FALSE(isVariantApplicableInContext(DeviceArchArm, HostNVPTXFor));
anatofuz
parents:
diff changeset
176 EXPECT_FALSE(isVariantApplicableInContext(DeviceArchArm,
anatofuz
parents:
diff changeset
177 DeviceNVPTXTargetTeamsParallel));
anatofuz
parents:
diff changeset
178
anatofuz
parents:
diff changeset
179 APInt Score(32, 1000);
anatofuz
parents:
diff changeset
180 VariantMatchInfo LLVMHostUserCondTrue;
221
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 173
diff changeset
181 LLVMHostUserCondTrue.addTrait(TraitProperty::implementation_vendor_llvm,
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 173
diff changeset
182 "");
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 173
diff changeset
183 LLVMHostUserCondTrue.addTrait(TraitProperty::device_kind_host, "");
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 173
diff changeset
184 LLVMHostUserCondTrue.addTrait(TraitProperty::device_kind_any, "");
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 173
diff changeset
185 LLVMHostUserCondTrue.addTrait(TraitProperty::user_condition_true, "",
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 173
diff changeset
186 &Score);
150
anatofuz
parents:
diff changeset
187 EXPECT_TRUE(isVariantApplicableInContext(LLVMHostUserCondTrue,
anatofuz
parents:
diff changeset
188 HostLinuxParallelParallel));
anatofuz
parents:
diff changeset
189 EXPECT_FALSE(isVariantApplicableInContext(LLVMHostUserCondTrue,
anatofuz
parents:
diff changeset
190 DeviceLinuxTargetParallel));
anatofuz
parents:
diff changeset
191 EXPECT_TRUE(
anatofuz
parents:
diff changeset
192 isVariantApplicableInContext(LLVMHostUserCondTrue, HostNVPTXFor));
anatofuz
parents:
diff changeset
193 EXPECT_FALSE(isVariantApplicableInContext(LLVMHostUserCondTrue,
anatofuz
parents:
diff changeset
194 DeviceNVPTXTargetTeamsParallel));
anatofuz
parents:
diff changeset
195
anatofuz
parents:
diff changeset
196 VariantMatchInfo LLVMHostUserCondTrueCPU = LLVMHostUserCondTrue;
221
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 173
diff changeset
197 LLVMHostUserCondTrueCPU.addTrait(TraitProperty::device_kind_cpu, "");
150
anatofuz
parents:
diff changeset
198 EXPECT_TRUE(isVariantApplicableInContext(LLVMHostUserCondTrueCPU,
anatofuz
parents:
diff changeset
199 HostLinuxParallelParallel));
anatofuz
parents:
diff changeset
200 EXPECT_FALSE(isVariantApplicableInContext(LLVMHostUserCondTrueCPU,
anatofuz
parents:
diff changeset
201 DeviceLinuxTargetParallel));
anatofuz
parents:
diff changeset
202 EXPECT_FALSE(
anatofuz
parents:
diff changeset
203 isVariantApplicableInContext(LLVMHostUserCondTrueCPU, HostNVPTXFor));
anatofuz
parents:
diff changeset
204 EXPECT_FALSE(isVariantApplicableInContext(LLVMHostUserCondTrueCPU,
anatofuz
parents:
diff changeset
205 DeviceNVPTXTargetTeamsParallel));
anatofuz
parents:
diff changeset
206
anatofuz
parents:
diff changeset
207 VariantMatchInfo GPU;
221
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 173
diff changeset
208 GPU.addTrait(TraitProperty::device_kind_gpu, "");
150
anatofuz
parents:
diff changeset
209 EXPECT_FALSE(isVariantApplicableInContext(GPU, HostLinuxParallelParallel));
anatofuz
parents:
diff changeset
210 EXPECT_FALSE(isVariantApplicableInContext(GPU, DeviceLinuxTargetParallel));
anatofuz
parents:
diff changeset
211 EXPECT_TRUE(isVariantApplicableInContext(GPU, HostNVPTXFor));
anatofuz
parents:
diff changeset
212 EXPECT_TRUE(
anatofuz
parents:
diff changeset
213 isVariantApplicableInContext(GPU, DeviceNVPTXTargetTeamsParallel));
anatofuz
parents:
diff changeset
214
anatofuz
parents:
diff changeset
215 VariantMatchInfo NoHost;
221
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 173
diff changeset
216 NoHost.addTrait(TraitProperty::device_kind_nohost, "");
150
anatofuz
parents:
diff changeset
217 EXPECT_FALSE(
anatofuz
parents:
diff changeset
218 isVariantApplicableInContext(NoHost, HostLinuxParallelParallel));
anatofuz
parents:
diff changeset
219 EXPECT_TRUE(
anatofuz
parents:
diff changeset
220 isVariantApplicableInContext(NoHost, DeviceLinuxTargetParallel));
anatofuz
parents:
diff changeset
221 EXPECT_FALSE(isVariantApplicableInContext(NoHost, HostNVPTXFor));
anatofuz
parents:
diff changeset
222 EXPECT_TRUE(
anatofuz
parents:
diff changeset
223 isVariantApplicableInContext(NoHost, DeviceNVPTXTargetTeamsParallel));
anatofuz
parents:
diff changeset
224 }
anatofuz
parents:
diff changeset
225 { // variants with all sets
anatofuz
parents:
diff changeset
226 VariantMatchInfo DeviceArchArmParallel;
221
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 173
diff changeset
227 DeviceArchArmParallel.addTrait(TraitProperty::construct_parallel_parallel,
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 173
diff changeset
228 "");
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 173
diff changeset
229 DeviceArchArmParallel.addTrait(TraitProperty::device_arch_arm, "");
150
anatofuz
parents:
diff changeset
230 EXPECT_FALSE(isVariantApplicableInContext(DeviceArchArmParallel,
anatofuz
parents:
diff changeset
231 HostLinuxParallelParallel));
anatofuz
parents:
diff changeset
232 EXPECT_FALSE(isVariantApplicableInContext(DeviceArchArmParallel,
anatofuz
parents:
diff changeset
233 DeviceLinuxTargetParallel));
anatofuz
parents:
diff changeset
234 EXPECT_FALSE(
anatofuz
parents:
diff changeset
235 isVariantApplicableInContext(DeviceArchArmParallel, HostNVPTXFor));
anatofuz
parents:
diff changeset
236 EXPECT_FALSE(isVariantApplicableInContext(DeviceArchArmParallel,
anatofuz
parents:
diff changeset
237 DeviceNVPTXTargetTeamsParallel));
anatofuz
parents:
diff changeset
238
anatofuz
parents:
diff changeset
239 VariantMatchInfo LLVMHostUserCondTrueParallel;
anatofuz
parents:
diff changeset
240 LLVMHostUserCondTrueParallel.addTrait(
221
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 173
diff changeset
241 TraitProperty::implementation_vendor_llvm, "");
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 173
diff changeset
242 LLVMHostUserCondTrueParallel.addTrait(TraitProperty::device_kind_host, "");
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 173
diff changeset
243 LLVMHostUserCondTrueParallel.addTrait(TraitProperty::device_kind_any, "");
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 173
diff changeset
244 LLVMHostUserCondTrueParallel.addTrait(TraitProperty::user_condition_true,
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 173
diff changeset
245 "");
150
anatofuz
parents:
diff changeset
246 LLVMHostUserCondTrueParallel.addTrait(
221
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 173
diff changeset
247 TraitProperty::construct_parallel_parallel, "");
150
anatofuz
parents:
diff changeset
248 EXPECT_TRUE(isVariantApplicableInContext(LLVMHostUserCondTrueParallel,
anatofuz
parents:
diff changeset
249 HostLinuxParallelParallel));
anatofuz
parents:
diff changeset
250 EXPECT_FALSE(isVariantApplicableInContext(LLVMHostUserCondTrueParallel,
anatofuz
parents:
diff changeset
251 DeviceLinuxTargetParallel));
anatofuz
parents:
diff changeset
252 EXPECT_FALSE(isVariantApplicableInContext(LLVMHostUserCondTrueParallel,
anatofuz
parents:
diff changeset
253 HostNVPTXFor));
anatofuz
parents:
diff changeset
254 EXPECT_FALSE(isVariantApplicableInContext(LLVMHostUserCondTrueParallel,
anatofuz
parents:
diff changeset
255 DeviceNVPTXTargetTeamsParallel));
anatofuz
parents:
diff changeset
256
anatofuz
parents:
diff changeset
257 VariantMatchInfo LLVMHostUserCondTrueParallelParallel =
anatofuz
parents:
diff changeset
258 LLVMHostUserCondTrueParallel;
anatofuz
parents:
diff changeset
259 LLVMHostUserCondTrueParallelParallel.addTrait(
221
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 173
diff changeset
260 TraitProperty::construct_parallel_parallel, "");
150
anatofuz
parents:
diff changeset
261 EXPECT_TRUE(isVariantApplicableInContext(
anatofuz
parents:
diff changeset
262 LLVMHostUserCondTrueParallelParallel, HostLinuxParallelParallel));
anatofuz
parents:
diff changeset
263 EXPECT_FALSE(isVariantApplicableInContext(
anatofuz
parents:
diff changeset
264 LLVMHostUserCondTrueParallelParallel, DeviceLinuxTargetParallel));
anatofuz
parents:
diff changeset
265 EXPECT_FALSE(isVariantApplicableInContext(
anatofuz
parents:
diff changeset
266 LLVMHostUserCondTrueParallelParallel, HostNVPTXFor));
anatofuz
parents:
diff changeset
267 EXPECT_FALSE(isVariantApplicableInContext(
anatofuz
parents:
diff changeset
268 LLVMHostUserCondTrueParallelParallel, DeviceNVPTXTargetTeamsParallel));
anatofuz
parents:
diff changeset
269
anatofuz
parents:
diff changeset
270 VariantMatchInfo LLVMHostUserCondTrueParallelParallelParallel =
anatofuz
parents:
diff changeset
271 LLVMHostUserCondTrueParallelParallel;
anatofuz
parents:
diff changeset
272 LLVMHostUserCondTrueParallelParallelParallel.addTrait(
221
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 173
diff changeset
273 TraitProperty::construct_parallel_parallel, "");
150
anatofuz
parents:
diff changeset
274 EXPECT_FALSE(isVariantApplicableInContext(
anatofuz
parents:
diff changeset
275 LLVMHostUserCondTrueParallelParallelParallel,
anatofuz
parents:
diff changeset
276 HostLinuxParallelParallel));
anatofuz
parents:
diff changeset
277 EXPECT_FALSE(isVariantApplicableInContext(
anatofuz
parents:
diff changeset
278 LLVMHostUserCondTrueParallelParallelParallel,
anatofuz
parents:
diff changeset
279 DeviceLinuxTargetParallel));
anatofuz
parents:
diff changeset
280 EXPECT_FALSE(isVariantApplicableInContext(
anatofuz
parents:
diff changeset
281 LLVMHostUserCondTrueParallelParallelParallel, HostNVPTXFor));
anatofuz
parents:
diff changeset
282 EXPECT_FALSE(isVariantApplicableInContext(
anatofuz
parents:
diff changeset
283 LLVMHostUserCondTrueParallelParallelParallel,
anatofuz
parents:
diff changeset
284 DeviceNVPTXTargetTeamsParallel));
anatofuz
parents:
diff changeset
285
anatofuz
parents:
diff changeset
286 VariantMatchInfo GPUTargetTeams;
221
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 173
diff changeset
287 GPUTargetTeams.addTrait(TraitProperty::construct_target_target, "");
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 173
diff changeset
288 GPUTargetTeams.addTrait(TraitProperty::construct_teams_teams, "");
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 173
diff changeset
289 GPUTargetTeams.addTrait(TraitProperty::device_kind_gpu, "");
150
anatofuz
parents:
diff changeset
290 EXPECT_FALSE(isVariantApplicableInContext(GPUTargetTeams,
anatofuz
parents:
diff changeset
291 HostLinuxParallelParallel));
anatofuz
parents:
diff changeset
292 EXPECT_FALSE(isVariantApplicableInContext(GPUTargetTeams,
anatofuz
parents:
diff changeset
293 DeviceLinuxTargetParallel));
anatofuz
parents:
diff changeset
294 EXPECT_FALSE(isVariantApplicableInContext(GPUTargetTeams, HostNVPTXFor));
anatofuz
parents:
diff changeset
295 EXPECT_TRUE(isVariantApplicableInContext(GPUTargetTeams,
anatofuz
parents:
diff changeset
296 DeviceNVPTXTargetTeamsParallel));
anatofuz
parents:
diff changeset
297
anatofuz
parents:
diff changeset
298 VariantMatchInfo GPUTargetParallel;
221
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 173
diff changeset
299 GPUTargetParallel.addTrait(TraitProperty::construct_target_target, "");
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 173
diff changeset
300 GPUTargetParallel.addTrait(TraitProperty::construct_parallel_parallel, "");
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 173
diff changeset
301 GPUTargetParallel.addTrait(TraitProperty::device_kind_gpu, "");
150
anatofuz
parents:
diff changeset
302 EXPECT_FALSE(isVariantApplicableInContext(GPUTargetParallel,
anatofuz
parents:
diff changeset
303 HostLinuxParallelParallel));
anatofuz
parents:
diff changeset
304 EXPECT_FALSE(isVariantApplicableInContext(GPUTargetParallel,
anatofuz
parents:
diff changeset
305 DeviceLinuxTargetParallel));
anatofuz
parents:
diff changeset
306 EXPECT_FALSE(isVariantApplicableInContext(GPUTargetParallel, HostNVPTXFor));
anatofuz
parents:
diff changeset
307 EXPECT_TRUE(isVariantApplicableInContext(GPUTargetParallel,
anatofuz
parents:
diff changeset
308 DeviceNVPTXTargetTeamsParallel));
anatofuz
parents:
diff changeset
309 }
anatofuz
parents:
diff changeset
310 }
anatofuz
parents:
diff changeset
311
anatofuz
parents:
diff changeset
312 TEST_F(OpenMPContextTest, ScoringSimple) {
anatofuz
parents:
diff changeset
313 // TODO: Add scoring tests (via getBestVariantMatchForContext).
anatofuz
parents:
diff changeset
314 }
anatofuz
parents:
diff changeset
315
anatofuz
parents:
diff changeset
316 } // namespace