1149a6985SQi Hu; NOTE: Assertions have been autogenerated by utils/update_test_checks.py 2149a6985SQi Hu; RUN: opt < %s -passes=instcombine -S | FileCheck %s 3149a6985SQi Hu 4149a6985SQi Hu;------------------------------------------------------------------------------; 5149a6985SQi Hu; Scalar tests 6149a6985SQi Hu;------------------------------------------------------------------------------; 7149a6985SQi Hu 8149a6985SQi Hudefine i1 @umin_scalar(i1 %0, i1 %1) { 9149a6985SQi Hu; CHECK-LABEL: define i1 @umin_scalar 10149a6985SQi Hu; CHECK-SAME: (i1 [[TMP0:%.*]], i1 [[TMP1:%.*]]) { 11*1a65cd3fSQi Hu; CHECK-NEXT: [[TMP3:%.*]] = and i1 [[TMP0]], [[TMP1]] 12149a6985SQi Hu; CHECK-NEXT: ret i1 [[TMP3]] 13149a6985SQi Hu; 14149a6985SQi Hu %3 = call i1 @llvm.umin.i1(i1 %0, i1 %1) 15149a6985SQi Hu ret i1 %3 16149a6985SQi Hu} 17149a6985SQi Hu 18149a6985SQi Hudefine i1 @smin_scalar(i1 %0, i1 %1) { 19149a6985SQi Hu; CHECK-LABEL: define i1 @smin_scalar 20149a6985SQi Hu; CHECK-SAME: (i1 [[TMP0:%.*]], i1 [[TMP1:%.*]]) { 21*1a65cd3fSQi Hu; CHECK-NEXT: [[TMP3:%.*]] = or i1 [[TMP0]], [[TMP1]] 22149a6985SQi Hu; CHECK-NEXT: ret i1 [[TMP3]] 23149a6985SQi Hu; 24149a6985SQi Hu %3 = call i1 @llvm.smin.i1(i1 %0, i1 %1) 25149a6985SQi Hu ret i1 %3 26149a6985SQi Hu} 27149a6985SQi Hu 28149a6985SQi Hudefine i1 @umax_scalar(i1 %0, i1 %1) { 29149a6985SQi Hu; CHECK-LABEL: define i1 @umax_scalar 30149a6985SQi Hu; CHECK-SAME: (i1 [[TMP0:%.*]], i1 [[TMP1:%.*]]) { 31*1a65cd3fSQi Hu; CHECK-NEXT: [[TMP3:%.*]] = or i1 [[TMP0]], [[TMP1]] 32149a6985SQi Hu; CHECK-NEXT: ret i1 [[TMP3]] 33149a6985SQi Hu; 34149a6985SQi Hu %3 = call i1 @llvm.umax.i1(i1 %0, i1 %1) 35149a6985SQi Hu ret i1 %3 36149a6985SQi Hu} 37149a6985SQi Hu 38149a6985SQi Hudefine i1 @smax_scalar(i1 %0, i1 %1) { 39149a6985SQi Hu; CHECK-LABEL: define i1 @smax_scalar 40149a6985SQi Hu; CHECK-SAME: (i1 [[TMP0:%.*]], i1 [[TMP1:%.*]]) { 41*1a65cd3fSQi Hu; CHECK-NEXT: [[TMP3:%.*]] = and i1 [[TMP0]], [[TMP1]] 42149a6985SQi Hu; CHECK-NEXT: ret i1 [[TMP3]] 43149a6985SQi Hu; 44149a6985SQi Hu %3 = call i1 @llvm.smax.i1(i1 %0, i1 %1) 45149a6985SQi Hu ret i1 %3 46149a6985SQi Hu} 47149a6985SQi Hu 48149a6985SQi Hu;------------------------------------------------------------------------------; 49149a6985SQi Hu; Vector tests 50149a6985SQi Hu;------------------------------------------------------------------------------; 51149a6985SQi Hu 52149a6985SQi Hudefine <4 x i1> @umin_vector(<4 x i1> %0, <4 x i1> %1) { 53149a6985SQi Hu; CHECK-LABEL: define <4 x i1> @umin_vector 54149a6985SQi Hu; CHECK-SAME: (<4 x i1> [[TMP0:%.*]], <4 x i1> [[TMP1:%.*]]) { 55*1a65cd3fSQi Hu; CHECK-NEXT: [[TMP3:%.*]] = and <4 x i1> [[TMP0]], [[TMP1]] 56149a6985SQi Hu; CHECK-NEXT: ret <4 x i1> [[TMP3]] 57149a6985SQi Hu; 58149a6985SQi Hu %3 = call <4 x i1> @llvm.umin.v4i1(<4 x i1> %0, <4 x i1> %1) 59149a6985SQi Hu ret <4 x i1> %3 60149a6985SQi Hu} 61149a6985SQi Hu 62149a6985SQi Hudefine <4 x i1> @smin_vector(<4 x i1> %0, <4 x i1> %1) { 63149a6985SQi Hu; CHECK-LABEL: define <4 x i1> @smin_vector 64149a6985SQi Hu; CHECK-SAME: (<4 x i1> [[TMP0:%.*]], <4 x i1> [[TMP1:%.*]]) { 65*1a65cd3fSQi Hu; CHECK-NEXT: [[TMP3:%.*]] = or <4 x i1> [[TMP0]], [[TMP1]] 66149a6985SQi Hu; CHECK-NEXT: ret <4 x i1> [[TMP3]] 67149a6985SQi Hu; 68149a6985SQi Hu %3 = call <4 x i1> @llvm.smin.v4i1(<4 x i1> %0, <4 x i1> %1) 69149a6985SQi Hu ret <4 x i1> %3 70149a6985SQi Hu} 71149a6985SQi Hu 72149a6985SQi Hudefine <4 x i1> @umax_vector(<4 x i1> %0, <4 x i1> %1) { 73149a6985SQi Hu; CHECK-LABEL: define <4 x i1> @umax_vector 74149a6985SQi Hu; CHECK-SAME: (<4 x i1> [[TMP0:%.*]], <4 x i1> [[TMP1:%.*]]) { 75*1a65cd3fSQi Hu; CHECK-NEXT: [[TMP3:%.*]] = or <4 x i1> [[TMP0]], [[TMP1]] 76149a6985SQi Hu; CHECK-NEXT: ret <4 x i1> [[TMP3]] 77149a6985SQi Hu; 78149a6985SQi Hu %3 = call <4 x i1> @llvm.umax.v4i1(<4 x i1> %0, <4 x i1> %1) 79149a6985SQi Hu ret <4 x i1> %3 80149a6985SQi Hu} 81149a6985SQi Hu 82149a6985SQi Hudefine <4 x i1> @smax_vector(<4 x i1> %0, <4 x i1> %1) { 83149a6985SQi Hu; CHECK-LABEL: define <4 x i1> @smax_vector 84149a6985SQi Hu; CHECK-SAME: (<4 x i1> [[TMP0:%.*]], <4 x i1> [[TMP1:%.*]]) { 85*1a65cd3fSQi Hu; CHECK-NEXT: [[TMP3:%.*]] = and <4 x i1> [[TMP0]], [[TMP1]] 86149a6985SQi Hu; CHECK-NEXT: ret <4 x i1> [[TMP3]] 87149a6985SQi Hu; 88149a6985SQi Hu %3 = call <4 x i1> @llvm.smax.v4i1(<4 x i1> %0, <4 x i1> %1) 89149a6985SQi Hu ret <4 x i1> %3 90149a6985SQi Hu} 91149a6985SQi Hu 92149a6985SQi Hudeclare i1 @llvm.umin.i1(i1, i1) 93149a6985SQi Hudeclare i1 @llvm.smin.i1(i1, i1) 94149a6985SQi Hudeclare i1 @llvm.umax.i1(i1, i1) 95149a6985SQi Hudeclare i1 @llvm.smax.i1(i1, i1) 96149a6985SQi Hudeclare <4 x i1> @llvm.umin.v4i1(<4 x i1>, <4 x i1>) 97149a6985SQi Hudeclare <4 x i1> @llvm.smin.v4i1(<4 x i1>, <4 x i1>) 98149a6985SQi Hudeclare <4 x i1> @llvm.umax.v4i1(<4 x i1>, <4 x i1>) 99149a6985SQi Hudeclare <4 x i1> @llvm.smax.v4i1(<4 x i1>, <4 x i1>) 100