Home | History | Annotate | Download | only in GlobalISel
      1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
      2 ; RUN: llc -mtriple=x86_64-linux-gnu    -global-isel -verify-machineinstrs < %s -o - | FileCheck %s --check-prefix=ALL
      3 
      4 define i32 @test_icmp_eq_i8(i8 %a, i8 %b) {
      5 ; ALL-LABEL: test_icmp_eq_i8:
      6 ; ALL:       # %bb.0:
      7 ; ALL-NEXT:    cmpb %sil, %dil
      8 ; ALL-NEXT:    sete %al
      9 ; ALL-NEXT:    andl $1, %eax
     10 ; ALL-NEXT:    retq
     11   %r = icmp eq i8 %a, %b
     12   %res =  zext i1 %r to i32
     13   ret i32 %res
     14 }
     15 
     16 define i32 @test_icmp_eq_i16(i16 %a, i16 %b) {
     17 ; ALL-LABEL: test_icmp_eq_i16:
     18 ; ALL:       # %bb.0:
     19 ; ALL-NEXT:    cmpw %si, %di
     20 ; ALL-NEXT:    sete %al
     21 ; ALL-NEXT:    andl $1, %eax
     22 ; ALL-NEXT:    retq
     23   %r = icmp eq i16 %a, %b
     24   %res =  zext i1 %r to i32
     25   ret i32 %res
     26 }
     27 
     28 define i32 @test_icmp_eq_i64(i64 %a, i64 %b) {
     29 ; ALL-LABEL: test_icmp_eq_i64:
     30 ; ALL:       # %bb.0:
     31 ; ALL-NEXT:    cmpq %rsi, %rdi
     32 ; ALL-NEXT:    sete %al
     33 ; ALL-NEXT:    andl $1, %eax
     34 ; ALL-NEXT:    retq
     35   %r = icmp eq i64 %a, %b
     36   %res =  zext i1 %r to i32
     37   ret i32 %res
     38 }
     39 
     40 define i32 @test_icmp_eq_i32(i32 %a, i32 %b) {
     41 ; ALL-LABEL: test_icmp_eq_i32:
     42 ; ALL:       # %bb.0:
     43 ; ALL-NEXT:    cmpl %esi, %edi
     44 ; ALL-NEXT:    sete %al
     45 ; ALL-NEXT:    andl $1, %eax
     46 ; ALL-NEXT:    retq
     47   %r = icmp eq i32 %a, %b
     48   %res =  zext i1 %r to i32
     49   ret i32 %res
     50 }
     51 
     52 define i32 @test_icmp_ne_i32(i32 %a, i32 %b) {
     53 ; ALL-LABEL: test_icmp_ne_i32:
     54 ; ALL:       # %bb.0:
     55 ; ALL-NEXT:    cmpl %esi, %edi
     56 ; ALL-NEXT:    setne %al
     57 ; ALL-NEXT:    andl $1, %eax
     58 ; ALL-NEXT:    retq
     59   %r = icmp ne i32 %a, %b
     60   %res =  zext i1 %r to i32
     61   ret i32 %res
     62 }
     63 
     64 define i32 @test_icmp_ugt_i32(i32 %a, i32 %b) {
     65 ; ALL-LABEL: test_icmp_ugt_i32:
     66 ; ALL:       # %bb.0:
     67 ; ALL-NEXT:    cmpl %esi, %edi
     68 ; ALL-NEXT:    seta %al
     69 ; ALL-NEXT:    andl $1, %eax
     70 ; ALL-NEXT:    retq
     71   %r = icmp ugt i32 %a, %b
     72   %res =  zext i1 %r to i32
     73   ret i32 %res
     74 }
     75 
     76 define i32 @test_icmp_uge_i32(i32 %a, i32 %b) {
     77 ; ALL-LABEL: test_icmp_uge_i32:
     78 ; ALL:       # %bb.0:
     79 ; ALL-NEXT:    cmpl %esi, %edi
     80 ; ALL-NEXT:    setae %al
     81 ; ALL-NEXT:    andl $1, %eax
     82 ; ALL-NEXT:    retq
     83   %r = icmp uge i32 %a, %b
     84   %res =  zext i1 %r to i32
     85   ret i32 %res
     86 }
     87 
     88 define i32 @test_icmp_ult_i32(i32 %a, i32 %b) {
     89 ; ALL-LABEL: test_icmp_ult_i32:
     90 ; ALL:       # %bb.0:
     91 ; ALL-NEXT:    cmpl %esi, %edi
     92 ; ALL-NEXT:    setb %al
     93 ; ALL-NEXT:    andl $1, %eax
     94 ; ALL-NEXT:    retq
     95   %r = icmp ult i32 %a, %b
     96   %res =  zext i1 %r to i32
     97   ret i32 %res
     98 }
     99 
    100 define i32 @test_icmp_ule_i32(i32 %a, i32 %b) {
    101 ; ALL-LABEL: test_icmp_ule_i32:
    102 ; ALL:       # %bb.0:
    103 ; ALL-NEXT:    cmpl %esi, %edi
    104 ; ALL-NEXT:    setbe %al
    105 ; ALL-NEXT:    andl $1, %eax
    106 ; ALL-NEXT:    retq
    107   %r = icmp ule i32 %a, %b
    108   %res =  zext i1 %r to i32
    109   ret i32 %res
    110 }
    111 
    112 define i32 @test_icmp_sgt_i32(i32 %a, i32 %b) {
    113 ; ALL-LABEL: test_icmp_sgt_i32:
    114 ; ALL:       # %bb.0:
    115 ; ALL-NEXT:    cmpl %esi, %edi
    116 ; ALL-NEXT:    setg %al
    117 ; ALL-NEXT:    andl $1, %eax
    118 ; ALL-NEXT:    retq
    119   %r = icmp sgt i32 %a, %b
    120   %res =  zext i1 %r to i32
    121   ret i32 %res
    122 }
    123 
    124 define i32 @test_icmp_sge_i32(i32 %a, i32 %b) {
    125 ; ALL-LABEL: test_icmp_sge_i32:
    126 ; ALL:       # %bb.0:
    127 ; ALL-NEXT:    cmpl %esi, %edi
    128 ; ALL-NEXT:    setge %al
    129 ; ALL-NEXT:    andl $1, %eax
    130 ; ALL-NEXT:    retq
    131   %r = icmp sge i32 %a, %b
    132   %res =  zext i1 %r to i32
    133   ret i32 %res
    134 }
    135 
    136 define i32 @test_icmp_slt_i32(i32 %a, i32 %b) {
    137 ; ALL-LABEL: test_icmp_slt_i32:
    138 ; ALL:       # %bb.0:
    139 ; ALL-NEXT:    cmpl %esi, %edi
    140 ; ALL-NEXT:    setl %al
    141 ; ALL-NEXT:    andl $1, %eax
    142 ; ALL-NEXT:    retq
    143   %r = icmp slt i32 %a, %b
    144   %res =  zext i1 %r to i32
    145   ret i32 %res
    146 }
    147 
    148 define i32 @test_icmp_sle_i32(i32 %a, i32 %b) {
    149 ; ALL-LABEL: test_icmp_sle_i32:
    150 ; ALL:       # %bb.0:
    151 ; ALL-NEXT:    cmpl %esi, %edi
    152 ; ALL-NEXT:    setle %al
    153 ; ALL-NEXT:    andl $1, %eax
    154 ; ALL-NEXT:    retq
    155   %r = icmp sle i32 %a, %b
    156   %res =  zext i1 %r to i32
    157   ret i32 %res
    158 }
    159 
    160