Skip to content

Commit c2c901c

Browse files
committed
[InstCombine] Add pre-commit tests
1 parent 43e663d commit c2c901c

File tree

1 file changed

+89
-0
lines changed
  • llvm/test/Transforms/InstCombine

1 file changed

+89
-0
lines changed

llvm/test/Transforms/InstCombine/fsh.ll

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ declare i16 @llvm.fshr.i16(i16, i16, i16)
66
declare i32 @llvm.fshl.i32(i32, i32, i32)
77
declare i33 @llvm.fshr.i33(i33, i33, i33)
88
declare <2 x i32> @llvm.fshr.v2i32(<2 x i32>, <2 x i32>, <2 x i32>)
9+
declare <2 x i16> @llvm.fshl.v2i16(<2 x i16>, <2 x i16>, <2 x i16>)
910
declare <2 x i31> @llvm.fshl.v2i31(<2 x i31>, <2 x i31>, <2 x i31>)
1011
declare <3 x i16> @llvm.fshl.v3i16(<3 x i16>, <3 x i16>, <3 x i16>)
1112

@@ -1010,3 +1011,91 @@ define <2 x i32> @fshr_vec_zero_elem(<2 x i32> %x, <2 x i32> %y) {
10101011
%fsh = call <2 x i32> @llvm.fshr.v2i32(<2 x i32> %x, <2 x i32> %y, <2 x i32> <i32 2, i32 0>)
10111012
ret <2 x i32> %fsh
10121013
}
1014+
1015+
define i16 @fshl_i16_shl(i16 %x, i16 %y) {
1016+
; CHECK-LABEL: @fshl_i16_shl(
1017+
; CHECK-NEXT: entry:
1018+
; CHECK-NEXT: [[RES:%.*]] = call i16 @llvm.fshl.i16(i16 [[X:%.*]], i16 0, i16 [[Y:%.*]])
1019+
; CHECK-NEXT: ret i16 [[RES]]
1020+
;
1021+
entry:
1022+
%res = call i16 @llvm.fshl.i16(i16 %x, i16 0, i16 %y)
1023+
ret i16 %res
1024+
}
1025+
1026+
define i32 @fshl_i32_shl(i32 %x, i32 %y) {
1027+
; CHECK-LABEL: @fshl_i32_shl(
1028+
; CHECK-NEXT: entry:
1029+
; CHECK-NEXT: [[RES:%.*]] = call i32 @llvm.fshl.i32(i32 [[X:%.*]], i32 0, i32 [[Y:%.*]])
1030+
; CHECK-NEXT: ret i32 [[RES]]
1031+
;
1032+
entry:
1033+
%res = call i32 @llvm.fshl.i32(i32 %x, i32 0, i32 %y)
1034+
ret i32 %res
1035+
}
1036+
1037+
define <2 x i16> @fshl_vi16_shl(<2 x i16> %x, <2 x i16> %y) {
1038+
; CHECK-LABEL: @fshl_vi16_shl(
1039+
; 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:%.*]])
1041+
; CHECK-NEXT: ret <2 x i16> [[RES]]
1042+
;
1043+
entry:
1044+
%res = call <2 x i16> @llvm.fshl.v2i16(<2 x i16> %x, <2 x i16> <i16 0, i16 0>, <2 x i16> %y)
1045+
ret <2 x i16> %res
1046+
}
1047+
1048+
define <2 x i31> @fshl_vi31_shl(<2 x i31> %x, <2 x i31> %y) {
1049+
; CHECK-LABEL: @fshl_vi31_shl(
1050+
; 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:%.*]])
1052+
; CHECK-NEXT: ret <2 x i31> [[RES]]
1053+
;
1054+
entry:
1055+
%res = call <2 x i31> @llvm.fshl.v2i31(<2 x i31> %x, <2 x i31> <i31 0, i31 0>, <2 x i31> %y)
1056+
ret <2 x i31> %res
1057+
}
1058+
1059+
define i16 @fshl_i16_shl_with_range(i16 %x, i16 range(i16 0, 16) %y) {
1060+
; CHECK-LABEL: @fshl_i16_shl_with_range(
1061+
; CHECK-NEXT: entry:
1062+
; CHECK-NEXT: [[RES:%.*]] = call i16 @llvm.fshl.i16(i16 [[X:%.*]], i16 0, i16 [[Y:%.*]])
1063+
; CHECK-NEXT: ret i16 [[RES]]
1064+
;
1065+
entry:
1066+
%res = call i16 @llvm.fshl.i16(i16 %x, i16 0, i16 %y)
1067+
ret i16 %res
1068+
}
1069+
1070+
define i32 @fshl_i32_shl_with_range(i32 %x, i32 range(i32 0, 32) %y) {
1071+
; CHECK-LABEL: @fshl_i32_shl_with_range(
1072+
; CHECK-NEXT: entry:
1073+
; CHECK-NEXT: [[RES:%.*]] = call i32 @llvm.fshl.i32(i32 [[X:%.*]], i32 0, i32 [[Y:%.*]])
1074+
; CHECK-NEXT: ret i32 [[RES]]
1075+
;
1076+
entry:
1077+
%res = call i32 @llvm.fshl.i32(i32 %x, i32 0, i32 %y)
1078+
ret i32 %res
1079+
}
1080+
1081+
define i16 @fshl_i16_shl_with_range_ignored(i16 %x, i16 range(i16 0, 17) %y) {
1082+
; CHECK-LABEL: @fshl_i16_shl_with_range_ignored(
1083+
; CHECK-NEXT: entry:
1084+
; CHECK-NEXT: [[RES:%.*]] = call i16 @llvm.fshl.i16(i16 [[X:%.*]], i16 0, i16 [[Y:%.*]])
1085+
; CHECK-NEXT: ret i16 [[RES]]
1086+
;
1087+
entry:
1088+
%res = call i16 @llvm.fshl.i16(i16 %x, i16 0, i16 %y)
1089+
ret i16 %res
1090+
}
1091+
1092+
define i32 @fshl_i32_shl_with_range_ignored(i32 %x, i32 range(i32 0, 33) %y) {
1093+
; CHECK-LABEL: @fshl_i32_shl_with_range_ignored(
1094+
; CHECK-NEXT: entry:
1095+
; CHECK-NEXT: [[RES:%.*]] = call i32 @llvm.fshl.i32(i32 [[X:%.*]], i32 0, i32 [[Y:%.*]])
1096+
; CHECK-NEXT: ret i32 [[RES]]
1097+
;
1098+
entry:
1099+
%res = call i32 @llvm.fshl.i32(i32 %x, i32 0, i32 %y)
1100+
ret i32 %res
1101+
}

0 commit comments

Comments
 (0)