Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
dc03599
new simd types, take 2, generic boogaloo.
stephentyrone Nov 5, 2018
b1393c4
More stuff, support for vectors up to 64.
stephentyrone Nov 6, 2018
5c6a1b6
Formatting, add random( ), elements and halves.
stephentyrone Nov 6, 2018
58da925
Mark stuff public that should be public.
stephentyrone Nov 6, 2018
ee9d5dd
More floating point functionality.
stephentyrone Nov 6, 2018
24677ad
Some more conversions.
stephentyrone Nov 6, 2018
acceb5d
typos.
stephentyrone Nov 6, 2018
f303a07
Re-instate init from array literal and sequence.
stephentyrone Nov 6, 2018
81e8d8a
Rename _-prefixed simd protocol requirements
stephentyrone Nov 12, 2018
60ed083
Rename Vector -> SIMD, associated simplifications
stephentyrone Nov 12, 2018
8dd9d1c
Reinstate prefix- for floatingpoint vectors.
stephentyrone Nov 16, 2018
a8032ab
Update cake.json to account for SIMDScalar conformance.
stephentyrone Nov 16, 2018
47797bf
Update cake-abi.json too.
stephentyrone Nov 16, 2018
8b10812
Disable one complex_expressions test for now.
stephentyrone Nov 16, 2018
83642ae
Changes to SDK overlays to account for new SIMD types.
stephentyrone Nov 16, 2018
539d6b2
Restore vector alignment requirements.
stephentyrone Nov 16, 2018
5142b74
Fixes for inherits_NSObject.swift validation test
stephentyrone Nov 17, 2018
64474a2
Move two crashers back to not-fixed.
stephentyrone Nov 17, 2018
9eea4c4
One more validation test fix.
stephentyrone Nov 17, 2018
6c69d94
additional fixes to inherits_ObjCClasses.swift
stephentyrone Nov 17, 2018
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions include/swift/Runtime/BuiltinTypes.def
Original file line number Diff line number Diff line change
Expand Up @@ -74,32 +74,43 @@ BUILTIN_VECTOR_TYPE(Bi16_, Int16, 4)
BUILTIN_VECTOR_TYPE(Bi16_, Int16, 8)
BUILTIN_VECTOR_TYPE(Bi16_, Int16, 16)
BUILTIN_VECTOR_TYPE(Bi16_, Int16, 32)
BUILTIN_VECTOR_TYPE(Bi16_, Int16, 64)

// Int32 vector types
BUILTIN_VECTOR_TYPE(Bi32_, Int32, 2)
BUILTIN_VECTOR_TYPE(Bi32_, Int32, 3)
BUILTIN_VECTOR_TYPE(Bi32_, Int32, 4)
BUILTIN_VECTOR_TYPE(Bi32_, Int32, 8)
BUILTIN_VECTOR_TYPE(Bi32_, Int32, 16)
BUILTIN_VECTOR_TYPE(Bi32_, Int32, 32)
BUILTIN_VECTOR_TYPE(Bi32_, Int32, 64)

// Int64 vector types
BUILTIN_VECTOR_TYPE(Bi64_, Int64, 2)
BUILTIN_VECTOR_TYPE(Bi64_, Int64, 3)
BUILTIN_VECTOR_TYPE(Bi64_, Int64, 4)
BUILTIN_VECTOR_TYPE(Bi64_, Int64, 8)
BUILTIN_VECTOR_TYPE(Bi64_, Int64, 16)
BUILTIN_VECTOR_TYPE(Bi64_, Int64, 32)
BUILTIN_VECTOR_TYPE(Bi64_, Int64, 64)

// Float32 vector types
BUILTIN_VECTOR_TYPE(Bf32_, FPIEEE32, 2)
BUILTIN_VECTOR_TYPE(Bf32_, FPIEEE32, 3)
BUILTIN_VECTOR_TYPE(Bf32_, FPIEEE32, 4)
BUILTIN_VECTOR_TYPE(Bf32_, FPIEEE32, 8)
BUILTIN_VECTOR_TYPE(Bf32_, FPIEEE32, 16)
BUILTIN_VECTOR_TYPE(Bf32_, FPIEEE32, 32)
BUILTIN_VECTOR_TYPE(Bf32_, FPIEEE32, 64)

// Float64 vector types
BUILTIN_VECTOR_TYPE(Bf64_, FPIEEE64, 2)
BUILTIN_VECTOR_TYPE(Bf64_, FPIEEE64, 3)
BUILTIN_VECTOR_TYPE(Bf64_, FPIEEE64, 4)
BUILTIN_VECTOR_TYPE(Bf64_, FPIEEE64, 8)
BUILTIN_VECTOR_TYPE(Bf64_, FPIEEE64, 16)
BUILTIN_VECTOR_TYPE(Bf64_, FPIEEE64, 32)
BUILTIN_VECTOR_TYPE(Bf64_, FPIEEE64, 64)

#undef BUILTIN_VECTOR_TYPE
#undef VECTOR_BUILTIN_SYMBOL_NAME
Expand Down
17 changes: 16 additions & 1 deletion lib/IRGen/GenClangType.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -453,6 +453,7 @@ GenClangType::visitBoundGenericType(CanBoundGenericType type) {
AutoreleasingUnsafeMutablePointer,
Unmanaged,
CFunctionPointer,
SIMD,
} kind = llvm::StringSwitch<StructKind>(swiftStructDecl->getName().str())
.Case("UnsafeMutablePointer", StructKind::UnsafeMutablePointer)
.Case("UnsafePointer", StructKind::UnsafePointer)
Expand All @@ -461,6 +462,7 @@ GenClangType::visitBoundGenericType(CanBoundGenericType type) {
StructKind::AutoreleasingUnsafeMutablePointer)
.Case("Unmanaged", StructKind::Unmanaged)
.Case("CFunctionPointer", StructKind::CFunctionPointer)
.StartsWith("SIMD", StructKind::SIMD)
.Default(StructKind::Invalid);

auto args = type.getGenericArgs();
Expand All @@ -472,7 +474,7 @@ GenClangType::visitBoundGenericType(CanBoundGenericType type) {
case StructKind::Invalid:
llvm_unreachable("Unexpected non-pointer generic struct type in imported"
" Clang module!");

case StructKind::UnsafeMutablePointer:
case StructKind::Unmanaged:
case StructKind::AutoreleasingUnsafeMutablePointer: {
Expand All @@ -499,6 +501,19 @@ GenClangType::visitBoundGenericType(CanBoundGenericType type) {
auto fnPtrTy = clangCtx.getPointerType(functionTy);
return getCanonicalType(fnPtrTy);
}

case StructKind::SIMD: {
clang::QualType scalarTy = Converter.convert(IGM, loweredArgTy);
auto numEltsString = swiftStructDecl->getName().str();
numEltsString.consume_front("SIMD");
unsigned numElts;
bool failedParse = numEltsString.getAsInteger<unsigned>(10, numElts);
assert(!failedParse && "SIMD type name didn't end in count?");
(void) failedParse;
auto vectorTy = getClangASTContext().getVectorType(scalarTy, numElts,
clang::VectorType::VectorKind::GenericVector);
return getCanonicalType(vectorTy);
}
}

llvm_unreachable("Not a valid StructKind.");
Expand Down
8 changes: 4 additions & 4 deletions stdlib/public/SDK/SceneKit/SceneKit.swift.gyb
Original file line number Diff line number Diff line change
Expand Up @@ -51,13 +51,13 @@ extension SCNVector3 {
}
}

extension float3 {
extension SIMD3 where Scalar == Float {
public init(_ v: SCNVector3) {
self.init(Float(v.x), Float(v.y), Float(v.z))
}
}

extension double3 {
extension SIMD3 where Scalar == Double {
public init(_ v: SCNVector3) {
self.init(Double(v.x), Double(v.y), Double(v.z))
}
Expand Down Expand Up @@ -86,13 +86,13 @@ extension SCNVector4 {
}
}

extension float4 {
extension SIMD4 where Scalar == Float {
public init(_ v: SCNVector4) {
self.init(Float(v.x), Float(v.y), Float(v.z), Float(v.w))
}
}

extension double4 {
extension SIMD4 where Scalar == Double {
public init(_ v: SCNVector4) {
self.init(Double(v.x), Double(v.y), Double(v.z), Double(v.w))
}
Expand Down
Loading