Skip to content

Commit 0f8e6cc

Browse files
Merge pull request #4346 from swiftwasm/main
[pull] swiftwasm from main
2 parents fd19441 + e25b822 commit 0f8e6cc

File tree

109 files changed

+1440
-678
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

109 files changed

+1440
-678
lines changed

CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -742,10 +742,14 @@ else()
742742
endif()
743743
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "ppc64")
744744
set(SWIFT_HOST_VARIANT_ARCH_default "powerpc64")
745+
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "ppc")
746+
set(SWIFT_HOST_VARIANT_ARCH_default "powerpc")
745747
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "ppc64le")
746748
set(SWIFT_HOST_VARIANT_ARCH_default "powerpc64le")
747749
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "s390x")
748750
set(SWIFT_HOST_VARIANT_ARCH_default "s390x")
751+
elseif("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "armv5|armv5te")
752+
set(SWIFT_HOST_VARIANT_ARCH_default "armv5")
749753
# FIXME: Only matches v6l/v7l - by far the most common variants
750754
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "armv6l")
751755
set(SWIFT_HOST_VARIANT_ARCH_default "armv6")

benchmark/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,7 @@ set(SWIFT_BENCH_MODULES
196196
single-source/WordCount
197197
single-source/XorLoop
198198
cxx-source/CreateObjects
199+
cxx-source/ReadAccessor
199200
)
200201

201202
set(SWIFT_MULTISOURCE_SWIFT_BENCHES
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
// Subscripts.swift - Very brief description
2+
//
3+
// This source file is part of the Swift.org open source project
4+
//
5+
// Copyright (c) 2014 - 2022 Apple Inc. and the Swift project authors
6+
// Licensed under Apache License v2.0 with Runtime Library Exception
7+
//
8+
// See https://swift.org/LICENSE.txt for license information
9+
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
10+
//
11+
// -----------------------------------------------------------------------------
12+
///
13+
/// This is a simple test that reads a non trivial C++ struct using an imported
14+
/// subscript thousands of times.
15+
///
16+
// -----------------------------------------------------------------------------
17+
18+
import TestsUtils
19+
import CxxSubscripts
20+
21+
var vec : TwoDimensionalVector?
22+
23+
public let benchmarks = [
24+
BenchmarkInfo(
25+
name: "ReadAccessor",
26+
runFunction: run_ReadAccessor,
27+
tags: [.validation, .bridging],
28+
setUpFunction: {
29+
vec = initVector()
30+
})
31+
]
32+
33+
@inline(never)
34+
public func run_ReadAccessor(_ N: Int) {
35+
for i in 0...N {
36+
for j in 0..<100 {
37+
#if os(Linux)
38+
let row = vec![UInt(j)];
39+
#else
40+
let row = vec![j];
41+
#endif
42+
for k in 0..<1_000 {
43+
#if os(Linux)
44+
let element = row[UInt(k)];
45+
#else
46+
let element = row[k];
47+
#endif
48+
blackHole(element)
49+
}
50+
}
51+
}
52+
}

benchmark/utils/CxxTests/Subscripts.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#ifndef BENCHMARK_SUBSCRIPTS_H
2+
#define BENCHMARK_SUBSCRIPTS_H
3+
#include <vector>
4+
5+
using TwoDimensionalVector = std::vector<std::vector<int>>;
6+
7+
inline TwoDimensionalVector initVector() { return {100, std::vector<int>{1000, 0}}; }
8+
9+
#endif
10+

benchmark/utils/CxxTests/module.modulemap

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,8 @@ module CxxCreateObjects {
22
header "CreateObjects.h"
33
requires cplusplus
44
}
5+
6+
module CxxSubscripts {
7+
header "Subscripts.h"
8+
requires cplusplus
9+
}

benchmark/utils/main.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,7 @@ import RangeAssignment
152152
import RangeIteration
153153
import RangeOverlaps
154154
import RangeReplaceableCollectionPlusDefault
155+
import ReadAccessor
155156
import RecursiveOwnedParameter
156157
import ReduceInto
157158
import RemoveWhere
@@ -332,6 +333,7 @@ register(RangeAssignment.benchmarks)
332333
register(RangeIteration.benchmarks)
333334
register(RangeOverlaps.benchmarks)
334335
register(RangeReplaceableCollectionPlusDefault.benchmarks)
336+
register(ReadAccessor.benchmarks)
335337
register(RecursiveOwnedParameter.benchmarks)
336338
register(ReduceInto.benchmarks)
337339
register(RemoveWhere.benchmarks)

cmake/modules/AddSwift.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -344,7 +344,7 @@ function(_add_host_variant_link_flags target)
344344
target_link_libraries(${target} PRIVATE
345345
pthread
346346
dl)
347-
if("${SWIFT_HOST_VARIANT_ARCH}" MATCHES "armv6|armv7|i686")
347+
if("${SWIFT_HOST_VARIANT_ARCH}" MATCHES "armv5|armv6|armv7|i686")
348348
target_link_libraries(${target} PRIVATE atomic)
349349
endif()
350350
elseif(SWIFT_HOST_VARIANT_SDK STREQUAL FREEBSD)

cmake/modules/AddSwiftUnittests.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ function(add_swift_unittest test_dirname)
3737
if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|AMD64")
3838
target_compile_options(${test_dirname} PRIVATE
3939
-march=core2)
40-
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "armv6|armv7|i686")
40+
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "armv5|armv6|armv7|i686")
4141
set_property(TARGET "${test_dirname}" APPEND PROPERTY LINK_LIBRARIES
4242
"atomic")
4343
endif()

cmake/modules/SwiftConfigureSDK.cmake

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -324,9 +324,11 @@ macro(configure_sdk_unix name architectures)
324324
endif()
325325

326326
if("${prefix}" STREQUAL "LINUX")
327-
if(arch MATCHES "(armv6|armv7)")
327+
if(arch MATCHES "(armv5)")
328+
set(SWIFT_SDK_LINUX_ARCH_${arch}_TRIPLE "${arch}-unknown-linux-gnueabi")
329+
elseif(arch MATCHES "(armv6|armv7)")
328330
set(SWIFT_SDK_LINUX_ARCH_${arch}_TRIPLE "${arch}-unknown-linux-gnueabihf")
329-
elseif(arch MATCHES "(aarch64|i686|powerpc64|powerpc64le|s390x|x86_64)")
331+
elseif(arch MATCHES "(aarch64|i686|powerpc|powerpc64|powerpc64le|s390x|x86_64)")
330332
set(SWIFT_SDK_LINUX_ARCH_${arch}_TRIPLE "${arch}-unknown-linux-gnu")
331333
else()
332334
message(FATAL_ERROR "unknown arch for ${prefix}: ${arch}")

cmake/modules/SwiftSetIfArchBitness.cmake

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,14 @@ function(set_if_arch_bitness var_name)
99
if("${SIA_ARCH}" STREQUAL "i386" OR
1010
"${SIA_ARCH}" STREQUAL "i686" OR
1111
"${SIA_ARCH}" STREQUAL "x86" OR
12+
"${SIA_ARCH}" STREQUAL "armv5" OR
1213
"${SIA_ARCH}" STREQUAL "armv6" OR
1314
"${SIA_ARCH}" STREQUAL "armv7" OR
1415
"${SIA_ARCH}" STREQUAL "armv7k" OR
1516
"${SIA_ARCH}" STREQUAL "arm64_32" OR
1617
"${SIA_ARCH}" STREQUAL "armv7s" OR
17-
"${SIA_ARCH}" STREQUAL "wasm32")
18+
"${SIA_ARCH}" STREQUAL "wasm32" OR
19+
"${SIA_ARCH}" STREQUAL "powerpc")
1820
set("${var_name}" "${SIA_CASE_32_BIT}" PARENT_SCOPE)
1921
elseif("${SIA_ARCH}" STREQUAL "x86_64" OR
2022
"${SIA_ARCH}" STREQUAL "amd64" OR

0 commit comments

Comments
 (0)