; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py ; RUN: llc -O0 -mtriple=mipsel-linux-gnu -global-isel -verify-machineinstrs %s -o -| FileCheck %s -check-prefixes=MIPS32 define i1 @eq_i32(i32 %a, i32 %b){ ; MIPS32-LABEL: eq_i32: ; MIPS32: # %bb.0: # %entry ; MIPS32-NEXT: xor $1, $4, $5 ; MIPS32-NEXT: sltiu $2, $1, 1 ; MIPS32-NEXT: jr $ra ; MIPS32-NEXT: nop entry: %cmp = icmp eq i32 %a, %b ret i1 %cmp } define i1 @ne_i32(i32 %a, i32 %b) { ; MIPS32-LABEL: ne_i32: ; MIPS32: # %bb.0: # %entry ; MIPS32-NEXT: xor $1, $4, $5 ; MIPS32-NEXT: sltu $2, $zero, $1 ; MIPS32-NEXT: jr $ra ; MIPS32-NEXT: nop entry: %cmp = icmp ne i32 %a, %b ret i1 %cmp } define i1 @sgt_i32(i32 %a, i32 %b) { ; MIPS32-LABEL: sgt_i32: ; MIPS32: # %bb.0: # %entry ; MIPS32-NEXT: slt $2, $5, $4 ; MIPS32-NEXT: jr $ra ; MIPS32-NEXT: nop entry: %cmp = icmp sgt i32 %a, %b ret i1 %cmp } define i1 @sge_i32(i32 %a, i32 %b) { ; MIPS32-LABEL: sge_i32: ; MIPS32: # %bb.0: # %entry ; MIPS32-NEXT: slt $1, $4, $5 ; MIPS32-NEXT: xori $2, $1, 1 ; MIPS32-NEXT: jr $ra ; MIPS32-NEXT: nop entry: %cmp = icmp sge i32 %a, %b ret i1 %cmp } define i1 @slt_i32(i32 %a, i32 %b) { ; MIPS32-LABEL: slt_i32: ; MIPS32: # %bb.0: # %entry ; MIPS32-NEXT: slt $2, $4, $5 ; MIPS32-NEXT: jr $ra ; MIPS32-NEXT: nop entry: %cmp = icmp slt i32 %a, %b ret i1 %cmp } define i1 @sle_i32(i32 %a, i32 %b) { ; MIPS32-LABEL: sle_i32: ; MIPS32: # %bb.0: # %entry ; MIPS32-NEXT: slt $1, $5, $4 ; MIPS32-NEXT: xori $2, $1, 1 ; MIPS32-NEXT: jr $ra ; MIPS32-NEXT: nop entry: %cmp = icmp sle i32 %a, %b ret i1 %cmp } define i1 @ugt_i32(i32 %a, i32 %b) { ; MIPS32-LABEL: ugt_i32: ; MIPS32: # %bb.0: # %entry ; MIPS32-NEXT: sltu $2, $5, $4 ; MIPS32-NEXT: jr $ra ; MIPS32-NEXT: nop entry: %cmp = icmp ugt i32 %a, %b ret i1 %cmp } define i1 @uge_i32(i32 %a, i32 %b) { ; MIPS32-LABEL: uge_i32: ; MIPS32: # %bb.0: # %entry ; MIPS32-NEXT: sltu $1, $4, $5 ; MIPS32-NEXT: xori $2, $1, 1 ; MIPS32-NEXT: jr $ra ; MIPS32-NEXT: nop entry: %cmp = icmp uge i32 %a, %b ret i1 %cmp } define i1 @ult_i32(i32 %a, i32 %b) { ; MIPS32-LABEL: ult_i32: ; MIPS32: # %bb.0: # %entry ; MIPS32-NEXT: sltu $2, $4, $5 ; MIPS32-NEXT: jr $ra ; MIPS32-NEXT: nop entry: %cmp = icmp ult i32 %a, %b ret i1 %cmp } define i1 @ule_i32(i32 %a, i32 %b) { ; MIPS32-LABEL: ule_i32: ; MIPS32: # %bb.0: # %entry ; MIPS32-NEXT: sltu $1, $5, $4 ; MIPS32-NEXT: xori $2, $1, 1 ; MIPS32-NEXT: jr $ra ; MIPS32-NEXT: nop entry: %cmp = icmp ule i32 %a, %b ret i1 %cmp } define i1 @eq_ptr(i32* %a, i32* %b){ ; MIPS32-LABEL: eq_ptr: ; MIPS32: # %bb.0: # %entry ; MIPS32-NEXT: xor $1, $4, $5 ; MIPS32-NEXT: sltiu $2, $1, 1 ; MIPS32-NEXT: jr $ra ; MIPS32-NEXT: nop entry: %cmp = icmp eq i32* %a, %b ret i1 %cmp } define i1 @ult_i8(i8 %a, i8 %b) { ; MIPS32-LABEL: ult_i8: ; MIPS32: # %bb.0: # %entry ; MIPS32-NEXT: andi $1, $4, 255 ; MIPS32-NEXT: andi $2, $5, 255 ; MIPS32-NEXT: sltu $2, $1, $2 ; MIPS32-NEXT: jr $ra ; MIPS32-NEXT: nop entry: %cmp = icmp ult i8 %a, %b ret i1 %cmp } define i1 @slt_i16(i16 %a, i16 %b) { ; MIPS32-LABEL: slt_i16: ; MIPS32: # %bb.0: # %entry ; MIPS32-NEXT: sll $1, $4, 16 ; MIPS32-NEXT: sra $1, $1, 16 ; MIPS32-NEXT: sll $2, $5, 16 ; MIPS32-NEXT: sra $2, $2, 16 ; MIPS32-NEXT: slt $2, $1, $2 ; MIPS32-NEXT: jr $ra ; MIPS32-NEXT: nop entry: %cmp = icmp slt i16 %a, %b ret i1 %cmp } define i1 @eq_i64(i64 %a, i64 %b){ ; MIPS32-LABEL: eq_i64: ; MIPS32: # %bb.0: # %entry ; MIPS32-NEXT: xor $1, $4, $6 ; MIPS32-NEXT: xor $2, $5, $7 ; MIPS32-NEXT: or $1, $1, $2 ; MIPS32-NEXT: sltiu $2, $1, 1 ; MIPS32-NEXT: jr $ra ; MIPS32-NEXT: nop entry: %cmp = icmp eq i64 %a, %b ret i1 %cmp } define i1 @ne_i64(i64 %a, i64 %b) { ; MIPS32-LABEL: ne_i64: ; MIPS32: # %bb.0: # %entry ; MIPS32-NEXT: xor $1, $4, $6 ; MIPS32-NEXT: xor $2, $5, $7 ; MIPS32-NEXT: or $1, $1, $2 ; MIPS32-NEXT: sltu $2, $zero, $1 ; MIPS32-NEXT: jr $ra ; MIPS32-NEXT: nop entry: %cmp = icmp ne i64 %a, %b ret i1 %cmp } define i1 @sgt_i64(i64 %a, i64 %b) { ; MIPS32-LABEL: sgt_i64: ; MIPS32: # %bb.0: # %entry ; MIPS32-NEXT: slt $2, $7, $5 ; MIPS32-NEXT: xor $1, $5, $7 ; MIPS32-NEXT: sltiu $3, $1, 1 ; MIPS32-NEXT: sltu $1, $6, $4 ; MIPS32-NEXT: andi $3, $3, 1 ; MIPS32-NEXT: movn $2, $1, $3 ; MIPS32-NEXT: jr $ra ; MIPS32-NEXT: nop entry: %cmp = icmp sgt i64 %a, %b ret i1 %cmp } define i1 @sge_i64(i64 %a, i64 %b) { ; MIPS32-LABEL: sge_i64: ; MIPS32: # %bb.0: # %entry ; MIPS32-NEXT: slt $1, $5, $7 ; MIPS32-NEXT: xori $2, $1, 1 ; MIPS32-NEXT: xor $1, $5, $7 ; MIPS32-NEXT: sltiu $3, $1, 1 ; MIPS32-NEXT: sltu $1, $4, $6 ; MIPS32-NEXT: xori $1, $1, 1 ; MIPS32-NEXT: andi $3, $3, 1 ; MIPS32-NEXT: movn $2, $1, $3 ; MIPS32-NEXT: jr $ra ; MIPS32-NEXT: nop entry: %cmp = icmp sge i64 %a, %b ret i1 %cmp } define i1 @slt_i64(i64 %a, i64 %b) { ; MIPS32-LABEL: slt_i64: ; MIPS32: # %bb.0: # %entry ; MIPS32-NEXT: slt $2, $5, $7 ; MIPS32-NEXT: xor $1, $5, $7 ; MIPS32-NEXT: sltiu $3, $1, 1 ; MIPS32-NEXT: sltu $1, $4, $6 ; MIPS32-NEXT: andi $3, $3, 1 ; MIPS32-NEXT: movn $2, $1, $3 ; MIPS32-NEXT: jr $ra ; MIPS32-NEXT: nop entry: %cmp = icmp slt i64 %a, %b ret i1 %cmp } define i1 @sle_i64(i64 %a, i64 %b) { ; MIPS32-LABEL: sle_i64: ; MIPS32: # %bb.0: # %entry ; MIPS32-NEXT: slt $1, $7, $5 ; MIPS32-NEXT: xori $2, $1, 1 ; MIPS32-NEXT: xor $1, $5, $7 ; MIPS32-NEXT: sltiu $3, $1, 1 ; MIPS32-NEXT: sltu $1, $6, $4 ; MIPS32-NEXT: xori $1, $1, 1 ; MIPS32-NEXT: andi $3, $3, 1 ; MIPS32-NEXT: movn $2, $1, $3 ; MIPS32-NEXT: jr $ra ; MIPS32-NEXT: nop entry: %cmp = icmp sle i64 %a, %b ret i1 %cmp } define i1 @ugt_i64(i64 %a, i64 %b) { ; MIPS32-LABEL: ugt_i64: ; MIPS32: # %bb.0: # %entry ; MIPS32-NEXT: sltu $2, $7, $5 ; MIPS32-NEXT: xor $1, $5, $7 ; MIPS32-NEXT: sltiu $3, $1, 1 ; MIPS32-NEXT: sltu $1, $6, $4 ; MIPS32-NEXT: andi $3, $3, 1 ; MIPS32-NEXT: movn $2, $1, $3 ; MIPS32-NEXT: jr $ra ; MIPS32-NEXT: nop entry: %cmp = icmp ugt i64 %a, %b ret i1 %cmp } define i1 @uge_i64(i64 %a, i64 %b) { ; MIPS32-LABEL: uge_i64: ; MIPS32: # %bb.0: # %entry ; MIPS32-NEXT: sltu $1, $5, $7 ; MIPS32-NEXT: xori $2, $1, 1 ; MIPS32-NEXT: xor $1, $5, $7 ; MIPS32-NEXT: sltiu $3, $1, 1 ; MIPS32-NEXT: sltu $1, $4, $6 ; MIPS32-NEXT: xori $1, $1, 1 ; MIPS32-NEXT: andi $3, $3, 1 ; MIPS32-NEXT: movn $2, $1, $3 ; MIPS32-NEXT: jr $ra ; MIPS32-NEXT: nop entry: %cmp = icmp uge i64 %a, %b ret i1 %cmp } define i1 @ult_i64(i64 %a, i64 %b) { ; MIPS32-LABEL: ult_i64: ; MIPS32: # %bb.0: # %entry ; MIPS32-NEXT: sltu $2, $5, $7 ; MIPS32-NEXT: xor $1, $5, $7 ; MIPS32-NEXT: sltiu $3, $1, 1 ; MIPS32-NEXT: sltu $1, $4, $6 ; MIPS32-NEXT: andi $3, $3, 1 ; MIPS32-NEXT: movn $2, $1, $3 ; MIPS32-NEXT: jr $ra ; MIPS32-NEXT: nop entry: %cmp = icmp ult i64 %a, %b ret i1 %cmp } define i1 @ule_i64(i64 %a, i64 %b) { ; MIPS32-LABEL: ule_i64: ; MIPS32: # %bb.0: # %entry ; MIPS32-NEXT: sltu $1, $7, $5 ; MIPS32-NEXT: xori $2, $1, 1 ; MIPS32-NEXT: xor $1, $5, $7 ; MIPS32-NEXT: sltiu $3, $1, 1 ; MIPS32-NEXT: sltu $1, $6, $4 ; MIPS32-NEXT: xori $1, $1, 1 ; MIPS32-NEXT: andi $3, $3, 1 ; MIPS32-NEXT: movn $2, $1, $3 ; MIPS32-NEXT: jr $ra ; MIPS32-NEXT: nop entry: %cmp = icmp ule i64 %a, %b ret i1 %cmp }