1*ed078c48SWANG Xuerui; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2709e4ad0SWeining Lu; RUN: llc --mtriple=loongarch32 --mattr=+d < %s | FileCheck %s --check-prefix=LA32 3709e4ad0SWeining Lu; RUN: llc --mtriple=loongarch64 --mattr=+d < %s | FileCheck %s --check-prefix=LA64 4709e4ad0SWeining Lu 5709e4ad0SWeining Lu;; Test integers selection after `fcmp` 6709e4ad0SWeining Lu 7709e4ad0SWeining Ludefine i32 @f32_fcmp_false(float %a, float %b, i32 %x, i32 %y) { 8709e4ad0SWeining Lu; LA32-LABEL: f32_fcmp_false: 9709e4ad0SWeining Lu; LA32: # %bb.0: 10709e4ad0SWeining Lu; LA32-NEXT: move $a0, $a1 11*ed078c48SWANG Xuerui; LA32-NEXT: ret 12709e4ad0SWeining Lu; 13709e4ad0SWeining Lu; LA64-LABEL: f32_fcmp_false: 14709e4ad0SWeining Lu; LA64: # %bb.0: 15709e4ad0SWeining Lu; LA64-NEXT: move $a0, $a1 16*ed078c48SWANG Xuerui; LA64-NEXT: ret 17709e4ad0SWeining Lu %cmp = fcmp false float %a, %b 18709e4ad0SWeining Lu %res = select i1 %cmp, i32 %x, i32 %y 19709e4ad0SWeining Lu ret i32 %res 20709e4ad0SWeining Lu} 21709e4ad0SWeining Lu 22709e4ad0SWeining Ludefine i32 @f32_fcmp_oeq(float %a, float %b, i32 %x, i32 %y) { 23709e4ad0SWeining Lu; LA32-LABEL: f32_fcmp_oeq: 24709e4ad0SWeining Lu; LA32: # %bb.0: 25709e4ad0SWeining Lu; LA32-NEXT: fcmp.ceq.s $fcc0, $fa0, $fa1 26709e4ad0SWeining Lu; LA32-NEXT: movcf2gr $a2, $fcc0 27709e4ad0SWeining Lu; LA32-NEXT: masknez $a1, $a1, $a2 28709e4ad0SWeining Lu; LA32-NEXT: maskeqz $a0, $a0, $a2 29709e4ad0SWeining Lu; LA32-NEXT: or $a0, $a0, $a1 30*ed078c48SWANG Xuerui; LA32-NEXT: ret 31709e4ad0SWeining Lu; 32709e4ad0SWeining Lu; LA64-LABEL: f32_fcmp_oeq: 33709e4ad0SWeining Lu; LA64: # %bb.0: 34709e4ad0SWeining Lu; LA64-NEXT: fcmp.ceq.s $fcc0, $fa0, $fa1 35709e4ad0SWeining Lu; LA64-NEXT: movcf2gr $a2, $fcc0 36709e4ad0SWeining Lu; LA64-NEXT: masknez $a1, $a1, $a2 37709e4ad0SWeining Lu; LA64-NEXT: maskeqz $a0, $a0, $a2 38709e4ad0SWeining Lu; LA64-NEXT: or $a0, $a0, $a1 39*ed078c48SWANG Xuerui; LA64-NEXT: ret 40709e4ad0SWeining Lu %cmp = fcmp oeq float %a, %b 41709e4ad0SWeining Lu %res = select i1 %cmp, i32 %x, i32 %y 42709e4ad0SWeining Lu ret i32 %res 43709e4ad0SWeining Lu} 44709e4ad0SWeining Lu 45709e4ad0SWeining Ludefine i32 @f32_fcmp_ogt(float %a, float %b, i32 %x, i32 %y) { 46709e4ad0SWeining Lu; LA32-LABEL: f32_fcmp_ogt: 47709e4ad0SWeining Lu; LA32: # %bb.0: 48709e4ad0SWeining Lu; LA32-NEXT: fcmp.clt.s $fcc0, $fa1, $fa0 49709e4ad0SWeining Lu; LA32-NEXT: movcf2gr $a2, $fcc0 50709e4ad0SWeining Lu; LA32-NEXT: masknez $a1, $a1, $a2 51709e4ad0SWeining Lu; LA32-NEXT: maskeqz $a0, $a0, $a2 52709e4ad0SWeining Lu; LA32-NEXT: or $a0, $a0, $a1 53*ed078c48SWANG Xuerui; LA32-NEXT: ret 54709e4ad0SWeining Lu; 55709e4ad0SWeining Lu; LA64-LABEL: f32_fcmp_ogt: 56709e4ad0SWeining Lu; LA64: # %bb.0: 57709e4ad0SWeining Lu; LA64-NEXT: fcmp.clt.s $fcc0, $fa1, $fa0 58709e4ad0SWeining Lu; LA64-NEXT: movcf2gr $a2, $fcc0 59709e4ad0SWeining Lu; LA64-NEXT: masknez $a1, $a1, $a2 60709e4ad0SWeining Lu; LA64-NEXT: maskeqz $a0, $a0, $a2 61709e4ad0SWeining Lu; LA64-NEXT: or $a0, $a0, $a1 62*ed078c48SWANG Xuerui; LA64-NEXT: ret 63709e4ad0SWeining Lu %cmp = fcmp ogt float %a, %b 64709e4ad0SWeining Lu %res = select i1 %cmp, i32 %x, i32 %y 65709e4ad0SWeining Lu ret i32 %res 66709e4ad0SWeining Lu} 67709e4ad0SWeining Lu 68709e4ad0SWeining Ludefine i32 @f32_fcmp_oge(float %a, float %b, i32 %x, i32 %y) { 69709e4ad0SWeining Lu; LA32-LABEL: f32_fcmp_oge: 70709e4ad0SWeining Lu; LA32: # %bb.0: 71709e4ad0SWeining Lu; LA32-NEXT: fcmp.cle.s $fcc0, $fa1, $fa0 72709e4ad0SWeining Lu; LA32-NEXT: movcf2gr $a2, $fcc0 73709e4ad0SWeining Lu; LA32-NEXT: masknez $a1, $a1, $a2 74709e4ad0SWeining Lu; LA32-NEXT: maskeqz $a0, $a0, $a2 75709e4ad0SWeining Lu; LA32-NEXT: or $a0, $a0, $a1 76*ed078c48SWANG Xuerui; LA32-NEXT: ret 77709e4ad0SWeining Lu; 78709e4ad0SWeining Lu; LA64-LABEL: f32_fcmp_oge: 79709e4ad0SWeining Lu; LA64: # %bb.0: 80709e4ad0SWeining Lu; LA64-NEXT: fcmp.cle.s $fcc0, $fa1, $fa0 81709e4ad0SWeining Lu; LA64-NEXT: movcf2gr $a2, $fcc0 82709e4ad0SWeining Lu; LA64-NEXT: masknez $a1, $a1, $a2 83709e4ad0SWeining Lu; LA64-NEXT: maskeqz $a0, $a0, $a2 84709e4ad0SWeining Lu; LA64-NEXT: or $a0, $a0, $a1 85*ed078c48SWANG Xuerui; LA64-NEXT: ret 86709e4ad0SWeining Lu %cmp = fcmp oge float %a, %b 87709e4ad0SWeining Lu %res = select i1 %cmp, i32 %x, i32 %y 88709e4ad0SWeining Lu ret i32 %res 89709e4ad0SWeining Lu} 90709e4ad0SWeining Lu 91709e4ad0SWeining Ludefine i32 @f32_fcmp_olt(float %a, float %b, i32 %x, i32 %y) { 92709e4ad0SWeining Lu; LA32-LABEL: f32_fcmp_olt: 93709e4ad0SWeining Lu; LA32: # %bb.0: 94709e4ad0SWeining Lu; LA32-NEXT: fcmp.clt.s $fcc0, $fa0, $fa1 95709e4ad0SWeining Lu; LA32-NEXT: movcf2gr $a2, $fcc0 96709e4ad0SWeining Lu; LA32-NEXT: masknez $a1, $a1, $a2 97709e4ad0SWeining Lu; LA32-NEXT: maskeqz $a0, $a0, $a2 98709e4ad0SWeining Lu; LA32-NEXT: or $a0, $a0, $a1 99*ed078c48SWANG Xuerui; LA32-NEXT: ret 100709e4ad0SWeining Lu; 101709e4ad0SWeining Lu; LA64-LABEL: f32_fcmp_olt: 102709e4ad0SWeining Lu; LA64: # %bb.0: 103709e4ad0SWeining Lu; LA64-NEXT: fcmp.clt.s $fcc0, $fa0, $fa1 104709e4ad0SWeining Lu; LA64-NEXT: movcf2gr $a2, $fcc0 105709e4ad0SWeining Lu; LA64-NEXT: masknez $a1, $a1, $a2 106709e4ad0SWeining Lu; LA64-NEXT: maskeqz $a0, $a0, $a2 107709e4ad0SWeining Lu; LA64-NEXT: or $a0, $a0, $a1 108*ed078c48SWANG Xuerui; LA64-NEXT: ret 109709e4ad0SWeining Lu %cmp = fcmp olt float %a, %b 110709e4ad0SWeining Lu %res = select i1 %cmp, i32 %x, i32 %y 111709e4ad0SWeining Lu ret i32 %res 112709e4ad0SWeining Lu} 113709e4ad0SWeining Lu 114709e4ad0SWeining Ludefine i32 @f32_fcmp_ole(float %a, float %b, i32 %x, i32 %y) { 115709e4ad0SWeining Lu; LA32-LABEL: f32_fcmp_ole: 116709e4ad0SWeining Lu; LA32: # %bb.0: 117709e4ad0SWeining Lu; LA32-NEXT: fcmp.cle.s $fcc0, $fa0, $fa1 118709e4ad0SWeining Lu; LA32-NEXT: movcf2gr $a2, $fcc0 119709e4ad0SWeining Lu; LA32-NEXT: masknez $a1, $a1, $a2 120709e4ad0SWeining Lu; LA32-NEXT: maskeqz $a0, $a0, $a2 121709e4ad0SWeining Lu; LA32-NEXT: or $a0, $a0, $a1 122*ed078c48SWANG Xuerui; LA32-NEXT: ret 123709e4ad0SWeining Lu; 124709e4ad0SWeining Lu; LA64-LABEL: f32_fcmp_ole: 125709e4ad0SWeining Lu; LA64: # %bb.0: 126709e4ad0SWeining Lu; LA64-NEXT: fcmp.cle.s $fcc0, $fa0, $fa1 127709e4ad0SWeining Lu; LA64-NEXT: movcf2gr $a2, $fcc0 128709e4ad0SWeining Lu; LA64-NEXT: masknez $a1, $a1, $a2 129709e4ad0SWeining Lu; LA64-NEXT: maskeqz $a0, $a0, $a2 130709e4ad0SWeining Lu; LA64-NEXT: or $a0, $a0, $a1 131*ed078c48SWANG Xuerui; LA64-NEXT: ret 132709e4ad0SWeining Lu %cmp = fcmp ole float %a, %b 133709e4ad0SWeining Lu %res = select i1 %cmp, i32 %x, i32 %y 134709e4ad0SWeining Lu ret i32 %res 135709e4ad0SWeining Lu} 136709e4ad0SWeining Lu 137709e4ad0SWeining Ludefine i32 @f32_fcmp_one(float %a, float %b, i32 %x, i32 %y) { 138709e4ad0SWeining Lu; LA32-LABEL: f32_fcmp_one: 139709e4ad0SWeining Lu; LA32: # %bb.0: 140709e4ad0SWeining Lu; LA32-NEXT: fcmp.cne.s $fcc0, $fa0, $fa1 141709e4ad0SWeining Lu; LA32-NEXT: movcf2gr $a2, $fcc0 142709e4ad0SWeining Lu; LA32-NEXT: masknez $a1, $a1, $a2 143709e4ad0SWeining Lu; LA32-NEXT: maskeqz $a0, $a0, $a2 144709e4ad0SWeining Lu; LA32-NEXT: or $a0, $a0, $a1 145*ed078c48SWANG Xuerui; LA32-NEXT: ret 146709e4ad0SWeining Lu; 147709e4ad0SWeining Lu; LA64-LABEL: f32_fcmp_one: 148709e4ad0SWeining Lu; LA64: # %bb.0: 149709e4ad0SWeining Lu; LA64-NEXT: fcmp.cne.s $fcc0, $fa0, $fa1 150709e4ad0SWeining Lu; LA64-NEXT: movcf2gr $a2, $fcc0 151709e4ad0SWeining Lu; LA64-NEXT: masknez $a1, $a1, $a2 152709e4ad0SWeining Lu; LA64-NEXT: maskeqz $a0, $a0, $a2 153709e4ad0SWeining Lu; LA64-NEXT: or $a0, $a0, $a1 154*ed078c48SWANG Xuerui; LA64-NEXT: ret 155709e4ad0SWeining Lu %cmp = fcmp one float %a, %b 156709e4ad0SWeining Lu %res = select i1 %cmp, i32 %x, i32 %y 157709e4ad0SWeining Lu ret i32 %res 158709e4ad0SWeining Lu} 159709e4ad0SWeining Lu 160709e4ad0SWeining Ludefine i32 @f32_fcmp_ord(float %a, float %b, i32 %x, i32 %y) { 161709e4ad0SWeining Lu; LA32-LABEL: f32_fcmp_ord: 162709e4ad0SWeining Lu; LA32: # %bb.0: 163709e4ad0SWeining Lu; LA32-NEXT: fcmp.cor.s $fcc0, $fa0, $fa1 164709e4ad0SWeining Lu; LA32-NEXT: movcf2gr $a2, $fcc0 165709e4ad0SWeining Lu; LA32-NEXT: masknez $a1, $a1, $a2 166709e4ad0SWeining Lu; LA32-NEXT: maskeqz $a0, $a0, $a2 167709e4ad0SWeining Lu; LA32-NEXT: or $a0, $a0, $a1 168*ed078c48SWANG Xuerui; LA32-NEXT: ret 169709e4ad0SWeining Lu; 170709e4ad0SWeining Lu; LA64-LABEL: f32_fcmp_ord: 171709e4ad0SWeining Lu; LA64: # %bb.0: 172709e4ad0SWeining Lu; LA64-NEXT: fcmp.cor.s $fcc0, $fa0, $fa1 173709e4ad0SWeining Lu; LA64-NEXT: movcf2gr $a2, $fcc0 174709e4ad0SWeining Lu; LA64-NEXT: masknez $a1, $a1, $a2 175709e4ad0SWeining Lu; LA64-NEXT: maskeqz $a0, $a0, $a2 176709e4ad0SWeining Lu; LA64-NEXT: or $a0, $a0, $a1 177*ed078c48SWANG Xuerui; LA64-NEXT: ret 178709e4ad0SWeining Lu %cmp = fcmp ord float %a, %b 179709e4ad0SWeining Lu %res = select i1 %cmp, i32 %x, i32 %y 180709e4ad0SWeining Lu ret i32 %res 181709e4ad0SWeining Lu} 182709e4ad0SWeining Lu 183709e4ad0SWeining Ludefine i32 @f32_fcmp_ueq(float %a, float %b, i32 %x, i32 %y) { 184709e4ad0SWeining Lu; LA32-LABEL: f32_fcmp_ueq: 185709e4ad0SWeining Lu; LA32: # %bb.0: 186709e4ad0SWeining Lu; LA32-NEXT: fcmp.cueq.s $fcc0, $fa0, $fa1 187709e4ad0SWeining Lu; LA32-NEXT: movcf2gr $a2, $fcc0 188709e4ad0SWeining Lu; LA32-NEXT: masknez $a1, $a1, $a2 189709e4ad0SWeining Lu; LA32-NEXT: maskeqz $a0, $a0, $a2 190709e4ad0SWeining Lu; LA32-NEXT: or $a0, $a0, $a1 191*ed078c48SWANG Xuerui; LA32-NEXT: ret 192709e4ad0SWeining Lu; 193709e4ad0SWeining Lu; LA64-LABEL: f32_fcmp_ueq: 194709e4ad0SWeining Lu; LA64: # %bb.0: 195709e4ad0SWeining Lu; LA64-NEXT: fcmp.cueq.s $fcc0, $fa0, $fa1 196709e4ad0SWeining Lu; LA64-NEXT: movcf2gr $a2, $fcc0 197709e4ad0SWeining Lu; LA64-NEXT: masknez $a1, $a1, $a2 198709e4ad0SWeining Lu; LA64-NEXT: maskeqz $a0, $a0, $a2 199709e4ad0SWeining Lu; LA64-NEXT: or $a0, $a0, $a1 200*ed078c48SWANG Xuerui; LA64-NEXT: ret 201709e4ad0SWeining Lu %cmp = fcmp ueq float %a, %b 202709e4ad0SWeining Lu %res = select i1 %cmp, i32 %x, i32 %y 203709e4ad0SWeining Lu ret i32 %res 204709e4ad0SWeining Lu} 205709e4ad0SWeining Lu 206709e4ad0SWeining Ludefine i32 @f32_fcmp_ugt(float %a, float %b, i32 %x, i32 %y) { 207709e4ad0SWeining Lu; LA32-LABEL: f32_fcmp_ugt: 208709e4ad0SWeining Lu; LA32: # %bb.0: 209709e4ad0SWeining Lu; LA32-NEXT: fcmp.cult.s $fcc0, $fa1, $fa0 210709e4ad0SWeining Lu; LA32-NEXT: movcf2gr $a2, $fcc0 211709e4ad0SWeining Lu; LA32-NEXT: masknez $a1, $a1, $a2 212709e4ad0SWeining Lu; LA32-NEXT: maskeqz $a0, $a0, $a2 213709e4ad0SWeining Lu; LA32-NEXT: or $a0, $a0, $a1 214*ed078c48SWANG Xuerui; LA32-NEXT: ret 215709e4ad0SWeining Lu; 216709e4ad0SWeining Lu; LA64-LABEL: f32_fcmp_ugt: 217709e4ad0SWeining Lu; LA64: # %bb.0: 218709e4ad0SWeining Lu; LA64-NEXT: fcmp.cult.s $fcc0, $fa1, $fa0 219709e4ad0SWeining Lu; LA64-NEXT: movcf2gr $a2, $fcc0 220709e4ad0SWeining Lu; LA64-NEXT: masknez $a1, $a1, $a2 221709e4ad0SWeining Lu; LA64-NEXT: maskeqz $a0, $a0, $a2 222709e4ad0SWeining Lu; LA64-NEXT: or $a0, $a0, $a1 223*ed078c48SWANG Xuerui; LA64-NEXT: ret 224709e4ad0SWeining Lu %cmp = fcmp ugt float %a, %b 225709e4ad0SWeining Lu %res = select i1 %cmp, i32 %x, i32 %y 226709e4ad0SWeining Lu ret i32 %res 227709e4ad0SWeining Lu} 228709e4ad0SWeining Lu 229709e4ad0SWeining Ludefine i32 @f32_fcmp_uge(float %a, float %b, i32 %x, i32 %y) { 230709e4ad0SWeining Lu; LA32-LABEL: f32_fcmp_uge: 231709e4ad0SWeining Lu; LA32: # %bb.0: 232709e4ad0SWeining Lu; LA32-NEXT: fcmp.cule.s $fcc0, $fa1, $fa0 233709e4ad0SWeining Lu; LA32-NEXT: movcf2gr $a2, $fcc0 234709e4ad0SWeining Lu; LA32-NEXT: masknez $a1, $a1, $a2 235709e4ad0SWeining Lu; LA32-NEXT: maskeqz $a0, $a0, $a2 236709e4ad0SWeining Lu; LA32-NEXT: or $a0, $a0, $a1 237*ed078c48SWANG Xuerui; LA32-NEXT: ret 238709e4ad0SWeining Lu; 239709e4ad0SWeining Lu; LA64-LABEL: f32_fcmp_uge: 240709e4ad0SWeining Lu; LA64: # %bb.0: 241709e4ad0SWeining Lu; LA64-NEXT: fcmp.cule.s $fcc0, $fa1, $fa0 242709e4ad0SWeining Lu; LA64-NEXT: movcf2gr $a2, $fcc0 243709e4ad0SWeining Lu; LA64-NEXT: masknez $a1, $a1, $a2 244709e4ad0SWeining Lu; LA64-NEXT: maskeqz $a0, $a0, $a2 245709e4ad0SWeining Lu; LA64-NEXT: or $a0, $a0, $a1 246*ed078c48SWANG Xuerui; LA64-NEXT: ret 247709e4ad0SWeining Lu %cmp = fcmp uge float %a, %b 248709e4ad0SWeining Lu %res = select i1 %cmp, i32 %x, i32 %y 249709e4ad0SWeining Lu ret i32 %res 250709e4ad0SWeining Lu} 251709e4ad0SWeining Lu 252709e4ad0SWeining Ludefine i32 @f32_fcmp_ult(float %a, float %b, i32 %x, i32 %y) { 253709e4ad0SWeining Lu; LA32-LABEL: f32_fcmp_ult: 254709e4ad0SWeining Lu; LA32: # %bb.0: 255709e4ad0SWeining Lu; LA32-NEXT: fcmp.cult.s $fcc0, $fa0, $fa1 256709e4ad0SWeining Lu; LA32-NEXT: movcf2gr $a2, $fcc0 257709e4ad0SWeining Lu; LA32-NEXT: masknez $a1, $a1, $a2 258709e4ad0SWeining Lu; LA32-NEXT: maskeqz $a0, $a0, $a2 259709e4ad0SWeining Lu; LA32-NEXT: or $a0, $a0, $a1 260*ed078c48SWANG Xuerui; LA32-NEXT: ret 261709e4ad0SWeining Lu; 262709e4ad0SWeining Lu; LA64-LABEL: f32_fcmp_ult: 263709e4ad0SWeining Lu; LA64: # %bb.0: 264709e4ad0SWeining Lu; LA64-NEXT: fcmp.cult.s $fcc0, $fa0, $fa1 265709e4ad0SWeining Lu; LA64-NEXT: movcf2gr $a2, $fcc0 266709e4ad0SWeining Lu; LA64-NEXT: masknez $a1, $a1, $a2 267709e4ad0SWeining Lu; LA64-NEXT: maskeqz $a0, $a0, $a2 268709e4ad0SWeining Lu; LA64-NEXT: or $a0, $a0, $a1 269*ed078c48SWANG Xuerui; LA64-NEXT: ret 270709e4ad0SWeining Lu %cmp = fcmp ult float %a, %b 271709e4ad0SWeining Lu %res = select i1 %cmp, i32 %x, i32 %y 272709e4ad0SWeining Lu ret i32 %res 273709e4ad0SWeining Lu} 274709e4ad0SWeining Lu 275709e4ad0SWeining Ludefine i32 @f32_fcmp_ule(float %a, float %b, i32 %x, i32 %y) { 276709e4ad0SWeining Lu; LA32-LABEL: f32_fcmp_ule: 277709e4ad0SWeining Lu; LA32: # %bb.0: 278709e4ad0SWeining Lu; LA32-NEXT: fcmp.cule.s $fcc0, $fa0, $fa1 279709e4ad0SWeining Lu; LA32-NEXT: movcf2gr $a2, $fcc0 280709e4ad0SWeining Lu; LA32-NEXT: masknez $a1, $a1, $a2 281709e4ad0SWeining Lu; LA32-NEXT: maskeqz $a0, $a0, $a2 282709e4ad0SWeining Lu; LA32-NEXT: or $a0, $a0, $a1 283*ed078c48SWANG Xuerui; LA32-NEXT: ret 284709e4ad0SWeining Lu; 285709e4ad0SWeining Lu; LA64-LABEL: f32_fcmp_ule: 286709e4ad0SWeining Lu; LA64: # %bb.0: 287709e4ad0SWeining Lu; LA64-NEXT: fcmp.cule.s $fcc0, $fa0, $fa1 288709e4ad0SWeining Lu; LA64-NEXT: movcf2gr $a2, $fcc0 289709e4ad0SWeining Lu; LA64-NEXT: masknez $a1, $a1, $a2 290709e4ad0SWeining Lu; LA64-NEXT: maskeqz $a0, $a0, $a2 291709e4ad0SWeining Lu; LA64-NEXT: or $a0, $a0, $a1 292*ed078c48SWANG Xuerui; LA64-NEXT: ret 293709e4ad0SWeining Lu %cmp = fcmp ule float %a, %b 294709e4ad0SWeining Lu %res = select i1 %cmp, i32 %x, i32 %y 295709e4ad0SWeining Lu ret i32 %res 296709e4ad0SWeining Lu} 297709e4ad0SWeining Lu 298709e4ad0SWeining Ludefine i32 @f32_fcmp_une(float %a, float %b, i32 %x, i32 %y) { 299709e4ad0SWeining Lu; LA32-LABEL: f32_fcmp_une: 300709e4ad0SWeining Lu; LA32: # %bb.0: 301709e4ad0SWeining Lu; LA32-NEXT: fcmp.cune.s $fcc0, $fa0, $fa1 302709e4ad0SWeining Lu; LA32-NEXT: movcf2gr $a2, $fcc0 303709e4ad0SWeining Lu; LA32-NEXT: masknez $a1, $a1, $a2 304709e4ad0SWeining Lu; LA32-NEXT: maskeqz $a0, $a0, $a2 305709e4ad0SWeining Lu; LA32-NEXT: or $a0, $a0, $a1 306*ed078c48SWANG Xuerui; LA32-NEXT: ret 307709e4ad0SWeining Lu; 308709e4ad0SWeining Lu; LA64-LABEL: f32_fcmp_une: 309709e4ad0SWeining Lu; LA64: # %bb.0: 310709e4ad0SWeining Lu; LA64-NEXT: fcmp.cune.s $fcc0, $fa0, $fa1 311709e4ad0SWeining Lu; LA64-NEXT: movcf2gr $a2, $fcc0 312709e4ad0SWeining Lu; LA64-NEXT: masknez $a1, $a1, $a2 313709e4ad0SWeining Lu; LA64-NEXT: maskeqz $a0, $a0, $a2 314709e4ad0SWeining Lu; LA64-NEXT: or $a0, $a0, $a1 315*ed078c48SWANG Xuerui; LA64-NEXT: ret 316709e4ad0SWeining Lu %cmp = fcmp une float %a, %b 317709e4ad0SWeining Lu %res = select i1 %cmp, i32 %x, i32 %y 318709e4ad0SWeining Lu ret i32 %res 319709e4ad0SWeining Lu} 320709e4ad0SWeining Lu 321709e4ad0SWeining Ludefine i32 @f32_fcmp_uno(float %a, float %b, i32 %x, i32 %y) { 322709e4ad0SWeining Lu; LA32-LABEL: f32_fcmp_uno: 323709e4ad0SWeining Lu; LA32: # %bb.0: 324709e4ad0SWeining Lu; LA32-NEXT: fcmp.cun.s $fcc0, $fa0, $fa1 325709e4ad0SWeining Lu; LA32-NEXT: movcf2gr $a2, $fcc0 326709e4ad0SWeining Lu; LA32-NEXT: masknez $a1, $a1, $a2 327709e4ad0SWeining Lu; LA32-NEXT: maskeqz $a0, $a0, $a2 328709e4ad0SWeining Lu; LA32-NEXT: or $a0, $a0, $a1 329*ed078c48SWANG Xuerui; LA32-NEXT: ret 330709e4ad0SWeining Lu; 331709e4ad0SWeining Lu; LA64-LABEL: f32_fcmp_uno: 332709e4ad0SWeining Lu; LA64: # %bb.0: 333709e4ad0SWeining Lu; LA64-NEXT: fcmp.cun.s $fcc0, $fa0, $fa1 334709e4ad0SWeining Lu; LA64-NEXT: movcf2gr $a2, $fcc0 335709e4ad0SWeining Lu; LA64-NEXT: masknez $a1, $a1, $a2 336709e4ad0SWeining Lu; LA64-NEXT: maskeqz $a0, $a0, $a2 337709e4ad0SWeining Lu; LA64-NEXT: or $a0, $a0, $a1 338*ed078c48SWANG Xuerui; LA64-NEXT: ret 339709e4ad0SWeining Lu %cmp = fcmp uno float %a, %b 340709e4ad0SWeining Lu %res = select i1 %cmp, i32 %x, i32 %y 341709e4ad0SWeining Lu ret i32 %res 342709e4ad0SWeining Lu} 343709e4ad0SWeining Lu 344709e4ad0SWeining Ludefine i32 @f32_fcmp_true(float %a, float %b, i32 %x, i32 %y) { 345709e4ad0SWeining Lu; LA32-LABEL: f32_fcmp_true: 346709e4ad0SWeining Lu; LA32: # %bb.0: 347*ed078c48SWANG Xuerui; LA32-NEXT: ret 348709e4ad0SWeining Lu; 349709e4ad0SWeining Lu; LA64-LABEL: f32_fcmp_true: 350709e4ad0SWeining Lu; LA64: # %bb.0: 351*ed078c48SWANG Xuerui; LA64-NEXT: ret 352709e4ad0SWeining Lu %cmp = fcmp true float %a, %b 353709e4ad0SWeining Lu %res = select i1 %cmp, i32 %x, i32 %y 354709e4ad0SWeining Lu ret i32 %res 355709e4ad0SWeining Lu} 356709e4ad0SWeining Lu 357709e4ad0SWeining Ludefine i32 @f64_fcmp_false(double %a, double %b, i32 %x, i32 %y) { 358709e4ad0SWeining Lu; LA32-LABEL: f64_fcmp_false: 359709e4ad0SWeining Lu; LA32: # %bb.0: 360709e4ad0SWeining Lu; LA32-NEXT: move $a0, $a1 361*ed078c48SWANG Xuerui; LA32-NEXT: ret 362709e4ad0SWeining Lu; 363709e4ad0SWeining Lu; LA64-LABEL: f64_fcmp_false: 364709e4ad0SWeining Lu; LA64: # %bb.0: 365709e4ad0SWeining Lu; LA64-NEXT: move $a0, $a1 366*ed078c48SWANG Xuerui; LA64-NEXT: ret 367709e4ad0SWeining Lu %cmp = fcmp false double %a, %b 368709e4ad0SWeining Lu %res = select i1 %cmp, i32 %x, i32 %y 369709e4ad0SWeining Lu ret i32 %res 370709e4ad0SWeining Lu} 371709e4ad0SWeining Lu 372709e4ad0SWeining Ludefine i32 @f64_fcmp_oeq(double %a, double %b, i32 %x, i32 %y) { 373709e4ad0SWeining Lu; LA32-LABEL: f64_fcmp_oeq: 374709e4ad0SWeining Lu; LA32: # %bb.0: 375709e4ad0SWeining Lu; LA32-NEXT: fcmp.ceq.d $fcc0, $fa0, $fa1 376709e4ad0SWeining Lu; LA32-NEXT: movcf2gr $a2, $fcc0 377709e4ad0SWeining Lu; LA32-NEXT: masknez $a1, $a1, $a2 378709e4ad0SWeining Lu; LA32-NEXT: maskeqz $a0, $a0, $a2 379709e4ad0SWeining Lu; LA32-NEXT: or $a0, $a0, $a1 380*ed078c48SWANG Xuerui; LA32-NEXT: ret 381709e4ad0SWeining Lu; 382709e4ad0SWeining Lu; LA64-LABEL: f64_fcmp_oeq: 383709e4ad0SWeining Lu; LA64: # %bb.0: 384709e4ad0SWeining Lu; LA64-NEXT: fcmp.ceq.d $fcc0, $fa0, $fa1 385709e4ad0SWeining Lu; LA64-NEXT: movcf2gr $a2, $fcc0 386709e4ad0SWeining Lu; LA64-NEXT: masknez $a1, $a1, $a2 387709e4ad0SWeining Lu; LA64-NEXT: maskeqz $a0, $a0, $a2 388709e4ad0SWeining Lu; LA64-NEXT: or $a0, $a0, $a1 389*ed078c48SWANG Xuerui; LA64-NEXT: ret 390709e4ad0SWeining Lu %cmp = fcmp oeq double %a, %b 391709e4ad0SWeining Lu %res = select i1 %cmp, i32 %x, i32 %y 392709e4ad0SWeining Lu ret i32 %res 393709e4ad0SWeining Lu} 394709e4ad0SWeining Lu 395709e4ad0SWeining Ludefine i32 @f64_fcmp_ogt(double %a, double %b, i32 %x, i32 %y) { 396709e4ad0SWeining Lu; LA32-LABEL: f64_fcmp_ogt: 397709e4ad0SWeining Lu; LA32: # %bb.0: 398709e4ad0SWeining Lu; LA32-NEXT: fcmp.clt.d $fcc0, $fa1, $fa0 399709e4ad0SWeining Lu; LA32-NEXT: movcf2gr $a2, $fcc0 400709e4ad0SWeining Lu; LA32-NEXT: masknez $a1, $a1, $a2 401709e4ad0SWeining Lu; LA32-NEXT: maskeqz $a0, $a0, $a2 402709e4ad0SWeining Lu; LA32-NEXT: or $a0, $a0, $a1 403*ed078c48SWANG Xuerui; LA32-NEXT: ret 404709e4ad0SWeining Lu; 405709e4ad0SWeining Lu; LA64-LABEL: f64_fcmp_ogt: 406709e4ad0SWeining Lu; LA64: # %bb.0: 407709e4ad0SWeining Lu; LA64-NEXT: fcmp.clt.d $fcc0, $fa1, $fa0 408709e4ad0SWeining Lu; LA64-NEXT: movcf2gr $a2, $fcc0 409709e4ad0SWeining Lu; LA64-NEXT: masknez $a1, $a1, $a2 410709e4ad0SWeining Lu; LA64-NEXT: maskeqz $a0, $a0, $a2 411709e4ad0SWeining Lu; LA64-NEXT: or $a0, $a0, $a1 412*ed078c48SWANG Xuerui; LA64-NEXT: ret 413709e4ad0SWeining Lu %cmp = fcmp ogt double %a, %b 414709e4ad0SWeining Lu %res = select i1 %cmp, i32 %x, i32 %y 415709e4ad0SWeining Lu ret i32 %res 416709e4ad0SWeining Lu} 417709e4ad0SWeining Lu 418709e4ad0SWeining Ludefine i32 @f64_fcmp_oge(double %a, double %b, i32 %x, i32 %y) { 419709e4ad0SWeining Lu; LA32-LABEL: f64_fcmp_oge: 420709e4ad0SWeining Lu; LA32: # %bb.0: 421709e4ad0SWeining Lu; LA32-NEXT: fcmp.cle.d $fcc0, $fa1, $fa0 422709e4ad0SWeining Lu; LA32-NEXT: movcf2gr $a2, $fcc0 423709e4ad0SWeining Lu; LA32-NEXT: masknez $a1, $a1, $a2 424709e4ad0SWeining Lu; LA32-NEXT: maskeqz $a0, $a0, $a2 425709e4ad0SWeining Lu; LA32-NEXT: or $a0, $a0, $a1 426*ed078c48SWANG Xuerui; LA32-NEXT: ret 427709e4ad0SWeining Lu; 428709e4ad0SWeining Lu; LA64-LABEL: f64_fcmp_oge: 429709e4ad0SWeining Lu; LA64: # %bb.0: 430709e4ad0SWeining Lu; LA64-NEXT: fcmp.cle.d $fcc0, $fa1, $fa0 431709e4ad0SWeining Lu; LA64-NEXT: movcf2gr $a2, $fcc0 432709e4ad0SWeining Lu; LA64-NEXT: masknez $a1, $a1, $a2 433709e4ad0SWeining Lu; LA64-NEXT: maskeqz $a0, $a0, $a2 434709e4ad0SWeining Lu; LA64-NEXT: or $a0, $a0, $a1 435*ed078c48SWANG Xuerui; LA64-NEXT: ret 436709e4ad0SWeining Lu %cmp = fcmp oge double %a, %b 437709e4ad0SWeining Lu %res = select i1 %cmp, i32 %x, i32 %y 438709e4ad0SWeining Lu ret i32 %res 439709e4ad0SWeining Lu} 440709e4ad0SWeining Lu 441709e4ad0SWeining Ludefine i32 @f64_fcmp_olt(double %a, double %b, i32 %x, i32 %y) { 442709e4ad0SWeining Lu; LA32-LABEL: f64_fcmp_olt: 443709e4ad0SWeining Lu; LA32: # %bb.0: 444709e4ad0SWeining Lu; LA32-NEXT: fcmp.clt.d $fcc0, $fa0, $fa1 445709e4ad0SWeining Lu; LA32-NEXT: movcf2gr $a2, $fcc0 446709e4ad0SWeining Lu; LA32-NEXT: masknez $a1, $a1, $a2 447709e4ad0SWeining Lu; LA32-NEXT: maskeqz $a0, $a0, $a2 448709e4ad0SWeining Lu; LA32-NEXT: or $a0, $a0, $a1 449*ed078c48SWANG Xuerui; LA32-NEXT: ret 450709e4ad0SWeining Lu; 451709e4ad0SWeining Lu; LA64-LABEL: f64_fcmp_olt: 452709e4ad0SWeining Lu; LA64: # %bb.0: 453709e4ad0SWeining Lu; LA64-NEXT: fcmp.clt.d $fcc0, $fa0, $fa1 454709e4ad0SWeining Lu; LA64-NEXT: movcf2gr $a2, $fcc0 455709e4ad0SWeining Lu; LA64-NEXT: masknez $a1, $a1, $a2 456709e4ad0SWeining Lu; LA64-NEXT: maskeqz $a0, $a0, $a2 457709e4ad0SWeining Lu; LA64-NEXT: or $a0, $a0, $a1 458*ed078c48SWANG Xuerui; LA64-NEXT: ret 459709e4ad0SWeining Lu %cmp = fcmp olt double %a, %b 460709e4ad0SWeining Lu %res = select i1 %cmp, i32 %x, i32 %y 461709e4ad0SWeining Lu ret i32 %res 462709e4ad0SWeining Lu} 463709e4ad0SWeining Lu 464709e4ad0SWeining Ludefine i32 @f64_fcmp_ole(double %a, double %b, i32 %x, i32 %y) { 465709e4ad0SWeining Lu; LA32-LABEL: f64_fcmp_ole: 466709e4ad0SWeining Lu; LA32: # %bb.0: 467709e4ad0SWeining Lu; LA32-NEXT: fcmp.cle.d $fcc0, $fa0, $fa1 468709e4ad0SWeining Lu; LA32-NEXT: movcf2gr $a2, $fcc0 469709e4ad0SWeining Lu; LA32-NEXT: masknez $a1, $a1, $a2 470709e4ad0SWeining Lu; LA32-NEXT: maskeqz $a0, $a0, $a2 471709e4ad0SWeining Lu; LA32-NEXT: or $a0, $a0, $a1 472*ed078c48SWANG Xuerui; LA32-NEXT: ret 473709e4ad0SWeining Lu; 474709e4ad0SWeining Lu; LA64-LABEL: f64_fcmp_ole: 475709e4ad0SWeining Lu; LA64: # %bb.0: 476709e4ad0SWeining Lu; LA64-NEXT: fcmp.cle.d $fcc0, $fa0, $fa1 477709e4ad0SWeining Lu; LA64-NEXT: movcf2gr $a2, $fcc0 478709e4ad0SWeining Lu; LA64-NEXT: masknez $a1, $a1, $a2 479709e4ad0SWeining Lu; LA64-NEXT: maskeqz $a0, $a0, $a2 480709e4ad0SWeining Lu; LA64-NEXT: or $a0, $a0, $a1 481*ed078c48SWANG Xuerui; LA64-NEXT: ret 482709e4ad0SWeining Lu %cmp = fcmp ole double %a, %b 483709e4ad0SWeining Lu %res = select i1 %cmp, i32 %x, i32 %y 484709e4ad0SWeining Lu ret i32 %res 485709e4ad0SWeining Lu} 486709e4ad0SWeining Lu 487709e4ad0SWeining Ludefine i32 @f64_fcmp_one(double %a, double %b, i32 %x, i32 %y) { 488709e4ad0SWeining Lu; LA32-LABEL: f64_fcmp_one: 489709e4ad0SWeining Lu; LA32: # %bb.0: 490709e4ad0SWeining Lu; LA32-NEXT: fcmp.cne.d $fcc0, $fa0, $fa1 491709e4ad0SWeining Lu; LA32-NEXT: movcf2gr $a2, $fcc0 492709e4ad0SWeining Lu; LA32-NEXT: masknez $a1, $a1, $a2 493709e4ad0SWeining Lu; LA32-NEXT: maskeqz $a0, $a0, $a2 494709e4ad0SWeining Lu; LA32-NEXT: or $a0, $a0, $a1 495*ed078c48SWANG Xuerui; LA32-NEXT: ret 496709e4ad0SWeining Lu; 497709e4ad0SWeining Lu; LA64-LABEL: f64_fcmp_one: 498709e4ad0SWeining Lu; LA64: # %bb.0: 499709e4ad0SWeining Lu; LA64-NEXT: fcmp.cne.d $fcc0, $fa0, $fa1 500709e4ad0SWeining Lu; LA64-NEXT: movcf2gr $a2, $fcc0 501709e4ad0SWeining Lu; LA64-NEXT: masknez $a1, $a1, $a2 502709e4ad0SWeining Lu; LA64-NEXT: maskeqz $a0, $a0, $a2 503709e4ad0SWeining Lu; LA64-NEXT: or $a0, $a0, $a1 504*ed078c48SWANG Xuerui; LA64-NEXT: ret 505709e4ad0SWeining Lu %cmp = fcmp one double %a, %b 506709e4ad0SWeining Lu %res = select i1 %cmp, i32 %x, i32 %y 507709e4ad0SWeining Lu ret i32 %res 508709e4ad0SWeining Lu} 509709e4ad0SWeining Lu 510709e4ad0SWeining Ludefine i32 @f64_fcmp_ord(double %a, double %b, i32 %x, i32 %y) { 511709e4ad0SWeining Lu; LA32-LABEL: f64_fcmp_ord: 512709e4ad0SWeining Lu; LA32: # %bb.0: 513709e4ad0SWeining Lu; LA32-NEXT: fcmp.cor.d $fcc0, $fa0, $fa1 514709e4ad0SWeining Lu; LA32-NEXT: movcf2gr $a2, $fcc0 515709e4ad0SWeining Lu; LA32-NEXT: masknez $a1, $a1, $a2 516709e4ad0SWeining Lu; LA32-NEXT: maskeqz $a0, $a0, $a2 517709e4ad0SWeining Lu; LA32-NEXT: or $a0, $a0, $a1 518*ed078c48SWANG Xuerui; LA32-NEXT: ret 519709e4ad0SWeining Lu; 520709e4ad0SWeining Lu; LA64-LABEL: f64_fcmp_ord: 521709e4ad0SWeining Lu; LA64: # %bb.0: 522709e4ad0SWeining Lu; LA64-NEXT: fcmp.cor.d $fcc0, $fa0, $fa1 523709e4ad0SWeining Lu; LA64-NEXT: movcf2gr $a2, $fcc0 524709e4ad0SWeining Lu; LA64-NEXT: masknez $a1, $a1, $a2 525709e4ad0SWeining Lu; LA64-NEXT: maskeqz $a0, $a0, $a2 526709e4ad0SWeining Lu; LA64-NEXT: or $a0, $a0, $a1 527*ed078c48SWANG Xuerui; LA64-NEXT: ret 528709e4ad0SWeining Lu %cmp = fcmp ord double %a, %b 529709e4ad0SWeining Lu %res = select i1 %cmp, i32 %x, i32 %y 530709e4ad0SWeining Lu ret i32 %res 531709e4ad0SWeining Lu} 532709e4ad0SWeining Lu 533709e4ad0SWeining Ludefine i32 @f64_fcmp_ueq(double %a, double %b, i32 %x, i32 %y) { 534709e4ad0SWeining Lu; LA32-LABEL: f64_fcmp_ueq: 535709e4ad0SWeining Lu; LA32: # %bb.0: 536709e4ad0SWeining Lu; LA32-NEXT: fcmp.cueq.d $fcc0, $fa0, $fa1 537709e4ad0SWeining Lu; LA32-NEXT: movcf2gr $a2, $fcc0 538709e4ad0SWeining Lu; LA32-NEXT: masknez $a1, $a1, $a2 539709e4ad0SWeining Lu; LA32-NEXT: maskeqz $a0, $a0, $a2 540709e4ad0SWeining Lu; LA32-NEXT: or $a0, $a0, $a1 541*ed078c48SWANG Xuerui; LA32-NEXT: ret 542709e4ad0SWeining Lu; 543709e4ad0SWeining Lu; LA64-LABEL: f64_fcmp_ueq: 544709e4ad0SWeining Lu; LA64: # %bb.0: 545709e4ad0SWeining Lu; LA64-NEXT: fcmp.cueq.d $fcc0, $fa0, $fa1 546709e4ad0SWeining Lu; LA64-NEXT: movcf2gr $a2, $fcc0 547709e4ad0SWeining Lu; LA64-NEXT: masknez $a1, $a1, $a2 548709e4ad0SWeining Lu; LA64-NEXT: maskeqz $a0, $a0, $a2 549709e4ad0SWeining Lu; LA64-NEXT: or $a0, $a0, $a1 550*ed078c48SWANG Xuerui; LA64-NEXT: ret 551709e4ad0SWeining Lu %cmp = fcmp ueq double %a, %b 552709e4ad0SWeining Lu %res = select i1 %cmp, i32 %x, i32 %y 553709e4ad0SWeining Lu ret i32 %res 554709e4ad0SWeining Lu} 555709e4ad0SWeining Lu 556709e4ad0SWeining Ludefine i32 @f64_fcmp_ugt(double %a, double %b, i32 %x, i32 %y) { 557709e4ad0SWeining Lu; LA32-LABEL: f64_fcmp_ugt: 558709e4ad0SWeining Lu; LA32: # %bb.0: 559709e4ad0SWeining Lu; LA32-NEXT: fcmp.cult.d $fcc0, $fa1, $fa0 560709e4ad0SWeining Lu; LA32-NEXT: movcf2gr $a2, $fcc0 561709e4ad0SWeining Lu; LA32-NEXT: masknez $a1, $a1, $a2 562709e4ad0SWeining Lu; LA32-NEXT: maskeqz $a0, $a0, $a2 563709e4ad0SWeining Lu; LA32-NEXT: or $a0, $a0, $a1 564*ed078c48SWANG Xuerui; LA32-NEXT: ret 565709e4ad0SWeining Lu; 566709e4ad0SWeining Lu; LA64-LABEL: f64_fcmp_ugt: 567709e4ad0SWeining Lu; LA64: # %bb.0: 568709e4ad0SWeining Lu; LA64-NEXT: fcmp.cult.d $fcc0, $fa1, $fa0 569709e4ad0SWeining Lu; LA64-NEXT: movcf2gr $a2, $fcc0 570709e4ad0SWeining Lu; LA64-NEXT: masknez $a1, $a1, $a2 571709e4ad0SWeining Lu; LA64-NEXT: maskeqz $a0, $a0, $a2 572709e4ad0SWeining Lu; LA64-NEXT: or $a0, $a0, $a1 573*ed078c48SWANG Xuerui; LA64-NEXT: ret 574709e4ad0SWeining Lu %cmp = fcmp ugt double %a, %b 575709e4ad0SWeining Lu %res = select i1 %cmp, i32 %x, i32 %y 576709e4ad0SWeining Lu ret i32 %res 577709e4ad0SWeining Lu} 578709e4ad0SWeining Lu 579709e4ad0SWeining Ludefine i32 @f64_fcmp_uge(double %a, double %b, i32 %x, i32 %y) { 580709e4ad0SWeining Lu; LA32-LABEL: f64_fcmp_uge: 581709e4ad0SWeining Lu; LA32: # %bb.0: 582709e4ad0SWeining Lu; LA32-NEXT: fcmp.cule.d $fcc0, $fa1, $fa0 583709e4ad0SWeining Lu; LA32-NEXT: movcf2gr $a2, $fcc0 584709e4ad0SWeining Lu; LA32-NEXT: masknez $a1, $a1, $a2 585709e4ad0SWeining Lu; LA32-NEXT: maskeqz $a0, $a0, $a2 586709e4ad0SWeining Lu; LA32-NEXT: or $a0, $a0, $a1 587*ed078c48SWANG Xuerui; LA32-NEXT: ret 588709e4ad0SWeining Lu; 589709e4ad0SWeining Lu; LA64-LABEL: f64_fcmp_uge: 590709e4ad0SWeining Lu; LA64: # %bb.0: 591709e4ad0SWeining Lu; LA64-NEXT: fcmp.cule.d $fcc0, $fa1, $fa0 592709e4ad0SWeining Lu; LA64-NEXT: movcf2gr $a2, $fcc0 593709e4ad0SWeining Lu; LA64-NEXT: masknez $a1, $a1, $a2 594709e4ad0SWeining Lu; LA64-NEXT: maskeqz $a0, $a0, $a2 595709e4ad0SWeining Lu; LA64-NEXT: or $a0, $a0, $a1 596*ed078c48SWANG Xuerui; LA64-NEXT: ret 597709e4ad0SWeining Lu %cmp = fcmp uge double %a, %b 598709e4ad0SWeining Lu %res = select i1 %cmp, i32 %x, i32 %y 599709e4ad0SWeining Lu ret i32 %res 600709e4ad0SWeining Lu} 601709e4ad0SWeining Lu 602709e4ad0SWeining Ludefine i32 @f64_fcmp_ult(double %a, double %b, i32 %x, i32 %y) { 603709e4ad0SWeining Lu; LA32-LABEL: f64_fcmp_ult: 604709e4ad0SWeining Lu; LA32: # %bb.0: 605709e4ad0SWeining Lu; LA32-NEXT: fcmp.cult.d $fcc0, $fa0, $fa1 606709e4ad0SWeining Lu; LA32-NEXT: movcf2gr $a2, $fcc0 607709e4ad0SWeining Lu; LA32-NEXT: masknez $a1, $a1, $a2 608709e4ad0SWeining Lu; LA32-NEXT: maskeqz $a0, $a0, $a2 609709e4ad0SWeining Lu; LA32-NEXT: or $a0, $a0, $a1 610*ed078c48SWANG Xuerui; LA32-NEXT: ret 611709e4ad0SWeining Lu; 612709e4ad0SWeining Lu; LA64-LABEL: f64_fcmp_ult: 613709e4ad0SWeining Lu; LA64: # %bb.0: 614709e4ad0SWeining Lu; LA64-NEXT: fcmp.cult.d $fcc0, $fa0, $fa1 615709e4ad0SWeining Lu; LA64-NEXT: movcf2gr $a2, $fcc0 616709e4ad0SWeining Lu; LA64-NEXT: masknez $a1, $a1, $a2 617709e4ad0SWeining Lu; LA64-NEXT: maskeqz $a0, $a0, $a2 618709e4ad0SWeining Lu; LA64-NEXT: or $a0, $a0, $a1 619*ed078c48SWANG Xuerui; LA64-NEXT: ret 620709e4ad0SWeining Lu %cmp = fcmp ult double %a, %b 621709e4ad0SWeining Lu %res = select i1 %cmp, i32 %x, i32 %y 622709e4ad0SWeining Lu ret i32 %res 623709e4ad0SWeining Lu} 624709e4ad0SWeining Lu 625709e4ad0SWeining Ludefine i32 @f64_fcmp_ule(double %a, double %b, i32 %x, i32 %y) { 626709e4ad0SWeining Lu; LA32-LABEL: f64_fcmp_ule: 627709e4ad0SWeining Lu; LA32: # %bb.0: 628709e4ad0SWeining Lu; LA32-NEXT: fcmp.cule.d $fcc0, $fa0, $fa1 629709e4ad0SWeining Lu; LA32-NEXT: movcf2gr $a2, $fcc0 630709e4ad0SWeining Lu; LA32-NEXT: masknez $a1, $a1, $a2 631709e4ad0SWeining Lu; LA32-NEXT: maskeqz $a0, $a0, $a2 632709e4ad0SWeining Lu; LA32-NEXT: or $a0, $a0, $a1 633*ed078c48SWANG Xuerui; LA32-NEXT: ret 634709e4ad0SWeining Lu; 635709e4ad0SWeining Lu; LA64-LABEL: f64_fcmp_ule: 636709e4ad0SWeining Lu; LA64: # %bb.0: 637709e4ad0SWeining Lu; LA64-NEXT: fcmp.cule.d $fcc0, $fa0, $fa1 638709e4ad0SWeining Lu; LA64-NEXT: movcf2gr $a2, $fcc0 639709e4ad0SWeining Lu; LA64-NEXT: masknez $a1, $a1, $a2 640709e4ad0SWeining Lu; LA64-NEXT: maskeqz $a0, $a0, $a2 641709e4ad0SWeining Lu; LA64-NEXT: or $a0, $a0, $a1 642*ed078c48SWANG Xuerui; LA64-NEXT: ret 643709e4ad0SWeining Lu %cmp = fcmp ule double %a, %b 644709e4ad0SWeining Lu %res = select i1 %cmp, i32 %x, i32 %y 645709e4ad0SWeining Lu ret i32 %res 646709e4ad0SWeining Lu} 647709e4ad0SWeining Lu 648709e4ad0SWeining Ludefine i32 @f64_fcmp_une(double %a, double %b, i32 %x, i32 %y) { 649709e4ad0SWeining Lu; LA32-LABEL: f64_fcmp_une: 650709e4ad0SWeining Lu; LA32: # %bb.0: 651709e4ad0SWeining Lu; LA32-NEXT: fcmp.cune.d $fcc0, $fa0, $fa1 652709e4ad0SWeining Lu; LA32-NEXT: movcf2gr $a2, $fcc0 653709e4ad0SWeining Lu; LA32-NEXT: masknez $a1, $a1, $a2 654709e4ad0SWeining Lu; LA32-NEXT: maskeqz $a0, $a0, $a2 655709e4ad0SWeining Lu; LA32-NEXT: or $a0, $a0, $a1 656*ed078c48SWANG Xuerui; LA32-NEXT: ret 657709e4ad0SWeining Lu; 658709e4ad0SWeining Lu; LA64-LABEL: f64_fcmp_une: 659709e4ad0SWeining Lu; LA64: # %bb.0: 660709e4ad0SWeining Lu; LA64-NEXT: fcmp.cune.d $fcc0, $fa0, $fa1 661709e4ad0SWeining Lu; LA64-NEXT: movcf2gr $a2, $fcc0 662709e4ad0SWeining Lu; LA64-NEXT: masknez $a1, $a1, $a2 663709e4ad0SWeining Lu; LA64-NEXT: maskeqz $a0, $a0, $a2 664709e4ad0SWeining Lu; LA64-NEXT: or $a0, $a0, $a1 665*ed078c48SWANG Xuerui; LA64-NEXT: ret 666709e4ad0SWeining Lu %cmp = fcmp une double %a, %b 667709e4ad0SWeining Lu %res = select i1 %cmp, i32 %x, i32 %y 668709e4ad0SWeining Lu ret i32 %res 669709e4ad0SWeining Lu} 670709e4ad0SWeining Lu 671709e4ad0SWeining Ludefine i32 @f64_fcmp_uno(double %a, double %b, i32 %x, i32 %y) { 672709e4ad0SWeining Lu; LA32-LABEL: f64_fcmp_uno: 673709e4ad0SWeining Lu; LA32: # %bb.0: 674709e4ad0SWeining Lu; LA32-NEXT: fcmp.cun.d $fcc0, $fa0, $fa1 675709e4ad0SWeining Lu; LA32-NEXT: movcf2gr $a2, $fcc0 676709e4ad0SWeining Lu; LA32-NEXT: masknez $a1, $a1, $a2 677709e4ad0SWeining Lu; LA32-NEXT: maskeqz $a0, $a0, $a2 678709e4ad0SWeining Lu; LA32-NEXT: or $a0, $a0, $a1 679*ed078c48SWANG Xuerui; LA32-NEXT: ret 680709e4ad0SWeining Lu; 681709e4ad0SWeining Lu; LA64-LABEL: f64_fcmp_uno: 682709e4ad0SWeining Lu; LA64: # %bb.0: 683709e4ad0SWeining Lu; LA64-NEXT: fcmp.cun.d $fcc0, $fa0, $fa1 684709e4ad0SWeining Lu; LA64-NEXT: movcf2gr $a2, $fcc0 685709e4ad0SWeining Lu; LA64-NEXT: masknez $a1, $a1, $a2 686709e4ad0SWeining Lu; LA64-NEXT: maskeqz $a0, $a0, $a2 687709e4ad0SWeining Lu; LA64-NEXT: or $a0, $a0, $a1 688*ed078c48SWANG Xuerui; LA64-NEXT: ret 689709e4ad0SWeining Lu %cmp = fcmp uno double %a, %b 690709e4ad0SWeining Lu %res = select i1 %cmp, i32 %x, i32 %y 691709e4ad0SWeining Lu ret i32 %res 692709e4ad0SWeining Lu} 693709e4ad0SWeining Lu 694709e4ad0SWeining Ludefine i32 @f64_fcmp_true(double %a, double %b, i32 %x, i32 %y) { 695709e4ad0SWeining Lu; LA32-LABEL: f64_fcmp_true: 696709e4ad0SWeining Lu; LA32: # %bb.0: 697*ed078c48SWANG Xuerui; LA32-NEXT: ret 698709e4ad0SWeining Lu; 699709e4ad0SWeining Lu; LA64-LABEL: f64_fcmp_true: 700709e4ad0SWeining Lu; LA64: # %bb.0: 701*ed078c48SWANG Xuerui; LA64-NEXT: ret 702709e4ad0SWeining Lu %cmp = fcmp true double %a, %b 703709e4ad0SWeining Lu %res = select i1 %cmp, i32 %x, i32 %y 704709e4ad0SWeining Lu ret i32 %res 705709e4ad0SWeining Lu} 706