| ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py |
| ; RUN: llc < %s -global-isel=0 -mtriple=x86_64-apple-darwin10 -verify-machineinstrs | FileCheck %s --check-prefixes=X64,SDAG |
| ; RUN: llc < %s -fast-isel -fast-isel-abort=1 -mtriple=x86_64-apple-darwin10 -verify-machineinstrs | FileCheck %s --check-prefixes=X64,FASTISEL |
| ; RUN: llc < %s -global-isel -global-isel-abort=1 -mtriple=x86_64-apple-darwin10 -verify-machineinstrs | FileCheck %s --check-prefixes=GISEL-X64 |
| ; RUN: llc < %s -global-isel=0 -mtriple=i686-apple-darwin10 -verify-machineinstrs | FileCheck %s --check-prefixes=X86,SDAG |
| ; RUN: llc < %s -fast-isel -fast-isel-abort=1 -mtriple=i686-apple-darwin10 -verify-machineinstrs | FileCheck %s --check-prefixes=X86,FASTISEL |
| ; RUN: llc < %s -global-isel -global-isel-abort=1 -mtriple=i686-apple-darwin10 -verify-machineinstrs | FileCheck %s --check-prefixes=GISEL-X86 |
| |
| define i32 @icmp_eq_2(i32 %x, i32 %y) { |
| ; X64-LABEL: icmp_eq_2: |
| ; X64: ## %bb.0: |
| ; X64-NEXT: cmpl %esi, %edi |
| ; X64-NEXT: jne LBB0_1 |
| ; X64-NEXT: ## %bb.2: ## %bb1 |
| ; X64-NEXT: xorl %eax, %eax |
| ; X64-NEXT: retq |
| ; X64-NEXT: LBB0_1: ## %bb2 |
| ; X64-NEXT: movl $1, %eax |
| ; X64-NEXT: retq |
| ; |
| ; GISEL-X64-LABEL: icmp_eq_2: |
| ; GISEL-X64: ## %bb.0: |
| ; GISEL-X64-NEXT: cmpl %esi, %edi |
| ; GISEL-X64-NEXT: sete %al |
| ; GISEL-X64-NEXT: testb $1, %al |
| ; GISEL-X64-NEXT: je LBB0_1 |
| ; GISEL-X64-NEXT: ## %bb.2: ## %bb1 |
| ; GISEL-X64-NEXT: xorl %eax, %eax |
| ; GISEL-X64-NEXT: retq |
| ; GISEL-X64-NEXT: LBB0_1: ## %bb2 |
| ; GISEL-X64-NEXT: movl $1, %eax |
| ; GISEL-X64-NEXT: retq |
| ; |
| ; X86-LABEL: icmp_eq_2: |
| ; X86: ## %bb.0: |
| ; X86-NEXT: movl {{[0-9]+}}(%esp), %eax |
| ; X86-NEXT: cmpl {{[0-9]+\(%esp\), %eax|%eax, [0-9]+\(%esp\)}} |
| ; X86-NEXT: jne LBB0_1 |
| ; X86-NEXT: ## %bb.2: ## %bb1 |
| ; X86-NEXT: xorl %eax, %eax |
| ; X86-NEXT: retl |
| ; X86-NEXT: LBB0_1: ## %bb2 |
| ; X86-NEXT: movl $1, %eax |
| ; X86-NEXT: retl |
| ; |
| ; GISEL-X86-LABEL: icmp_eq_2: |
| ; GISEL-X86: ## %bb.0: |
| ; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax |
| ; GISEL-X86-NEXT: cmpl %eax, {{[0-9]+}}(%esp) |
| ; GISEL-X86-NEXT: sete %al |
| ; GISEL-X86-NEXT: testb $1, %al |
| ; GISEL-X86-NEXT: je LBB0_1 |
| ; GISEL-X86-NEXT: ## %bb.2: ## %bb1 |
| ; GISEL-X86-NEXT: xorl %eax, %eax |
| ; GISEL-X86-NEXT: retl |
| ; GISEL-X86-NEXT: LBB0_1: ## %bb2 |
| ; GISEL-X86-NEXT: movl $1, %eax |
| ; GISEL-X86-NEXT: retl |
| %1 = icmp eq i32 %x, %y |
| br i1 %1, label %bb1, label %bb2 |
| bb2: |
| ret i32 1 |
| bb1: |
| ret i32 0 |
| } |
| |
| define i32 @icmp_ne_2(i32 %x, i32 %y) { |
| ; X64-LABEL: icmp_ne_2: |
| ; X64: ## %bb.0: |
| ; X64-NEXT: cmpl %esi, %edi |
| ; X64-NEXT: je LBB1_1 |
| ; X64-NEXT: ## %bb.2: ## %bb1 |
| ; X64-NEXT: xorl %eax, %eax |
| ; X64-NEXT: retq |
| ; X64-NEXT: LBB1_1: ## %bb2 |
| ; X64-NEXT: movl $1, %eax |
| ; X64-NEXT: retq |
| ; |
| ; GISEL-X64-LABEL: icmp_ne_2: |
| ; GISEL-X64: ## %bb.0: |
| ; GISEL-X64-NEXT: cmpl %esi, %edi |
| ; GISEL-X64-NEXT: setne %al |
| ; GISEL-X64-NEXT: testb $1, %al |
| ; GISEL-X64-NEXT: je LBB1_1 |
| ; GISEL-X64-NEXT: ## %bb.2: ## %bb1 |
| ; GISEL-X64-NEXT: xorl %eax, %eax |
| ; GISEL-X64-NEXT: retq |
| ; GISEL-X64-NEXT: LBB1_1: ## %bb2 |
| ; GISEL-X64-NEXT: movl $1, %eax |
| ; GISEL-X64-NEXT: retq |
| ; |
| ; X86-LABEL: icmp_ne_2: |
| ; X86: ## %bb.0: |
| ; X86-NEXT: movl {{[0-9]+}}(%esp), %eax |
| ; X86-NEXT: cmpl {{[0-9]+\(%esp\), %eax|%eax, [0-9]+\(%esp\)}} |
| ; X86-NEXT: je LBB1_1 |
| ; X86-NEXT: ## %bb.2: ## %bb1 |
| ; X86-NEXT: xorl %eax, %eax |
| ; X86-NEXT: retl |
| ; X86-NEXT: LBB1_1: ## %bb2 |
| ; X86-NEXT: movl $1, %eax |
| ; X86-NEXT: retl |
| ; |
| ; GISEL-X86-LABEL: icmp_ne_2: |
| ; GISEL-X86: ## %bb.0: |
| ; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax |
| ; GISEL-X86-NEXT: cmpl %eax, {{[0-9]+}}(%esp) |
| ; GISEL-X86-NEXT: setne %al |
| ; GISEL-X86-NEXT: testb $1, %al |
| ; GISEL-X86-NEXT: je LBB1_1 |
| ; GISEL-X86-NEXT: ## %bb.2: ## %bb1 |
| ; GISEL-X86-NEXT: xorl %eax, %eax |
| ; GISEL-X86-NEXT: retl |
| ; GISEL-X86-NEXT: LBB1_1: ## %bb2 |
| ; GISEL-X86-NEXT: movl $1, %eax |
| ; GISEL-X86-NEXT: retl |
| %1 = icmp ne i32 %x, %y |
| br i1 %1, label %bb1, label %bb2 |
| bb2: |
| ret i32 1 |
| bb1: |
| ret i32 0 |
| } |
| |
| define i32 @icmp_ugt_2(i32 %x, i32 %y) { |
| ; X64-LABEL: icmp_ugt_2: |
| ; X64: ## %bb.0: |
| ; X64-NEXT: cmpl %esi, %edi |
| ; X64-NEXT: jbe LBB2_1 |
| ; X64-NEXT: ## %bb.2: ## %bb1 |
| ; X64-NEXT: xorl %eax, %eax |
| ; X64-NEXT: retq |
| ; X64-NEXT: LBB2_1: ## %bb2 |
| ; X64-NEXT: movl $1, %eax |
| ; X64-NEXT: retq |
| ; |
| ; GISEL-X64-LABEL: icmp_ugt_2: |
| ; GISEL-X64: ## %bb.0: |
| ; GISEL-X64-NEXT: cmpl %esi, %edi |
| ; GISEL-X64-NEXT: seta %al |
| ; GISEL-X64-NEXT: testb $1, %al |
| ; GISEL-X64-NEXT: je LBB2_1 |
| ; GISEL-X64-NEXT: ## %bb.2: ## %bb1 |
| ; GISEL-X64-NEXT: xorl %eax, %eax |
| ; GISEL-X64-NEXT: retq |
| ; GISEL-X64-NEXT: LBB2_1: ## %bb2 |
| ; GISEL-X64-NEXT: movl $1, %eax |
| ; GISEL-X64-NEXT: retq |
| ; |
| ; X86-LABEL: icmp_ugt_2: |
| ; X86: ## %bb.0: |
| ; X86-NEXT: movl {{[0-9]+}}(%esp), %eax |
| ; X86-NEXT: cmpl {{[0-9]+\(%esp\), %eax|%eax, [0-9]+\(%esp\)}} |
| ; X86-NEXT: jbe LBB2_1 |
| ; X86-NEXT: ## %bb.2: ## %bb1 |
| ; X86-NEXT: xorl %eax, %eax |
| ; X86-NEXT: retl |
| ; X86-NEXT: LBB2_1: ## %bb2 |
| ; X86-NEXT: movl $1, %eax |
| ; X86-NEXT: retl |
| ; |
| ; GISEL-X86-LABEL: icmp_ugt_2: |
| ; GISEL-X86: ## %bb.0: |
| ; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax |
| ; GISEL-X86-NEXT: cmpl %eax, {{[0-9]+}}(%esp) |
| ; GISEL-X86-NEXT: seta %al |
| ; GISEL-X86-NEXT: testb $1, %al |
| ; GISEL-X86-NEXT: je LBB2_1 |
| ; GISEL-X86-NEXT: ## %bb.2: ## %bb1 |
| ; GISEL-X86-NEXT: xorl %eax, %eax |
| ; GISEL-X86-NEXT: retl |
| ; GISEL-X86-NEXT: LBB2_1: ## %bb2 |
| ; GISEL-X86-NEXT: movl $1, %eax |
| ; GISEL-X86-NEXT: retl |
| %1 = icmp ugt i32 %x, %y |
| br i1 %1, label %bb1, label %bb2 |
| bb2: |
| ret i32 1 |
| bb1: |
| ret i32 0 |
| } |
| |
| define i32 @icmp_uge_2(i32 %x, i32 %y) { |
| ; X64-LABEL: icmp_uge_2: |
| ; X64: ## %bb.0: |
| ; X64-NEXT: cmpl %esi, %edi |
| ; X64-NEXT: jb LBB3_1 |
| ; X64-NEXT: ## %bb.2: ## %bb1 |
| ; X64-NEXT: xorl %eax, %eax |
| ; X64-NEXT: retq |
| ; X64-NEXT: LBB3_1: ## %bb2 |
| ; X64-NEXT: movl $1, %eax |
| ; X64-NEXT: retq |
| ; |
| ; GISEL-X64-LABEL: icmp_uge_2: |
| ; GISEL-X64: ## %bb.0: |
| ; GISEL-X64-NEXT: cmpl %esi, %edi |
| ; GISEL-X64-NEXT: setae %al |
| ; GISEL-X64-NEXT: testb $1, %al |
| ; GISEL-X64-NEXT: je LBB3_1 |
| ; GISEL-X64-NEXT: ## %bb.2: ## %bb1 |
| ; GISEL-X64-NEXT: xorl %eax, %eax |
| ; GISEL-X64-NEXT: retq |
| ; GISEL-X64-NEXT: LBB3_1: ## %bb2 |
| ; GISEL-X64-NEXT: movl $1, %eax |
| ; GISEL-X64-NEXT: retq |
| ; |
| ; X86-LABEL: icmp_uge_2: |
| ; X86: ## %bb.0: |
| ; X86-NEXT: movl {{[0-9]+}}(%esp), %eax |
| ; X86-NEXT: cmpl {{[0-9]+\(%esp\), %eax|%eax, [0-9]+\(%esp\)}} |
| ; X86-NEXT: jb LBB3_1 |
| ; X86-NEXT: ## %bb.2: ## %bb1 |
| ; X86-NEXT: xorl %eax, %eax |
| ; X86-NEXT: retl |
| ; X86-NEXT: LBB3_1: ## %bb2 |
| ; X86-NEXT: movl $1, %eax |
| ; X86-NEXT: retl |
| ; |
| ; GISEL-X86-LABEL: icmp_uge_2: |
| ; GISEL-X86: ## %bb.0: |
| ; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax |
| ; GISEL-X86-NEXT: cmpl %eax, {{[0-9]+}}(%esp) |
| ; GISEL-X86-NEXT: setae %al |
| ; GISEL-X86-NEXT: testb $1, %al |
| ; GISEL-X86-NEXT: je LBB3_1 |
| ; GISEL-X86-NEXT: ## %bb.2: ## %bb1 |
| ; GISEL-X86-NEXT: xorl %eax, %eax |
| ; GISEL-X86-NEXT: retl |
| ; GISEL-X86-NEXT: LBB3_1: ## %bb2 |
| ; GISEL-X86-NEXT: movl $1, %eax |
| ; GISEL-X86-NEXT: retl |
| %1 = icmp uge i32 %x, %y |
| br i1 %1, label %bb1, label %bb2 |
| bb2: |
| ret i32 1 |
| bb1: |
| ret i32 0 |
| } |
| |
| define i32 @icmp_ult_2(i32 %x, i32 %y) { |
| ; X64-LABEL: icmp_ult_2: |
| ; X64: ## %bb.0: |
| ; X64-NEXT: cmpl %esi, %edi |
| ; X64-NEXT: jae LBB4_1 |
| ; X64-NEXT: ## %bb.2: ## %bb1 |
| ; X64-NEXT: xorl %eax, %eax |
| ; X64-NEXT: retq |
| ; X64-NEXT: LBB4_1: ## %bb2 |
| ; X64-NEXT: movl $1, %eax |
| ; X64-NEXT: retq |
| ; |
| ; GISEL-X64-LABEL: icmp_ult_2: |
| ; GISEL-X64: ## %bb.0: |
| ; GISEL-X64-NEXT: cmpl %esi, %edi |
| ; GISEL-X64-NEXT: setb %al |
| ; GISEL-X64-NEXT: testb $1, %al |
| ; GISEL-X64-NEXT: je LBB4_1 |
| ; GISEL-X64-NEXT: ## %bb.2: ## %bb1 |
| ; GISEL-X64-NEXT: xorl %eax, %eax |
| ; GISEL-X64-NEXT: retq |
| ; GISEL-X64-NEXT: LBB4_1: ## %bb2 |
| ; GISEL-X64-NEXT: movl $1, %eax |
| ; GISEL-X64-NEXT: retq |
| ; |
| ; X86-LABEL: icmp_ult_2: |
| ; X86: ## %bb.0: |
| ; X86-NEXT: movl {{[0-9]+}}(%esp), %eax |
| ; X86-NEXT: cmpl {{[0-9]+\(%esp\), %eax|%eax, [0-9]+\(%esp\)}} |
| ; X86-NEXT: jae LBB4_1 |
| ; X86-NEXT: ## %bb.2: ## %bb1 |
| ; X86-NEXT: xorl %eax, %eax |
| ; X86-NEXT: retl |
| ; X86-NEXT: LBB4_1: ## %bb2 |
| ; X86-NEXT: movl $1, %eax |
| ; X86-NEXT: retl |
| ; |
| ; GISEL-X86-LABEL: icmp_ult_2: |
| ; GISEL-X86: ## %bb.0: |
| ; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax |
| ; GISEL-X86-NEXT: cmpl %eax, {{[0-9]+}}(%esp) |
| ; GISEL-X86-NEXT: setb %al |
| ; GISEL-X86-NEXT: testb $1, %al |
| ; GISEL-X86-NEXT: je LBB4_1 |
| ; GISEL-X86-NEXT: ## %bb.2: ## %bb1 |
| ; GISEL-X86-NEXT: xorl %eax, %eax |
| ; GISEL-X86-NEXT: retl |
| ; GISEL-X86-NEXT: LBB4_1: ## %bb2 |
| ; GISEL-X86-NEXT: movl $1, %eax |
| ; GISEL-X86-NEXT: retl |
| %1 = icmp ult i32 %x, %y |
| br i1 %1, label %bb1, label %bb2 |
| bb2: |
| ret i32 1 |
| bb1: |
| ret i32 0 |
| } |
| |
| define i32 @icmp_ule_2(i32 %x, i32 %y) { |
| ; X64-LABEL: icmp_ule_2: |
| ; X64: ## %bb.0: |
| ; X64-NEXT: cmpl %esi, %edi |
| ; X64-NEXT: ja LBB5_1 |
| ; X64-NEXT: ## %bb.2: ## %bb1 |
| ; X64-NEXT: xorl %eax, %eax |
| ; X64-NEXT: retq |
| ; X64-NEXT: LBB5_1: ## %bb2 |
| ; X64-NEXT: movl $1, %eax |
| ; X64-NEXT: retq |
| ; |
| ; GISEL-X64-LABEL: icmp_ule_2: |
| ; GISEL-X64: ## %bb.0: |
| ; GISEL-X64-NEXT: cmpl %esi, %edi |
| ; GISEL-X64-NEXT: setbe %al |
| ; GISEL-X64-NEXT: testb $1, %al |
| ; GISEL-X64-NEXT: je LBB5_1 |
| ; GISEL-X64-NEXT: ## %bb.2: ## %bb1 |
| ; GISEL-X64-NEXT: xorl %eax, %eax |
| ; GISEL-X64-NEXT: retq |
| ; GISEL-X64-NEXT: LBB5_1: ## %bb2 |
| ; GISEL-X64-NEXT: movl $1, %eax |
| ; GISEL-X64-NEXT: retq |
| ; |
| ; X86-LABEL: icmp_ule_2: |
| ; X86: ## %bb.0: |
| ; X86-NEXT: movl {{[0-9]+}}(%esp), %eax |
| ; X86-NEXT: cmpl {{[0-9]+\(%esp\), %eax|%eax, [0-9]+\(%esp\)}} |
| ; X86-NEXT: ja LBB5_1 |
| ; X86-NEXT: ## %bb.2: ## %bb1 |
| ; X86-NEXT: xorl %eax, %eax |
| ; X86-NEXT: retl |
| ; X86-NEXT: LBB5_1: ## %bb2 |
| ; X86-NEXT: movl $1, %eax |
| ; X86-NEXT: retl |
| ; |
| ; GISEL-X86-LABEL: icmp_ule_2: |
| ; GISEL-X86: ## %bb.0: |
| ; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax |
| ; GISEL-X86-NEXT: cmpl %eax, {{[0-9]+}}(%esp) |
| ; GISEL-X86-NEXT: setbe %al |
| ; GISEL-X86-NEXT: testb $1, %al |
| ; GISEL-X86-NEXT: je LBB5_1 |
| ; GISEL-X86-NEXT: ## %bb.2: ## %bb1 |
| ; GISEL-X86-NEXT: xorl %eax, %eax |
| ; GISEL-X86-NEXT: retl |
| ; GISEL-X86-NEXT: LBB5_1: ## %bb2 |
| ; GISEL-X86-NEXT: movl $1, %eax |
| ; GISEL-X86-NEXT: retl |
| %1 = icmp ule i32 %x, %y |
| br i1 %1, label %bb1, label %bb2 |
| bb2: |
| ret i32 1 |
| bb1: |
| ret i32 0 |
| } |
| |
| define i32 @icmp_sgt_2(i32 %x, i32 %y) { |
| ; X64-LABEL: icmp_sgt_2: |
| ; X64: ## %bb.0: |
| ; X64-NEXT: cmpl %esi, %edi |
| ; X64-NEXT: jle LBB6_1 |
| ; X64-NEXT: ## %bb.2: ## %bb1 |
| ; X64-NEXT: xorl %eax, %eax |
| ; X64-NEXT: retq |
| ; X64-NEXT: LBB6_1: ## %bb2 |
| ; X64-NEXT: movl $1, %eax |
| ; X64-NEXT: retq |
| ; |
| ; GISEL-X64-LABEL: icmp_sgt_2: |
| ; GISEL-X64: ## %bb.0: |
| ; GISEL-X64-NEXT: cmpl %esi, %edi |
| ; GISEL-X64-NEXT: setg %al |
| ; GISEL-X64-NEXT: testb $1, %al |
| ; GISEL-X64-NEXT: je LBB6_1 |
| ; GISEL-X64-NEXT: ## %bb.2: ## %bb1 |
| ; GISEL-X64-NEXT: xorl %eax, %eax |
| ; GISEL-X64-NEXT: retq |
| ; GISEL-X64-NEXT: LBB6_1: ## %bb2 |
| ; GISEL-X64-NEXT: movl $1, %eax |
| ; GISEL-X64-NEXT: retq |
| ; |
| ; X86-LABEL: icmp_sgt_2: |
| ; X86: ## %bb.0: |
| ; X86-NEXT: movl {{[0-9]+}}(%esp), %eax |
| ; X86-NEXT: cmpl {{[0-9]+\(%esp\), %eax|%eax, [0-9]+\(%esp\)}} |
| ; X86-NEXT: jle LBB6_1 |
| ; X86-NEXT: ## %bb.2: ## %bb1 |
| ; X86-NEXT: xorl %eax, %eax |
| ; X86-NEXT: retl |
| ; X86-NEXT: LBB6_1: ## %bb2 |
| ; X86-NEXT: movl $1, %eax |
| ; X86-NEXT: retl |
| ; |
| ; GISEL-X86-LABEL: icmp_sgt_2: |
| ; GISEL-X86: ## %bb.0: |
| ; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax |
| ; GISEL-X86-NEXT: cmpl %eax, {{[0-9]+}}(%esp) |
| ; GISEL-X86-NEXT: setg %al |
| ; GISEL-X86-NEXT: testb $1, %al |
| ; GISEL-X86-NEXT: je LBB6_1 |
| ; GISEL-X86-NEXT: ## %bb.2: ## %bb1 |
| ; GISEL-X86-NEXT: xorl %eax, %eax |
| ; GISEL-X86-NEXT: retl |
| ; GISEL-X86-NEXT: LBB6_1: ## %bb2 |
| ; GISEL-X86-NEXT: movl $1, %eax |
| ; GISEL-X86-NEXT: retl |
| %1 = icmp sgt i32 %x, %y |
| br i1 %1, label %bb1, label %bb2 |
| bb2: |
| ret i32 1 |
| bb1: |
| ret i32 0 |
| } |
| |
| define i32 @icmp_sge_2(i32 %x, i32 %y) { |
| ; X64-LABEL: icmp_sge_2: |
| ; X64: ## %bb.0: |
| ; X64-NEXT: cmpl %esi, %edi |
| ; X64-NEXT: jl LBB7_1 |
| ; X64-NEXT: ## %bb.2: ## %bb1 |
| ; X64-NEXT: xorl %eax, %eax |
| ; X64-NEXT: retq |
| ; X64-NEXT: LBB7_1: ## %bb2 |
| ; X64-NEXT: movl $1, %eax |
| ; X64-NEXT: retq |
| ; |
| ; GISEL-X64-LABEL: icmp_sge_2: |
| ; GISEL-X64: ## %bb.0: |
| ; GISEL-X64-NEXT: cmpl %esi, %edi |
| ; GISEL-X64-NEXT: setge %al |
| ; GISEL-X64-NEXT: testb $1, %al |
| ; GISEL-X64-NEXT: je LBB7_1 |
| ; GISEL-X64-NEXT: ## %bb.2: ## %bb1 |
| ; GISEL-X64-NEXT: xorl %eax, %eax |
| ; GISEL-X64-NEXT: retq |
| ; GISEL-X64-NEXT: LBB7_1: ## %bb2 |
| ; GISEL-X64-NEXT: movl $1, %eax |
| ; GISEL-X64-NEXT: retq |
| ; |
| ; X86-LABEL: icmp_sge_2: |
| ; X86: ## %bb.0: |
| ; X86-NEXT: movl {{[0-9]+}}(%esp), %eax |
| ; X86-NEXT: cmpl {{[0-9]+\(%esp\), %eax|%eax, [0-9]+\(%esp\)}} |
| ; X86-NEXT: jl LBB7_1 |
| ; X86-NEXT: ## %bb.2: ## %bb1 |
| ; X86-NEXT: xorl %eax, %eax |
| ; X86-NEXT: retl |
| ; X86-NEXT: LBB7_1: ## %bb2 |
| ; X86-NEXT: movl $1, %eax |
| ; X86-NEXT: retl |
| ; |
| ; GISEL-X86-LABEL: icmp_sge_2: |
| ; GISEL-X86: ## %bb.0: |
| ; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax |
| ; GISEL-X86-NEXT: cmpl %eax, {{[0-9]+}}(%esp) |
| ; GISEL-X86-NEXT: setge %al |
| ; GISEL-X86-NEXT: testb $1, %al |
| ; GISEL-X86-NEXT: je LBB7_1 |
| ; GISEL-X86-NEXT: ## %bb.2: ## %bb1 |
| ; GISEL-X86-NEXT: xorl %eax, %eax |
| ; GISEL-X86-NEXT: retl |
| ; GISEL-X86-NEXT: LBB7_1: ## %bb2 |
| ; GISEL-X86-NEXT: movl $1, %eax |
| ; GISEL-X86-NEXT: retl |
| %1 = icmp sge i32 %x, %y |
| br i1 %1, label %bb1, label %bb2 |
| bb2: |
| ret i32 1 |
| bb1: |
| ret i32 0 |
| } |
| |
| define i32 @icmp_slt_2(i32 %x, i32 %y) { |
| ; X64-LABEL: icmp_slt_2: |
| ; X64: ## %bb.0: |
| ; X64-NEXT: cmpl %esi, %edi |
| ; X64-NEXT: jge LBB8_1 |
| ; X64-NEXT: ## %bb.2: ## %bb1 |
| ; X64-NEXT: xorl %eax, %eax |
| ; X64-NEXT: retq |
| ; X64-NEXT: LBB8_1: ## %bb2 |
| ; X64-NEXT: movl $1, %eax |
| ; X64-NEXT: retq |
| ; |
| ; GISEL-X64-LABEL: icmp_slt_2: |
| ; GISEL-X64: ## %bb.0: |
| ; GISEL-X64-NEXT: cmpl %esi, %edi |
| ; GISEL-X64-NEXT: setl %al |
| ; GISEL-X64-NEXT: testb $1, %al |
| ; GISEL-X64-NEXT: je LBB8_1 |
| ; GISEL-X64-NEXT: ## %bb.2: ## %bb1 |
| ; GISEL-X64-NEXT: xorl %eax, %eax |
| ; GISEL-X64-NEXT: retq |
| ; GISEL-X64-NEXT: LBB8_1: ## %bb2 |
| ; GISEL-X64-NEXT: movl $1, %eax |
| ; GISEL-X64-NEXT: retq |
| ; |
| ; X86-LABEL: icmp_slt_2: |
| ; X86: ## %bb.0: |
| ; X86-NEXT: movl {{[0-9]+}}(%esp), %eax |
| ; X86-NEXT: cmpl {{[0-9]+\(%esp\), %eax|%eax, [0-9]+\(%esp\)}} |
| ; X86-NEXT: jge LBB8_1 |
| ; X86-NEXT: ## %bb.2: ## %bb1 |
| ; X86-NEXT: xorl %eax, %eax |
| ; X86-NEXT: retl |
| ; X86-NEXT: LBB8_1: ## %bb2 |
| ; X86-NEXT: movl $1, %eax |
| ; X86-NEXT: retl |
| ; |
| ; GISEL-X86-LABEL: icmp_slt_2: |
| ; GISEL-X86: ## %bb.0: |
| ; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax |
| ; GISEL-X86-NEXT: cmpl %eax, {{[0-9]+}}(%esp) |
| ; GISEL-X86-NEXT: setl %al |
| ; GISEL-X86-NEXT: testb $1, %al |
| ; GISEL-X86-NEXT: je LBB8_1 |
| ; GISEL-X86-NEXT: ## %bb.2: ## %bb1 |
| ; GISEL-X86-NEXT: xorl %eax, %eax |
| ; GISEL-X86-NEXT: retl |
| ; GISEL-X86-NEXT: LBB8_1: ## %bb2 |
| ; GISEL-X86-NEXT: movl $1, %eax |
| ; GISEL-X86-NEXT: retl |
| %1 = icmp slt i32 %x, %y |
| br i1 %1, label %bb1, label %bb2 |
| bb2: |
| ret i32 1 |
| bb1: |
| ret i32 0 |
| } |
| |
| define i32 @icmp_sle_2(i32 %x, i32 %y) { |
| ; X64-LABEL: icmp_sle_2: |
| ; X64: ## %bb.0: |
| ; X64-NEXT: cmpl %esi, %edi |
| ; X64-NEXT: jg LBB9_1 |
| ; X64-NEXT: ## %bb.2: ## %bb1 |
| ; X64-NEXT: xorl %eax, %eax |
| ; X64-NEXT: retq |
| ; X64-NEXT: LBB9_1: ## %bb2 |
| ; X64-NEXT: movl $1, %eax |
| ; X64-NEXT: retq |
| ; |
| ; GISEL-X64-LABEL: icmp_sle_2: |
| ; GISEL-X64: ## %bb.0: |
| ; GISEL-X64-NEXT: cmpl %esi, %edi |
| ; GISEL-X64-NEXT: setle %al |
| ; GISEL-X64-NEXT: testb $1, %al |
| ; GISEL-X64-NEXT: je LBB9_1 |
| ; GISEL-X64-NEXT: ## %bb.2: ## %bb1 |
| ; GISEL-X64-NEXT: xorl %eax, %eax |
| ; GISEL-X64-NEXT: retq |
| ; GISEL-X64-NEXT: LBB9_1: ## %bb2 |
| ; GISEL-X64-NEXT: movl $1, %eax |
| ; GISEL-X64-NEXT: retq |
| ; |
| ; X86-LABEL: icmp_sle_2: |
| ; X86: ## %bb.0: |
| ; X86-NEXT: movl {{[0-9]+}}(%esp), %eax |
| ; X86-NEXT: cmpl {{[0-9]+\(%esp\), %eax|%eax, [0-9]+\(%esp\)}} |
| ; X86-NEXT: jg LBB9_1 |
| ; X86-NEXT: ## %bb.2: ## %bb1 |
| ; X86-NEXT: xorl %eax, %eax |
| ; X86-NEXT: retl |
| ; X86-NEXT: LBB9_1: ## %bb2 |
| ; X86-NEXT: movl $1, %eax |
| ; X86-NEXT: retl |
| ; |
| ; GISEL-X86-LABEL: icmp_sle_2: |
| ; GISEL-X86: ## %bb.0: |
| ; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax |
| ; GISEL-X86-NEXT: cmpl %eax, {{[0-9]+}}(%esp) |
| ; GISEL-X86-NEXT: setle %al |
| ; GISEL-X86-NEXT: testb $1, %al |
| ; GISEL-X86-NEXT: je LBB9_1 |
| ; GISEL-X86-NEXT: ## %bb.2: ## %bb1 |
| ; GISEL-X86-NEXT: xorl %eax, %eax |
| ; GISEL-X86-NEXT: retl |
| ; GISEL-X86-NEXT: LBB9_1: ## %bb2 |
| ; GISEL-X86-NEXT: movl $1, %eax |
| ; GISEL-X86-NEXT: retl |
| %1 = icmp sle i32 %x, %y |
| br i1 %1, label %bb1, label %bb2 |
| bb2: |
| ret i32 1 |
| bb1: |
| ret i32 0 |
| } |
| |
| define i32 @icmp_eq(i32 %x) { |
| ; SDAG-LABEL: icmp_eq: |
| ; SDAG: ## %bb.0: |
| ; SDAG-NEXT: movb $1, %al |
| ; SDAG-NEXT: testb %al, %al |
| ; SDAG-NEXT: je LBB10_1 |
| ; SDAG-NEXT: ## %bb.2: ## %bb1 |
| ; SDAG-NEXT: xorl %eax, %eax |
| ; SDAG-NEXT: ret{{q|l}} |
| ; SDAG-NEXT: LBB10_1: ## %bb2 |
| ; SDAG-NEXT: movl $1, %eax |
| ; SDAG-NEXT: ret{{q|l}} |
| ; |
| ; FASTISEL-LABEL: icmp_eq: |
| ; FASTISEL: ## %bb.0: |
| ; FASTISEL-NEXT: xorl %eax, %eax |
| ; FASTISEL-NEXT: ret{{q|l}} |
| ; |
| ; GISEL-X64-LABEL: icmp_eq: |
| ; GISEL-X64: ## %bb.0: |
| ; GISEL-X64-NEXT: cmpl %edi, %edi |
| ; GISEL-X64-NEXT: sete %al |
| ; GISEL-X64-NEXT: testb $1, %al |
| ; GISEL-X64-NEXT: je LBB10_1 |
| ; GISEL-X64-NEXT: ## %bb.2: ## %bb1 |
| ; GISEL-X64-NEXT: xorl %eax, %eax |
| ; GISEL-X64-NEXT: retq |
| ; GISEL-X64-NEXT: LBB10_1: ## %bb2 |
| ; GISEL-X64-NEXT: movl $1, %eax |
| ; GISEL-X64-NEXT: retq |
| ; |
| ; GISEL-X86-LABEL: icmp_eq: |
| ; GISEL-X86: ## %bb.0: |
| ; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax |
| ; GISEL-X86-NEXT: cmpl %eax, %eax |
| ; GISEL-X86-NEXT: sete %al |
| ; GISEL-X86-NEXT: testb $1, %al |
| ; GISEL-X86-NEXT: je LBB10_1 |
| ; GISEL-X86-NEXT: ## %bb.2: ## %bb1 |
| ; GISEL-X86-NEXT: xorl %eax, %eax |
| ; GISEL-X86-NEXT: retl |
| ; GISEL-X86-NEXT: LBB10_1: ## %bb2 |
| ; GISEL-X86-NEXT: movl $1, %eax |
| ; GISEL-X86-NEXT: retl |
| %1 = icmp eq i32 %x, %x |
| br i1 %1, label %bb1, label %bb2 |
| bb2: |
| ret i32 1 |
| bb1: |
| ret i32 0 |
| } |
| |
| define i32 @icmp_ne(i32 %x) { |
| ; SDAG-LABEL: icmp_ne: |
| ; SDAG: ## %bb.0: |
| ; SDAG-NEXT: xorl %eax, %eax |
| ; SDAG-NEXT: testb %al, %al |
| ; SDAG-NEXT: je LBB11_1 |
| ; SDAG-NEXT: ## %bb.2: ## %bb1 |
| ; SDAG-NEXT: xorl %eax, %eax |
| ; SDAG-NEXT: ret{{q|l}} |
| ; SDAG-NEXT: LBB11_1: ## %bb2 |
| ; SDAG-NEXT: movl $1, %eax |
| ; SDAG-NEXT: ret{{q|l}} |
| ; |
| ; FASTISEL-LABEL: icmp_ne: |
| ; FASTISEL: ## %bb.0: |
| ; FASTISEL-NEXT: movl $1, %eax |
| ; FASTISEL-NEXT: ret{{q|l}} |
| ; |
| ; GISEL-X64-LABEL: icmp_ne: |
| ; GISEL-X64: ## %bb.0: |
| ; GISEL-X64-NEXT: cmpl %edi, %edi |
| ; GISEL-X64-NEXT: setne %al |
| ; GISEL-X64-NEXT: testb $1, %al |
| ; GISEL-X64-NEXT: je LBB11_1 |
| ; GISEL-X64-NEXT: ## %bb.2: ## %bb1 |
| ; GISEL-X64-NEXT: xorl %eax, %eax |
| ; GISEL-X64-NEXT: retq |
| ; GISEL-X64-NEXT: LBB11_1: ## %bb2 |
| ; GISEL-X64-NEXT: movl $1, %eax |
| ; GISEL-X64-NEXT: retq |
| ; |
| ; GISEL-X86-LABEL: icmp_ne: |
| ; GISEL-X86: ## %bb.0: |
| ; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax |
| ; GISEL-X86-NEXT: cmpl %eax, %eax |
| ; GISEL-X86-NEXT: setne %al |
| ; GISEL-X86-NEXT: testb $1, %al |
| ; GISEL-X86-NEXT: je LBB11_1 |
| ; GISEL-X86-NEXT: ## %bb.2: ## %bb1 |
| ; GISEL-X86-NEXT: xorl %eax, %eax |
| ; GISEL-X86-NEXT: retl |
| ; GISEL-X86-NEXT: LBB11_1: ## %bb2 |
| ; GISEL-X86-NEXT: movl $1, %eax |
| ; GISEL-X86-NEXT: retl |
| %1 = icmp ne i32 %x, %x |
| br i1 %1, label %bb1, label %bb2 |
| bb2: |
| ret i32 1 |
| bb1: |
| ret i32 0 |
| } |
| |
| define i32 @icmp_ugt(i32 %x) { |
| ; SDAG-LABEL: icmp_ugt: |
| ; SDAG: ## %bb.0: |
| ; SDAG-NEXT: xorl %eax, %eax |
| ; SDAG-NEXT: testb %al, %al |
| ; SDAG-NEXT: je LBB12_1 |
| ; SDAG-NEXT: ## %bb.2: ## %bb1 |
| ; SDAG-NEXT: xorl %eax, %eax |
| ; SDAG-NEXT: ret{{q|l}} |
| ; SDAG-NEXT: LBB12_1: ## %bb2 |
| ; SDAG-NEXT: movl $1, %eax |
| ; SDAG-NEXT: ret{{q|l}} |
| ; |
| ; FASTISEL-LABEL: icmp_ugt: |
| ; FASTISEL: ## %bb.0: |
| ; FASTISEL-NEXT: movl $1, %eax |
| ; FASTISEL-NEXT: ret{{q|l}} |
| ; |
| ; GISEL-X64-LABEL: icmp_ugt: |
| ; GISEL-X64: ## %bb.0: |
| ; GISEL-X64-NEXT: cmpl %edi, %edi |
| ; GISEL-X64-NEXT: seta %al |
| ; GISEL-X64-NEXT: testb $1, %al |
| ; GISEL-X64-NEXT: je LBB12_1 |
| ; GISEL-X64-NEXT: ## %bb.2: ## %bb1 |
| ; GISEL-X64-NEXT: xorl %eax, %eax |
| ; GISEL-X64-NEXT: retq |
| ; GISEL-X64-NEXT: LBB12_1: ## %bb2 |
| ; GISEL-X64-NEXT: movl $1, %eax |
| ; GISEL-X64-NEXT: retq |
| ; |
| ; GISEL-X86-LABEL: icmp_ugt: |
| ; GISEL-X86: ## %bb.0: |
| ; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax |
| ; GISEL-X86-NEXT: cmpl %eax, %eax |
| ; GISEL-X86-NEXT: seta %al |
| ; GISEL-X86-NEXT: testb $1, %al |
| ; GISEL-X86-NEXT: je LBB12_1 |
| ; GISEL-X86-NEXT: ## %bb.2: ## %bb1 |
| ; GISEL-X86-NEXT: xorl %eax, %eax |
| ; GISEL-X86-NEXT: retl |
| ; GISEL-X86-NEXT: LBB12_1: ## %bb2 |
| ; GISEL-X86-NEXT: movl $1, %eax |
| ; GISEL-X86-NEXT: retl |
| %1 = icmp ugt i32 %x, %x |
| br i1 %1, label %bb1, label %bb2 |
| bb2: |
| ret i32 1 |
| bb1: |
| ret i32 0 |
| } |
| |
| define i32 @icmp_uge(i32 %x) { |
| ; SDAG-LABEL: icmp_uge: |
| ; SDAG: ## %bb.0: |
| ; SDAG-NEXT: movb $1, %al |
| ; SDAG-NEXT: testb %al, %al |
| ; SDAG-NEXT: je LBB13_1 |
| ; SDAG-NEXT: ## %bb.2: ## %bb1 |
| ; SDAG-NEXT: xorl %eax, %eax |
| ; SDAG-NEXT: ret{{q|l}} |
| ; SDAG-NEXT: LBB13_1: ## %bb2 |
| ; SDAG-NEXT: movl $1, %eax |
| ; SDAG-NEXT: ret{{q|l}} |
| ; |
| ; FASTISEL-X64-LABEL: icmp_uge: |
| ; FASTISEL-X64: ## %bb.0: |
| ; FASTISEL-X64-NEXT: xorl %eax, %eax |
| ; FASTISEL-X64-NEXT: retq |
| ; |
| ; GISEL-X64-LABEL: icmp_uge: |
| ; GISEL-X64: ## %bb.0: |
| ; GISEL-X64-NEXT: cmpl %edi, %edi |
| ; GISEL-X64-NEXT: setae %al |
| ; GISEL-X64-NEXT: testb $1, %al |
| ; GISEL-X64-NEXT: je LBB13_1 |
| ; GISEL-X64-NEXT: ## %bb.2: ## %bb1 |
| ; GISEL-X64-NEXT: xorl %eax, %eax |
| ; GISEL-X64-NEXT: retq |
| ; GISEL-X64-NEXT: LBB13_1: ## %bb2 |
| ; GISEL-X64-NEXT: movl $1, %eax |
| ; GISEL-X64-NEXT: retq |
| ; |
| ; GISEL-X86-LABEL: icmp_uge: |
| ; GISEL-X86: ## %bb.0: |
| ; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax |
| ; GISEL-X86-NEXT: cmpl %eax, %eax |
| ; GISEL-X86-NEXT: setae %al |
| ; GISEL-X86-NEXT: testb $1, %al |
| ; GISEL-X86-NEXT: je LBB13_1 |
| ; GISEL-X86-NEXT: ## %bb.2: ## %bb1 |
| ; GISEL-X86-NEXT: xorl %eax, %eax |
| ; GISEL-X86-NEXT: retl |
| ; GISEL-X86-NEXT: LBB13_1: ## %bb2 |
| ; GISEL-X86-NEXT: movl $1, %eax |
| ; GISEL-X86-NEXT: retl |
| %1 = icmp uge i32 %x, %x |
| br i1 %1, label %bb1, label %bb2 |
| bb2: |
| ret i32 1 |
| bb1: |
| ret i32 0 |
| } |
| |
| define i32 @icmp_ult(i32 %x) { |
| ; SDAG-LABEL: icmp_ult: |
| ; SDAG: ## %bb.0: |
| ; SDAG-NEXT: xorl %eax, %eax |
| ; SDAG-NEXT: testb %al, %al |
| ; SDAG-NEXT: je LBB14_1 |
| ; SDAG-NEXT: ## %bb.2: ## %bb1 |
| ; SDAG-NEXT: xorl %eax, %eax |
| ; SDAG-NEXT: ret{{q|l}} |
| ; SDAG-NEXT: LBB14_1: ## %bb2 |
| ; SDAG-NEXT: movl $1, %eax |
| ; SDAG-NEXT: ret{{q|l}} |
| ; |
| ; FASTISEL-X64-LABEL: icmp_ult: |
| ; FASTISEL-X64: ## %bb.0: |
| ; FASTISEL-X64-NEXT: movl $1, %eax |
| ; FASTISEL-X64-NEXT: ret{{q|l}} |
| ; |
| ; GISEL-X64-LABEL: icmp_ult: |
| ; GISEL-X64: ## %bb.0: |
| ; GISEL-X64-NEXT: cmpl %edi, %edi |
| ; GISEL-X64-NEXT: setb %al |
| ; GISEL-X64-NEXT: testb $1, %al |
| ; GISEL-X64-NEXT: je LBB14_1 |
| ; GISEL-X64-NEXT: ## %bb.2: ## %bb1 |
| ; GISEL-X64-NEXT: xorl %eax, %eax |
| ; GISEL-X64-NEXT: retq |
| ; GISEL-X64-NEXT: LBB14_1: ## %bb2 |
| ; GISEL-X64-NEXT: movl $1, %eax |
| ; GISEL-X64-NEXT: retq |
| ; |
| ; GISEL-X86-LABEL: icmp_ult: |
| ; GISEL-X86: ## %bb.0: |
| ; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax |
| ; GISEL-X86-NEXT: cmpl %eax, %eax |
| ; GISEL-X86-NEXT: setb %al |
| ; GISEL-X86-NEXT: testb $1, %al |
| ; GISEL-X86-NEXT: je LBB14_1 |
| ; GISEL-X86-NEXT: ## %bb.2: ## %bb1 |
| ; GISEL-X86-NEXT: xorl %eax, %eax |
| ; GISEL-X86-NEXT: retl |
| ; GISEL-X86-NEXT: LBB14_1: ## %bb2 |
| ; GISEL-X86-NEXT: movl $1, %eax |
| ; GISEL-X86-NEXT: retl |
| %1 = icmp ult i32 %x, %x |
| br i1 %1, label %bb1, label %bb2 |
| bb2: |
| ret i32 1 |
| bb1: |
| ret i32 0 |
| } |
| |
| define i32 @icmp_ule(i32 %x) { |
| ; SDAG-LABEL: icmp_ule: |
| ; SDAG: ## %bb.0: |
| ; SDAG-NEXT: movb $1, %al |
| ; SDAG-NEXT: testb %al, %al |
| ; SDAG-NEXT: je LBB15_1 |
| ; SDAG-NEXT: ## %bb.2: ## %bb1 |
| ; SDAG-NEXT: xorl %eax, %eax |
| ; SDAG-NEXT: ret{{q|l}} |
| ; SDAG-NEXT: LBB15_1: ## %bb2 |
| ; SDAG-NEXT: movl $1, %eax |
| ; SDAG-NEXT: ret{{q|l}} |
| ; |
| ; FASTISEL-LABEL: icmp_ule: |
| ; FASTISEL: ## %bb.0: |
| ; FASTISEL-NEXT: xorl %eax, %eax |
| ; FASTISEL-NEXT: ret{{q|l}} |
| ; |
| ; GISEL-X64-LABEL: icmp_ule: |
| ; GISEL-X64: ## %bb.0: |
| ; GISEL-X64-NEXT: cmpl %edi, %edi |
| ; GISEL-X64-NEXT: setbe %al |
| ; GISEL-X64-NEXT: testb $1, %al |
| ; GISEL-X64-NEXT: je LBB15_1 |
| ; GISEL-X64-NEXT: ## %bb.2: ## %bb1 |
| ; GISEL-X64-NEXT: xorl %eax, %eax |
| ; GISEL-X64-NEXT: retq |
| ; GISEL-X64-NEXT: LBB15_1: ## %bb2 |
| ; GISEL-X64-NEXT: movl $1, %eax |
| ; GISEL-X64-NEXT: retq |
| ; |
| ; GISEL-X86-LABEL: icmp_ule: |
| ; GISEL-X86: ## %bb.0: |
| ; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax |
| ; GISEL-X86-NEXT: cmpl %eax, %eax |
| ; GISEL-X86-NEXT: setbe %al |
| ; GISEL-X86-NEXT: testb $1, %al |
| ; GISEL-X86-NEXT: je LBB15_1 |
| ; GISEL-X86-NEXT: ## %bb.2: ## %bb1 |
| ; GISEL-X86-NEXT: xorl %eax, %eax |
| ; GISEL-X86-NEXT: retl |
| ; GISEL-X86-NEXT: LBB15_1: ## %bb2 |
| ; GISEL-X86-NEXT: movl $1, %eax |
| ; GISEL-X86-NEXT: retl |
| %1 = icmp ule i32 %x, %x |
| br i1 %1, label %bb1, label %bb2 |
| bb2: |
| ret i32 1 |
| bb1: |
| ret i32 0 |
| } |
| |
| define i32 @icmp_sgt(i32 %x) { |
| ; SDAG-LABEL: icmp_sgt: |
| ; SDAG: ## %bb.0: |
| ; SDAG-NEXT: xorl %eax, %eax |
| ; SDAG-NEXT: testb %al, %al |
| ; SDAG-NEXT: je LBB16_1 |
| ; SDAG-NEXT: ## %bb.2: ## %bb1 |
| ; SDAG-NEXT: xorl %eax, %eax |
| ; SDAG-NEXT: ret{{q|l}} |
| ; SDAG-NEXT: LBB16_1: ## %bb2 |
| ; SDAG-NEXT: movl $1, %eax |
| ; SDAG-NEXT: ret{{q|l}} |
| ; |
| ; FASTISEL-LABEL: icmp_sgt: |
| ; FASTISEL: ## %bb.0: |
| ; FASTISEL-NEXT: movl $1, %eax |
| ; FASTISEL-NEXT: ret{{q|l}} |
| ; |
| ; GISEL-X64-LABEL: icmp_sgt: |
| ; GISEL-X64: ## %bb.0: |
| ; GISEL-X64-NEXT: cmpl %edi, %edi |
| ; GISEL-X64-NEXT: setg %al |
| ; GISEL-X64-NEXT: testb $1, %al |
| ; GISEL-X64-NEXT: je LBB16_1 |
| ; GISEL-X64-NEXT: ## %bb.2: ## %bb1 |
| ; GISEL-X64-NEXT: xorl %eax, %eax |
| ; GISEL-X64-NEXT: retq |
| ; GISEL-X64-NEXT: LBB16_1: ## %bb2 |
| ; GISEL-X64-NEXT: movl $1, %eax |
| ; GISEL-X64-NEXT: retq |
| ; |
| ; GISEL-X86-LABEL: icmp_sgt: |
| ; GISEL-X86: ## %bb.0: |
| ; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax |
| ; GISEL-X86-NEXT: cmpl %eax, %eax |
| ; GISEL-X86-NEXT: setg %al |
| ; GISEL-X86-NEXT: testb $1, %al |
| ; GISEL-X86-NEXT: je LBB16_1 |
| ; GISEL-X86-NEXT: ## %bb.2: ## %bb1 |
| ; GISEL-X86-NEXT: xorl %eax, %eax |
| ; GISEL-X86-NEXT: retl |
| ; GISEL-X86-NEXT: LBB16_1: ## %bb2 |
| ; GISEL-X86-NEXT: movl $1, %eax |
| ; GISEL-X86-NEXT: retl |
| %1 = icmp sgt i32 %x, %x |
| br i1 %1, label %bb1, label %bb2 |
| bb2: |
| ret i32 1 |
| bb1: |
| ret i32 0 |
| } |
| |
| define i32 @icmp_sge(i32 %x) { |
| ; SDAG-LABEL: icmp_sge: |
| ; SDAG: ## %bb.0: |
| ; SDAG-NEXT: movb $1, %al |
| ; SDAG-NEXT: testb %al, %al |
| ; SDAG-NEXT: je LBB17_1 |
| ; SDAG-NEXT: ## %bb.2: ## %bb1 |
| ; SDAG-NEXT: xorl %eax, %eax |
| ; SDAG-NEXT: ret{{q|l}} |
| ; SDAG-NEXT: LBB17_1: ## %bb2 |
| ; SDAG-NEXT: movl $1, %eax |
| ; SDAG-NEXT: ret{{q|l}} |
| ; |
| ; FASTISEL-LABEL: icmp_sge: |
| ; FASTISEL: ## %bb.0: |
| ; FASTISEL-NEXT: xorl %eax, %eax |
| ; FASTISEL-NEXT: ret{{q|l}} |
| ; |
| ; GISEL-X64-LABEL: icmp_sge: |
| ; GISEL-X64: ## %bb.0: |
| ; GISEL-X64-NEXT: cmpl %edi, %edi |
| ; GISEL-X64-NEXT: setge %al |
| ; GISEL-X64-NEXT: testb $1, %al |
| ; GISEL-X64-NEXT: je LBB17_1 |
| ; GISEL-X64-NEXT: ## %bb.2: ## %bb1 |
| ; GISEL-X64-NEXT: xorl %eax, %eax |
| ; GISEL-X64-NEXT: retq |
| ; GISEL-X64-NEXT: LBB17_1: ## %bb2 |
| ; GISEL-X64-NEXT: movl $1, %eax |
| ; GISEL-X64-NEXT: retq |
| ; |
| ; GISEL-X86-LABEL: icmp_sge: |
| ; GISEL-X86: ## %bb.0: |
| ; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax |
| ; GISEL-X86-NEXT: cmpl %eax, %eax |
| ; GISEL-X86-NEXT: setge %al |
| ; GISEL-X86-NEXT: testb $1, %al |
| ; GISEL-X86-NEXT: je LBB17_1 |
| ; GISEL-X86-NEXT: ## %bb.2: ## %bb1 |
| ; GISEL-X86-NEXT: xorl %eax, %eax |
| ; GISEL-X86-NEXT: retl |
| ; GISEL-X86-NEXT: LBB17_1: ## %bb2 |
| ; GISEL-X86-NEXT: movl $1, %eax |
| ; GISEL-X86-NEXT: retl |
| %1 = icmp sge i32 %x, %x |
| br i1 %1, label %bb1, label %bb2 |
| bb2: |
| ret i32 1 |
| bb1: |
| ret i32 0 |
| } |
| |
| define i32 @icmp_slt(i32 %x) { |
| ; SDAG-LABEL: icmp_slt: |
| ; SDAG: ## %bb.0: |
| ; SDAG-NEXT: xorl %eax, %eax |
| ; SDAG-NEXT: testb %al, %al |
| ; SDAG-NEXT: je LBB18_1 |
| ; SDAG-NEXT: ## %bb.2: ## %bb1 |
| ; SDAG-NEXT: xorl %eax, %eax |
| ; SDAG-NEXT: ret{{q|l}} |
| ; SDAG-NEXT: LBB18_1: ## %bb2 |
| ; SDAG-NEXT: movl $1, %eax |
| ; SDAG-NEXT: ret{{q|l}} |
| ; |
| ; FASTISEL-LABEL: icmp_slt: |
| ; FASTISEL: ## %bb.0: |
| ; FASTISEL-NEXT: movl $1, %eax |
| ; FASTISEL-NEXT: ret{{q|l}} |
| ; |
| ; GISEL-X64-LABEL: icmp_slt: |
| ; GISEL-X64: ## %bb.0: |
| ; GISEL-X64-NEXT: cmpl %edi, %edi |
| ; GISEL-X64-NEXT: setl %al |
| ; GISEL-X64-NEXT: testb $1, %al |
| ; GISEL-X64-NEXT: je LBB18_1 |
| ; GISEL-X64-NEXT: ## %bb.2: ## %bb1 |
| ; GISEL-X64-NEXT: xorl %eax, %eax |
| ; GISEL-X64-NEXT: retq |
| ; GISEL-X64-NEXT: LBB18_1: ## %bb2 |
| ; GISEL-X64-NEXT: movl $1, %eax |
| ; GISEL-X64-NEXT: retq |
| ; |
| ; GISEL-X86-LABEL: icmp_slt: |
| ; GISEL-X86: ## %bb.0: |
| ; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax |
| ; GISEL-X86-NEXT: cmpl %eax, %eax |
| ; GISEL-X86-NEXT: setl %al |
| ; GISEL-X86-NEXT: testb $1, %al |
| ; GISEL-X86-NEXT: je LBB18_1 |
| ; GISEL-X86-NEXT: ## %bb.2: ## %bb1 |
| ; GISEL-X86-NEXT: xorl %eax, %eax |
| ; GISEL-X86-NEXT: retl |
| ; GISEL-X86-NEXT: LBB18_1: ## %bb2 |
| ; GISEL-X86-NEXT: movl $1, %eax |
| ; GISEL-X86-NEXT: retl |
| %1 = icmp slt i32 %x, %x |
| br i1 %1, label %bb1, label %bb2 |
| bb2: |
| ret i32 1 |
| bb1: |
| ret i32 0 |
| } |
| |
| define i32 @icmp_sle(i32 %x) { |
| ; SDAG-LABEL: icmp_sle: |
| ; SDAG: ## %bb.0: |
| ; SDAG-NEXT: movb $1, %al |
| ; SDAG-NEXT: testb %al, %al |
| ; SDAG-NEXT: je LBB19_1 |
| ; SDAG-NEXT: ## %bb.2: ## %bb1 |
| ; SDAG-NEXT: xorl %eax, %eax |
| ; SDAG-NEXT: ret{{q|l}} |
| ; SDAG-NEXT: LBB19_1: ## %bb2 |
| ; SDAG-NEXT: movl $1, %eax |
| ; SDAG-NEXT: ret{{q|l}} |
| ; |
| ; FASTISEL-LABEL: icmp_sle: |
| ; FASTISEL: ## %bb.0: |
| ; FASTISEL-NEXT: xorl %eax, %eax |
| ; FASTISEL-NEXT: ret{{q|l}} |
| ; |
| ; GISEL-X64-LABEL: icmp_sle: |
| ; GISEL-X64: ## %bb.0: |
| ; GISEL-X64-NEXT: cmpl %edi, %edi |
| ; GISEL-X64-NEXT: setle %al |
| ; GISEL-X64-NEXT: testb $1, %al |
| ; GISEL-X64-NEXT: je LBB19_1 |
| ; GISEL-X64-NEXT: ## %bb.2: ## %bb1 |
| ; GISEL-X64-NEXT: xorl %eax, %eax |
| ; GISEL-X64-NEXT: retq |
| ; GISEL-X64-NEXT: LBB19_1: ## %bb2 |
| ; GISEL-X64-NEXT: movl $1, %eax |
| ; GISEL-X64-NEXT: retq |
| ; |
| ; GISEL-X86-LABEL: icmp_sle: |
| ; GISEL-X86: ## %bb.0: |
| ; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax |
| ; GISEL-X86-NEXT: cmpl %eax, %eax |
| ; GISEL-X86-NEXT: setle %al |
| ; GISEL-X86-NEXT: testb $1, %al |
| ; GISEL-X86-NEXT: je LBB19_1 |
| ; GISEL-X86-NEXT: ## %bb.2: ## %bb1 |
| ; GISEL-X86-NEXT: xorl %eax, %eax |
| ; GISEL-X86-NEXT: retl |
| ; GISEL-X86-NEXT: LBB19_1: ## %bb2 |
| ; GISEL-X86-NEXT: movl $1, %eax |
| ; GISEL-X86-NEXT: retl |
| %1 = icmp sle i32 %x, %x |
| br i1 %1, label %bb1, label %bb2 |
| bb2: |
| ret i32 1 |
| bb1: |
| ret i32 0 |
| } |