294 lines · plain
1; RUN: llc -aarch64-enable-atomic-cfg-tidy=0 -mtriple=aarch64-apple-darwin < %s | FileCheck %s2; RUN: llc -fast-isel -fast-isel-abort=1 -aarch64-enable-atomic-cfg-tidy=0 -mtriple=aarch64-apple-darwin < %s | FileCheck %s3 4define i32 @fcmp_oeq(float %x, float %y) {5; CHECK-LABEL: fcmp_oeq6; CHECK: fcmp s0, s17; CHECK-NEXT: b.ne {{LBB.+_2}}8 %1 = fcmp oeq float %x, %y9 br i1 %1, label %bb1, label %bb210bb2:11 ret i32 112bb1:13 ret i32 014}15 16define i32 @fcmp_ogt(float %x, float %y) {17; CHECK-LABEL: fcmp_ogt18; CHECK: fcmp s0, s119; CHECK-NEXT: b.le {{LBB.+_2}}20 %1 = fcmp ogt float %x, %y21 br i1 %1, label %bb1, label %bb222bb2:23 ret i32 124bb1:25 ret i32 026}27 28define i32 @fcmp_oge(float %x, float %y) {29; CHECK-LABEL: fcmp_oge30; CHECK: fcmp s0, s131; CHECK-NEXT: b.lt {{LBB.+_2}}32 %1 = fcmp oge float %x, %y33 br i1 %1, label %bb1, label %bb234bb2:35 ret i32 136bb1:37 ret i32 038}39 40define i32 @fcmp_olt(float %x, float %y) {41; CHECK-LABEL: fcmp_olt42; CHECK: fcmp s0, s143; CHECK-NEXT: b.pl {{LBB.+_2}}44 %1 = fcmp olt float %x, %y45 br i1 %1, label %bb1, label %bb246bb2:47 ret i32 148bb1:49 ret i32 050}51 52define i32 @fcmp_ole(float %x, float %y) {53; CHECK-LABEL: fcmp_ole54; CHECK: fcmp s0, s155; CHECK-NEXT: b.hi {{LBB.+_2}}56 %1 = fcmp ole float %x, %y57 br i1 %1, label %bb1, label %bb258bb2:59 ret i32 160bb1:61 ret i32 062}63 64define i32 @fcmp_one(float %x, float %y) {65; CHECK-LABEL: fcmp_one66; CHECK: fcmp s0, s167; CHECK-NEXT: b.mi68; CHECK-NEXT: b.gt69 %1 = fcmp one float %x, %y70 br i1 %1, label %bb1, label %bb271bb2:72 ret i32 173bb1:74 ret i32 075}76 77define i32 @fcmp_ord(float %x, float %y) {78; CHECK-LABEL: fcmp_ord79; CHECK: fcmp s0, s180; CHECK-NEXT: b.vs {{LBB.+_2}}81 %1 = fcmp ord float %x, %y82 br i1 %1, label %bb1, label %bb283bb2:84 ret i32 185bb1:86 ret i32 087}88 89define i32 @fcmp_uno(float %x, float %y) {90; CHECK-LABEL: fcmp_uno91; CHECK: fcmp s0, s192; CHECK-NEXT: b.vs {{LBB.+_2}}93 %1 = fcmp uno float %x, %y94 br i1 %1, label %bb1, label %bb295bb2:96 ret i32 197bb1:98 ret i32 099}100 101define i32 @fcmp_ueq(float %x, float %y) {102; CHECK-LABEL: fcmp_ueq103; CHECK: fcmp s0, s1104; CHECK-NEXT: b.eq {{LBB.+_2}}105; CHECK-NEXT: b.vs {{LBB.+_2}}106 %1 = fcmp ueq float %x, %y107 br i1 %1, label %bb1, label %bb2108bb2:109 ret i32 1110bb1:111 ret i32 0112}113 114define i32 @fcmp_ugt(float %x, float %y) {115; CHECK-LABEL: fcmp_ugt116; CHECK: fcmp s0, s1117; CHECK-NEXT: b.ls {{LBB.+_2}}118 %1 = fcmp ugt float %x, %y119 br i1 %1, label %bb1, label %bb2120bb2:121 ret i32 1122bb1:123 ret i32 0124}125 126define i32 @fcmp_uge(float %x, float %y) {127; CHECK-LABEL: fcmp_uge128; CHECK: fcmp s0, s1129; CHECK-NEXT: b.mi {{LBB.+_2}}130 %1 = fcmp uge float %x, %y131 br i1 %1, label %bb1, label %bb2132bb2:133 ret i32 1134bb1:135 ret i32 0136}137 138define i32 @fcmp_ult(float %x, float %y) {139; CHECK-LABEL: fcmp_ult140; CHECK: fcmp s0, s1141; CHECK-NEXT: b.ge {{LBB.+_2}}142 %1 = fcmp ult float %x, %y143 br i1 %1, label %bb1, label %bb2144bb2:145 ret i32 1146bb1:147 ret i32 0148}149 150define i32 @fcmp_ule(float %x, float %y) {151; CHECK-LABEL: fcmp_ule152; CHECK: fcmp s0, s1153; CHECK-NEXT: b.gt {{LBB.+_2}}154 %1 = fcmp ule float %x, %y155 br i1 %1, label %bb1, label %bb2156bb2:157 ret i32 1158bb1:159 ret i32 0160}161 162define i32 @fcmp_une(float %x, float %y) {163; CHECK-LABEL: fcmp_une164; CHECK: fcmp s0, s1165; CHECK-NEXT: b.eq {{LBB.+_2}}166 %1 = fcmp une float %x, %y167 br i1 %1, label %bb1, label %bb2168bb2:169 ret i32 1170bb1:171 ret i32 0172}173 174define i32 @icmp_eq(i32 %x, i32 %y) {175; CHECK-LABEL: icmp_eq176; CHECK: cmp w0, w1177; CHECK-NEXT: b.ne {{LBB.+_2}}178 %1 = icmp eq i32 %x, %y179 br i1 %1, label %bb1, label %bb2180bb2:181 ret i32 1182bb1:183 ret i32 0184}185 186define i32 @icmp_ne(i32 %x, i32 %y) {187; CHECK-LABEL: icmp_ne188; CHECK: cmp w0, w1189; CHECK-NEXT: b.eq {{LBB.+_2}}190 %1 = icmp ne i32 %x, %y191 br i1 %1, label %bb1, label %bb2192bb2:193 ret i32 1194bb1:195 ret i32 0196}197 198define i32 @icmp_ugt(i32 %x, i32 %y) {199; CHECK-LABEL: icmp_ugt200; CHECK: cmp w0, w1201; CHECK-NEXT: b.ls {{LBB.+_2}}202 %1 = icmp ugt i32 %x, %y203 br i1 %1, label %bb1, label %bb2204bb2:205 ret i32 1206bb1:207 ret i32 0208}209 210define i32 @icmp_uge(i32 %x, i32 %y) {211; CHECK-LABEL: icmp_uge212; CHECK: cmp w0, w1213; CHECK-NEXT: b.lo {{LBB.+_2}}214 %1 = icmp uge i32 %x, %y215 br i1 %1, label %bb1, label %bb2216bb2:217 ret i32 1218bb1:219 ret i32 0220}221 222define i32 @icmp_ult(i32 %x, i32 %y) {223; CHECK-LABEL: icmp_ult224; CHECK: cmp w0, w1225; CHECK-NEXT: b.hs {{LBB.+_2}}226 %1 = icmp ult i32 %x, %y227 br i1 %1, label %bb1, label %bb2228bb2:229 ret i32 1230bb1:231 ret i32 0232}233 234define i32 @icmp_ule(i32 %x, i32 %y) {235; CHECK-LABEL: icmp_ule236; CHECK: cmp w0, w1237; CHECK-NEXT: b.hi {{LBB.+_2}}238 %1 = icmp ule i32 %x, %y239 br i1 %1, label %bb1, label %bb2240bb2:241 ret i32 1242bb1:243 ret i32 0244}245 246define i32 @icmp_sgt(i32 %x, i32 %y) {247; CHECK-LABEL: icmp_sgt248; CHECK: cmp w0, w1249; CHECK-NEXT: b.le {{LBB.+_2}}250 %1 = icmp sgt i32 %x, %y251 br i1 %1, label %bb1, label %bb2252bb2:253 ret i32 1254bb1:255 ret i32 0256}257 258define i32 @icmp_sge(i32 %x, i32 %y) {259; CHECK-LABEL: icmp_sge260; CHECK: cmp w0, w1261; CHECK-NEXT: b.lt {{LBB.+_2}}262 %1 = icmp sge i32 %x, %y263 br i1 %1, label %bb1, label %bb2264bb2:265 ret i32 1266bb1:267 ret i32 0268}269 270define i32 @icmp_slt(i32 %x, i32 %y) {271; CHECK-LABEL: icmp_slt272; CHECK: cmp w0, w1273; CHECK-NEXT: b.ge {{LBB.+_2}}274 %1 = icmp slt i32 %x, %y275 br i1 %1, label %bb1, label %bb2276bb2:277 ret i32 1278bb1:279 ret i32 0280}281 282define i32 @icmp_sle(i32 %x, i32 %y) {283; CHECK-LABEL: icmp_sle284; CHECK: cmp w0, w1285; CHECK-NEXT: b.gt {{LBB.+_2}}286 %1 = icmp sle i32 %x, %y287 br i1 %1, label %bb1, label %bb2288bb2:289 ret i32 1290bb1:291 ret i32 0292}293 294