@@ -1015,7 +1015,8 @@ define <2 x i32> @fshr_vec_zero_elem(<2 x i32> %x, <2 x i32> %y) {
1015
1015
define i16 @fshl_i16_shl (i16 %x , i16 %y ) {
1016
1016
; CHECK-LABEL: @fshl_i16_shl(
1017
1017
; CHECK-NEXT: entry:
1018
- ; CHECK-NEXT: [[RES:%.*]] = call i16 @llvm.fshl.i16(i16 [[X:%.*]], i16 0, i16 [[Y:%.*]])
1018
+ ; CHECK-NEXT: [[TMP0:%.*]] = and i16 [[Y:%.*]], 15
1019
+ ; CHECK-NEXT: [[RES:%.*]] = shl i16 [[X:%.*]], [[TMP0]]
1019
1020
; CHECK-NEXT: ret i16 [[RES]]
1020
1021
;
1021
1022
entry:
@@ -1026,7 +1027,8 @@ entry:
1026
1027
define i32 @fshl_i32_shl (i32 %x , i32 %y ) {
1027
1028
; CHECK-LABEL: @fshl_i32_shl(
1028
1029
; CHECK-NEXT: entry:
1029
- ; CHECK-NEXT: [[RES:%.*]] = call i32 @llvm.fshl.i32(i32 [[X:%.*]], i32 0, i32 [[Y:%.*]])
1030
+ ; CHECK-NEXT: [[TMP0:%.*]] = and i32 [[Y:%.*]], 31
1031
+ ; CHECK-NEXT: [[RES:%.*]] = shl i32 [[X:%.*]], [[TMP0]]
1030
1032
; CHECK-NEXT: ret i32 [[RES]]
1031
1033
;
1032
1034
entry:
@@ -1037,7 +1039,8 @@ entry:
1037
1039
define <2 x i16 > @fshl_vi16_shl (<2 x i16 > %x , <2 x i16 > %y ) {
1038
1040
; CHECK-LABEL: @fshl_vi16_shl(
1039
1041
; CHECK-NEXT: entry:
1040
- ; CHECK-NEXT: [[RES:%.*]] = call <2 x i16> @llvm.fshl.v2i16(<2 x i16> [[X:%.*]], <2 x i16> zeroinitializer, <2 x i16> [[Y:%.*]])
1042
+ ; CHECK-NEXT: [[TMP0:%.*]] = and <2 x i16> [[Y:%.*]], splat (i16 15)
1043
+ ; CHECK-NEXT: [[RES:%.*]] = shl <2 x i16> [[X:%.*]], [[TMP0]]
1041
1044
; CHECK-NEXT: ret <2 x i16> [[RES]]
1042
1045
;
1043
1046
entry:
@@ -1048,7 +1051,8 @@ entry:
1048
1051
define <2 x i31 > @fshl_vi31_shl (<2 x i31 > %x , <2 x i31 > %y ) {
1049
1052
; CHECK-LABEL: @fshl_vi31_shl(
1050
1053
; CHECK-NEXT: entry:
1051
- ; CHECK-NEXT: [[RES:%.*]] = call <2 x i31> @llvm.fshl.v2i31(<2 x i31> [[X:%.*]], <2 x i31> zeroinitializer, <2 x i31> [[Y:%.*]])
1054
+ ; CHECK-NEXT: [[TMP0:%.*]] = and <2 x i31> [[Y:%.*]], splat (i31 30)
1055
+ ; CHECK-NEXT: [[RES:%.*]] = shl <2 x i31> [[X:%.*]], [[TMP0]]
1052
1056
; CHECK-NEXT: ret <2 x i31> [[RES]]
1053
1057
;
1054
1058
entry:
@@ -1059,7 +1063,7 @@ entry:
1059
1063
define i16 @fshl_i16_shl_with_range (i16 %x , i16 range(i16 0 , 16 ) %y ) {
1060
1064
; CHECK-LABEL: @fshl_i16_shl_with_range(
1061
1065
; CHECK-NEXT: entry:
1062
- ; CHECK-NEXT: [[RES:%.*]] = call i16 @llvm.fshl.i16(i16 [[X:%.*]], i16 0, i16 [[Y:%.*]])
1066
+ ; CHECK-NEXT: [[RES:%.*]] = shl i16 [[X:%.*]], [[Y:%.*]]
1063
1067
; CHECK-NEXT: ret i16 [[RES]]
1064
1068
;
1065
1069
entry:
@@ -1070,7 +1074,7 @@ entry:
1070
1074
define i32 @fshl_i32_shl_with_range (i32 %x , i32 range(i32 0 , 32 ) %y ) {
1071
1075
; CHECK-LABEL: @fshl_i32_shl_with_range(
1072
1076
; CHECK-NEXT: entry:
1073
- ; CHECK-NEXT: [[RES:%.*]] = call i32 @llvm.fshl.i32(i32 [[X:%.*]], i32 0, i32 [[Y:%.*]])
1077
+ ; CHECK-NEXT: [[RES:%.*]] = shl i32 [[X:%.*]], [[Y:%.*]]
1074
1078
; CHECK-NEXT: ret i32 [[RES]]
1075
1079
;
1076
1080
entry:
@@ -1081,7 +1085,8 @@ entry:
1081
1085
define i16 @fshl_i16_shl_with_range_ignored (i16 %x , i16 range(i16 0 , 17 ) %y ) {
1082
1086
; CHECK-LABEL: @fshl_i16_shl_with_range_ignored(
1083
1087
; CHECK-NEXT: entry:
1084
- ; CHECK-NEXT: [[RES:%.*]] = call i16 @llvm.fshl.i16(i16 [[X:%.*]], i16 0, i16 [[Y:%.*]])
1088
+ ; CHECK-NEXT: [[TMP0:%.*]] = and i16 [[Y:%.*]], 15
1089
+ ; CHECK-NEXT: [[RES:%.*]] = shl i16 [[X:%.*]], [[TMP0]]
1085
1090
; CHECK-NEXT: ret i16 [[RES]]
1086
1091
;
1087
1092
entry:
@@ -1092,7 +1097,8 @@ entry:
1092
1097
define i32 @fshl_i32_shl_with_range_ignored (i32 %x , i32 range(i32 0 , 33 ) %y ) {
1093
1098
; CHECK-LABEL: @fshl_i32_shl_with_range_ignored(
1094
1099
; CHECK-NEXT: entry:
1095
- ; CHECK-NEXT: [[RES:%.*]] = call i32 @llvm.fshl.i32(i32 [[X:%.*]], i32 0, i32 [[Y:%.*]])
1100
+ ; CHECK-NEXT: [[TMP0:%.*]] = and i32 [[Y:%.*]], 31
1101
+ ; CHECK-NEXT: [[RES:%.*]] = shl i32 [[X:%.*]], [[TMP0]]
1096
1102
; CHECK-NEXT: ret i32 [[RES]]
1097
1103
;
1098
1104
entry:
0 commit comments