File: builtins.swift

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 (24 lines) | stat: -rw-r--r-- 1,356 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
// RUN: %target-swift-frontend -enable-builtin-module -O -emit-sil %s | %IRGenFileCheck %s

import Builtin

// CHECK-LABEL: sil @storeBytesBitwiseCopyable : {{.*}} {
// CHECK:       bb0(
// CHECK-SAME:      [[SELF:%[^,]+]] : $UnsafeMutableRawPointer, 
// CHECK-SAME:      [[VALUE:%[^,]+]] : $*T, 
// CHECK-SAME:      [[OFFSET:%[^,]+]] : $Int, 
// CHECK-SAME:      {{%[^,]+}} : $@thick T.Type):
// CHECK:         [[SELF_RAW_VALUE:%[^,]+]] = struct_extract [[SELF]] : {{.*}} #UnsafeMutableRawPointer._rawValue
// CHECK:         [[OFFSET_VALUE:%[^,]+]] = struct_extract [[OFFSET]] : {{.*}} #Int._value
// CHECK:         [[OFFSET_WORD:%[^,]+]] = builtin "{{trunc|sext}}OrBitCast_Int[[PTR_SIZE]]_Word"([[OFFSET_VALUE]] : $Builtin.Int[[PTR_SIZE]])
// CHECK:         [[DESTINATION_POINTER:%[^,]+]] = index_raw_pointer [[SELF_RAW_VALUE]] : $Builtin.RawPointer, [[OFFSET_WORD]]
// CHECK:         [[DESTINATION:%[^,]+]] = pointer_to_address [[DESTINATION_POINTER]] : $Builtin.RawPointer to [align=1]
// CHECK:         copy_addr [[VALUE]] to [[DESTINATION]]
// CHECK-LABEL: } // end sil function 'storeBytesBitwiseCopyable'
@_silgen_name("storeBytesBitwiseCopyable")
public func storeBytes<T : BitwiseCopyable>(
  _ self: UnsafeMutableRawPointer,
  of value: T, toByteOffset offset: Int = 0, as type: T.Type
) {
  Builtin.storeRaw(value, (self + offset)._rawValue)
}