607 lines · plain
1; RUN: llc < %s -mtriple=armv8-linux-gnueabihf -mattr=+fp-armv8 -float-abi=hard | FileCheck %s2@varfloat = global float 0.03@vardouble = global double 0.04define void @test_vsel32sgt(i32 %lhs32, i32 %rhs32, float %a, float %b) {5; CHECK-LABEL: test_vsel32sgt6 %tst1 = icmp sgt i32 %lhs32, %rhs327 %val1 = select i1 %tst1, float %a, float %b8 store float %val1, ptr @varfloat9; CHECK: cmp r0, r110; CHECK: vselgt.f32 s0, s0, s111 ret void12}13define void @test_vsel64sgt(i32 %lhs32, i32 %rhs32, double %a, double %b) {14; CHECK-LABEL: test_vsel64sgt15 %tst1 = icmp sgt i32 %lhs32, %rhs3216 %val1 = select i1 %tst1, double %a, double %b17 store double %val1, ptr @vardouble18; CHECK: cmp r0, r119; CHECK: vselgt.f64 d16, d0, d120 ret void21}22define void @test_vsel32sge(i32 %lhs32, i32 %rhs32, float %a, float %b) {23; CHECK-LABEL: test_vsel32sge24 %tst1 = icmp sge i32 %lhs32, %rhs3225 %val1 = select i1 %tst1, float %a, float %b26 store float %val1, ptr @varfloat27; CHECK: cmp r0, r128; CHECK: vselge.f32 s0, s0, s129 ret void30}31define void @test_vsel64sge(i32 %lhs32, i32 %rhs32, double %a, double %b) {32; CHECK-LABEL: test_vsel64sge33 %tst1 = icmp sge i32 %lhs32, %rhs3234 %val1 = select i1 %tst1, double %a, double %b35 store double %val1, ptr @vardouble36; CHECK: cmp r0, r137; CHECK: vselge.f64 d16, d0, d138 ret void39}40define void @test_vsel32eq(i32 %lhs32, i32 %rhs32, float %a, float %b) {41; CHECK-LABEL: test_vsel32eq42 %tst1 = icmp eq i32 %lhs32, %rhs3243 %val1 = select i1 %tst1, float %a, float %b44 store float %val1, ptr @varfloat45; CHECK: cmp r0, r146; CHECK: vseleq.f32 s0, s0, s147 ret void48}49define void @test_vsel64eq(i32 %lhs32, i32 %rhs32, double %a, double %b) {50; CHECK-LABEL: test_vsel64eq51 %tst1 = icmp eq i32 %lhs32, %rhs3252 %val1 = select i1 %tst1, double %a, double %b53 store double %val1, ptr @vardouble54; CHECK: cmp r0, r155; CHECK: vseleq.f64 d16, d0, d156 ret void57}58define void @test_vsel32slt(i32 %lhs32, i32 %rhs32, float %a, float %b) {59; CHECK-LABEL: test_vsel32slt60 %tst1 = icmp slt i32 %lhs32, %rhs3261 %val1 = select i1 %tst1, float %a, float %b62 store float %val1, ptr @varfloat63; CHECK: cmp r0, r164; CHECK: vselge.f32 s0, s1, s065 ret void66}67define void @test_vsel64slt(i32 %lhs32, i32 %rhs32, double %a, double %b) {68; CHECK-LABEL: test_vsel64slt69 %tst1 = icmp slt i32 %lhs32, %rhs3270 %val1 = select i1 %tst1, double %a, double %b71 store double %val1, ptr @vardouble72; CHECK: cmp r0, r173; CHECK: vselge.f64 d16, d1, d074 ret void75}76define void @test_vsel32sle(i32 %lhs32, i32 %rhs32, float %a, float %b) {77; CHECK-LABEL: test_vsel32sle78 %tst1 = icmp sle i32 %lhs32, %rhs3279 %val1 = select i1 %tst1, float %a, float %b80 store float %val1, ptr @varfloat81; CHECK: cmp r0, r182; CHECK: vselgt.f32 s0, s1, s083 ret void84}85define void @test_vsel64sle(i32 %lhs32, i32 %rhs32, double %a, double %b) {86; CHECK-LABEL: test_vsel64sle87 %tst1 = icmp sle i32 %lhs32, %rhs3288 %val1 = select i1 %tst1, double %a, double %b89 store double %val1, ptr @vardouble90; CHECK: cmp r0, r191; CHECK: vselgt.f64 d16, d1, d092 ret void93}94define void @test_vsel32ogt(float %lhs32, float %rhs32, float %a, float %b) {95; CHECK-LABEL: test_vsel32ogt96 %tst1 = fcmp ogt float %lhs32, %rhs3297 %val1 = select i1 %tst1, float %a, float %b98 store float %val1, ptr @varfloat99; CHECK: vcmp.f32 s0, s1100; CHECK: vselgt.f32 s0, s2, s3101 ret void102}103define void @test_vsel64ogt(float %lhs32, float %rhs32, double %a, double %b) {104; CHECK-LABEL: test_vsel64ogt105 %tst1 = fcmp ogt float %lhs32, %rhs32106 %val1 = select i1 %tst1, double %a, double %b107 store double %val1, ptr @vardouble108; CHECK: vcmp.f32 s0, s1109; CHECK: vselgt.f64 d16, d1, d2110 ret void111}112define void @test_vsel32oge(float %lhs32, float %rhs32, float %a, float %b) {113; CHECK-LABEL: test_vsel32oge114 %tst1 = fcmp oge float %lhs32, %rhs32115 %val1 = select i1 %tst1, float %a, float %b116 store float %val1, ptr @varfloat117; CHECK: vcmp.f32 s0, s1118; CHECK: vselge.f32 s0, s2, s3119 ret void120}121define void @test_vsel64oge(float %lhs32, float %rhs32, double %a, double %b) {122; CHECK-LABEL: test_vsel64oge123 %tst1 = fcmp oge float %lhs32, %rhs32124 %val1 = select i1 %tst1, double %a, double %b125 store double %val1, ptr @vardouble126; CHECK: vcmp.f32 s0, s1127; CHECK: vselge.f64 d16, d1, d2128 ret void129}130define void @test_vsel32oeq(float %lhs32, float %rhs32, float %a, float %b) {131; CHECK-LABEL: test_vsel32oeq132 %tst1 = fcmp oeq float %lhs32, %rhs32133 %val1 = select i1 %tst1, float %a, float %b134 store float %val1, ptr @varfloat135; CHECK: vcmp.f32 s0, s1136; CHECK: vseleq.f32 s0, s2, s3137 ret void138}139define void @test_vsel64oeq(float %lhs32, float %rhs32, double %a, double %b) {140; CHECK-LABEL: test_vsel64oeq141 %tst1 = fcmp oeq float %lhs32, %rhs32142 %val1 = select i1 %tst1, double %a, double %b143 store double %val1, ptr @vardouble144; CHECK: vcmp.f32 s0, s1145; CHECK: vseleq.f64 d16, d1, d2146 ret void147}148define void @test_vsel32ugt(float %lhs32, float %rhs32, float %a, float %b) {149; CHECK-LABEL: test_vsel32ugt150 %tst1 = fcmp ugt float %lhs32, %rhs32151 %val1 = select i1 %tst1, float %a, float %b152 store float %val1, ptr @varfloat153; CHECK: vcmp.f32 s1, s0154; CHECK: vselge.f32 s0, s3, s2155 ret void156}157define void @test_vsel64ugt(float %lhs32, float %rhs32, double %a, double %b) {158; CHECK-LABEL: test_vsel64ugt159 %tst1 = fcmp ugt float %lhs32, %rhs32160 %val1 = select i1 %tst1, double %a, double %b161 store double %val1, ptr @vardouble162; CHECK: vcmp.f32 s1, s0163; CHECK: vselge.f64 d16, d2, d1164 ret void165}166define void @test_vsel32uge(float %lhs32, float %rhs32, float %a, float %b) {167; CHECK-LABEL: test_vsel32uge168 %tst1 = fcmp uge float %lhs32, %rhs32169 %val1 = select i1 %tst1, float %a, float %b170 store float %val1, ptr @varfloat171; CHECK: vcmp.f32 s1, s0172; CHECK: vselgt.f32 s0, s3, s2173 ret void174}175define void @test_vsel64uge(float %lhs32, float %rhs32, double %a, double %b) {176; CHECK-LABEL: test_vsel64uge177 %tst1 = fcmp uge float %lhs32, %rhs32178 %val1 = select i1 %tst1, double %a, double %b179 store double %val1, ptr @vardouble180; CHECK: vcmp.f32 s1, s0181; CHECK: vselgt.f64 d16, d2, d1182 ret void183}184define void @test_vsel32olt(float %lhs32, float %rhs32, float %a, float %b) {185; CHECK-LABEL: test_vsel32olt186 %tst1 = fcmp olt float %lhs32, %rhs32187 %val1 = select i1 %tst1, float %a, float %b188 store float %val1, ptr @varfloat189; CHECK: vcmp.f32 s1, s0190; CHECK: vselgt.f32 s0, s2, s3191 ret void192}193define void @test_vsel64olt(float %lhs32, float %rhs32, double %a, double %b) {194; CHECK-LABEL: test_vsel64olt195 %tst1 = fcmp olt float %lhs32, %rhs32196 %val1 = select i1 %tst1, double %a, double %b197 store double %val1, ptr @vardouble198; CHECK: vcmp.f32 s1, s0199; CHECK: vselgt.f64 d16, d1, d2200 ret void201}202define void @test_vsel32ult(float %lhs32, float %rhs32, float %a, float %b) {203; CHECK-LABEL: test_vsel32ult204 %tst1 = fcmp ult float %lhs32, %rhs32205 %val1 = select i1 %tst1, float %a, float %b206 store float %val1, ptr @varfloat207; CHECK: vcmp.f32 s0, s1208; CHECK: vselge.f32 s0, s3, s2209 ret void210}211define void @test_vsel64ult(float %lhs32, float %rhs32, double %a, double %b) {212; CHECK-LABEL: test_vsel64ult213 %tst1 = fcmp ult float %lhs32, %rhs32214 %val1 = select i1 %tst1, double %a, double %b215 store double %val1, ptr @vardouble216; CHECK: vcmp.f32 s0, s1217; CHECK: vselge.f64 d16, d2, d1218 ret void219}220define void @test_vsel32ole(float %lhs32, float %rhs32, float %a, float %b) {221; CHECK-LABEL: test_vsel32ole222 %tst1 = fcmp ole float %lhs32, %rhs32223 %val1 = select i1 %tst1, float %a, float %b224 store float %val1, ptr @varfloat225; CHECK: vcmp.f32 s1, s0226; CHECK: vselge.f32 s0, s2, s3227 ret void228}229define void @test_vsel64ole(float %lhs32, float %rhs32, double %a, double %b) {230; CHECK-LABEL: test_vsel64ole231 %tst1 = fcmp ole float %lhs32, %rhs32232 %val1 = select i1 %tst1, double %a, double %b233 store double %val1, ptr @vardouble234; CHECK: vcmp.f32 s1, s0235; CHECK: vselge.f64 d16, d1, d2236 ret void237}238define void @test_vsel32ule(float %lhs32, float %rhs32, float %a, float %b) {239; CHECK-LABEL: test_vsel32ule240 %tst1 = fcmp ule float %lhs32, %rhs32241 %val1 = select i1 %tst1, float %a, float %b242 store float %val1, ptr @varfloat243; CHECK: vcmp.f32 s0, s1244; CHECK: vselgt.f32 s0, s3, s2245 ret void246}247define void @test_vsel64ule(float %lhs32, float %rhs32, double %a, double %b) {248; CHECK-LABEL: test_vsel64ule249 %tst1 = fcmp ule float %lhs32, %rhs32250 %val1 = select i1 %tst1, double %a, double %b251 store double %val1, ptr @vardouble252; CHECK: vcmp.f32 s0, s1253; CHECK: vselgt.f64 d16, d2, d1254 ret void255}256define void @test_vsel32ord(float %lhs32, float %rhs32, float %a, float %b) {257; CHECK-LABEL: test_vsel32ord258 %tst1 = fcmp ord float %lhs32, %rhs32259 %val1 = select i1 %tst1, float %a, float %b260 store float %val1, ptr @varfloat261; CHECK: vcmp.f32 s0, s1262; CHECK: vselvs.f32 s0, s3, s2263 ret void264}265define void @test_vsel64ord(float %lhs32, float %rhs32, double %a, double %b) {266; CHECK-LABEL: test_vsel64ord267 %tst1 = fcmp ord float %lhs32, %rhs32268 %val1 = select i1 %tst1, double %a, double %b269 store double %val1, ptr @vardouble270; CHECK: vcmp.f32 s0, s1271; CHECK: vselvs.f64 d16, d2, d1272 ret void273}274define void @test_vsel32une(float %lhs32, float %rhs32, float %a, float %b) {275; CHECK-LABEL: test_vsel32une276 %tst1 = fcmp une float %lhs32, %rhs32277 %val1 = select i1 %tst1, float %a, float %b278 store float %val1, ptr @varfloat279; CHECK: vcmp.f32 s0, s1280; CHECK: vseleq.f32 s0, s3, s2281 ret void282}283define void @test_vsel64une(float %lhs32, float %rhs32, double %a, double %b) {284; CHECK-LABEL: test_vsel64une285 %tst1 = fcmp une float %lhs32, %rhs32286 %val1 = select i1 %tst1, double %a, double %b287 store double %val1, ptr @vardouble288; CHECK: vcmp.f32 s0, s1289; CHECK: vseleq.f64 d16, d2, d1290 ret void291}292define void @test_vsel32uno(float %lhs32, float %rhs32, float %a, float %b) {293; CHECK-LABEL: test_vsel32uno294 %tst1 = fcmp uno float %lhs32, %rhs32295 %val1 = select i1 %tst1, float %a, float %b296 store float %val1, ptr @varfloat297; CHECK: vcmp.f32 s0, s1298; CHECK: vselvs.f32 s0, s2, s3299 ret void300}301define void @test_vsel64uno(float %lhs32, float %rhs32, double %a, double %b) {302; CHECK-LABEL: test_vsel64uno303 %tst1 = fcmp uno float %lhs32, %rhs32304 %val1 = select i1 %tst1, double %a, double %b305 store double %val1, ptr @vardouble306; CHECK: vcmp.f32 s0, s1307; CHECK: vselvs.f64 d16, d1, d2308 ret void309}310 311define void @test_vsel32ogt_nnan(float %lhs32, float %rhs32, float %a, float %b) {312; CHECK-LABEL: test_vsel32ogt_nnan313 %tst1 = fcmp nnan ogt float %lhs32, %rhs32314 %val1 = select i1 %tst1, float %a, float %b315 store float %val1, ptr @varfloat316; CHECK: vcmp.f32 s0, s1317; CHECK: vselgt.f32 s0, s2, s3318 ret void319}320define void @test_vsel64ogt_nnan(float %lhs32, float %rhs32, double %a, double %b) {321; CHECK-LABEL: test_vsel64ogt_nnan322 %tst1 = fcmp nnan ogt float %lhs32, %rhs32323 %val1 = select i1 %tst1, double %a, double %b324 store double %val1, ptr @vardouble325; CHECK: vcmp.f32 s0, s1326; CHECK: vselgt.f64 d16, d1, d2327 ret void328}329define void @test_vsel32oge_nnan(float %lhs32, float %rhs32, float %a, float %b) {330; CHECK-LABEL: test_vsel32oge_nnan331 %tst1 = fcmp nnan oge float %lhs32, %rhs32332 %val1 = select i1 %tst1, float %a, float %b333 store float %val1, ptr @varfloat334; CHECK: vcmp.f32 s0, s1335; CHECK: vselge.f32 s0, s2, s3336 ret void337}338define void @test_vsel64oge_nnan(float %lhs32, float %rhs32, double %a, double %b) {339; CHECK-LABEL: test_vsel64oge_nnan340 %tst1 = fcmp nnan oge float %lhs32, %rhs32341 %val1 = select i1 %tst1, double %a, double %b342 store double %val1, ptr @vardouble343; CHECK: vcmp.f32 s0, s1344; CHECK: vselge.f64 d16, d1, d2345 ret void346}347define void @test_vsel32oeq_nnan(float %lhs32, float %rhs32, float %a, float %b) {348; CHECK-LABEL: test_vsel32oeq_nnan349 %tst1 = fcmp nnan oeq float %lhs32, %rhs32350 %val1 = select i1 %tst1, float %a, float %b351 store float %val1, ptr @varfloat352; CHECK: vcmp.f32 s0, s1353; CHECK: vseleq.f32 s0, s2, s3354 ret void355}356define void @test_vsel64oeq_nnan(float %lhs32, float %rhs32, double %a, double %b) {357; CHECK-LABEL: test_vsel64oeq_nnan358 %tst1 = fcmp nnan oeq float %lhs32, %rhs32359 %val1 = select i1 %tst1, double %a, double %b360 store double %val1, ptr @vardouble361; CHECK: vcmp.f32 s0, s1362; CHECK: vseleq.f64 d16, d1, d2363 ret void364}365define void @test_vsel32ugt_nnan(float %lhs32, float %rhs32, float %a, float %b) {366; CHECK-LABEL: test_vsel32ugt_nnan367 %tst1 = fcmp nnan ugt float %lhs32, %rhs32368 %val1 = select i1 %tst1, float %a, float %b369 store float %val1, ptr @varfloat370; CHECK: vcmp.f32 s0, s1371; CHECK: vselgt.f32 s0, s2, s3372 ret void373}374define void @test_vsel64ugt_nnan(float %lhs32, float %rhs32, double %a, double %b) {375; CHECK-LABEL: test_vsel64ugt_nnan376 %tst1 = fcmp nnan ugt float %lhs32, %rhs32377 %val1 = select i1 %tst1, double %a, double %b378 store double %val1, ptr @vardouble379; CHECK: vcmp.f32 s0, s1380; CHECK: vselgt.f64 d16, d1, d2381 ret void382}383define void @test_vsel32uge_nnan(float %lhs32, float %rhs32, float %a, float %b) {384; CHECK-LABEL: test_vsel32uge_nnan385 %tst1 = fcmp nnan uge float %lhs32, %rhs32386 %val1 = select i1 %tst1, float %a, float %b387 store float %val1, ptr @varfloat388; CHECK: vcmp.f32 s0, s1389; CHECK: vselge.f32 s0, s2, s3390 ret void391}392define void @test_vsel64uge_nnan(float %lhs32, float %rhs32, double %a, double %b) {393; CHECK-LABEL: test_vsel64uge_nnan394 %tst1 = fcmp nnan uge float %lhs32, %rhs32395 %val1 = select i1 %tst1, double %a, double %b396 store double %val1, ptr @vardouble397; CHECK: vcmp.f32 s0, s1398; CHECK: vselge.f64 d16, d1, d2399 ret void400}401define void @test_vsel32olt_nnan(float %lhs32, float %rhs32, float %a, float %b) {402; CHECK-LABEL: test_vsel32olt_nnan403 %tst1 = fcmp nnan olt float %lhs32, %rhs32404 %val1 = select i1 %tst1, float %a, float %b405 store float %val1, ptr @varfloat406; CHECK: vcmp.f32 s1, s0407; CHECK: vselgt.f32 s0, s2, s3408 ret void409}410define void @test_vsel64olt_nnan(float %lhs32, float %rhs32, double %a, double %b) {411; CHECK-LABEL: test_vsel64olt_nnan412 %tst1 = fcmp nnan olt float %lhs32, %rhs32413 %val1 = select i1 %tst1, double %a, double %b414 store double %val1, ptr @vardouble415; CHECK: vcmp.f32 s1, s0416; CHECK: vselgt.f64 d16, d1, d2417 ret void418}419define void @test_vsel32ult_nnan(float %lhs32, float %rhs32, float %a, float %b) {420; CHECK-LABEL: test_vsel32ult_nnan421 %tst1 = fcmp nnan ult float %lhs32, %rhs32422 %val1 = select i1 %tst1, float %a, float %b423 store float %val1, ptr @varfloat424; CHECK: vcmp.f32 s1, s0425; CHECK: vselgt.f32 s0, s2, s3426 ret void427}428define void @test_vsel64ult_nnan(float %lhs32, float %rhs32, double %a, double %b) {429; CHECK-LABEL: test_vsel64ult_nnan430 %tst1 = fcmp nnan ult float %lhs32, %rhs32431 %val1 = select i1 %tst1, double %a, double %b432 store double %val1, ptr @vardouble433; CHECK: vcmp.f32 s1, s0434; CHECK: vselgt.f64 d16, d1, d2435 ret void436}437define void @test_vsel32ole_nnan(float %lhs32, float %rhs32, float %a, float %b) {438; CHECK-LABEL: test_vsel32ole_nnan439 %tst1 = fcmp nnan ole float %lhs32, %rhs32440 %val1 = select i1 %tst1, float %a, float %b441 store float %val1, ptr @varfloat442; CHECK: vcmp.f32 s1, s0443; CHECK: vselge.f32 s0, s2, s3444 ret void445}446define void @test_vsel64ole_nnan(float %lhs32, float %rhs32, double %a, double %b) {447; CHECK-LABEL: test_vsel64ole_nnan448 %tst1 = fcmp nnan ole float %lhs32, %rhs32449 %val1 = select i1 %tst1, double %a, double %b450 store double %val1, ptr @vardouble451; CHECK: vcmp.f32 s1, s0452; CHECK: vselge.f64 d16, d1, d2453 ret void454}455define void @test_vsel32ule_nnan(float %lhs32, float %rhs32, float %a, float %b) {456; CHECK-LABEL: test_vsel32ule_nnan457 %tst1 = fcmp nnan ule float %lhs32, %rhs32458 %val1 = select i1 %tst1, float %a, float %b459 store float %val1, ptr @varfloat460; CHECK: vcmp.f32 s1, s0461; CHECK: vselge.f32 s0, s2, s3462 ret void463}464define void @test_vsel64ule_nnan(float %lhs32, float %rhs32, double %a, double %b) {465; CHECK-LABEL: test_vsel64ule_nnan466 %tst1 = fcmp nnan ule float %lhs32, %rhs32467 %val1 = select i1 %tst1, double %a, double %b468 store double %val1, ptr @vardouble469; CHECK: vcmp.f32 s1, s0470; CHECK: vselge.f64 d16, d1, d2471 ret void472}473define void @test_vsel32ord_nnan(float %lhs32, float %rhs32, float %a, float %b) {474; CHECK-LABEL: test_vsel32ord_nnan475 %tst1 = fcmp nnan ord float %lhs32, %rhs32476 %val1 = select i1 %tst1, float %a, float %b477 store float %val1, ptr @varfloat478; CHECK: vcmp.f32 s0, s1479; CHECK: vselvs.f32 s0, s3, s2480 ret void481}482define void @test_vsel64ord_nnan(float %lhs32, float %rhs32, double %a, double %b) {483; CHECK-LABEL: test_vsel64ord_nnan484 %tst1 = fcmp nnan ord float %lhs32, %rhs32485 %val1 = select i1 %tst1, double %a, double %b486 store double %val1, ptr @vardouble487; CHECK: vcmp.f32 s0, s1488; CHECK: vselvs.f64 d16, d2, d1489 ret void490}491define void @test_vsel32une_nnan(float %lhs32, float %rhs32, float %a, float %b) {492; CHECK-LABEL: test_vsel32une_nnan493 %tst1 = fcmp nnan une float %lhs32, %rhs32494 %val1 = select i1 %tst1, float %a, float %b495 store float %val1, ptr @varfloat496; CHECK: vcmp.f32 s0, s1497; CHECK: vseleq.f32 s0, s3, s2498 ret void499}500define void @test_vsel64une_nnan(float %lhs32, float %rhs32, double %a, double %b) {501; CHECK-LABEL: test_vsel64une_nnan502 %tst1 = fcmp nnan une float %lhs32, %rhs32503 %val1 = select i1 %tst1, double %a, double %b504 store double %val1, ptr @vardouble505; CHECK: vcmp.f32 s0, s1506; CHECK: vseleq.f64 d16, d2, d1507 ret void508}509define void @test_vsel32uno_nnan(float %lhs32, float %rhs32, float %a, float %b) {510; CHECK-LABEL: test_vsel32uno_nnan511 %tst1 = fcmp nnan uno float %lhs32, %rhs32512 %val1 = select i1 %tst1, float %a, float %b513 store float %val1, ptr @varfloat514; CHECK: vcmp.f32 s0, s1515; CHECK: vselvs.f32 s0, s2, s3516 ret void517}518define void @test_vsel64uno_nnan(float %lhs32, float %rhs32, double %a, double %b) {519; CHECK-LABEL: test_vsel64uno_nnan520 %tst1 = fcmp nnan uno float %lhs32, %rhs32521 %val1 = select i1 %tst1, double %a, double %b522 store double %val1, ptr @vardouble523; CHECK: vcmp.f32 s0, s1524; CHECK: vselvs.f64 d16, d1, d2525 ret void526}527 528define void @test_vsel_ltzero(i32 %lhs32, float %a, float %b) {529; CHECK-LABEL: test_vsel_ltzero530 %tst1 = icmp slt i32 %lhs32, 0531 %val1 = select i1 %tst1, float %a, float %b532 store float %val1, ptr @varfloat533; CHECK: cmp r0, #0534; CHECK: vselge.f32 s0, s1, s0535 ret void536}537 538define void @test_vsel_lezero(i32 %lhs32, float %a, float %b) {539; CHECK-LABEL: test_vsel_lezero540 %tst1 = icmp sle i32 %lhs32, 0541 %val1 = select i1 %tst1, float %a, float %b542 store float %val1, ptr @varfloat543; CHECK: cmp r0, #1544; CHECK: vselge.f32 s0, s1, s0545 ret void546}547 548define void @test_vsel_gtzero(i32 %lhs32, float %a, float %b) {549; CHECK-LABEL: test_vsel_gtzero550 %tst1 = icmp sgt i32 %lhs32, 0551 %val1 = select i1 %tst1, float %a, float %b552 store float %val1, ptr @varfloat553; CHECK: cmp r0, #0554; CHECK: vselgt.f32 s0, s0, s1555 ret void556}557 558define void @test_vsel_gezero(i32 %lhs32, float %a, float %b) {559; CHECK-LABEL: test_vsel_gezero560 %tst1 = icmp sge i32 %lhs32, 0561 %val1 = select i1 %tst1, float %a, float %b562 store float %val1, ptr @varfloat563; CHECK: cmn r0, #1564; CHECK: vselgt.f32 s0, s0, s1565 ret void566}567 568define void @test_vsel_ltzero64(i32 %lhs32, double %a, double %b) {569; CHECK-LABEL: test_vsel_ltzero570 %tst1 = icmp slt i32 %lhs32, 0571 %val1 = select i1 %tst1, double %a, double %b572 store double %val1, ptr @vardouble573; CHECK: cmp r0, #0574; CHECK: vselge.f64 d16, d1, d0575 ret void576}577 578define void @test_vsel_lezero64(i32 %lhs32, double %a, double %b) {579; CHECK-LABEL: test_vsel_lezero580 %tst1 = icmp sle i32 %lhs32, 0581 %val1 = select i1 %tst1, double %a, double %b582 store double %val1, ptr @vardouble583; CHECK: cmp r0, #1584; CHECK: vselge.f64 d16, d1, d0585 ret void586}587 588define void @test_vsel_gtzero64(i32 %lhs32, double %a, double %b) {589; CHECK-LABEL: test_vsel_gtzero590 %tst1 = icmp sgt i32 %lhs32, 0591 %val1 = select i1 %tst1, double %a, double %b592 store double %val1, ptr @vardouble593; CHECK: cmp r0, #0594; CHECK: vselgt.f64 d16, d0, d1595 ret void596}597 598define void @test_vsel_gezero64(i32 %lhs32, double %a, double %b) {599; CHECK-LABEL: test_vsel_gezero600 %tst1 = icmp sge i32 %lhs32, 0601 %val1 = select i1 %tst1, double %a, double %b602 store double %val1, ptr @vardouble603; CHECK: cmn r0, #1604; CHECK: vselgt.f64 d16, d0, d1605 ret void606}607