blob: f22555d8c0aadc908995b3ed7e0b57c862379e0b [file] [log] [blame]
// *NOTE* This is an end to end test. Specifically, we are ensuring that the
// driver is properly generated -enable-aarch64-tbi and also that the frontend
// respects this option and that we get the proper tbi behavior.
// RUN: %swiftc_driver -parse-sil -Xfrontend -disable-legacy-type-info -target arm64-apple-ios8.0 -target-cpu cyclone \
// RUN: -O -S %s -parse-as-library -parse-stdlib -module-name Swift \
// RUN: | \
// RUN: %FileCheck --check-prefix=TBI %s
// RUN: %swiftc_driver -parse-sil -Xfrontend -disable-legacy-type-info -target arm64-apple-ios7.0 -target-cpu cyclone \
// RUN: -O -S %s -parse-as-library -parse-stdlib -module-name Swift \
// RUN: | \
// RUN: %FileCheck --check-prefix=NO_TBI %s
// REQUIRES: CODEGENERATOR=AArch64
// Verify that TBI is on by default in Swift on targets that support it. For our
// purposes this means iOS8.0 or later.
// NO_TBI-LABEL: .globl _testTBI
// NO_TBI: _testTBI
// NO_TBI-NEXT: and
// NO_TBI-NEXT: ldr
// NO_TBI-NEXT: ret
// TBI-LABEL: .globl _testTBI
// TBI: _testTBI:
// TBI-NEXT: ldr
// TBI-NEXT: ret
sil_stage canonical
import Builtin
sil [ossa] @testTBI : $@convention(thin) (Builtin.Int64) -> Builtin.Int64 {
bb0(%0 : $Builtin.Int64):
%1 = integer_literal $Builtin.Int64, 0x00FFFFFFFFFFFFFF
%2 = builtin "and_Int64"(%0 : $Builtin.Int64, %1 : $Builtin.Int64) : $Builtin.Int64
%3 = builtin "inttoptr_Int64"(%2 : $Builtin.Int64) : $Builtin.RawPointer
%4 = pointer_to_address %3 : $Builtin.RawPointer to [strict] $*Builtin.Int64
%5 = load [trivial] %4 : $*Builtin.Int64
return %5 : $Builtin.Int64
}