@@ -1000,7 +1000,7 @@ func.func @tripleAddAddOvf2(%arg0: index) -> index {
10001000
10011001
10021002// CHECK-LABEL: @foldSubXX_tensor
1003- // CHECK: %[[c0:.+]] = arith.constant dense<0> : tensor<10xi32>
1003+ // CHECK: %[[c0:.+]] = arith.constant dense<0> : tensor<10xi32>
10041004// CHECK: %[[sub:.+]] = arith.subi
10051005// CHECK: return %[[c0]], %[[sub]]
10061006func.func @foldSubXX_tensor (%static : tensor <10 xi32 >, %dyn : tensor <?x?xi32 >) -> (tensor <10 xi32 >, tensor <?x?xi32 >) {
@@ -2952,118 +2952,6 @@ func.func @truncIShrSIToTrunciShrUIBadShiftAmt2(%a: i64) -> i32 {
29522952 return %hi : i32
29532953}
29542954
2955- // CHECK-LABEL: @wideMulToMulSIExtended
2956- // CHECK-SAME: (%[[A:.+]]: i32, %[[B:.+]]: i32)
2957- // CHECK-NEXT: %[[LOW:.+]], %[[HIGH:.+]] = arith.mulsi_extended %[[A]], %[[B]] : i32
2958- // CHECK-NEXT: return %[[HIGH]] : i32
2959- func.func @wideMulToMulSIExtended (%a: i32 , %b: i32 ) -> i32 {
2960- %x = arith.extsi %a: i32 to i64
2961- %y = arith.extsi %b: i32 to i64
2962- %m = arith.muli %x , %y: i64
2963- %c32 = arith.constant 32 : i64
2964- %sh = arith.shrui %m , %c32 : i64
2965- %hi = arith.trunci %sh: i64 to i32
2966- return %hi : i32
2967- }
2968-
2969- // CHECK-LABEL: @wideMulToMulSIExtendedVector
2970- // CHECK-SAME: (%[[A:.+]]: vector<3xi32>, %[[B:.+]]: vector<3xi32>)
2971- // CHECK-NEXT: %[[LOW:.+]], %[[HIGH:.+]] = arith.mulsi_extended %[[A]], %[[B]] : vector<3xi32>
2972- // CHECK-NEXT: return %[[HIGH]] : vector<3xi32>
2973- func.func @wideMulToMulSIExtendedVector (%a: vector <3 xi32 >, %b: vector <3 xi32 >) -> vector <3 xi32 > {
2974- %x = arith.extsi %a: vector <3 xi32 > to vector <3 xi64 >
2975- %y = arith.extsi %b: vector <3 xi32 > to vector <3 xi64 >
2976- %m = arith.muli %x , %y: vector <3 xi64 >
2977- %c32 = arith.constant dense <32 >: vector <3 xi64 >
2978- %sh = arith.shrui %m , %c32 : vector <3 xi64 >
2979- %hi = arith.trunci %sh: vector <3 xi64 > to vector <3 xi32 >
2980- return %hi : vector <3 xi32 >
2981- }
2982-
2983- // CHECK-LABEL: @wideMulToMulUIExtended
2984- // CHECK-SAME: (%[[A:.+]]: i32, %[[B:.+]]: i32)
2985- // CHECK-NEXT: %[[LOW:.+]], %[[HIGH:.+]] = arith.mului_extended %[[A]], %[[B]] : i32
2986- // CHECK-NEXT: return %[[HIGH]] : i32
2987- func.func @wideMulToMulUIExtended (%a: i32 , %b: i32 ) -> i32 {
2988- %x = arith.extui %a: i32 to i64
2989- %y = arith.extui %b: i32 to i64
2990- %m = arith.muli %x , %y: i64
2991- %c32 = arith.constant 32 : i64
2992- %sh = arith.shrui %m , %c32 : i64
2993- %hi = arith.trunci %sh: i64 to i32
2994- return %hi : i32
2995- }
2996-
2997- // CHECK-LABEL: @wideMulToMulUIExtendedVector
2998- // CHECK-SAME: (%[[A:.+]]: vector<3xi32>, %[[B:.+]]: vector<3xi32>)
2999- // CHECK-NEXT: %[[LOW:.+]], %[[HIGH:.+]] = arith.mului_extended %[[A]], %[[B]] : vector<3xi32>
3000- // CHECK-NEXT: return %[[HIGH]] : vector<3xi32>
3001- func.func @wideMulToMulUIExtendedVector (%a: vector <3 xi32 >, %b: vector <3 xi32 >) -> vector <3 xi32 > {
3002- %x = arith.extui %a: vector <3 xi32 > to vector <3 xi64 >
3003- %y = arith.extui %b: vector <3 xi32 > to vector <3 xi64 >
3004- %m = arith.muli %x , %y: vector <3 xi64 >
3005- %c32 = arith.constant dense <32 >: vector <3 xi64 >
3006- %sh = arith.shrui %m , %c32 : vector <3 xi64 >
3007- %hi = arith.trunci %sh: vector <3 xi64 > to vector <3 xi32 >
3008- return %hi : vector <3 xi32 >
3009- }
3010-
3011- // CHECK-LABEL: @wideMulToMulIExtendedMixedExt
3012- // CHECK: arith.muli
3013- // CHECK: arith.shrui
3014- // CHECK: arith.trunci
3015- func.func @wideMulToMulIExtendedMixedExt (%a: i32 , %b: i32 ) -> i32 {
3016- %x = arith.extsi %a: i32 to i64
3017- %y = arith.extui %b: i32 to i64
3018- %m = arith.muli %x , %y: i64
3019- %c32 = arith.constant 32 : i64
3020- %sh = arith.shrui %m , %c32 : i64
3021- %hi = arith.trunci %sh: i64 to i32
3022- return %hi : i32
3023- }
3024-
3025- // CHECK-LABEL: @wideMulToMulSIExtendedBadExt
3026- // CHECK: arith.muli
3027- // CHECK: arith.shrui
3028- // CHECK: arith.trunci
3029- func.func @wideMulToMulSIExtendedBadExt (%a: i16 , %b: i16 ) -> i32 {
3030- %x = arith.extsi %a: i16 to i64
3031- %y = arith.extsi %b: i16 to i64
3032- %m = arith.muli %x , %y: i64
3033- %c32 = arith.constant 32 : i64
3034- %sh = arith.shrui %m , %c32 : i64
3035- %hi = arith.trunci %sh: i64 to i32
3036- return %hi : i32
3037- }
3038-
3039- // CHECK-LABEL: @wideMulToMulSIExtendedBadShift1
3040- // CHECK: arith.muli
3041- // CHECK: arith.shrui
3042- // CHECK: arith.trunci
3043- func.func @wideMulToMulSIExtendedBadShift1 (%a: i32 , %b: i32 ) -> i32 {
3044- %x = arith.extsi %a: i32 to i64
3045- %y = arith.extsi %b: i32 to i64
3046- %m = arith.muli %x , %y: i64
3047- %c33 = arith.constant 33 : i64
3048- %sh = arith.shrui %m , %c33 : i64
3049- %hi = arith.trunci %sh: i64 to i32
3050- return %hi : i32
3051- }
3052-
3053- // CHECK-LABEL: @wideMulToMulSIExtendedBadShift2
3054- // CHECK: arith.muli
3055- // CHECK: arith.shrui
3056- // CHECK: arith.trunci
3057- func.func @wideMulToMulSIExtendedBadShift2 (%a: i32 , %b: i32 ) -> i32 {
3058- %x = arith.extsi %a: i32 to i64
3059- %y = arith.extsi %b: i32 to i64
3060- %m = arith.muli %x , %y: i64
3061- %c31 = arith.constant 31 : i64
3062- %sh = arith.shrui %m , %c31 : i64
3063- %hi = arith.trunci %sh: i64 to i32
3064- return %hi : i32
3065- }
3066-
30672955// CHECK-LABEL: @foldShli0
30682956// CHECK-SAME: (%[[ARG:.*]]: i64)
30692957// CHECK: return %[[ARG]] : i64
0 commit comments