1; RUN: llc < %s -mtriple=x86_64-apple-darwin10 | FileCheck %s 2; RUN: llc < %s -fast-isel -fast-isel-abort=1 -mtriple=x86_64-apple-darwin10 | FileCheck %s 3 4define i32 @fcmp_oeq(float %x, float %y) { 5; CHECK-LABEL: fcmp_oeq 6; CHECK: ucomiss %xmm1, %xmm0 7; CHECK-NEXT: jne {{LBB.+_1}} 8; CHECK-NEXT: jp {{LBB.+_1}} 9 %1 = fcmp oeq float %x, %y 10 br i1 %1, label %bb1, label %bb2 11bb2: 12 ret i32 1 13bb1: 14 ret i32 0 15} 16 17define i32 @fcmp_ogt(float %x, float %y) { 18; CHECK-LABEL: fcmp_ogt 19; CHECK: ucomiss %xmm1, %xmm0 20; CHECK-NEXT: jbe {{LBB.+_1}} 21 %1 = fcmp ogt float %x, %y 22 br i1 %1, label %bb1, label %bb2 23bb2: 24 ret i32 1 25bb1: 26 ret i32 0 27} 28 29define i32 @fcmp_oge(float %x, float %y) { 30; CHECK-LABEL: fcmp_oge 31; CHECK: ucomiss %xmm1, %xmm0 32; CHECK-NEXT: jb {{LBB.+_1}} 33 %1 = fcmp oge float %x, %y 34 br i1 %1, label %bb1, label %bb2 35bb2: 36 ret i32 1 37bb1: 38 ret i32 0 39} 40 41define i32 @fcmp_olt(float %x, float %y) { 42; CHECK-LABEL: fcmp_olt 43; CHECK: ucomiss %xmm0, %xmm1 44; CHECK-NEXT: jbe {{LBB.+_1}} 45 %1 = fcmp olt float %x, %y 46 br i1 %1, label %bb1, label %bb2 47bb2: 48 ret i32 1 49bb1: 50 ret i32 0 51} 52 53define i32 @fcmp_ole(float %x, float %y) { 54; CHECK-LABEL: fcmp_ole 55; CHECK: ucomiss %xmm0, %xmm1 56; CHECK-NEXT: jb {{LBB.+_1}} 57 %1 = fcmp ole float %x, %y 58 br i1 %1, label %bb1, label %bb2 59bb2: 60 ret i32 1 61bb1: 62 ret i32 0 63} 64 65define i32 @fcmp_one(float %x, float %y) { 66; CHECK-LABEL: fcmp_one 67; CHECK: ucomiss %xmm1, %xmm0 68; CHECK-NEXT: je {{LBB.+_1}} 69 %1 = fcmp one float %x, %y 70 br i1 %1, label %bb1, label %bb2 71bb2: 72 ret i32 1 73bb1: 74 ret i32 0 75} 76 77define i32 @fcmp_ord(float %x, float %y) { 78; CHECK-LABEL: fcmp_ord 79; CHECK: ucomiss %xmm1, %xmm0 80; CHECK-NEXT: jp {{LBB.+_1}} 81 %1 = fcmp ord float %x, %y 82 br i1 %1, label %bb1, label %bb2 83bb2: 84 ret i32 1 85bb1: 86 ret i32 0 87} 88 89define i32 @fcmp_uno(float %x, float %y) { 90; CHECK-LABEL: fcmp_uno 91; CHECK: ucomiss %xmm1, %xmm0 92; CHECK-NEXT: jp {{LBB.+_2}} 93 %1 = fcmp uno float %x, %y 94 br i1 %1, label %bb1, label %bb2 95bb2: 96 ret i32 1 97bb1: 98 ret i32 0 99} 100 101define i32 @fcmp_ueq(float %x, float %y) { 102; CHECK-LABEL: fcmp_ueq 103; CHECK: ucomiss %xmm1, %xmm0 104; CHECK-NEXT: je {{LBB.+_2}} 105 %1 = fcmp ueq float %x, %y 106 br i1 %1, label %bb1, label %bb2 107bb2: 108 ret i32 1 109bb1: 110 ret i32 0 111} 112 113define i32 @fcmp_ugt(float %x, float %y) { 114; CHECK-LABEL: fcmp_ugt 115; CHECK: ucomiss %xmm0, %xmm1 116; CHECK-NEXT: jae {{LBB.+_1}} 117 %1 = fcmp ugt float %x, %y 118 br i1 %1, label %bb1, label %bb2 119bb2: 120 ret i32 1 121bb1: 122 ret i32 0 123} 124 125define i32 @fcmp_uge(float %x, float %y) { 126; CHECK-LABEL: fcmp_uge 127; CHECK: ucomiss %xmm0, %xmm1 128; CHECK-NEXT: ja {{LBB.+_1}} 129 %1 = fcmp uge float %x, %y 130 br i1 %1, label %bb1, label %bb2 131bb2: 132 ret i32 1 133bb1: 134 ret i32 0 135} 136 137define i32 @fcmp_ult(float %x, float %y) { 138; CHECK-LABEL: fcmp_ult 139; CHECK: ucomiss %xmm1, %xmm0 140; CHECK-NEXT: jae {{LBB.+_1}} 141 %1 = fcmp ult float %x, %y 142 br i1 %1, label %bb1, label %bb2 143bb2: 144 ret i32 1 145bb1: 146 ret i32 0 147} 148 149define i32 @fcmp_ule(float %x, float %y) { 150; CHECK-LABEL: fcmp_ule 151; CHECK: ucomiss %xmm1, %xmm0 152; CHECK-NEXT: ja {{LBB.+_1}} 153 %1 = fcmp ule float %x, %y 154 br i1 %1, label %bb1, label %bb2 155bb2: 156 ret i32 1 157bb1: 158 ret i32 0 159} 160 161define i32 @fcmp_une(float %x, float %y) { 162; CHECK-LABEL: fcmp_une 163; CHECK: ucomiss %xmm1, %xmm0 164; CHECK-NEXT: jne {{LBB.+_2}} 165; CHECK-NEXT: jnp {{LBB.+_1}} 166 %1 = fcmp une float %x, %y 167 br i1 %1, label %bb1, label %bb2 168bb2: 169 ret i32 1 170bb1: 171 ret i32 0 172} 173 174define i32 @icmp_eq(i32 %x, i32 %y) { 175; CHECK-LABEL: icmp_eq 176; CHECK: cmpl %esi, %edi 177; CHECK-NEXT: jne {{LBB.+_1}} 178 %1 = icmp eq i32 %x, %y 179 br i1 %1, label %bb1, label %bb2 180bb2: 181 ret i32 1 182bb1: 183 ret i32 0 184} 185 186define i32 @icmp_ne(i32 %x, i32 %y) { 187; CHECK-LABEL: icmp_ne 188; CHECK: cmpl %esi, %edi 189; CHECK-NEXT: je {{LBB.+_1}} 190 %1 = icmp ne i32 %x, %y 191 br i1 %1, label %bb1, label %bb2 192bb2: 193 ret i32 1 194bb1: 195 ret i32 0 196} 197 198define i32 @icmp_ugt(i32 %x, i32 %y) { 199; CHECK-LABEL: icmp_ugt 200; CHECK: cmpl %esi, %edi 201; CHECK-NEXT: jbe {{LBB.+_1}} 202 %1 = icmp ugt i32 %x, %y 203 br i1 %1, label %bb1, label %bb2 204bb2: 205 ret i32 1 206bb1: 207 ret i32 0 208} 209 210define i32 @icmp_uge(i32 %x, i32 %y) { 211; CHECK-LABEL: icmp_uge 212; CHECK: cmpl %esi, %edi 213; CHECK-NEXT: jb {{LBB.+_1}} 214 %1 = icmp uge i32 %x, %y 215 br i1 %1, label %bb1, label %bb2 216bb2: 217 ret i32 1 218bb1: 219 ret i32 0 220} 221 222define i32 @icmp_ult(i32 %x, i32 %y) { 223; CHECK-LABEL: icmp_ult 224; CHECK: cmpl %esi, %edi 225; CHECK-NEXT: jae {{LBB.+_1}} 226 %1 = icmp ult i32 %x, %y 227 br i1 %1, label %bb1, label %bb2 228bb2: 229 ret i32 1 230bb1: 231 ret i32 0 232} 233 234define i32 @icmp_ule(i32 %x, i32 %y) { 235; CHECK-LABEL: icmp_ule 236; CHECK: cmpl %esi, %edi 237; CHECK-NEXT: ja {{LBB.+_1}} 238 %1 = icmp ule i32 %x, %y 239 br i1 %1, label %bb1, label %bb2 240bb2: 241 ret i32 1 242bb1: 243 ret i32 0 244} 245 246define i32 @icmp_sgt(i32 %x, i32 %y) { 247; CHECK-LABEL: icmp_sgt 248; CHECK: cmpl %esi, %edi 249; CHECK-NEXT: jle {{LBB.+_1}} 250 %1 = icmp sgt i32 %x, %y 251 br i1 %1, label %bb1, label %bb2 252bb2: 253 ret i32 1 254bb1: 255 ret i32 0 256} 257 258define i32 @icmp_sge(i32 %x, i32 %y) { 259; CHECK-LABEL: icmp_sge 260; CHECK: cmpl %esi, %edi 261; CHECK-NEXT: jl {{LBB.+_1}} 262 %1 = icmp sge i32 %x, %y 263 br i1 %1, label %bb1, label %bb2 264bb2: 265 ret i32 1 266bb1: 267 ret i32 0 268} 269 270define i32 @icmp_slt(i32 %x, i32 %y) { 271; CHECK-LABEL: icmp_slt 272; CHECK: cmpl %esi, %edi 273; CHECK-NEXT: jge {{LBB.+_1}} 274 %1 = icmp slt i32 %x, %y 275 br i1 %1, label %bb1, label %bb2 276bb2: 277 ret i32 1 278bb1: 279 ret i32 0 280} 281 282define i32 @icmp_sle(i32 %x, i32 %y) { 283; CHECK-LABEL: icmp_sle 284; CHECK: cmpl %esi, %edi 285; CHECK-NEXT: jg {{LBB.+_1}} 286 %1 = icmp sle i32 %x, %y 287 br i1 %1, label %bb1, label %bb2 288bb2: 289 ret i32 1 290bb1: 291 ret i32 0 292} 293 294