| // RUN: %target-sil-opt -sil-print-all %s | %FileCheck %s |
| |
| sil_stage raw |
| |
| import Builtin |
| import Swift |
| |
| // Dummy struct mimicking the real `Tensor` type. |
| struct Tensor<Scalar> {} |
| |
| sil @attribute_test : $@convention(thin) () -> Tensor<Float> { |
| bb0: |
| %0 = graph_op "tf.Dummy"() {int1: i32 -3, int2: i8 4, int3: i64 42} : $Tensor<Float> |
| %1 = graph_op "tf.Dummy"() {hex1: f64 0x40091EB851EB851F, hex2: f32 0x4048F5C3} : $Tensor<Float> |
| %2 = graph_op "tf.Dummy"() {float1: f64 3.14, float2: f32 -3.14} : $Tensor<Float> |
| %3 = graph_op "tf.Dummy"() {string1: "hello", string2: "world"} : $Tensor<Float> |
| %4 = graph_op "tf.Dummy"() {metatype1: $Float, metatype2: $Tensor<Float>} : $Tensor<Float> |
| %5 = graph_op "tf.Dummy"() {array: [[i8 1, i32 -2], [f32 -1.0, $Float]]} : $Tensor<Float> |
| return %0 : $Tensor<Float> |
| } |
| |
| // CHECK-LABEL: sil @attribute_test : $@convention(thin) () -> Tensor<Float> { |
| // CHECK: bb0: |
| // CHECK-NEXT: %0 = graph_op "tf.Dummy"() {int1: i32 -3, int2: i8 4, int3: i64 42} : $Tensor<Float> |
| // CHECK-NEXT: %1 = graph_op "tf.Dummy"() {hex1: f64 0x40091EB851EB851F /* 3.1400000000000001 */, hex2: f32 0x4048F5C3 /* 3.1400001 */} : $Tensor<Float> |
| // CHECK-NEXT: %2 = graph_op "tf.Dummy"() {float1: f64 0x40091EB851EB851F /* 3.1400000000000001 */, float2: f32 0xC048F5C3 /* -3.1400001 */} : $Tensor<Float> |
| // CHECK-NEXT: %3 = graph_op "tf.Dummy"() {string1: "hello", string2: "world"} : $Tensor<Float> |
| // CHECK-NEXT: %4 = graph_op "tf.Dummy"() {metatype1: $Float, metatype2: $Tensor<Float>} : $Tensor<Float> |
| // CHECK-NEXT: %5 = graph_op "tf.Dummy"() {array: {{\[\[}}i8 1, i32 -2], [f32 0xBF800000 /* -1 */, $Float]]} : $Tensor<Float> |
| // CHECK-NEXT: return %0 : $Tensor<Float> |
| // CHECK-NEXT: } |
| |
| sil @chained_op_test : $@convention(thin) (Tensor<Float>, Tensor<Float>) -> Tensor<Float> { |
| bb0(%0 : $Tensor<Float>, %1 : $Tensor<Float>): |
| %2 = graph_op "tf.Add"(%0 : $Tensor<Float>, %1 : $Tensor<Float>) {T: $Float} : $Tensor<Float> |
| %3 = graph_op "tf.Mul"(%2 : $Tensor<Float>, %2 : $Tensor<Float>) {T: $Float} : $Tensor<Float> |
| return %3 : $Tensor<Float> |
| } |
| |
| // CHECK-LABEL: sil @chained_op_test : $@convention(thin) (Tensor<Float>, Tensor<Float>) -> Tensor<Float> { |
| // CHECK: bb0(%0 : $Tensor<Float>, %1 : $Tensor<Float>): |
| // CHECK-NEXT: %2 = graph_op "tf.Add"(%0 : $Tensor<Float>, %1 : $Tensor<Float>) {T: $Float} : $Tensor<Float> |
| // CHECK-NEXT: %3 = graph_op "tf.Mul"(%2 : $Tensor<Float>, %2 : $Tensor<Float>) {T: $Float} : $Tensor<Float> |
| // CHECK-NEXT: return %3 : $Tensor<Float> |
| // CHECK-NEXT: } |
| |
| sil @single_result_op_test : $@convention(thin) (Tensor<Float>, Tensor<Float>) -> Tensor<Float> { |
| bb0(%0 : $Tensor<Float>, %1 : $Tensor<Float>): |
| %2 = graph_op "tf.Add"(%0 : $Tensor<Float>, %1 : $Tensor<Float>) {T: $Float} : $Tensor<Float> |
| return %2 : $Tensor<Float> |
| } |
| |
| // CHECK-LABEL: sil @single_result_op_test : $@convention(thin) (Tensor<Float>, Tensor<Float>) -> Tensor<Float> { |
| // CHECK: bb0(%0 : $Tensor<Float>, %1 : $Tensor<Float>): |
| // CHECK-NEXT: %2 = graph_op "tf.Add"(%0 : $Tensor<Float>, %1 : $Tensor<Float>) {T: $Float} : $Tensor<Float> |
| // CHECK-NEXT: return %2 : $Tensor<Float> |
| // CHECK-NEXT: } |
| |
| sil @multiple_result_op_test : $@convention(thin) (Tensor<Float>, Tensor<Float>) -> (Tensor<Float>, Tensor<Float>) { |
| bb0(%0 : $Tensor<Float>, %1 : $Tensor<Float>): |
| (%2, %3) = graph_op "tf.Dummy"(%0 : $Tensor<Float>, %1 : $Tensor<Float>) {T: $Float} : $Tensor<Float>, $Tensor<Float> |
| %4 = tuple (%2 : $Tensor<Float>, %3 : $Tensor<Float>) |
| return %4 : $(Tensor<Float>, Tensor<Float>) |
| } |
| |
| // CHECK-LABEL: sil @multiple_result_op_test : $@convention(thin) (Tensor<Float>, Tensor<Float>) -> (Tensor<Float>, Tensor<Float>) { |
| // CHECK: bb0(%0 : $Tensor<Float>, %1 : $Tensor<Float>): |
| // CHECK-NEXT: (%2, %3) = graph_op "tf.Dummy"(%0 : $Tensor<Float>, %1 : $Tensor<Float>) {T: $Float} : $Tensor<Float>, $Tensor<Float> |
| // CHECK-NEXT: %4 = tuple (%2 : $Tensor<Float>, %3 : $Tensor<Float>) |
| // CHECK-NEXT: return %4 : $(Tensor<Float>, Tensor<Float>) |
| // CHECK-NEXT: } |