brintos

brintos / llvm-project-archived public Read only

0
0
Text · 19.7 KiB · 272e336 Raw
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