File: tbi.sil

package info (click to toggle)
swiftlang 6.0.3-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,519,992 kB
  • sloc: cpp: 9,107,863; ansic: 2,040,022; asm: 1,135,751; python: 296,500; objc: 82,456; f90: 60,502; lisp: 34,951; pascal: 19,946; sh: 18,133; perl: 7,482; ml: 4,937; javascript: 4,117; makefile: 3,840; awk: 3,535; xml: 914; fortran: 619; cs: 573; ruby: 573
file content (43 lines) | stat: -rw-r--r-- 1,615 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
// *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 -sdk "" -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 -sdk "" -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
}