|
| 1 | +// RUN: %target-swift-frontend %s -emit-ir | %FileCheck %s |
| 2 | + |
| 3 | +sil_stage canonical |
| 4 | + |
| 5 | +import Builtin |
| 6 | +import Swift |
| 7 | + |
| 8 | +// The builtin is turned into a call into the compiler-rt runtime |
| 9 | +// CHECK-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc i32 @"$useTargetVariantBuiltin"() |
| 10 | +sil @$useTargetVariantBuiltin : $@convention(thin) () -> Builtin.Int32 { |
| 11 | +bb0: |
| 12 | + %major = integer_literal $Builtin.Int32, 13 |
| 13 | + %minor = integer_literal $Builtin.Int32, 0 |
| 14 | + %patch = integer_literal $Builtin.Int32, 0 |
| 15 | + %result = builtin "targetVariantOSVersionAtLeast" (%major: $Builtin.Int32, %minor: $Builtin.Int32, %patch: $Builtin.Int32) : $Builtin.Int32 |
| 16 | +// 2 is the platform ID for iOS (the variant OS). |
| 17 | +// CHECK: call i32 @__isPlatformVersionAtLeast(i32 2, i32 13, i32 0, i32 0) |
| 18 | + return %result : $Builtin.Int32 |
| 19 | +// CHECK-NEXT: ret i32 |
| 20 | +} |
| 21 | + |
| 22 | +// This is the builtin used in zippered code. |
| 23 | +// It is turned into a call into the compiler-rt runtime. |
| 24 | +// CHECK-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc i32 @"$useZipperedBuiltin"() |
| 25 | +sil @$useZipperedBuiltin : $@convention(thin) () -> Builtin.Int32 { |
| 26 | +bb0: |
| 27 | + %major = integer_literal $Builtin.Int32, 10 |
| 28 | + %minor = integer_literal $Builtin.Int32, 15 |
| 29 | + %patch = integer_literal $Builtin.Int32, 1 |
| 30 | + %variantMajor = integer_literal $Builtin.Int32, 13 |
| 31 | + %variantMinor = integer_literal $Builtin.Int32, 1 |
| 32 | + %variantPatch = integer_literal $Builtin.Int32, 2 |
| 33 | + %result = builtin "targetOSVersionOrVariantOSVersionAtLeast" (%major: $Builtin.Int32, %minor: $Builtin.Int32, %patch: $Builtin.Int32, %variantMajor: $Builtin.Int32, %variantMinor: $Builtin.Int32, %variantPatch: $Builtin.Int32) : $Builtin.Int32 |
| 34 | +// 1 is the platform ID for macOS. |
| 35 | +// 2 is the platform ID for iOS. |
| 36 | +// CHECK: call i32 @__isPlatformOrVariantPlatformVersionAtLeast(i32 1, i32 10, i32 15, i32 1, i32 2, i32 13, i32 1, i32 2) |
| 37 | + return %result : $Builtin.Int32 |
| 38 | +// CHECK-NEXT: ret i32 |
| 39 | +} |
| 40 | + |
0 commit comments