define i1 @eq_eq(i8 %a, i8 %b) {
; CHECK-LABEL: @eq_eq(
; CHECK-NEXT: [[CMP1:%.*]] = icmp eq i8 %a, %b
-; CHECK-NEXT: [[CMP2:%.*]] = icmp eq i8 %a, %b
-; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP1]], [[CMP2]]
-; CHECK-NEXT: ret i1 [[AND]]
+; CHECK-NEXT: ret i1 [[CMP1]]
;
%cmp1 = icmp eq i8 %a, %b
%cmp2 = icmp eq i8 %a, %b
define i1 @eq_ne(i8 %a, i8 %b) {
; CHECK-LABEL: @eq_ne(
-; CHECK-NEXT: [[CMP1:%.*]] = icmp eq i8 %a, %b
-; CHECK-NEXT: [[CMP2:%.*]] = icmp ne i8 %a, %b
-; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP1]], [[CMP2]]
-; CHECK-NEXT: ret i1 [[AND]]
+; CHECK-NEXT: ret i1 false
;
%cmp1 = icmp eq i8 %a, %b
%cmp2 = icmp ne i8 %a, %b
define i1 @eq_sge(i8 %a, i8 %b) {
; CHECK-LABEL: @eq_sge(
; CHECK-NEXT: [[CMP1:%.*]] = icmp eq i8 %a, %b
-; CHECK-NEXT: [[CMP2:%.*]] = icmp sge i8 %a, %b
-; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP1]], [[CMP2]]
-; CHECK-NEXT: ret i1 [[AND]]
+; CHECK-NEXT: ret i1 [[CMP1]]
;
%cmp1 = icmp eq i8 %a, %b
%cmp2 = icmp sge i8 %a, %b
define i1 @eq_sgt(i8 %a, i8 %b) {
; CHECK-LABEL: @eq_sgt(
-; CHECK-NEXT: [[CMP1:%.*]] = icmp eq i8 %a, %b
-; CHECK-NEXT: [[CMP2:%.*]] = icmp sgt i8 %a, %b
-; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP1]], [[CMP2]]
-; CHECK-NEXT: ret i1 [[AND]]
+; CHECK-NEXT: ret i1 false
;
%cmp1 = icmp eq i8 %a, %b
%cmp2 = icmp sgt i8 %a, %b
define i1 @eq_sle(i8 %a, i8 %b) {
; CHECK-LABEL: @eq_sle(
; CHECK-NEXT: [[CMP1:%.*]] = icmp eq i8 %a, %b
-; CHECK-NEXT: [[CMP2:%.*]] = icmp sle i8 %a, %b
-; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP1]], [[CMP2]]
-; CHECK-NEXT: ret i1 [[AND]]
+; CHECK-NEXT: ret i1 [[CMP1]]
;
%cmp1 = icmp eq i8 %a, %b
%cmp2 = icmp sle i8 %a, %b
define i1 @eq_slt(i8 %a, i8 %b) {
; CHECK-LABEL: @eq_slt(
-; CHECK-NEXT: [[CMP1:%.*]] = icmp eq i8 %a, %b
-; CHECK-NEXT: [[CMP2:%.*]] = icmp slt i8 %a, %b
-; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP1]], [[CMP2]]
-; CHECK-NEXT: ret i1 [[AND]]
+; CHECK-NEXT: ret i1 false
;
%cmp1 = icmp eq i8 %a, %b
%cmp2 = icmp slt i8 %a, %b
define i1 @eq_uge(i8 %a, i8 %b) {
; CHECK-LABEL: @eq_uge(
; CHECK-NEXT: [[CMP1:%.*]] = icmp eq i8 %a, %b
-; CHECK-NEXT: [[CMP2:%.*]] = icmp uge i8 %a, %b
-; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP1]], [[CMP2]]
-; CHECK-NEXT: ret i1 [[AND]]
+; CHECK-NEXT: ret i1 [[CMP1]]
;
%cmp1 = icmp eq i8 %a, %b
%cmp2 = icmp uge i8 %a, %b
define i1 @eq_ugt(i8 %a, i8 %b) {
; CHECK-LABEL: @eq_ugt(
-; CHECK-NEXT: [[CMP1:%.*]] = icmp eq i8 %a, %b
-; CHECK-NEXT: [[CMP2:%.*]] = icmp ugt i8 %a, %b
-; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP1]], [[CMP2]]
-; CHECK-NEXT: ret i1 [[AND]]
+; CHECK-NEXT: ret i1 false
;
%cmp1 = icmp eq i8 %a, %b
%cmp2 = icmp ugt i8 %a, %b
define i1 @eq_ule(i8 %a, i8 %b) {
; CHECK-LABEL: @eq_ule(
; CHECK-NEXT: [[CMP1:%.*]] = icmp eq i8 %a, %b
-; CHECK-NEXT: [[CMP2:%.*]] = icmp ule i8 %a, %b
-; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP1]], [[CMP2]]
-; CHECK-NEXT: ret i1 [[AND]]
+; CHECK-NEXT: ret i1 [[CMP1]]
;
%cmp1 = icmp eq i8 %a, %b
%cmp2 = icmp ule i8 %a, %b
define i1 @eq_ult(i8 %a, i8 %b) {
; CHECK-LABEL: @eq_ult(
-; CHECK-NEXT: [[CMP1:%.*]] = icmp eq i8 %a, %b
-; CHECK-NEXT: [[CMP2:%.*]] = icmp ult i8 %a, %b
-; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP1]], [[CMP2]]
-; CHECK-NEXT: ret i1 [[AND]]
+; CHECK-NEXT: ret i1 false
;
%cmp1 = icmp eq i8 %a, %b
%cmp2 = icmp ult i8 %a, %b
define i1 @ne_eq(i8 %a, i8 %b) {
; CHECK-LABEL: @ne_eq(
-; CHECK-NEXT: [[CMP1:%.*]] = icmp ne i8 %a, %b
-; CHECK-NEXT: [[CMP2:%.*]] = icmp eq i8 %a, %b
-; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP1]], [[CMP2]]
-; CHECK-NEXT: ret i1 [[AND]]
+; CHECK-NEXT: ret i1 false
;
%cmp1 = icmp ne i8 %a, %b
%cmp2 = icmp eq i8 %a, %b
define i1 @ne_ne(i8 %a, i8 %b) {
; CHECK-LABEL: @ne_ne(
; CHECK-NEXT: [[CMP1:%.*]] = icmp ne i8 %a, %b
-; CHECK-NEXT: [[CMP2:%.*]] = icmp ne i8 %a, %b
-; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP1]], [[CMP2]]
-; CHECK-NEXT: ret i1 [[AND]]
+; CHECK-NEXT: ret i1 [[CMP1]]
;
%cmp1 = icmp ne i8 %a, %b
%cmp2 = icmp ne i8 %a, %b
define i1 @ne_sgt(i8 %a, i8 %b) {
; CHECK-LABEL: @ne_sgt(
-; CHECK-NEXT: [[CMP1:%.*]] = icmp ne i8 %a, %b
; CHECK-NEXT: [[CMP2:%.*]] = icmp sgt i8 %a, %b
-; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP1]], [[CMP2]]
-; CHECK-NEXT: ret i1 [[AND]]
+; CHECK-NEXT: ret i1 [[CMP2]]
;
%cmp1 = icmp ne i8 %a, %b
%cmp2 = icmp sgt i8 %a, %b
define i1 @ne_slt(i8 %a, i8 %b) {
; CHECK-LABEL: @ne_slt(
-; CHECK-NEXT: [[CMP1:%.*]] = icmp ne i8 %a, %b
; CHECK-NEXT: [[CMP2:%.*]] = icmp slt i8 %a, %b
-; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP1]], [[CMP2]]
-; CHECK-NEXT: ret i1 [[AND]]
+; CHECK-NEXT: ret i1 [[CMP2]]
;
%cmp1 = icmp ne i8 %a, %b
%cmp2 = icmp slt i8 %a, %b
define i1 @ne_ugt(i8 %a, i8 %b) {
; CHECK-LABEL: @ne_ugt(
-; CHECK-NEXT: [[CMP1:%.*]] = icmp ne i8 %a, %b
; CHECK-NEXT: [[CMP2:%.*]] = icmp ugt i8 %a, %b
-; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP1]], [[CMP2]]
-; CHECK-NEXT: ret i1 [[AND]]
+; CHECK-NEXT: ret i1 [[CMP2]]
;
%cmp1 = icmp ne i8 %a, %b
%cmp2 = icmp ugt i8 %a, %b
define i1 @ne_ult(i8 %a, i8 %b) {
; CHECK-LABEL: @ne_ult(
-; CHECK-NEXT: [[CMP1:%.*]] = icmp ne i8 %a, %b
; CHECK-NEXT: [[CMP2:%.*]] = icmp ult i8 %a, %b
-; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP1]], [[CMP2]]
-; CHECK-NEXT: ret i1 [[AND]]
+; CHECK-NEXT: ret i1 [[CMP2]]
;
%cmp1 = icmp ne i8 %a, %b
%cmp2 = icmp ult i8 %a, %b
define i1 @sge_eq(i8 %a, i8 %b) {
; CHECK-LABEL: @sge_eq(
-; CHECK-NEXT: [[CMP1:%.*]] = icmp sge i8 %a, %b
; CHECK-NEXT: [[CMP2:%.*]] = icmp eq i8 %a, %b
-; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP1]], [[CMP2]]
-; CHECK-NEXT: ret i1 [[AND]]
+; CHECK-NEXT: ret i1 [[CMP2]]
;
%cmp1 = icmp sge i8 %a, %b
%cmp2 = icmp eq i8 %a, %b
define i1 @sge_sge(i8 %a, i8 %b) {
; CHECK-LABEL: @sge_sge(
; CHECK-NEXT: [[CMP1:%.*]] = icmp sge i8 %a, %b
-; CHECK-NEXT: [[CMP2:%.*]] = icmp sge i8 %a, %b
-; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP1]], [[CMP2]]
-; CHECK-NEXT: ret i1 [[AND]]
+; CHECK-NEXT: ret i1 [[CMP1]]
;
%cmp1 = icmp sge i8 %a, %b
%cmp2 = icmp sge i8 %a, %b
define i1 @sge_sgt(i8 %a, i8 %b) {
; CHECK-LABEL: @sge_sgt(
-; CHECK-NEXT: [[CMP1:%.*]] = icmp sge i8 %a, %b
; CHECK-NEXT: [[CMP2:%.*]] = icmp sgt i8 %a, %b
-; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP1]], [[CMP2]]
-; CHECK-NEXT: ret i1 [[AND]]
+; CHECK-NEXT: ret i1 [[CMP2]]
;
%cmp1 = icmp sge i8 %a, %b
%cmp2 = icmp sgt i8 %a, %b
define i1 @sge_slt(i8 %a, i8 %b) {
; CHECK-LABEL: @sge_slt(
-; CHECK-NEXT: [[CMP1:%.*]] = icmp sge i8 %a, %b
-; CHECK-NEXT: [[CMP2:%.*]] = icmp slt i8 %a, %b
-; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP1]], [[CMP2]]
-; CHECK-NEXT: ret i1 [[AND]]
+; CHECK-NEXT: ret i1 false
;
%cmp1 = icmp sge i8 %a, %b
%cmp2 = icmp slt i8 %a, %b
define i1 @sgt_eq(i8 %a, i8 %b) {
; CHECK-LABEL: @sgt_eq(
-; CHECK-NEXT: [[CMP1:%.*]] = icmp sgt i8 %a, %b
-; CHECK-NEXT: [[CMP2:%.*]] = icmp eq i8 %a, %b
-; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP1]], [[CMP2]]
-; CHECK-NEXT: ret i1 [[AND]]
+; CHECK-NEXT: ret i1 false
;
%cmp1 = icmp sgt i8 %a, %b
%cmp2 = icmp eq i8 %a, %b
define i1 @sgt_ne(i8 %a, i8 %b) {
; CHECK-LABEL: @sgt_ne(
; CHECK-NEXT: [[CMP1:%.*]] = icmp sgt i8 %a, %b
-; CHECK-NEXT: [[CMP2:%.*]] = icmp ne i8 %a, %b
-; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP1]], [[CMP2]]
-; CHECK-NEXT: ret i1 [[AND]]
+; CHECK-NEXT: ret i1 [[CMP1]]
;
%cmp1 = icmp sgt i8 %a, %b
%cmp2 = icmp ne i8 %a, %b
define i1 @sgt_sge(i8 %a, i8 %b) {
; CHECK-LABEL: @sgt_sge(
; CHECK-NEXT: [[CMP1:%.*]] = icmp sgt i8 %a, %b
-; CHECK-NEXT: [[CMP2:%.*]] = icmp sge i8 %a, %b
-; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP1]], [[CMP2]]
-; CHECK-NEXT: ret i1 [[AND]]
+; CHECK-NEXT: ret i1 [[CMP1]]
;
%cmp1 = icmp sgt i8 %a, %b
%cmp2 = icmp sge i8 %a, %b
define i1 @sgt_sgt(i8 %a, i8 %b) {
; CHECK-LABEL: @sgt_sgt(
; CHECK-NEXT: [[CMP1:%.*]] = icmp sgt i8 %a, %b
-; CHECK-NEXT: [[CMP2:%.*]] = icmp sgt i8 %a, %b
-; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP1]], [[CMP2]]
-; CHECK-NEXT: ret i1 [[AND]]
+; CHECK-NEXT: ret i1 [[CMP1]]
;
%cmp1 = icmp sgt i8 %a, %b
%cmp2 = icmp sgt i8 %a, %b
define i1 @sgt_sle(i8 %a, i8 %b) {
; CHECK-LABEL: @sgt_sle(
-; CHECK-NEXT: [[CMP1:%.*]] = icmp sgt i8 %a, %b
-; CHECK-NEXT: [[CMP2:%.*]] = icmp sle i8 %a, %b
-; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP1]], [[CMP2]]
-; CHECK-NEXT: ret i1 [[AND]]
+; CHECK-NEXT: ret i1 false
;
%cmp1 = icmp sgt i8 %a, %b
%cmp2 = icmp sle i8 %a, %b
define i1 @sgt_slt(i8 %a, i8 %b) {
; CHECK-LABEL: @sgt_slt(
-; CHECK-NEXT: [[CMP1:%.*]] = icmp sgt i8 %a, %b
-; CHECK-NEXT: [[CMP2:%.*]] = icmp slt i8 %a, %b
-; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP1]], [[CMP2]]
-; CHECK-NEXT: ret i1 [[AND]]
+; CHECK-NEXT: ret i1 false
;
%cmp1 = icmp sgt i8 %a, %b
%cmp2 = icmp slt i8 %a, %b
define i1 @sle_eq(i8 %a, i8 %b) {
; CHECK-LABEL: @sle_eq(
-; CHECK-NEXT: [[CMP1:%.*]] = icmp sle i8 %a, %b
; CHECK-NEXT: [[CMP2:%.*]] = icmp eq i8 %a, %b
-; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP1]], [[CMP2]]
-; CHECK-NEXT: ret i1 [[AND]]
+; CHECK-NEXT: ret i1 [[CMP2]]
;
%cmp1 = icmp sle i8 %a, %b
%cmp2 = icmp eq i8 %a, %b
define i1 @sle_sgt(i8 %a, i8 %b) {
; CHECK-LABEL: @sle_sgt(
-; CHECK-NEXT: [[CMP1:%.*]] = icmp sle i8 %a, %b
-; CHECK-NEXT: [[CMP2:%.*]] = icmp sgt i8 %a, %b
-; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP1]], [[CMP2]]
-; CHECK-NEXT: ret i1 [[AND]]
+; CHECK-NEXT: ret i1 false
;
%cmp1 = icmp sle i8 %a, %b
%cmp2 = icmp sgt i8 %a, %b
define i1 @sle_sle(i8 %a, i8 %b) {
; CHECK-LABEL: @sle_sle(
; CHECK-NEXT: [[CMP1:%.*]] = icmp sle i8 %a, %b
-; CHECK-NEXT: [[CMP2:%.*]] = icmp sle i8 %a, %b
-; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP1]], [[CMP2]]
-; CHECK-NEXT: ret i1 [[AND]]
+; CHECK-NEXT: ret i1 [[CMP1]]
;
%cmp1 = icmp sle i8 %a, %b
%cmp2 = icmp sle i8 %a, %b
define i1 @sle_slt(i8 %a, i8 %b) {
; CHECK-LABEL: @sle_slt(
-; CHECK-NEXT: [[CMP1:%.*]] = icmp sle i8 %a, %b
; CHECK-NEXT: [[CMP2:%.*]] = icmp slt i8 %a, %b
-; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP1]], [[CMP2]]
-; CHECK-NEXT: ret i1 [[AND]]
+; CHECK-NEXT: ret i1 [[CMP2]]
;
%cmp1 = icmp sle i8 %a, %b
%cmp2 = icmp slt i8 %a, %b
define i1 @slt_eq(i8 %a, i8 %b) {
; CHECK-LABEL: @slt_eq(
-; CHECK-NEXT: [[CMP1:%.*]] = icmp slt i8 %a, %b
-; CHECK-NEXT: [[CMP2:%.*]] = icmp eq i8 %a, %b
-; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP1]], [[CMP2]]
-; CHECK-NEXT: ret i1 [[AND]]
+; CHECK-NEXT: ret i1 false
;
%cmp1 = icmp slt i8 %a, %b
%cmp2 = icmp eq i8 %a, %b
define i1 @slt_ne(i8 %a, i8 %b) {
; CHECK-LABEL: @slt_ne(
; CHECK-NEXT: [[CMP1:%.*]] = icmp slt i8 %a, %b
-; CHECK-NEXT: [[CMP2:%.*]] = icmp ne i8 %a, %b
-; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP1]], [[CMP2]]
-; CHECK-NEXT: ret i1 [[AND]]
+; CHECK-NEXT: ret i1 [[CMP1]]
;
%cmp1 = icmp slt i8 %a, %b
%cmp2 = icmp ne i8 %a, %b
define i1 @slt_sge(i8 %a, i8 %b) {
; CHECK-LABEL: @slt_sge(
-; CHECK-NEXT: [[CMP1:%.*]] = icmp slt i8 %a, %b
-; CHECK-NEXT: [[CMP2:%.*]] = icmp sge i8 %a, %b
-; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP1]], [[CMP2]]
-; CHECK-NEXT: ret i1 [[AND]]
+; CHECK-NEXT: ret i1 false
;
%cmp1 = icmp slt i8 %a, %b
%cmp2 = icmp sge i8 %a, %b
define i1 @slt_sgt(i8 %a, i8 %b) {
; CHECK-LABEL: @slt_sgt(
-; CHECK-NEXT: [[CMP1:%.*]] = icmp slt i8 %a, %b
-; CHECK-NEXT: [[CMP2:%.*]] = icmp sgt i8 %a, %b
-; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP1]], [[CMP2]]
-; CHECK-NEXT: ret i1 [[AND]]
+; CHECK-NEXT: ret i1 false
;
%cmp1 = icmp slt i8 %a, %b
%cmp2 = icmp sgt i8 %a, %b
define i1 @slt_sle(i8 %a, i8 %b) {
; CHECK-LABEL: @slt_sle(
; CHECK-NEXT: [[CMP1:%.*]] = icmp slt i8 %a, %b
-; CHECK-NEXT: [[CMP2:%.*]] = icmp sle i8 %a, %b
-; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP1]], [[CMP2]]
-; CHECK-NEXT: ret i1 [[AND]]
+; CHECK-NEXT: ret i1 [[CMP1]]
;
%cmp1 = icmp slt i8 %a, %b
%cmp2 = icmp sle i8 %a, %b
define i1 @slt_slt(i8 %a, i8 %b) {
; CHECK-LABEL: @slt_slt(
; CHECK-NEXT: [[CMP1:%.*]] = icmp slt i8 %a, %b
-; CHECK-NEXT: [[CMP2:%.*]] = icmp slt i8 %a, %b
-; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP1]], [[CMP2]]
-; CHECK-NEXT: ret i1 [[AND]]
+; CHECK-NEXT: ret i1 [[CMP1]]
;
%cmp1 = icmp slt i8 %a, %b
%cmp2 = icmp slt i8 %a, %b
define i1 @uge_eq(i8 %a, i8 %b) {
; CHECK-LABEL: @uge_eq(
-; CHECK-NEXT: [[CMP1:%.*]] = icmp uge i8 %a, %b
; CHECK-NEXT: [[CMP2:%.*]] = icmp eq i8 %a, %b
-; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP1]], [[CMP2]]
-; CHECK-NEXT: ret i1 [[AND]]
+; CHECK-NEXT: ret i1 [[CMP2]]
;
%cmp1 = icmp uge i8 %a, %b
%cmp2 = icmp eq i8 %a, %b
define i1 @uge_uge(i8 %a, i8 %b) {
; CHECK-LABEL: @uge_uge(
; CHECK-NEXT: [[CMP1:%.*]] = icmp uge i8 %a, %b
-; CHECK-NEXT: [[CMP2:%.*]] = icmp uge i8 %a, %b
-; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP1]], [[CMP2]]
-; CHECK-NEXT: ret i1 [[AND]]
+; CHECK-NEXT: ret i1 [[CMP1]]
;
%cmp1 = icmp uge i8 %a, %b
%cmp2 = icmp uge i8 %a, %b
define i1 @uge_ugt(i8 %a, i8 %b) {
; CHECK-LABEL: @uge_ugt(
-; CHECK-NEXT: [[CMP1:%.*]] = icmp uge i8 %a, %b
; CHECK-NEXT: [[CMP2:%.*]] = icmp ugt i8 %a, %b
-; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP1]], [[CMP2]]
-; CHECK-NEXT: ret i1 [[AND]]
+; CHECK-NEXT: ret i1 [[CMP2]]
;
%cmp1 = icmp uge i8 %a, %b
%cmp2 = icmp ugt i8 %a, %b
define i1 @uge_ult(i8 %a, i8 %b) {
; CHECK-LABEL: @uge_ult(
-; CHECK-NEXT: [[CMP1:%.*]] = icmp uge i8 %a, %b
-; CHECK-NEXT: [[CMP2:%.*]] = icmp ult i8 %a, %b
-; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP1]], [[CMP2]]
-; CHECK-NEXT: ret i1 [[AND]]
+; CHECK-NEXT: ret i1 false
;
%cmp1 = icmp uge i8 %a, %b
%cmp2 = icmp ult i8 %a, %b
define i1 @ugt_eq(i8 %a, i8 %b) {
; CHECK-LABEL: @ugt_eq(
-; CHECK-NEXT: [[CMP1:%.*]] = icmp ugt i8 %a, %b
-; CHECK-NEXT: [[CMP2:%.*]] = icmp eq i8 %a, %b
-; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP1]], [[CMP2]]
-; CHECK-NEXT: ret i1 [[AND]]
+; CHECK-NEXT: ret i1 false
;
%cmp1 = icmp ugt i8 %a, %b
%cmp2 = icmp eq i8 %a, %b
define i1 @ugt_ne(i8 %a, i8 %b) {
; CHECK-LABEL: @ugt_ne(
; CHECK-NEXT: [[CMP1:%.*]] = icmp ugt i8 %a, %b
-; CHECK-NEXT: [[CMP2:%.*]] = icmp ne i8 %a, %b
-; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP1]], [[CMP2]]
-; CHECK-NEXT: ret i1 [[AND]]
+; CHECK-NEXT: ret i1 [[CMP1]]
;
%cmp1 = icmp ugt i8 %a, %b
%cmp2 = icmp ne i8 %a, %b
define i1 @ugt_uge(i8 %a, i8 %b) {
; CHECK-LABEL: @ugt_uge(
; CHECK-NEXT: [[CMP1:%.*]] = icmp ugt i8 %a, %b
-; CHECK-NEXT: [[CMP2:%.*]] = icmp uge i8 %a, %b
-; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP1]], [[CMP2]]
-; CHECK-NEXT: ret i1 [[AND]]
+; CHECK-NEXT: ret i1 [[CMP1]]
;
%cmp1 = icmp ugt i8 %a, %b
%cmp2 = icmp uge i8 %a, %b
define i1 @ugt_ugt(i8 %a, i8 %b) {
; CHECK-LABEL: @ugt_ugt(
; CHECK-NEXT: [[CMP1:%.*]] = icmp ugt i8 %a, %b
-; CHECK-NEXT: [[CMP2:%.*]] = icmp ugt i8 %a, %b
-; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP1]], [[CMP2]]
-; CHECK-NEXT: ret i1 [[AND]]
+; CHECK-NEXT: ret i1 [[CMP1]]
;
%cmp1 = icmp ugt i8 %a, %b
%cmp2 = icmp ugt i8 %a, %b
define i1 @ugt_ule(i8 %a, i8 %b) {
; CHECK-LABEL: @ugt_ule(
-; CHECK-NEXT: [[CMP1:%.*]] = icmp ugt i8 %a, %b
-; CHECK-NEXT: [[CMP2:%.*]] = icmp ule i8 %a, %b
-; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP1]], [[CMP2]]
-; CHECK-NEXT: ret i1 [[AND]]
+; CHECK-NEXT: ret i1 false
;
%cmp1 = icmp ugt i8 %a, %b
%cmp2 = icmp ule i8 %a, %b
define i1 @ugt_ult(i8 %a, i8 %b) {
; CHECK-LABEL: @ugt_ult(
-; CHECK-NEXT: [[CMP1:%.*]] = icmp ugt i8 %a, %b
-; CHECK-NEXT: [[CMP2:%.*]] = icmp ult i8 %a, %b
-; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP1]], [[CMP2]]
-; CHECK-NEXT: ret i1 [[AND]]
+; CHECK-NEXT: ret i1 false
;
%cmp1 = icmp ugt i8 %a, %b
%cmp2 = icmp ult i8 %a, %b
define i1 @ule_eq(i8 %a, i8 %b) {
; CHECK-LABEL: @ule_eq(
-; CHECK-NEXT: [[CMP1:%.*]] = icmp ule i8 %a, %b
; CHECK-NEXT: [[CMP2:%.*]] = icmp eq i8 %a, %b
-; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP1]], [[CMP2]]
-; CHECK-NEXT: ret i1 [[AND]]
+; CHECK-NEXT: ret i1 [[CMP2]]
;
%cmp1 = icmp ule i8 %a, %b
%cmp2 = icmp eq i8 %a, %b
define i1 @ule_ugt(i8 %a, i8 %b) {
; CHECK-LABEL: @ule_ugt(
-; CHECK-NEXT: [[CMP1:%.*]] = icmp ule i8 %a, %b
-; CHECK-NEXT: [[CMP2:%.*]] = icmp ugt i8 %a, %b
-; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP1]], [[CMP2]]
-; CHECK-NEXT: ret i1 [[AND]]
+; CHECK-NEXT: ret i1 false
;
%cmp1 = icmp ule i8 %a, %b
%cmp2 = icmp ugt i8 %a, %b
define i1 @ule_ule(i8 %a, i8 %b) {
; CHECK-LABEL: @ule_ule(
; CHECK-NEXT: [[CMP1:%.*]] = icmp ule i8 %a, %b
-; CHECK-NEXT: [[CMP2:%.*]] = icmp ule i8 %a, %b
-; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP1]], [[CMP2]]
-; CHECK-NEXT: ret i1 [[AND]]
+; CHECK-NEXT: ret i1 [[CMP1]]
;
%cmp1 = icmp ule i8 %a, %b
%cmp2 = icmp ule i8 %a, %b
define i1 @ule_ult(i8 %a, i8 %b) {
; CHECK-LABEL: @ule_ult(
-; CHECK-NEXT: [[CMP1:%.*]] = icmp ule i8 %a, %b
; CHECK-NEXT: [[CMP2:%.*]] = icmp ult i8 %a, %b
-; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP1]], [[CMP2]]
-; CHECK-NEXT: ret i1 [[AND]]
+; CHECK-NEXT: ret i1 [[CMP2]]
;
%cmp1 = icmp ule i8 %a, %b
%cmp2 = icmp ult i8 %a, %b
define i1 @ult_eq(i8 %a, i8 %b) {
; CHECK-LABEL: @ult_eq(
-; CHECK-NEXT: [[CMP1:%.*]] = icmp ult i8 %a, %b
-; CHECK-NEXT: [[CMP2:%.*]] = icmp eq i8 %a, %b
-; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP1]], [[CMP2]]
-; CHECK-NEXT: ret i1 [[AND]]
+; CHECK-NEXT: ret i1 false
;
%cmp1 = icmp ult i8 %a, %b
%cmp2 = icmp eq i8 %a, %b
define i1 @ult_ne(i8 %a, i8 %b) {
; CHECK-LABEL: @ult_ne(
; CHECK-NEXT: [[CMP1:%.*]] = icmp ult i8 %a, %b
-; CHECK-NEXT: [[CMP2:%.*]] = icmp ne i8 %a, %b
-; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP1]], [[CMP2]]
-; CHECK-NEXT: ret i1 [[AND]]
+; CHECK-NEXT: ret i1 [[CMP1]]
;
%cmp1 = icmp ult i8 %a, %b
%cmp2 = icmp ne i8 %a, %b
define i1 @ult_uge(i8 %a, i8 %b) {
; CHECK-LABEL: @ult_uge(
-; CHECK-NEXT: [[CMP1:%.*]] = icmp ult i8 %a, %b
-; CHECK-NEXT: [[CMP2:%.*]] = icmp uge i8 %a, %b
-; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP1]], [[CMP2]]
-; CHECK-NEXT: ret i1 [[AND]]
+; CHECK-NEXT: ret i1 false
;
%cmp1 = icmp ult i8 %a, %b
%cmp2 = icmp uge i8 %a, %b
define i1 @ult_ugt(i8 %a, i8 %b) {
; CHECK-LABEL: @ult_ugt(
-; CHECK-NEXT: [[CMP1:%.*]] = icmp ult i8 %a, %b
-; CHECK-NEXT: [[CMP2:%.*]] = icmp ugt i8 %a, %b
-; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP1]], [[CMP2]]
-; CHECK-NEXT: ret i1 [[AND]]
+; CHECK-NEXT: ret i1 false
;
%cmp1 = icmp ult i8 %a, %b
%cmp2 = icmp ugt i8 %a, %b
define i1 @ult_ule(i8 %a, i8 %b) {
; CHECK-LABEL: @ult_ule(
; CHECK-NEXT: [[CMP1:%.*]] = icmp ult i8 %a, %b
-; CHECK-NEXT: [[CMP2:%.*]] = icmp ule i8 %a, %b
-; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP1]], [[CMP2]]
-; CHECK-NEXT: ret i1 [[AND]]
+; CHECK-NEXT: ret i1 [[CMP1]]
;
%cmp1 = icmp ult i8 %a, %b
%cmp2 = icmp ule i8 %a, %b
define i1 @ult_ult(i8 %a, i8 %b) {
; CHECK-LABEL: @ult_ult(
; CHECK-NEXT: [[CMP1:%.*]] = icmp ult i8 %a, %b
-; CHECK-NEXT: [[CMP2:%.*]] = icmp ult i8 %a, %b
-; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP1]], [[CMP2]]
-; CHECK-NEXT: ret i1 [[AND]]
+; CHECK-NEXT: ret i1 [[CMP1]]
;
%cmp1 = icmp ult i8 %a, %b
%cmp2 = icmp ult i8 %a, %b
define <2 x i1> @ult_uge_vec(<2 x i8> %a, <2 x i8> %b) {
; CHECK-LABEL: @ult_uge_vec(
-; CHECK-NEXT: [[CMP1:%.*]] = icmp ult <2 x i8> %a, %b
-; CHECK-NEXT: [[CMP2:%.*]] = icmp uge <2 x i8> %a, %b
-; CHECK-NEXT: [[AND:%.*]] = and <2 x i1> [[CMP1]], [[CMP2]]
-; CHECK-NEXT: ret <2 x i1> [[AND]]
+; CHECK-NEXT: ret <2 x i1> zeroinitializer
;
%cmp1 = icmp ult <2 x i8> %a, %b
%cmp2 = icmp uge <2 x i8> %a, %b
define <2 x i1> @ult_ule_vec(<2 x i8> %a, <2 x i8> %b) {
; CHECK-LABEL: @ult_ule_vec(
; CHECK-NEXT: [[CMP1:%.*]] = icmp ult <2 x i8> %a, %b
-; CHECK-NEXT: [[CMP2:%.*]] = icmp ule <2 x i8> %a, %b
-; CHECK-NEXT: [[AND:%.*]] = and <2 x i1> [[CMP1]], [[CMP2]]
-; CHECK-NEXT: ret <2 x i1> [[AND]]
+; CHECK-NEXT: ret <2 x i1> [[CMP1]]
;
%cmp1 = icmp ult <2 x i8> %a, %b
%cmp2 = icmp ule <2 x i8> %a, %b