|
19 | 19 | using namespace NEO; |
20 | 20 |
|
21 | 21 | namespace SipKernelTests { |
| 22 | +std::string getDebugSipKernelNameWithBitnessAndProductSuffix(std::string &base, const char *product) { |
| 23 | + std::string fullName = base + std::string("_"); |
| 24 | + |
| 25 | + if (sizeof(uintptr_t) == 8) { |
| 26 | + fullName.append("64_"); |
| 27 | + } else { |
| 28 | + fullName.append("32_"); |
| 29 | + } |
| 30 | + |
| 31 | + fullName.append(product); |
| 32 | + return fullName; |
| 33 | +} |
| 34 | + |
| 35 | +TEST(Sip, WhenSipKernelIsInvalidThenEmptyCompilerInternalOptionsAreReturned) { |
| 36 | + const char *opt = getSipKernelCompilerInternalOptions(SipKernelType::COUNT); |
| 37 | + ASSERT_NE(nullptr, opt); |
| 38 | + EXPECT_EQ(0U, strlen(opt)); |
| 39 | +} |
| 40 | + |
| 41 | +TEST(Sip, WhenRequestingCsrSipKernelThenProperCompilerInternalOptionsAreReturned) { |
| 42 | + const char *opt = getSipKernelCompilerInternalOptions(SipKernelType::Csr); |
| 43 | + ASSERT_NE(nullptr, opt); |
| 44 | + EXPECT_STREQ("-cl-include-sip-csr", opt); |
| 45 | +} |
| 46 | + |
| 47 | +TEST(Sip, When32BitAddressesAreNotBeingForcedThenSipLlHasSameBitnessAsHostApplication) { |
| 48 | + auto mockDevice = std::unique_ptr<MockDevice>(MockDevice::createWithNewExecutionEnvironment<MockDevice>(nullptr)); |
| 49 | + EXPECT_NE(nullptr, mockDevice); |
| 50 | + mockDevice->deviceInfo.force32BitAddressess = false; |
| 51 | + const char *src = getSipLlSrc(*mockDevice); |
| 52 | + ASSERT_NE(nullptr, src); |
| 53 | + if (sizeof(void *) == 8) { |
| 54 | + EXPECT_NE(nullptr, strstr(src, "target datalayout = \"e-p:64:64:64\"")); |
| 55 | + EXPECT_NE(nullptr, strstr(src, "target triple = \"spir64\"")); |
| 56 | + } else { |
| 57 | + EXPECT_NE(nullptr, strstr(src, "target datalayout = \"e-p:32:32:32\"")); |
| 58 | + EXPECT_NE(nullptr, strstr(src, "target triple = \"spir\"")); |
| 59 | + EXPECT_EQ(nullptr, strstr(src, "target triple = \"spir64\"")); |
| 60 | + } |
| 61 | +} |
| 62 | + |
| 63 | +TEST(Sip, When32BitAddressesAreBeingForcedThenSipLlHas32BitAddresses) { |
| 64 | + auto mockDevice = std::unique_ptr<MockDevice>(MockDevice::createWithNewExecutionEnvironment<MockDevice>(nullptr)); |
| 65 | + EXPECT_NE(nullptr, mockDevice); |
| 66 | + mockDevice->deviceInfo.force32BitAddressess = true; |
| 67 | + const char *src = getSipLlSrc(*mockDevice); |
| 68 | + ASSERT_NE(nullptr, src); |
| 69 | + EXPECT_NE(nullptr, strstr(src, "target datalayout = \"e-p:32:32:32\"")); |
| 70 | + EXPECT_NE(nullptr, strstr(src, "target triple = \"spir\"")); |
| 71 | + EXPECT_EQ(nullptr, strstr(src, "target triple = \"spir64\"")); |
| 72 | +} |
| 73 | + |
| 74 | +TEST(Sip, GivenSipLlWhenGettingMetadataThenMetadataRequiredByCompilerIsReturned) { |
| 75 | + auto mockDevice = std::unique_ptr<MockDevice>(MockDevice::createWithNewExecutionEnvironment<MockDevice>(nullptr)); |
| 76 | + EXPECT_NE(nullptr, mockDevice); |
| 77 | + const char *src = getSipLlSrc(*mockDevice); |
| 78 | + ASSERT_NE(nullptr, src); |
| 79 | + |
| 80 | + EXPECT_NE(nullptr, strstr(src, "!opencl.compiler.options")); |
| 81 | + EXPECT_NE(nullptr, strstr(src, "!opencl.kernels")); |
| 82 | +} |
22 | 83 |
|
23 | 84 | TEST(Sip, WhenGettingTypeThenCorrectTypeIsReturned) { |
24 | 85 | SipKernel csr{SipKernelType::Csr, nullptr}; |
@@ -48,6 +109,18 @@ TEST(DebugSip, givenDebuggingActiveWhenSipTypeIsQueriedThenDbgCsrSipTypeIsReturn |
48 | 109 | EXPECT_LE(SipKernelType::DbgCsr, sipType); |
49 | 110 | } |
50 | 111 |
|
| 112 | +TEST(DebugSip, WhenRequestingDbgCsrSipKernelThenProperCompilerInternalOptionsAreReturned) { |
| 113 | + const char *opt = getSipKernelCompilerInternalOptions(SipKernelType::DbgCsr); |
| 114 | + ASSERT_NE(nullptr, opt); |
| 115 | + EXPECT_STREQ("-cl-include-sip-kernel-debug -cl-include-sip-csr -cl-set-bti:0", opt); |
| 116 | +} |
| 117 | + |
| 118 | +TEST(DebugSip, WhenRequestingDbgCsrWithLocalMemorySipKernelThenProperCompilerInternalOptionsAreReturned) { |
| 119 | + const char *opt = getSipKernelCompilerInternalOptions(SipKernelType::DbgCsrLocal); |
| 120 | + ASSERT_NE(nullptr, opt); |
| 121 | + EXPECT_STREQ("-cl-include-sip-kernel-local-debug -cl-include-sip-csr -cl-set-bti:0", opt); |
| 122 | +} |
| 123 | + |
51 | 124 | TEST(DebugSip, givenBuiltInsWhenDbgCsrSipIsRequestedThanCorrectSipKernelIsReturned) { |
52 | 125 | auto mockDevice = std::unique_ptr<MockDevice>(MockDevice::createWithNewExecutionEnvironment<MockDevice>(nullptr)); |
53 | 126 | EXPECT_NE(nullptr, mockDevice); |
|
0 commit comments