|
| 1 | +// NOTE: Assertions have been autogenerated by utils/generate-test-checks.py |
| 2 | +// RUN: dynamatic-opt --handshake-optimize-bitwidths --remove-operation-names %s --split-input-file | FileCheck %s |
| 3 | + |
| 4 | +// CHECK-LABEL: handshake.func @test_and_sext_sext( |
| 5 | +// CHECK-SAME: %[[VAL_0:.*]]: !handshake.channel<i1>, |
| 6 | +// CHECK-SAME: %[[VAL_1:.*]]: !handshake.channel<i16>, |
| 7 | +// CHECK-SAME: %[[VAL_2:.*]]: !handshake.control<>, ...) -> (!handshake.channel<i32>, !handshake.control<>) attributes {argNames = ["arg0", "arg1", "start"], resNames = ["out0", "end"]} { |
| 8 | +// CHECK: %[[VAL_3:.*]] = extsi %[[VAL_0]] {handshake.bb = 0 : ui32} : <i1> to <i16> |
| 9 | +// CHECK: %[[VAL_4:.*]] = ori %[[VAL_3]], %[[VAL_1]] {handshake.bb = 0 : ui32} : <i16> |
| 10 | +// CHECK: %[[VAL_5:.*]] = extsi %[[VAL_4]] : <i16> to <i32> |
| 11 | +// CHECK: end {handshake.bb = 0 : ui32} %[[VAL_5]], %[[VAL_2]] : <i32>, <> |
| 12 | +// CHECK: } |
| 13 | +handshake.func @test_and_sext_sext(%arg0: !handshake.channel<i1>, %arg1: !handshake.channel<i16>, %arg2: !handshake.control<>, ...) -> (!handshake.channel<i32>, !handshake.control<>) attributes {argNames = ["arg0", "arg1", "start"], resNames = ["out0", "end"]} { |
| 14 | + %0 = extsi %arg0 {handshake.bb = 0 : ui32, handshake.name = "extsi0"} : <i1> to <i32> |
| 15 | + %1 = extsi %arg1 {handshake.bb = 0 : ui32, handshake.name = "extsi1"} : <i16> to <i32> |
| 16 | + %2 = ori %0, %1 {handshake.bb = 0 : ui32, handshake.name = "andi0"} : <i32> |
| 17 | + end {handshake.bb = 0 : ui32, handshake.name = "end0"} %2, %arg2 : <i32>, <> |
| 18 | +} |
| 19 | + |
| 20 | +// ----- |
| 21 | + |
| 22 | +// CHECK-LABEL: handshake.func @test_and_sext_zext( |
| 23 | +// CHECK-SAME: %[[VAL_0:.*]]: !handshake.channel<i1>, |
| 24 | +// CHECK-SAME: %[[VAL_1:.*]]: !handshake.channel<i16>, |
| 25 | +// CHECK-SAME: %[[VAL_2:.*]]: !handshake.control<>, ...) -> (!handshake.channel<i32>, !handshake.control<>) attributes {argNames = ["arg0", "arg1", "start"], resNames = ["out0", "end"]} { |
| 26 | +// CHECK: %[[VAL_3:.*]] = extui %[[VAL_1]] {handshake.bb = 0 : ui32} : <i16> to <i17> |
| 27 | +// CHECK: %[[VAL_4:.*]] = extsi %[[VAL_0]] {handshake.bb = 0 : ui32} : <i1> to <i17> |
| 28 | +// CHECK: %[[VAL_5:.*]] = ori %[[VAL_4]], %[[VAL_3]] {handshake.bb = 0 : ui32} : <i17> |
| 29 | +// CHECK: %[[VAL_6:.*]] = extsi %[[VAL_5]] : <i17> to <i32> |
| 30 | +// CHECK: end {handshake.bb = 0 : ui32} %[[VAL_6]], %[[VAL_2]] : <i32>, <> |
| 31 | +// CHECK: } |
| 32 | +handshake.func @test_and_sext_zext(%arg0: !handshake.channel<i1>, %arg1: !handshake.channel<i16>, %arg2: !handshake.control<>, ...) -> (!handshake.channel<i32>, !handshake.control<>) attributes {argNames = ["arg0", "arg1", "start"], resNames = ["out0", "end"]} { |
| 33 | + %0 = extsi %arg0 {handshake.bb = 0 : ui32, handshake.name = "extsi0"} : <i1> to <i32> |
| 34 | + %1 = extui %arg1 {handshake.bb = 0 : ui32, handshake.name = "extsi1"} : <i16> to <i32> |
| 35 | + %2 = ori %0, %1 {handshake.bb = 0 : ui32, handshake.name = "andi0"} : <i32> |
| 36 | + end {handshake.bb = 0 : ui32, handshake.name = "end0"} %2, %arg2 : <i32>, <> |
| 37 | +} |
| 38 | + |
| 39 | + |
| 40 | +// ----- |
| 41 | + |
| 42 | +// CHECK-LABEL: handshake.func @test_and_zext_sext( |
| 43 | +// CHECK-SAME: %[[VAL_0:.*]]: !handshake.channel<i1>, |
| 44 | +// CHECK-SAME: %[[VAL_1:.*]]: !handshake.channel<i16>, |
| 45 | +// CHECK-SAME: %[[VAL_2:.*]]: !handshake.control<>, ...) -> (!handshake.channel<i32>, !handshake.control<>) attributes {argNames = ["arg0", "arg1", "start"], resNames = ["out0", "end"]} { |
| 46 | +// CHECK: %[[VAL_3:.*]] = extui %[[VAL_0]] {handshake.bb = 0 : ui32} : <i1> to <i16> |
| 47 | +// CHECK: %[[VAL_4:.*]] = ori %[[VAL_3]], %[[VAL_1]] {handshake.bb = 0 : ui32} : <i16> |
| 48 | +// CHECK: %[[VAL_5:.*]] = extsi %[[VAL_4]] : <i16> to <i32> |
| 49 | +// CHECK: end {handshake.bb = 0 : ui32} %[[VAL_5]], %[[VAL_2]] : <i32>, <> |
| 50 | +// CHECK: } |
| 51 | +handshake.func @test_and_zext_sext(%arg0: !handshake.channel<i1>, %arg1: !handshake.channel<i16>, %arg2: !handshake.control<>, ...) -> (!handshake.channel<i32>, !handshake.control<>) attributes {argNames = ["arg0", "arg1", "start"], resNames = ["out0", "end"]} { |
| 52 | + %0 = extui %arg0 {handshake.bb = 0 : ui32, handshake.name = "extsi0"} : <i1> to <i32> |
| 53 | + %1 = extsi %arg1 {handshake.bb = 0 : ui32, handshake.name = "extsi1"} : <i16> to <i32> |
| 54 | + %2 = ori %0, %1 {handshake.bb = 0 : ui32, handshake.name = "andi0"} : <i32> |
| 55 | + end {handshake.bb = 0 : ui32, handshake.name = "end0"} %2, %arg2 : <i32>, <> |
| 56 | +} |
0 commit comments