// RUN: %target-swift-frontend -enable-builtin-module -Xllvm -sil-print-types -emit-silgen %s | %FileCheck %s import Builtin // CHECK-LABEL: sil hidden [ossa] @$s20polymorphic_builtins{{.*}}concreteAddTest{{.*}} : $@convention(thin) (Builtin.Vec4xInt32, Builtin.Vec4xInt32) -> Builtin.Vec4xInt32 { // CHECK: bb0([[ARG0:%.*]] : $Builtin.Vec4xInt32, [[ARG1:%.*]] : $Builtin.Vec4xInt32): // CHECK: [[RESULT:%.*]] = builtin "generic_add"([[ARG0]] : $Builtin.Vec4xInt32, [[ARG1]] : $Builtin.Vec4xInt32) : $Builtin.Vec4xInt32 // CHECK: return [[RESULT]] // CHECK: } // end sil function '$s20polymorphic_builtins{{.*}}concreteAddTest{{.*}}' func concreteAddTest(_ x: Builtin.Vec4xInt32, _ y: Builtin.Vec4xInt32) -> Builtin.Vec4xInt32 { return Builtin.generic_add(x, y) } // CHECK-LABEL: sil hidden [ossa] @$s20polymorphic_builtins{{.*}}genericAddTest{{.*}} : $@convention(thin) (@in_guaranteed T, @in_guaranteed T) -> @out T { // CHECK: bb0([[RESULT:%.*]] : $*T, [[ARG0:%.*]] : $*T, [[ARG1:%.*]] : $*T): // CHECK: [[STACK_SLOT_0:%.*]] = alloc_stack $T // CHECK: copy_addr [[ARG0]] to [init] [[STACK_SLOT_0]] // CHECK: [[STACK_SLOT_1:%.*]] = alloc_stack $T // CHECK: copy_addr [[ARG1]] to [init] [[STACK_SLOT_1]] // CHECK: builtin "generic_add"([[RESULT]] : $*T, [[STACK_SLOT_0]] : $*T, [[STACK_SLOT_1]] : $*T) : $() // CHECK: } // end sil function '$s20polymorphic_builtins{{.*}}genericAddTest{{.*}}' func genericAddTest(_ x : T, _ y : T) -> T { return Builtin.generic_add(x, y) } // CHECK-LABEL: sil hidden [ossa] @$s20polymorphic_builtins{{.*}}concreteAndTest{{.*}} : $@convention(thin) (Builtin.Vec4xInt32, Builtin.Vec4xInt32) -> Builtin.Vec4xInt32 { // CHECK: bb0([[ARG0:%.*]] : $Builtin.Vec4xInt32, [[ARG1:%.*]] : $Builtin.Vec4xInt32): // CHECK: [[RESULT:%.*]] = builtin "generic_and"([[ARG0]] : $Builtin.Vec4xInt32, [[ARG1]] : $Builtin.Vec4xInt32) : $Builtin.Vec4xInt32 // CHECK: return [[RESULT]] // CHECK: } // end sil function '$s20polymorphic_builtins{{.*}}concreteAndTest{{.*}}' func concreteAndTest(_ x: Builtin.Vec4xInt32, _ y: Builtin.Vec4xInt32) -> Builtin.Vec4xInt32 { return Builtin.generic_and(x, y) } // CHECK-LABEL: sil hidden [ossa] @$s20polymorphic_builtins{{.*}}genericAndTest{{.*}} : $@convention(thin) (@in_guaranteed T, @in_guaranteed T) -> @out T { // CHECK: bb0([[RESULT:%.*]] : $*T, [[ARG0:%.*]] : $*T, [[ARG1:%.*]] : $*T): // CHECK: [[STACK_SLOT_0:%.*]] = alloc_stack $T // CHECK: copy_addr [[ARG0]] to [init] [[STACK_SLOT_0]] // CHECK: [[STACK_SLOT_1:%.*]] = alloc_stack $T // CHECK: copy_addr [[ARG1]] to [init] [[STACK_SLOT_1]] // CHECK: builtin "generic_and"([[RESULT]] : $*T, [[STACK_SLOT_0]] : $*T, [[STACK_SLOT_1]] : $*T) : $() // CHECK: } // end sil function '$s20polymorphic_builtins{{.*}}genericAndTest{{.*}}' func genericAndTest(_ x : T, _ y : T) -> T { return Builtin.generic_and(x, y) } // CHECK-LABEL: sil hidden [ossa] @$s20polymorphic_builtins{{.*}}concreteAshrTest{{.*}} : $@convention(thin) (Builtin.Vec4xInt32, Builtin.Vec4xInt32) -> Builtin.Vec4xInt32 { // CHECK: bb0([[ARG0:%.*]] : $Builtin.Vec4xInt32, [[ARG1:%.*]] : $Builtin.Vec4xInt32): // CHECK: [[RESULT:%.*]] = builtin "generic_ashr"([[ARG0]] : $Builtin.Vec4xInt32, [[ARG1]] : $Builtin.Vec4xInt32) : $Builtin.Vec4xInt32 // CHECK: return [[RESULT]] // CHECK: } // end sil function '$s20polymorphic_builtins{{.*}}concreteAshrTest{{.*}}' func concreteAshrTest(_ x: Builtin.Vec4xInt32, _ y: Builtin.Vec4xInt32) -> Builtin.Vec4xInt32 { return Builtin.generic_ashr(x, y) } // CHECK-LABEL: sil hidden [ossa] @$s20polymorphic_builtins{{.*}}genericAshrTest{{.*}} : $@convention(thin) (@in_guaranteed T, @in_guaranteed T) -> @out T { // CHECK: bb0([[RESULT:%.*]] : $*T, [[ARG0:%.*]] : $*T, [[ARG1:%.*]] : $*T): // CHECK: [[STACK_SLOT_0:%.*]] = alloc_stack $T // CHECK: copy_addr [[ARG0]] to [init] [[STACK_SLOT_0]] // CHECK: [[STACK_SLOT_1:%.*]] = alloc_stack $T // CHECK: copy_addr [[ARG1]] to [init] [[STACK_SLOT_1]] // CHECK: builtin "generic_ashr"([[RESULT]] : $*T, [[STACK_SLOT_0]] : $*T, [[STACK_SLOT_1]] : $*T) : $() // CHECK: } // end sil function '$s20polymorphic_builtins{{.*}}genericAshrTest{{.*}}' func genericAshrTest(_ x : T, _ y : T) -> T { return Builtin.generic_ashr(x, y) } // CHECK-LABEL: sil hidden [ossa] @$s20polymorphic_builtins{{.*}}concreteLshrTest{{.*}} : $@convention(thin) (Builtin.Vec4xInt32, Builtin.Vec4xInt32) -> Builtin.Vec4xInt32 { // CHECK: bb0([[ARG0:%.*]] : $Builtin.Vec4xInt32, [[ARG1:%.*]] : $Builtin.Vec4xInt32): // CHECK: [[RESULT:%.*]] = builtin "generic_lshr"([[ARG0]] : $Builtin.Vec4xInt32, [[ARG1]] : $Builtin.Vec4xInt32) : $Builtin.Vec4xInt32 // CHECK: return [[RESULT]] // CHECK: } // end sil function '$s20polymorphic_builtins{{.*}}concreteLshrTest{{.*}}' func concreteLshrTest(_ x: Builtin.Vec4xInt32, _ y: Builtin.Vec4xInt32) -> Builtin.Vec4xInt32 { return Builtin.generic_lshr(x, y) } // CHECK-LABEL: sil hidden [ossa] @$s20polymorphic_builtins{{.*}}genericLshrTest{{.*}} : $@convention(thin) (@in_guaranteed T, @in_guaranteed T) -> @out T { // CHECK: bb0([[RESULT:%.*]] : $*T, [[ARG0:%.*]] : $*T, [[ARG1:%.*]] : $*T): // CHECK: [[STACK_SLOT_0:%.*]] = alloc_stack $T // CHECK: copy_addr [[ARG0]] to [init] [[STACK_SLOT_0]] // CHECK: [[STACK_SLOT_1:%.*]] = alloc_stack $T // CHECK: copy_addr [[ARG1]] to [init] [[STACK_SLOT_1]] // CHECK: builtin "generic_lshr"([[RESULT]] : $*T, [[STACK_SLOT_0]] : $*T, [[STACK_SLOT_1]] : $*T) : $() // CHECK: } // end sil function '$s20polymorphic_builtins{{.*}}genericLshrTest{{.*}}' func genericLshrTest(_ x : T, _ y : T) -> T { return Builtin.generic_lshr(x, y) } // CHECK-LABEL: sil hidden [ossa] @$s20polymorphic_builtins{{.*}}concreteMulTest{{.*}} : $@convention(thin) (Builtin.Vec4xInt32, Builtin.Vec4xInt32) -> Builtin.Vec4xInt32 { // CHECK: bb0([[ARG0:%.*]] : $Builtin.Vec4xInt32, [[ARG1:%.*]] : $Builtin.Vec4xInt32): // CHECK: [[RESULT:%.*]] = builtin "generic_mul"([[ARG0]] : $Builtin.Vec4xInt32, [[ARG1]] : $Builtin.Vec4xInt32) : $Builtin.Vec4xInt32 // CHECK: return [[RESULT]] // CHECK: } // end sil function '$s20polymorphic_builtins{{.*}}concreteMulTest{{.*}}' func concreteMulTest(_ x: Builtin.Vec4xInt32, _ y: Builtin.Vec4xInt32) -> Builtin.Vec4xInt32 { return Builtin.generic_mul(x, y) } // CHECK-LABEL: sil hidden [ossa] @$s20polymorphic_builtins{{.*}}genericMulTest{{.*}} : $@convention(thin) (@in_guaranteed T, @in_guaranteed T) -> @out T { // CHECK: bb0([[RESULT:%.*]] : $*T, [[ARG0:%.*]] : $*T, [[ARG1:%.*]] : $*T): // CHECK: [[STACK_SLOT_0:%.*]] = alloc_stack $T // CHECK: copy_addr [[ARG0]] to [init] [[STACK_SLOT_0]] // CHECK: [[STACK_SLOT_1:%.*]] = alloc_stack $T // CHECK: copy_addr [[ARG1]] to [init] [[STACK_SLOT_1]] // CHECK: builtin "generic_mul"([[RESULT]] : $*T, [[STACK_SLOT_0]] : $*T, [[STACK_SLOT_1]] : $*T) : $() // CHECK: } // end sil function '$s20polymorphic_builtins{{.*}}genericMulTest{{.*}}' func genericMulTest(_ x : T, _ y : T) -> T { return Builtin.generic_mul(x, y) } // CHECK-LABEL: sil hidden [ossa] @$s20polymorphic_builtins{{.*}}concreteOrTest{{.*}} : $@convention(thin) (Builtin.Vec4xInt32, Builtin.Vec4xInt32) -> Builtin.Vec4xInt32 { // CHECK: bb0([[ARG0:%.*]] : $Builtin.Vec4xInt32, [[ARG1:%.*]] : $Builtin.Vec4xInt32): // CHECK: [[RESULT:%.*]] = builtin "generic_or"([[ARG0]] : $Builtin.Vec4xInt32, [[ARG1]] : $Builtin.Vec4xInt32) : $Builtin.Vec4xInt32 // CHECK: return [[RESULT]] // CHECK: } // end sil function '$s20polymorphic_builtins{{.*}}concreteOrTest{{.*}}' func concreteOrTest(_ x: Builtin.Vec4xInt32, _ y: Builtin.Vec4xInt32) -> Builtin.Vec4xInt32 { return Builtin.generic_or(x, y) } // CHECK-LABEL: sil hidden [ossa] @$s20polymorphic_builtins{{.*}}genericOrTest{{.*}} : $@convention(thin) (@in_guaranteed T, @in_guaranteed T) -> @out T { // CHECK: bb0([[RESULT:%.*]] : $*T, [[ARG0:%.*]] : $*T, [[ARG1:%.*]] : $*T): // CHECK: [[STACK_SLOT_0:%.*]] = alloc_stack $T // CHECK: copy_addr [[ARG0]] to [init] [[STACK_SLOT_0]] // CHECK: [[STACK_SLOT_1:%.*]] = alloc_stack $T // CHECK: copy_addr [[ARG1]] to [init] [[STACK_SLOT_1]] // CHECK: builtin "generic_or"([[RESULT]] : $*T, [[STACK_SLOT_0]] : $*T, [[STACK_SLOT_1]] : $*T) : $() // CHECK: } // end sil function '$s20polymorphic_builtins{{.*}}genericOrTest{{.*}}' func genericOrTest(_ x : T, _ y : T) -> T { return Builtin.generic_or(x, y) } // CHECK-LABEL: sil hidden [ossa] @$s20polymorphic_builtins{{.*}}concreteSdivTest{{.*}} : $@convention(thin) (Builtin.Vec4xInt32, Builtin.Vec4xInt32) -> Builtin.Vec4xInt32 { // CHECK: bb0([[ARG0:%.*]] : $Builtin.Vec4xInt32, [[ARG1:%.*]] : $Builtin.Vec4xInt32): // CHECK: [[RESULT:%.*]] = builtin "generic_sdiv"([[ARG0]] : $Builtin.Vec4xInt32, [[ARG1]] : $Builtin.Vec4xInt32) : $Builtin.Vec4xInt32 // CHECK: return [[RESULT]] // CHECK: } // end sil function '$s20polymorphic_builtins{{.*}}concreteSdivTest{{.*}}' func concreteSdivTest(_ x: Builtin.Vec4xInt32, _ y: Builtin.Vec4xInt32) -> Builtin.Vec4xInt32 { return Builtin.generic_sdiv(x, y) } // CHECK-LABEL: sil hidden [ossa] @$s20polymorphic_builtins{{.*}}genericSdivTest{{.*}} : $@convention(thin) (@in_guaranteed T, @in_guaranteed T) -> @out T { // CHECK: bb0([[RESULT:%.*]] : $*T, [[ARG0:%.*]] : $*T, [[ARG1:%.*]] : $*T): // CHECK: [[STACK_SLOT_0:%.*]] = alloc_stack $T // CHECK: copy_addr [[ARG0]] to [init] [[STACK_SLOT_0]] // CHECK: [[STACK_SLOT_1:%.*]] = alloc_stack $T // CHECK: copy_addr [[ARG1]] to [init] [[STACK_SLOT_1]] // CHECK: builtin "generic_sdiv"([[RESULT]] : $*T, [[STACK_SLOT_0]] : $*T, [[STACK_SLOT_1]] : $*T) : $() // CHECK: } // end sil function '$s20polymorphic_builtins{{.*}}genericSdivTest{{.*}}' func genericSdivTest(_ x : T, _ y : T) -> T { return Builtin.generic_sdiv(x, y) } // CHECK-LABEL: sil hidden [ossa] @$s20polymorphic_builtins{{.*}}concreteSdivExactTest{{.*}} : $@convention(thin) (Builtin.Vec4xInt32, Builtin.Vec4xInt32) -> Builtin.Vec4xInt32 { // CHECK: bb0([[ARG0:%.*]] : $Builtin.Vec4xInt32, [[ARG1:%.*]] : $Builtin.Vec4xInt32): // CHECK: [[RESULT:%.*]] = builtin "generic_sdiv_exact"([[ARG0]] : $Builtin.Vec4xInt32, [[ARG1]] : $Builtin.Vec4xInt32) : $Builtin.Vec4xInt32 // CHECK: return [[RESULT]] // CHECK: } // end sil function '$s20polymorphic_builtins{{.*}}concreteSdivExactTest{{.*}}' func concreteSdivExactTest(_ x: Builtin.Vec4xInt32, _ y: Builtin.Vec4xInt32) -> Builtin.Vec4xInt32 { return Builtin.generic_sdiv_exact(x, y) } // CHECK-LABEL: sil hidden [ossa] @$s20polymorphic_builtins{{.*}}genericSdivExactTest{{.*}} : $@convention(thin) (@in_guaranteed T, @in_guaranteed T) -> @out T { // CHECK: bb0([[RESULT:%.*]] : $*T, [[ARG0:%.*]] : $*T, [[ARG1:%.*]] : $*T): // CHECK: [[STACK_SLOT_0:%.*]] = alloc_stack $T // CHECK: copy_addr [[ARG0]] to [init] [[STACK_SLOT_0]] // CHECK: [[STACK_SLOT_1:%.*]] = alloc_stack $T // CHECK: copy_addr [[ARG1]] to [init] [[STACK_SLOT_1]] // CHECK: builtin "generic_sdiv_exact"([[RESULT]] : $*T, [[STACK_SLOT_0]] : $*T, [[STACK_SLOT_1]] : $*T) : $() // CHECK: } // end sil function '$s20polymorphic_builtins{{.*}}genericSdivExactTest{{.*}}' func genericSdivExactTest(_ x : T, _ y : T) -> T { return Builtin.generic_sdiv_exact(x, y) } // CHECK-LABEL: sil hidden [ossa] @$s20polymorphic_builtins{{.*}}concreteShlTest{{.*}} : $@convention(thin) (Builtin.Vec4xInt32, Builtin.Vec4xInt32) -> Builtin.Vec4xInt32 { // CHECK: bb0([[ARG0:%.*]] : $Builtin.Vec4xInt32, [[ARG1:%.*]] : $Builtin.Vec4xInt32): // CHECK: [[RESULT:%.*]] = builtin "generic_shl"([[ARG0]] : $Builtin.Vec4xInt32, [[ARG1]] : $Builtin.Vec4xInt32) : $Builtin.Vec4xInt32 // CHECK: return [[RESULT]] // CHECK: } // end sil function '$s20polymorphic_builtins{{.*}}concreteShlTest{{.*}}' func concreteShlTest(_ x: Builtin.Vec4xInt32, _ y: Builtin.Vec4xInt32) -> Builtin.Vec4xInt32 { return Builtin.generic_shl(x, y) } // CHECK-LABEL: sil hidden [ossa] @$s20polymorphic_builtins{{.*}}genericShlTest{{.*}} : $@convention(thin) (@in_guaranteed T, @in_guaranteed T) -> @out T { // CHECK: bb0([[RESULT:%.*]] : $*T, [[ARG0:%.*]] : $*T, [[ARG1:%.*]] : $*T): // CHECK: [[STACK_SLOT_0:%.*]] = alloc_stack $T // CHECK: copy_addr [[ARG0]] to [init] [[STACK_SLOT_0]] // CHECK: [[STACK_SLOT_1:%.*]] = alloc_stack $T // CHECK: copy_addr [[ARG1]] to [init] [[STACK_SLOT_1]] // CHECK: builtin "generic_shl"([[RESULT]] : $*T, [[STACK_SLOT_0]] : $*T, [[STACK_SLOT_1]] : $*T) : $() // CHECK: } // end sil function '$s20polymorphic_builtins{{.*}}genericShlTest{{.*}}' func genericShlTest(_ x : T, _ y : T) -> T { return Builtin.generic_shl(x, y) } // CHECK-LABEL: sil hidden [ossa] @$s20polymorphic_builtins{{.*}}concreteSremTest{{.*}} : $@convention(thin) (Builtin.Vec4xInt32, Builtin.Vec4xInt32) -> Builtin.Vec4xInt32 { // CHECK: bb0([[ARG0:%.*]] : $Builtin.Vec4xInt32, [[ARG1:%.*]] : $Builtin.Vec4xInt32): // CHECK: [[RESULT:%.*]] = builtin "generic_srem"([[ARG0]] : $Builtin.Vec4xInt32, [[ARG1]] : $Builtin.Vec4xInt32) : $Builtin.Vec4xInt32 // CHECK: return [[RESULT]] // CHECK: } // end sil function '$s20polymorphic_builtins{{.*}}concreteSremTest{{.*}}' func concreteSremTest(_ x: Builtin.Vec4xInt32, _ y: Builtin.Vec4xInt32) -> Builtin.Vec4xInt32 { return Builtin.generic_srem(x, y) } // CHECK-LABEL: sil hidden [ossa] @$s20polymorphic_builtins{{.*}}genericSremTest{{.*}} : $@convention(thin) (@in_guaranteed T, @in_guaranteed T) -> @out T { // CHECK: bb0([[RESULT:%.*]] : $*T, [[ARG0:%.*]] : $*T, [[ARG1:%.*]] : $*T): // CHECK: [[STACK_SLOT_0:%.*]] = alloc_stack $T // CHECK: copy_addr [[ARG0]] to [init] [[STACK_SLOT_0]] // CHECK: [[STACK_SLOT_1:%.*]] = alloc_stack $T // CHECK: copy_addr [[ARG1]] to [init] [[STACK_SLOT_1]] // CHECK: builtin "generic_srem"([[RESULT]] : $*T, [[STACK_SLOT_0]] : $*T, [[STACK_SLOT_1]] : $*T) : $() // CHECK: } // end sil function '$s20polymorphic_builtins{{.*}}genericSremTest{{.*}}' func genericSremTest(_ x : T, _ y : T) -> T { return Builtin.generic_srem(x, y) } // CHECK-LABEL: sil hidden [ossa] @$s20polymorphic_builtins{{.*}}concreteSubTest{{.*}} : $@convention(thin) (Builtin.Vec4xInt32, Builtin.Vec4xInt32) -> Builtin.Vec4xInt32 { // CHECK: bb0([[ARG0:%.*]] : $Builtin.Vec4xInt32, [[ARG1:%.*]] : $Builtin.Vec4xInt32): // CHECK: [[RESULT:%.*]] = builtin "generic_sub"([[ARG0]] : $Builtin.Vec4xInt32, [[ARG1]] : $Builtin.Vec4xInt32) : $Builtin.Vec4xInt32 // CHECK: return [[RESULT]] // CHECK: } // end sil function '$s20polymorphic_builtins{{.*}}concreteSubTest{{.*}}' func concreteSubTest(_ x: Builtin.Vec4xInt32, _ y: Builtin.Vec4xInt32) -> Builtin.Vec4xInt32 { return Builtin.generic_sub(x, y) } // CHECK-LABEL: sil hidden [ossa] @$s20polymorphic_builtins{{.*}}genericSubTest{{.*}} : $@convention(thin) (@in_guaranteed T, @in_guaranteed T) -> @out T { // CHECK: bb0([[RESULT:%.*]] : $*T, [[ARG0:%.*]] : $*T, [[ARG1:%.*]] : $*T): // CHECK: [[STACK_SLOT_0:%.*]] = alloc_stack $T // CHECK: copy_addr [[ARG0]] to [init] [[STACK_SLOT_0]] // CHECK: [[STACK_SLOT_1:%.*]] = alloc_stack $T // CHECK: copy_addr [[ARG1]] to [init] [[STACK_SLOT_1]] // CHECK: builtin "generic_sub"([[RESULT]] : $*T, [[STACK_SLOT_0]] : $*T, [[STACK_SLOT_1]] : $*T) : $() // CHECK: } // end sil function '$s20polymorphic_builtins{{.*}}genericSubTest{{.*}}' func genericSubTest(_ x : T, _ y : T) -> T { return Builtin.generic_sub(x, y) } // CHECK-LABEL: sil hidden [ossa] @$s20polymorphic_builtins{{.*}}concreteUdivTest{{.*}} : $@convention(thin) (Builtin.Vec4xInt32, Builtin.Vec4xInt32) -> Builtin.Vec4xInt32 { // CHECK: bb0([[ARG0:%.*]] : $Builtin.Vec4xInt32, [[ARG1:%.*]] : $Builtin.Vec4xInt32): // CHECK: [[RESULT:%.*]] = builtin "generic_udiv"([[ARG0]] : $Builtin.Vec4xInt32, [[ARG1]] : $Builtin.Vec4xInt32) : $Builtin.Vec4xInt32 // CHECK: return [[RESULT]] // CHECK: } // end sil function '$s20polymorphic_builtins{{.*}}concreteUdivTest{{.*}}' func concreteUdivTest(_ x: Builtin.Vec4xInt32, _ y: Builtin.Vec4xInt32) -> Builtin.Vec4xInt32 { return Builtin.generic_udiv(x, y) } // CHECK-LABEL: sil hidden [ossa] @$s20polymorphic_builtins{{.*}}genericUdivTest{{.*}} : $@convention(thin) (@in_guaranteed T, @in_guaranteed T) -> @out T { // CHECK: bb0([[RESULT:%.*]] : $*T, [[ARG0:%.*]] : $*T, [[ARG1:%.*]] : $*T): // CHECK: [[STACK_SLOT_0:%.*]] = alloc_stack $T // CHECK: copy_addr [[ARG0]] to [init] [[STACK_SLOT_0]] // CHECK: [[STACK_SLOT_1:%.*]] = alloc_stack $T // CHECK: copy_addr [[ARG1]] to [init] [[STACK_SLOT_1]] // CHECK: builtin "generic_udiv"([[RESULT]] : $*T, [[STACK_SLOT_0]] : $*T, [[STACK_SLOT_1]] : $*T) : $() // CHECK: } // end sil function '$s20polymorphic_builtins{{.*}}genericUdivTest{{.*}}' func genericUdivTest(_ x : T, _ y : T) -> T { return Builtin.generic_udiv(x, y) } // CHECK-LABEL: sil hidden [ossa] @$s20polymorphic_builtins{{.*}}concreteUdivExactTest{{.*}} : $@convention(thin) (Builtin.Vec4xInt32, Builtin.Vec4xInt32) -> Builtin.Vec4xInt32 { // CHECK: bb0([[ARG0:%.*]] : $Builtin.Vec4xInt32, [[ARG1:%.*]] : $Builtin.Vec4xInt32): // CHECK: [[RESULT:%.*]] = builtin "generic_udiv_exact"([[ARG0]] : $Builtin.Vec4xInt32, [[ARG1]] : $Builtin.Vec4xInt32) : $Builtin.Vec4xInt32 // CHECK: return [[RESULT]] // CHECK: } // end sil function '$s20polymorphic_builtins{{.*}}concreteUdivExactTest{{.*}}' func concreteUdivExactTest(_ x: Builtin.Vec4xInt32, _ y: Builtin.Vec4xInt32) -> Builtin.Vec4xInt32 { return Builtin.generic_udiv_exact(x, y) } // CHECK-LABEL: sil hidden [ossa] @$s20polymorphic_builtins{{.*}}genericUdivExactTest{{.*}} : $@convention(thin) (@in_guaranteed T, @in_guaranteed T) -> @out T { // CHECK: bb0([[RESULT:%.*]] : $*T, [[ARG0:%.*]] : $*T, [[ARG1:%.*]] : $*T): // CHECK: [[STACK_SLOT_0:%.*]] = alloc_stack $T // CHECK: copy_addr [[ARG0]] to [init] [[STACK_SLOT_0]] // CHECK: [[STACK_SLOT_1:%.*]] = alloc_stack $T // CHECK: copy_addr [[ARG1]] to [init] [[STACK_SLOT_1]] // CHECK: builtin "generic_udiv_exact"([[RESULT]] : $*T, [[STACK_SLOT_0]] : $*T, [[STACK_SLOT_1]] : $*T) : $() // CHECK: } // end sil function '$s20polymorphic_builtins{{.*}}genericUdivExactTest{{.*}}' func genericUdivExactTest(_ x : T, _ y : T) -> T { return Builtin.generic_udiv_exact(x, y) } // CHECK-LABEL: sil hidden [ossa] @$s20polymorphic_builtins{{.*}}concreteXorTest{{.*}} : $@convention(thin) (Builtin.Vec4xInt32, Builtin.Vec4xInt32) -> Builtin.Vec4xInt32 { // CHECK: bb0([[ARG0:%.*]] : $Builtin.Vec4xInt32, [[ARG1:%.*]] : $Builtin.Vec4xInt32): // CHECK: [[RESULT:%.*]] = builtin "generic_xor"([[ARG0]] : $Builtin.Vec4xInt32, [[ARG1]] : $Builtin.Vec4xInt32) : $Builtin.Vec4xInt32 // CHECK: return [[RESULT]] // CHECK: } // end sil function '$s20polymorphic_builtins{{.*}}concreteXorTest{{.*}}' func concreteXorTest(_ x: Builtin.Vec4xInt32, _ y: Builtin.Vec4xInt32) -> Builtin.Vec4xInt32 { return Builtin.generic_xor(x, y) } // CHECK-LABEL: sil hidden [ossa] @$s20polymorphic_builtins{{.*}}genericXorTest{{.*}} : $@convention(thin) (@in_guaranteed T, @in_guaranteed T) -> @out T { // CHECK: bb0([[RESULT:%.*]] : $*T, [[ARG0:%.*]] : $*T, [[ARG1:%.*]] : $*T): // CHECK: [[STACK_SLOT_0:%.*]] = alloc_stack $T // CHECK: copy_addr [[ARG0]] to [init] [[STACK_SLOT_0]] // CHECK: [[STACK_SLOT_1:%.*]] = alloc_stack $T // CHECK: copy_addr [[ARG1]] to [init] [[STACK_SLOT_1]] // CHECK: builtin "generic_xor"([[RESULT]] : $*T, [[STACK_SLOT_0]] : $*T, [[STACK_SLOT_1]] : $*T) : $() // CHECK: } // end sil function '$s20polymorphic_builtins{{.*}}genericXorTest{{.*}}' func genericXorTest(_ x : T, _ y : T) -> T { return Builtin.generic_xor(x, y) } // CHECK-LABEL: sil hidden [ossa] @$s20polymorphic_builtins{{.*}}concreteFaddTest{{.*}} : $@convention(thin) (Builtin.Vec4xFPIEEE32, Builtin.Vec4xFPIEEE32) -> Builtin.Vec4xFPIEEE32 { // CHECK: bb0([[ARG0:%.*]] : $Builtin.Vec4xFPIEEE32, [[ARG1:%.*]] : $Builtin.Vec4xFPIEEE32): // CHECK: [[RESULT:%.*]] = builtin "generic_fadd"([[ARG0]] : $Builtin.Vec4xFPIEEE32, [[ARG1]] : $Builtin.Vec4xFPIEEE32) : $Builtin.Vec4xFPIEEE32 // CHECK: return [[RESULT]] // CHECK: } // end sil function '$s20polymorphic_builtins{{.*}}concreteFaddTest{{.*}}' func concreteFaddTest(_ x: Builtin.Vec4xFPIEEE32, _ y: Builtin.Vec4xFPIEEE32) -> Builtin.Vec4xFPIEEE32 { return Builtin.generic_fadd(x, y) } // CHECK-LABEL: sil hidden [ossa] @$s20polymorphic_builtins{{.*}}genericFaddTest{{.*}} : $@convention(thin) (@in_guaranteed T, @in_guaranteed T) -> @out T { // CHECK: bb0([[RESULT:%.*]] : $*T, [[ARG0:%.*]] : $*T, [[ARG1:%.*]] : $*T): // CHECK: [[STACK_SLOT_0:%.*]] = alloc_stack $T // CHECK: copy_addr [[ARG0]] to [init] [[STACK_SLOT_0]] // CHECK: [[STACK_SLOT_1:%.*]] = alloc_stack $T // CHECK: copy_addr [[ARG1]] to [init] [[STACK_SLOT_1]] // CHECK: builtin "generic_fadd"([[RESULT]] : $*T, [[STACK_SLOT_0]] : $*T, [[STACK_SLOT_1]] : $*T) : $() // CHECK: } // end sil function '$s20polymorphic_builtins{{.*}}genericFaddTest{{.*}}' func genericFaddTest(_ x : T, _ y : T) -> T { return Builtin.generic_fadd(x, y) } // CHECK-LABEL: sil hidden [ossa] @$s20polymorphic_builtins{{.*}}concreteFdivTest{{.*}} : $@convention(thin) (Builtin.Vec4xFPIEEE32, Builtin.Vec4xFPIEEE32) -> Builtin.Vec4xFPIEEE32 { // CHECK: bb0([[ARG0:%.*]] : $Builtin.Vec4xFPIEEE32, [[ARG1:%.*]] : $Builtin.Vec4xFPIEEE32): // CHECK: [[RESULT:%.*]] = builtin "generic_fdiv"([[ARG0]] : $Builtin.Vec4xFPIEEE32, [[ARG1]] : $Builtin.Vec4xFPIEEE32) : $Builtin.Vec4xFPIEEE32 // CHECK: return [[RESULT]] // CHECK: } // end sil function '$s20polymorphic_builtins{{.*}}concreteFdivTest{{.*}}' func concreteFdivTest(_ x: Builtin.Vec4xFPIEEE32, _ y: Builtin.Vec4xFPIEEE32) -> Builtin.Vec4xFPIEEE32 { return Builtin.generic_fdiv(x, y) } // CHECK-LABEL: sil hidden [ossa] @$s20polymorphic_builtins{{.*}}genericFdivTest{{.*}} : $@convention(thin) (@in_guaranteed T, @in_guaranteed T) -> @out T { // CHECK: bb0([[RESULT:%.*]] : $*T, [[ARG0:%.*]] : $*T, [[ARG1:%.*]] : $*T): // CHECK: [[STACK_SLOT_0:%.*]] = alloc_stack $T // CHECK: copy_addr [[ARG0]] to [init] [[STACK_SLOT_0]] // CHECK: [[STACK_SLOT_1:%.*]] = alloc_stack $T // CHECK: copy_addr [[ARG1]] to [init] [[STACK_SLOT_1]] // CHECK: builtin "generic_fdiv"([[RESULT]] : $*T, [[STACK_SLOT_0]] : $*T, [[STACK_SLOT_1]] : $*T) : $() // CHECK: } // end sil function '$s20polymorphic_builtins{{.*}}genericFdivTest{{.*}}' func genericFdivTest(_ x : T, _ y : T) -> T { return Builtin.generic_fdiv(x, y) } // CHECK-LABEL: sil hidden [ossa] @$s20polymorphic_builtins{{.*}}concreteFmulTest{{.*}} : $@convention(thin) (Builtin.Vec4xFPIEEE32, Builtin.Vec4xFPIEEE32) -> Builtin.Vec4xFPIEEE32 { // CHECK: bb0([[ARG0:%.*]] : $Builtin.Vec4xFPIEEE32, [[ARG1:%.*]] : $Builtin.Vec4xFPIEEE32): // CHECK: [[RESULT:%.*]] = builtin "generic_fmul"([[ARG0]] : $Builtin.Vec4xFPIEEE32, [[ARG1]] : $Builtin.Vec4xFPIEEE32) : $Builtin.Vec4xFPIEEE32 // CHECK: return [[RESULT]] // CHECK: } // end sil function '$s20polymorphic_builtins{{.*}}concreteFmulTest{{.*}}' func concreteFmulTest(_ x: Builtin.Vec4xFPIEEE32, _ y: Builtin.Vec4xFPIEEE32) -> Builtin.Vec4xFPIEEE32 { return Builtin.generic_fmul(x, y) } // CHECK-LABEL: sil hidden [ossa] @$s20polymorphic_builtins{{.*}}genericFmulTest{{.*}} : $@convention(thin) (@in_guaranteed T, @in_guaranteed T) -> @out T { // CHECK: bb0([[RESULT:%.*]] : $*T, [[ARG0:%.*]] : $*T, [[ARG1:%.*]] : $*T): // CHECK: [[STACK_SLOT_0:%.*]] = alloc_stack $T // CHECK: copy_addr [[ARG0]] to [init] [[STACK_SLOT_0]] // CHECK: [[STACK_SLOT_1:%.*]] = alloc_stack $T // CHECK: copy_addr [[ARG1]] to [init] [[STACK_SLOT_1]] // CHECK: builtin "generic_fmul"([[RESULT]] : $*T, [[STACK_SLOT_0]] : $*T, [[STACK_SLOT_1]] : $*T) : $() // CHECK: } // end sil function '$s20polymorphic_builtins{{.*}}genericFmulTest{{.*}}' func genericFmulTest(_ x : T, _ y : T) -> T { return Builtin.generic_fmul(x, y) } // CHECK-LABEL: sil hidden [ossa] @$s20polymorphic_builtins{{.*}}concreteFremTest{{.*}} : $@convention(thin) (Builtin.Vec4xFPIEEE32, Builtin.Vec4xFPIEEE32) -> Builtin.Vec4xFPIEEE32 { // CHECK: bb0([[ARG0:%.*]] : $Builtin.Vec4xFPIEEE32, [[ARG1:%.*]] : $Builtin.Vec4xFPIEEE32): // CHECK: [[RESULT:%.*]] = builtin "generic_frem"([[ARG0]] : $Builtin.Vec4xFPIEEE32, [[ARG1]] : $Builtin.Vec4xFPIEEE32) : $Builtin.Vec4xFPIEEE32 // CHECK: return [[RESULT]] // CHECK: } // end sil function '$s20polymorphic_builtins{{.*}}concreteFremTest{{.*}}' func concreteFremTest(_ x: Builtin.Vec4xFPIEEE32, _ y: Builtin.Vec4xFPIEEE32) -> Builtin.Vec4xFPIEEE32 { return Builtin.generic_frem(x, y) } // CHECK-LABEL: sil hidden [ossa] @$s20polymorphic_builtins{{.*}}genericFremTest{{.*}} : $@convention(thin) (@in_guaranteed T, @in_guaranteed T) -> @out T { // CHECK: bb0([[RESULT:%.*]] : $*T, [[ARG0:%.*]] : $*T, [[ARG1:%.*]] : $*T): // CHECK: [[STACK_SLOT_0:%.*]] = alloc_stack $T // CHECK: copy_addr [[ARG0]] to [init] [[STACK_SLOT_0]] // CHECK: [[STACK_SLOT_1:%.*]] = alloc_stack $T // CHECK: copy_addr [[ARG1]] to [init] [[STACK_SLOT_1]] // CHECK: builtin "generic_frem"([[RESULT]] : $*T, [[STACK_SLOT_0]] : $*T, [[STACK_SLOT_1]] : $*T) : $() // CHECK: } // end sil function '$s20polymorphic_builtins{{.*}}genericFremTest{{.*}}' func genericFremTest(_ x : T, _ y : T) -> T { return Builtin.generic_frem(x, y) } // CHECK-LABEL: sil hidden [ossa] @$s20polymorphic_builtins{{.*}}concreteFsubTest{{.*}} : $@convention(thin) (Builtin.Vec4xFPIEEE32, Builtin.Vec4xFPIEEE32) -> Builtin.Vec4xFPIEEE32 { // CHECK: bb0([[ARG0:%.*]] : $Builtin.Vec4xFPIEEE32, [[ARG1:%.*]] : $Builtin.Vec4xFPIEEE32): // CHECK: [[RESULT:%.*]] = builtin "generic_fsub"([[ARG0]] : $Builtin.Vec4xFPIEEE32, [[ARG1]] : $Builtin.Vec4xFPIEEE32) : $Builtin.Vec4xFPIEEE32 // CHECK: return [[RESULT]] // CHECK: } // end sil function '$s20polymorphic_builtins{{.*}}concreteFsubTest{{.*}}' func concreteFsubTest(_ x: Builtin.Vec4xFPIEEE32, _ y: Builtin.Vec4xFPIEEE32) -> Builtin.Vec4xFPIEEE32 { return Builtin.generic_fsub(x, y) } // CHECK-LABEL: sil hidden [ossa] @$s20polymorphic_builtins{{.*}}genericFsubTest{{.*}} : $@convention(thin) (@in_guaranteed T, @in_guaranteed T) -> @out T { // CHECK: bb0([[RESULT:%.*]] : $*T, [[ARG0:%.*]] : $*T, [[ARG1:%.*]] : $*T): // CHECK: [[STACK_SLOT_0:%.*]] = alloc_stack $T // CHECK: copy_addr [[ARG0]] to [init] [[STACK_SLOT_0]] // CHECK: [[STACK_SLOT_1:%.*]] = alloc_stack $T // CHECK: copy_addr [[ARG1]] to [init] [[STACK_SLOT_1]] // CHECK: builtin "generic_fsub"([[RESULT]] : $*T, [[STACK_SLOT_0]] : $*T, [[STACK_SLOT_1]] : $*T) : $() // CHECK: } // end sil function '$s20polymorphic_builtins{{.*}}genericFsubTest{{.*}}' func genericFsubTest(_ x : T, _ y : T) -> T { return Builtin.generic_fsub(x, y) } // CHECK-LABEL: sil hidden [ossa] @$s20polymorphic_builtins{{.*}}concreteUremTest{{.*}} : $@convention(thin) (Builtin.Int64, Builtin.Int64) -> Builtin.Int64 { // CHECK: bb0([[ARG0:%.*]] : $Builtin.Int64, [[ARG1:%.*]] : $Builtin.Int64): // CHECK: [[RESULT:%.*]] = builtin "generic_urem"([[ARG0]] : $Builtin.Int64, [[ARG1]] : $Builtin.Int64) : $Builtin.Int64 // CHECK: return [[RESULT]] // CHECK: } // end sil function '$s20polymorphic_builtins{{.*}}concreteUremTest{{.*}}' func concreteUremTest(_ x: Builtin.Int64, _ y: Builtin.Int64) -> Builtin.Int64 { return Builtin.generic_urem(x, y) } // CHECK-LABEL: sil hidden [ossa] @$s20polymorphic_builtins{{.*}}genericUremTest{{.*}} : $@convention(thin) (@in_guaranteed T, @in_guaranteed T) -> @out T { // CHECK: bb0([[RESULT:%.*]] : $*T, [[ARG0:%.*]] : $*T, [[ARG1:%.*]] : $*T): // CHECK: [[STACK_SLOT_0:%.*]] = alloc_stack $T // CHECK: copy_addr [[ARG0]] to [init] [[STACK_SLOT_0]] // CHECK: [[STACK_SLOT_1:%.*]] = alloc_stack $T // CHECK: copy_addr [[ARG1]] to [init] [[STACK_SLOT_1]] // CHECK: builtin "generic_urem"([[RESULT]] : $*T, [[STACK_SLOT_0]] : $*T, [[STACK_SLOT_1]] : $*T) : $() // CHECK: } // end sil function '$s20polymorphic_builtins{{.*}}genericUremTest{{.*}}' func genericUremTest(_ x : T, _ y : T) -> T { return Builtin.generic_urem(x, y) }