brintos

brintos / llvm-project-archived public Read only

0
0
Text · 125.1 KiB · a8220d9 Raw
3441 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mattr=+sve -force-streaming-compatible  < %s | FileCheck %s3; RUN: llc -mattr=+sme -force-streaming  < %s | FileCheck %s4; RUN: llc -force-streaming-compatible < %s | FileCheck %s --check-prefix=NONEON-NOSVE5 6target triple = "aarch64-unknown-linux-gnu"7 8;9; FCMP OEQ10;11 12define <2 x i16> @fcmp_oeq_v2f16(<2 x half> %op1, <2 x half> %op2) {13; CHECK-LABEL: fcmp_oeq_v2f16:14; CHECK:       // %bb.0:15; CHECK-NEXT:    ptrue p0.h, vl416; CHECK-NEXT:    // kill: def $d1 killed $d1 def $z117; CHECK-NEXT:    // kill: def $d0 killed $d0 def $z018; CHECK-NEXT:    fcmeq p0.h, p0/z, z0.h, z1.h19; CHECK-NEXT:    punpklo p0.h, p0.b20; CHECK-NEXT:    mov z0.s, p0/z, #-1 // =0xffffffffffffffff21; CHECK-NEXT:    // kill: def $d0 killed $d0 killed $z022; CHECK-NEXT:    ret23;24; NONEON-NOSVE-LABEL: fcmp_oeq_v2f16:25; NONEON-NOSVE:       // %bb.0:26; NONEON-NOSVE-NEXT:    sub sp, sp, #3227; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 3228; NONEON-NOSVE-NEXT:    stp d0, d1, [sp, #8]29; NONEON-NOSVE-NEXT:    ldr h0, [sp, #18]30; NONEON-NOSVE-NEXT:    ldr h1, [sp, #10]31; NONEON-NOSVE-NEXT:    fcvt s0, h032; NONEON-NOSVE-NEXT:    fcvt s1, h133; NONEON-NOSVE-NEXT:    fcmp s1, s034; NONEON-NOSVE-NEXT:    ldr h0, [sp, #16]35; NONEON-NOSVE-NEXT:    ldr h1, [sp, #8]36; NONEON-NOSVE-NEXT:    fcvt s0, h037; NONEON-NOSVE-NEXT:    fcvt s1, h138; NONEON-NOSVE-NEXT:    csetm w9, eq39; NONEON-NOSVE-NEXT:    fcmp s1, s040; NONEON-NOSVE-NEXT:    csetm w8, eq41; NONEON-NOSVE-NEXT:    stp w8, w9, [sp, #24]42; NONEON-NOSVE-NEXT:    ldr d0, [sp, #24]43; NONEON-NOSVE-NEXT:    add sp, sp, #3244; NONEON-NOSVE-NEXT:    ret45  %cmp = fcmp oeq <2 x half> %op1, %op246  %sext = sext <2 x i1> %cmp to <2 x i16>47  ret <2 x i16> %sext48}49 50define <4 x i16> @fcmp_oeq_v4f16(<4 x half> %op1, <4 x half> %op2) {51; CHECK-LABEL: fcmp_oeq_v4f16:52; CHECK:       // %bb.0:53; CHECK-NEXT:    ptrue p0.h, vl454; CHECK-NEXT:    // kill: def $d1 killed $d1 def $z155; CHECK-NEXT:    // kill: def $d0 killed $d0 def $z056; CHECK-NEXT:    fcmeq p0.h, p0/z, z0.h, z1.h57; CHECK-NEXT:    mov z0.h, p0/z, #-1 // =0xffffffffffffffff58; CHECK-NEXT:    // kill: def $d0 killed $d0 killed $z059; CHECK-NEXT:    ret60;61; NONEON-NOSVE-LABEL: fcmp_oeq_v4f16:62; NONEON-NOSVE:       // %bb.0:63; NONEON-NOSVE-NEXT:    sub sp, sp, #3264; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 3265; NONEON-NOSVE-NEXT:    stp d0, d1, [sp, #8]66; NONEON-NOSVE-NEXT:    ldr h0, [sp, #22]67; NONEON-NOSVE-NEXT:    ldr h1, [sp, #14]68; NONEON-NOSVE-NEXT:    fcvt s0, h069; NONEON-NOSVE-NEXT:    fcvt s1, h170; NONEON-NOSVE-NEXT:    fcmp s1, s071; NONEON-NOSVE-NEXT:    ldr h0, [sp, #20]72; NONEON-NOSVE-NEXT:    ldr h1, [sp, #12]73; NONEON-NOSVE-NEXT:    fcvt s0, h074; NONEON-NOSVE-NEXT:    fcvt s1, h175; NONEON-NOSVE-NEXT:    csetm w8, eq76; NONEON-NOSVE-NEXT:    strh w8, [sp, #30]77; NONEON-NOSVE-NEXT:    fcmp s1, s078; NONEON-NOSVE-NEXT:    ldr h0, [sp, #18]79; NONEON-NOSVE-NEXT:    ldr h1, [sp, #10]80; NONEON-NOSVE-NEXT:    fcvt s0, h081; NONEON-NOSVE-NEXT:    fcvt s1, h182; NONEON-NOSVE-NEXT:    csetm w8, eq83; NONEON-NOSVE-NEXT:    strh w8, [sp, #28]84; NONEON-NOSVE-NEXT:    fcmp s1, s085; NONEON-NOSVE-NEXT:    ldr h0, [sp, #16]86; NONEON-NOSVE-NEXT:    ldr h1, [sp, #8]87; NONEON-NOSVE-NEXT:    fcvt s0, h088; NONEON-NOSVE-NEXT:    fcvt s1, h189; NONEON-NOSVE-NEXT:    csetm w8, eq90; NONEON-NOSVE-NEXT:    strh w8, [sp, #26]91; NONEON-NOSVE-NEXT:    fcmp s1, s092; NONEON-NOSVE-NEXT:    csetm w8, eq93; NONEON-NOSVE-NEXT:    strh w8, [sp, #24]94; NONEON-NOSVE-NEXT:    ldr d0, [sp, #24]95; NONEON-NOSVE-NEXT:    add sp, sp, #3296; NONEON-NOSVE-NEXT:    ret97  %cmp = fcmp oeq <4 x half> %op1, %op298  %sext = sext <4 x i1> %cmp to <4 x i16>99  ret <4 x i16> %sext100}101 102define <8 x i16> @fcmp_oeq_v8f16(<8 x half> %op1, <8 x half> %op2) {103; CHECK-LABEL: fcmp_oeq_v8f16:104; CHECK:       // %bb.0:105; CHECK-NEXT:    ptrue p0.h, vl8106; CHECK-NEXT:    // kill: def $q1 killed $q1 def $z1107; CHECK-NEXT:    // kill: def $q0 killed $q0 def $z0108; CHECK-NEXT:    fcmeq p0.h, p0/z, z0.h, z1.h109; CHECK-NEXT:    mov z0.h, p0/z, #-1 // =0xffffffffffffffff110; CHECK-NEXT:    // kill: def $q0 killed $q0 killed $z0111; CHECK-NEXT:    ret112;113; NONEON-NOSVE-LABEL: fcmp_oeq_v8f16:114; NONEON-NOSVE:       // %bb.0:115; NONEON-NOSVE-NEXT:    stp q0, q1, [sp, #-48]!116; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 48117; NONEON-NOSVE-NEXT:    ldr h0, [sp, #30]118; NONEON-NOSVE-NEXT:    ldr h1, [sp, #14]119; NONEON-NOSVE-NEXT:    fcvt s0, h0120; NONEON-NOSVE-NEXT:    fcvt s1, h1121; NONEON-NOSVE-NEXT:    fcmp s1, s0122; NONEON-NOSVE-NEXT:    ldr h0, [sp, #28]123; NONEON-NOSVE-NEXT:    ldr h1, [sp, #12]124; NONEON-NOSVE-NEXT:    fcvt s0, h0125; NONEON-NOSVE-NEXT:    fcvt s1, h1126; NONEON-NOSVE-NEXT:    csetm w8, eq127; NONEON-NOSVE-NEXT:    strh w8, [sp, #46]128; NONEON-NOSVE-NEXT:    fcmp s1, s0129; NONEON-NOSVE-NEXT:    ldr h0, [sp, #26]130; NONEON-NOSVE-NEXT:    ldr h1, [sp, #10]131; NONEON-NOSVE-NEXT:    fcvt s0, h0132; NONEON-NOSVE-NEXT:    fcvt s1, h1133; NONEON-NOSVE-NEXT:    csetm w8, eq134; NONEON-NOSVE-NEXT:    strh w8, [sp, #44]135; NONEON-NOSVE-NEXT:    fcmp s1, s0136; NONEON-NOSVE-NEXT:    ldr h0, [sp, #24]137; NONEON-NOSVE-NEXT:    ldr h1, [sp, #8]138; NONEON-NOSVE-NEXT:    fcvt s0, h0139; NONEON-NOSVE-NEXT:    fcvt s1, h1140; NONEON-NOSVE-NEXT:    csetm w8, eq141; NONEON-NOSVE-NEXT:    strh w8, [sp, #42]142; NONEON-NOSVE-NEXT:    fcmp s1, s0143; NONEON-NOSVE-NEXT:    ldr h0, [sp, #22]144; NONEON-NOSVE-NEXT:    ldr h1, [sp, #6]145; NONEON-NOSVE-NEXT:    fcvt s0, h0146; NONEON-NOSVE-NEXT:    fcvt s1, h1147; NONEON-NOSVE-NEXT:    csetm w8, eq148; NONEON-NOSVE-NEXT:    strh w8, [sp, #40]149; NONEON-NOSVE-NEXT:    fcmp s1, s0150; NONEON-NOSVE-NEXT:    ldr h0, [sp, #20]151; NONEON-NOSVE-NEXT:    ldr h1, [sp, #4]152; NONEON-NOSVE-NEXT:    fcvt s0, h0153; NONEON-NOSVE-NEXT:    fcvt s1, h1154; NONEON-NOSVE-NEXT:    csetm w8, eq155; NONEON-NOSVE-NEXT:    strh w8, [sp, #38]156; NONEON-NOSVE-NEXT:    fcmp s1, s0157; NONEON-NOSVE-NEXT:    ldr h0, [sp, #18]158; NONEON-NOSVE-NEXT:    ldr h1, [sp, #2]159; NONEON-NOSVE-NEXT:    fcvt s0, h0160; NONEON-NOSVE-NEXT:    fcvt s1, h1161; NONEON-NOSVE-NEXT:    csetm w8, eq162; NONEON-NOSVE-NEXT:    strh w8, [sp, #36]163; NONEON-NOSVE-NEXT:    fcmp s1, s0164; NONEON-NOSVE-NEXT:    ldr h0, [sp, #16]165; NONEON-NOSVE-NEXT:    ldr h1, [sp]166; NONEON-NOSVE-NEXT:    fcvt s0, h0167; NONEON-NOSVE-NEXT:    fcvt s1, h1168; NONEON-NOSVE-NEXT:    csetm w8, eq169; NONEON-NOSVE-NEXT:    strh w8, [sp, #34]170; NONEON-NOSVE-NEXT:    fcmp s1, s0171; NONEON-NOSVE-NEXT:    csetm w8, eq172; NONEON-NOSVE-NEXT:    strh w8, [sp, #32]173; NONEON-NOSVE-NEXT:    ldr q0, [sp, #32]174; NONEON-NOSVE-NEXT:    add sp, sp, #48175; NONEON-NOSVE-NEXT:    ret176  %cmp = fcmp oeq <8 x half> %op1, %op2177  %sext = sext <8 x i1> %cmp to <8 x i16>178  ret <8 x i16> %sext179}180 181define void @fcmp_oeq_v16f16(ptr %a, ptr %b, ptr %c) {182; CHECK-LABEL: fcmp_oeq_v16f16:183; CHECK:       // %bb.0:184; CHECK-NEXT:    ldp q0, q3, [x1]185; CHECK-NEXT:    ptrue p0.h, vl8186; CHECK-NEXT:    ldp q1, q2, [x0]187; CHECK-NEXT:    fcmeq p1.h, p0/z, z1.h, z0.h188; CHECK-NEXT:    fcmeq p0.h, p0/z, z2.h, z3.h189; CHECK-NEXT:    mov z0.h, p1/z, #-1 // =0xffffffffffffffff190; CHECK-NEXT:    mov z1.h, p0/z, #-1 // =0xffffffffffffffff191; CHECK-NEXT:    stp q0, q1, [x2]192; CHECK-NEXT:    ret193;194; NONEON-NOSVE-LABEL: fcmp_oeq_v16f16:195; NONEON-NOSVE:       // %bb.0:196; NONEON-NOSVE-NEXT:    sub sp, sp, #96197; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 96198; NONEON-NOSVE-NEXT:    ldp q3, q0, [x1]199; NONEON-NOSVE-NEXT:    ldp q2, q1, [x0]200; NONEON-NOSVE-NEXT:    stp q2, q3, [sp]201; NONEON-NOSVE-NEXT:    stp q1, q0, [sp, #32]202; NONEON-NOSVE-NEXT:    ldr h0, [sp, #62]203; NONEON-NOSVE-NEXT:    ldr h1, [sp, #46]204; NONEON-NOSVE-NEXT:    fcvt s0, h0205; NONEON-NOSVE-NEXT:    fcvt s1, h1206; NONEON-NOSVE-NEXT:    fcmp s1, s0207; NONEON-NOSVE-NEXT:    ldr h0, [sp, #60]208; NONEON-NOSVE-NEXT:    ldr h1, [sp, #44]209; NONEON-NOSVE-NEXT:    fcvt s0, h0210; NONEON-NOSVE-NEXT:    fcvt s1, h1211; NONEON-NOSVE-NEXT:    csetm w8, eq212; NONEON-NOSVE-NEXT:    strh w8, [sp, #94]213; NONEON-NOSVE-NEXT:    fcmp s1, s0214; NONEON-NOSVE-NEXT:    ldr h0, [sp, #58]215; NONEON-NOSVE-NEXT:    ldr h1, [sp, #42]216; NONEON-NOSVE-NEXT:    fcvt s0, h0217; NONEON-NOSVE-NEXT:    fcvt s1, h1218; NONEON-NOSVE-NEXT:    csetm w8, eq219; NONEON-NOSVE-NEXT:    strh w8, [sp, #92]220; NONEON-NOSVE-NEXT:    fcmp s1, s0221; NONEON-NOSVE-NEXT:    ldr h0, [sp, #56]222; NONEON-NOSVE-NEXT:    ldr h1, [sp, #40]223; NONEON-NOSVE-NEXT:    fcvt s0, h0224; NONEON-NOSVE-NEXT:    fcvt s1, h1225; NONEON-NOSVE-NEXT:    csetm w8, eq226; NONEON-NOSVE-NEXT:    strh w8, [sp, #90]227; NONEON-NOSVE-NEXT:    fcmp s1, s0228; NONEON-NOSVE-NEXT:    ldr h0, [sp, #54]229; NONEON-NOSVE-NEXT:    ldr h1, [sp, #38]230; NONEON-NOSVE-NEXT:    fcvt s0, h0231; NONEON-NOSVE-NEXT:    fcvt s1, h1232; NONEON-NOSVE-NEXT:    csetm w8, eq233; NONEON-NOSVE-NEXT:    strh w8, [sp, #88]234; NONEON-NOSVE-NEXT:    fcmp s1, s0235; NONEON-NOSVE-NEXT:    ldr h0, [sp, #52]236; NONEON-NOSVE-NEXT:    ldr h1, [sp, #36]237; NONEON-NOSVE-NEXT:    fcvt s0, h0238; NONEON-NOSVE-NEXT:    fcvt s1, h1239; NONEON-NOSVE-NEXT:    csetm w8, eq240; NONEON-NOSVE-NEXT:    strh w8, [sp, #86]241; NONEON-NOSVE-NEXT:    fcmp s1, s0242; NONEON-NOSVE-NEXT:    ldr h0, [sp, #50]243; NONEON-NOSVE-NEXT:    ldr h1, [sp, #34]244; NONEON-NOSVE-NEXT:    fcvt s0, h0245; NONEON-NOSVE-NEXT:    fcvt s1, h1246; NONEON-NOSVE-NEXT:    csetm w8, eq247; NONEON-NOSVE-NEXT:    strh w8, [sp, #84]248; NONEON-NOSVE-NEXT:    fcmp s1, s0249; NONEON-NOSVE-NEXT:    ldr h0, [sp, #48]250; NONEON-NOSVE-NEXT:    ldr h1, [sp, #32]251; NONEON-NOSVE-NEXT:    fcvt s0, h0252; NONEON-NOSVE-NEXT:    fcvt s1, h1253; NONEON-NOSVE-NEXT:    csetm w8, eq254; NONEON-NOSVE-NEXT:    strh w8, [sp, #82]255; NONEON-NOSVE-NEXT:    fcmp s1, s0256; NONEON-NOSVE-NEXT:    ldr h0, [sp, #30]257; NONEON-NOSVE-NEXT:    ldr h1, [sp, #14]258; NONEON-NOSVE-NEXT:    fcvt s0, h0259; NONEON-NOSVE-NEXT:    fcvt s1, h1260; NONEON-NOSVE-NEXT:    csetm w8, eq261; NONEON-NOSVE-NEXT:    strh w8, [sp, #80]262; NONEON-NOSVE-NEXT:    fcmp s1, s0263; NONEON-NOSVE-NEXT:    ldr h0, [sp, #28]264; NONEON-NOSVE-NEXT:    ldr h1, [sp, #12]265; NONEON-NOSVE-NEXT:    fcvt s0, h0266; NONEON-NOSVE-NEXT:    fcvt s1, h1267; NONEON-NOSVE-NEXT:    csetm w8, eq268; NONEON-NOSVE-NEXT:    strh w8, [sp, #78]269; NONEON-NOSVE-NEXT:    fcmp s1, s0270; NONEON-NOSVE-NEXT:    ldr h0, [sp, #26]271; NONEON-NOSVE-NEXT:    ldr h1, [sp, #10]272; NONEON-NOSVE-NEXT:    fcvt s0, h0273; NONEON-NOSVE-NEXT:    fcvt s1, h1274; NONEON-NOSVE-NEXT:    csetm w8, eq275; NONEON-NOSVE-NEXT:    strh w8, [sp, #76]276; NONEON-NOSVE-NEXT:    fcmp s1, s0277; NONEON-NOSVE-NEXT:    ldr h0, [sp, #24]278; NONEON-NOSVE-NEXT:    ldr h1, [sp, #8]279; NONEON-NOSVE-NEXT:    fcvt s0, h0280; NONEON-NOSVE-NEXT:    fcvt s1, h1281; NONEON-NOSVE-NEXT:    csetm w8, eq282; NONEON-NOSVE-NEXT:    strh w8, [sp, #74]283; NONEON-NOSVE-NEXT:    fcmp s1, s0284; NONEON-NOSVE-NEXT:    ldr h0, [sp, #22]285; NONEON-NOSVE-NEXT:    ldr h1, [sp, #6]286; NONEON-NOSVE-NEXT:    fcvt s0, h0287; NONEON-NOSVE-NEXT:    fcvt s1, h1288; NONEON-NOSVE-NEXT:    csetm w8, eq289; NONEON-NOSVE-NEXT:    strh w8, [sp, #72]290; NONEON-NOSVE-NEXT:    fcmp s1, s0291; NONEON-NOSVE-NEXT:    ldr h0, [sp, #20]292; NONEON-NOSVE-NEXT:    ldr h1, [sp, #4]293; NONEON-NOSVE-NEXT:    fcvt s0, h0294; NONEON-NOSVE-NEXT:    fcvt s1, h1295; NONEON-NOSVE-NEXT:    csetm w8, eq296; NONEON-NOSVE-NEXT:    strh w8, [sp, #70]297; NONEON-NOSVE-NEXT:    fcmp s1, s0298; NONEON-NOSVE-NEXT:    ldr h0, [sp, #18]299; NONEON-NOSVE-NEXT:    ldr h1, [sp, #2]300; NONEON-NOSVE-NEXT:    fcvt s0, h0301; NONEON-NOSVE-NEXT:    fcvt s1, h1302; NONEON-NOSVE-NEXT:    csetm w8, eq303; NONEON-NOSVE-NEXT:    strh w8, [sp, #68]304; NONEON-NOSVE-NEXT:    fcmp s1, s0305; NONEON-NOSVE-NEXT:    ldr h0, [sp, #16]306; NONEON-NOSVE-NEXT:    ldr h1, [sp]307; NONEON-NOSVE-NEXT:    fcvt s0, h0308; NONEON-NOSVE-NEXT:    fcvt s1, h1309; NONEON-NOSVE-NEXT:    csetm w8, eq310; NONEON-NOSVE-NEXT:    strh w8, [sp, #66]311; NONEON-NOSVE-NEXT:    fcmp s1, s0312; NONEON-NOSVE-NEXT:    csetm w8, eq313; NONEON-NOSVE-NEXT:    strh w8, [sp, #64]314; NONEON-NOSVE-NEXT:    ldp q0, q1, [sp, #64]315; NONEON-NOSVE-NEXT:    stp q0, q1, [x2]316; NONEON-NOSVE-NEXT:    add sp, sp, #96317; NONEON-NOSVE-NEXT:    ret318  %op1 = load <16 x half>, ptr %a319  %op2 = load <16 x half>, ptr %b320  %cmp = fcmp oeq <16 x half> %op1, %op2321  %sext = sext <16 x i1> %cmp to <16 x i16>322  store <16 x i16> %sext, ptr %c323  ret void324}325 326define <2 x i32> @fcmp_oeq_v2f32(<2 x float> %op1, <2 x float> %op2) {327; CHECK-LABEL: fcmp_oeq_v2f32:328; CHECK:       // %bb.0:329; CHECK-NEXT:    ptrue p0.s, vl2330; CHECK-NEXT:    // kill: def $d1 killed $d1 def $z1331; CHECK-NEXT:    // kill: def $d0 killed $d0 def $z0332; CHECK-NEXT:    fcmeq p0.s, p0/z, z0.s, z1.s333; CHECK-NEXT:    mov z0.s, p0/z, #-1 // =0xffffffffffffffff334; CHECK-NEXT:    // kill: def $d0 killed $d0 killed $z0335; CHECK-NEXT:    ret336;337; NONEON-NOSVE-LABEL: fcmp_oeq_v2f32:338; NONEON-NOSVE:       // %bb.0:339; NONEON-NOSVE-NEXT:    sub sp, sp, #32340; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 32341; NONEON-NOSVE-NEXT:    stp d0, d1, [sp, #8]342; NONEON-NOSVE-NEXT:    ldp s0, s2, [sp, #16]343; NONEON-NOSVE-NEXT:    ldp s1, s3, [sp, #8]344; NONEON-NOSVE-NEXT:    fcmp s3, s2345; NONEON-NOSVE-NEXT:    csetm w9, eq346; NONEON-NOSVE-NEXT:    fcmp s1, s0347; NONEON-NOSVE-NEXT:    csetm w8, eq348; NONEON-NOSVE-NEXT:    stp w8, w9, [sp, #24]349; NONEON-NOSVE-NEXT:    ldr d0, [sp, #24]350; NONEON-NOSVE-NEXT:    add sp, sp, #32351; NONEON-NOSVE-NEXT:    ret352  %cmp = fcmp oeq <2 x float> %op1, %op2353  %sext = sext <2 x i1> %cmp to <2 x i32>354  ret <2 x i32> %sext355}356 357define <4 x i32> @fcmp_oeq_v4f32(<4 x float> %op1, <4 x float> %op2) {358; CHECK-LABEL: fcmp_oeq_v4f32:359; CHECK:       // %bb.0:360; CHECK-NEXT:    ptrue p0.s, vl4361; CHECK-NEXT:    // kill: def $q1 killed $q1 def $z1362; CHECK-NEXT:    // kill: def $q0 killed $q0 def $z0363; CHECK-NEXT:    fcmeq p0.s, p0/z, z0.s, z1.s364; CHECK-NEXT:    mov z0.s, p0/z, #-1 // =0xffffffffffffffff365; CHECK-NEXT:    // kill: def $q0 killed $q0 killed $z0366; CHECK-NEXT:    ret367;368; NONEON-NOSVE-LABEL: fcmp_oeq_v4f32:369; NONEON-NOSVE:       // %bb.0:370; NONEON-NOSVE-NEXT:    stp q0, q1, [sp, #-48]!371; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 48372; NONEON-NOSVE-NEXT:    ldp s0, s2, [sp, #24]373; NONEON-NOSVE-NEXT:    ldp s1, s3, [sp, #8]374; NONEON-NOSVE-NEXT:    fcmp s3, s2375; NONEON-NOSVE-NEXT:    csetm w9, eq376; NONEON-NOSVE-NEXT:    fcmp s1, s0377; NONEON-NOSVE-NEXT:    ldp s0, s2, [sp, #16]378; NONEON-NOSVE-NEXT:    ldp s1, s3, [sp]379; NONEON-NOSVE-NEXT:    csetm w8, eq380; NONEON-NOSVE-NEXT:    stp w8, w9, [sp, #40]381; NONEON-NOSVE-NEXT:    fcmp s3, s2382; NONEON-NOSVE-NEXT:    csetm w9, eq383; NONEON-NOSVE-NEXT:    fcmp s1, s0384; NONEON-NOSVE-NEXT:    csetm w8, eq385; NONEON-NOSVE-NEXT:    stp w8, w9, [sp, #32]386; NONEON-NOSVE-NEXT:    ldr q0, [sp, #32]387; NONEON-NOSVE-NEXT:    add sp, sp, #48388; NONEON-NOSVE-NEXT:    ret389  %cmp = fcmp oeq <4 x float> %op1, %op2390  %sext = sext <4 x i1> %cmp to <4 x i32>391  ret <4 x i32> %sext392}393 394define void @fcmp_oeq_v8f32(ptr %a, ptr %b, ptr %c) {395; CHECK-LABEL: fcmp_oeq_v8f32:396; CHECK:       // %bb.0:397; CHECK-NEXT:    ldp q0, q3, [x1]398; CHECK-NEXT:    ptrue p0.s, vl4399; CHECK-NEXT:    ldp q1, q2, [x0]400; CHECK-NEXT:    fcmeq p1.s, p0/z, z1.s, z0.s401; CHECK-NEXT:    fcmeq p0.s, p0/z, z2.s, z3.s402; CHECK-NEXT:    mov z0.s, p1/z, #-1 // =0xffffffffffffffff403; CHECK-NEXT:    mov z1.s, p0/z, #-1 // =0xffffffffffffffff404; CHECK-NEXT:    stp q0, q1, [x2]405; CHECK-NEXT:    ret406;407; NONEON-NOSVE-LABEL: fcmp_oeq_v8f32:408; NONEON-NOSVE:       // %bb.0:409; NONEON-NOSVE-NEXT:    sub sp, sp, #96410; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 96411; NONEON-NOSVE-NEXT:    ldp q3, q0, [x1]412; NONEON-NOSVE-NEXT:    ldp q2, q1, [x0]413; NONEON-NOSVE-NEXT:    stp q2, q3, [sp]414; NONEON-NOSVE-NEXT:    stp q1, q0, [sp, #32]415; NONEON-NOSVE-NEXT:    ldp s0, s2, [sp, #56]416; NONEON-NOSVE-NEXT:    ldp s1, s3, [sp, #40]417; NONEON-NOSVE-NEXT:    fcmp s3, s2418; NONEON-NOSVE-NEXT:    csetm w9, eq419; NONEON-NOSVE-NEXT:    fcmp s1, s0420; NONEON-NOSVE-NEXT:    ldp s0, s2, [sp, #48]421; NONEON-NOSVE-NEXT:    ldp s1, s3, [sp, #32]422; NONEON-NOSVE-NEXT:    csetm w8, eq423; NONEON-NOSVE-NEXT:    stp w8, w9, [sp, #88]424; NONEON-NOSVE-NEXT:    fcmp s3, s2425; NONEON-NOSVE-NEXT:    csetm w9, eq426; NONEON-NOSVE-NEXT:    fcmp s1, s0427; NONEON-NOSVE-NEXT:    ldp s0, s2, [sp, #24]428; NONEON-NOSVE-NEXT:    ldp s1, s3, [sp, #8]429; NONEON-NOSVE-NEXT:    csetm w8, eq430; NONEON-NOSVE-NEXT:    stp w8, w9, [sp, #80]431; NONEON-NOSVE-NEXT:    fcmp s3, s2432; NONEON-NOSVE-NEXT:    csetm w9, eq433; NONEON-NOSVE-NEXT:    fcmp s1, s0434; NONEON-NOSVE-NEXT:    ldp s0, s2, [sp, #16]435; NONEON-NOSVE-NEXT:    ldp s1, s3, [sp]436; NONEON-NOSVE-NEXT:    csetm w8, eq437; NONEON-NOSVE-NEXT:    stp w8, w9, [sp, #72]438; NONEON-NOSVE-NEXT:    fcmp s3, s2439; NONEON-NOSVE-NEXT:    csetm w9, eq440; NONEON-NOSVE-NEXT:    fcmp s1, s0441; NONEON-NOSVE-NEXT:    csetm w8, eq442; NONEON-NOSVE-NEXT:    stp w8, w9, [sp, #64]443; NONEON-NOSVE-NEXT:    ldp q0, q1, [sp, #64]444; NONEON-NOSVE-NEXT:    stp q0, q1, [x2]445; NONEON-NOSVE-NEXT:    add sp, sp, #96446; NONEON-NOSVE-NEXT:    ret447  %op1 = load <8 x float>, ptr %a448  %op2 = load <8 x float>, ptr %b449  %cmp = fcmp oeq <8 x float> %op1, %op2450  %sext = sext <8 x i1> %cmp to <8 x i32>451  store <8 x i32> %sext, ptr %c452  ret void453}454 455define <1 x i64> @fcmp_oeq_v1f64(<1 x double> %op1, <1 x double> %op2) {456; CHECK-LABEL: fcmp_oeq_v1f64:457; CHECK:       // %bb.0:458; CHECK-NEXT:    fcmp d0, d1459; CHECK-NEXT:    csetm x8, eq460; CHECK-NEXT:    mov z0.d, x8461; CHECK-NEXT:    // kill: def $d0 killed $d0 killed $z0462; CHECK-NEXT:    ret463;464; NONEON-NOSVE-LABEL: fcmp_oeq_v1f64:465; NONEON-NOSVE:       // %bb.0:466; NONEON-NOSVE-NEXT:    sub sp, sp, #16467; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 16468; NONEON-NOSVE-NEXT:    fcmp d0, d1469; NONEON-NOSVE-NEXT:    csetm x8, eq470; NONEON-NOSVE-NEXT:    str x8, [sp, #8]471; NONEON-NOSVE-NEXT:    ldr d0, [sp, #8]472; NONEON-NOSVE-NEXT:    add sp, sp, #16473; NONEON-NOSVE-NEXT:    ret474  %cmp = fcmp oeq <1 x double> %op1, %op2475  %sext = sext <1 x i1> %cmp to <1 x i64>476  ret <1 x i64> %sext477}478 479define <2 x i64> @fcmp_oeq_v2f64(<2 x double> %op1, <2 x double> %op2) {480; CHECK-LABEL: fcmp_oeq_v2f64:481; CHECK:       // %bb.0:482; CHECK-NEXT:    ptrue p0.d, vl2483; CHECK-NEXT:    // kill: def $q1 killed $q1 def $z1484; CHECK-NEXT:    // kill: def $q0 killed $q0 def $z0485; CHECK-NEXT:    fcmeq p0.d, p0/z, z0.d, z1.d486; CHECK-NEXT:    mov z0.d, p0/z, #-1 // =0xffffffffffffffff487; CHECK-NEXT:    // kill: def $q0 killed $q0 killed $z0488; CHECK-NEXT:    ret489;490; NONEON-NOSVE-LABEL: fcmp_oeq_v2f64:491; NONEON-NOSVE:       // %bb.0:492; NONEON-NOSVE-NEXT:    stp q0, q1, [sp, #-48]!493; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 48494; NONEON-NOSVE-NEXT:    ldp d0, d2, [sp, #16]495; NONEON-NOSVE-NEXT:    ldp d1, d3, [sp]496; NONEON-NOSVE-NEXT:    fcmp d3, d2497; NONEON-NOSVE-NEXT:    csetm x9, eq498; NONEON-NOSVE-NEXT:    fcmp d1, d0499; NONEON-NOSVE-NEXT:    csetm x8, eq500; NONEON-NOSVE-NEXT:    stp x8, x9, [sp, #32]501; NONEON-NOSVE-NEXT:    ldr q0, [sp, #32]502; NONEON-NOSVE-NEXT:    add sp, sp, #48503; NONEON-NOSVE-NEXT:    ret504  %cmp = fcmp oeq <2 x double> %op1, %op2505  %sext = sext <2 x i1> %cmp to <2 x i64>506  ret <2 x i64> %sext507}508 509define void @fcmp_oeq_v4f64(ptr %a, ptr %b, ptr %c) {510; CHECK-LABEL: fcmp_oeq_v4f64:511; CHECK:       // %bb.0:512; CHECK-NEXT:    ldp q0, q3, [x1]513; CHECK-NEXT:    ptrue p0.d, vl2514; CHECK-NEXT:    ldp q1, q2, [x0]515; CHECK-NEXT:    fcmeq p1.d, p0/z, z1.d, z0.d516; CHECK-NEXT:    fcmeq p0.d, p0/z, z2.d, z3.d517; CHECK-NEXT:    mov z0.d, p1/z, #-1 // =0xffffffffffffffff518; CHECK-NEXT:    mov z1.d, p0/z, #-1 // =0xffffffffffffffff519; CHECK-NEXT:    stp q0, q1, [x2]520; CHECK-NEXT:    ret521;522; NONEON-NOSVE-LABEL: fcmp_oeq_v4f64:523; NONEON-NOSVE:       // %bb.0:524; NONEON-NOSVE-NEXT:    sub sp, sp, #96525; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 96526; NONEON-NOSVE-NEXT:    ldp q3, q0, [x1]527; NONEON-NOSVE-NEXT:    ldp q2, q1, [x0]528; NONEON-NOSVE-NEXT:    stp q2, q3, [sp]529; NONEON-NOSVE-NEXT:    stp q1, q0, [sp, #32]530; NONEON-NOSVE-NEXT:    ldp d0, d2, [sp, #48]531; NONEON-NOSVE-NEXT:    ldp d1, d3, [sp, #32]532; NONEON-NOSVE-NEXT:    fcmp d3, d2533; NONEON-NOSVE-NEXT:    csetm x9, eq534; NONEON-NOSVE-NEXT:    fcmp d1, d0535; NONEON-NOSVE-NEXT:    ldp d0, d2, [sp, #16]536; NONEON-NOSVE-NEXT:    ldp d1, d3, [sp]537; NONEON-NOSVE-NEXT:    csetm x8, eq538; NONEON-NOSVE-NEXT:    stp x8, x9, [sp, #80]539; NONEON-NOSVE-NEXT:    fcmp d3, d2540; NONEON-NOSVE-NEXT:    csetm x9, eq541; NONEON-NOSVE-NEXT:    fcmp d1, d0542; NONEON-NOSVE-NEXT:    csetm x8, eq543; NONEON-NOSVE-NEXT:    stp x8, x9, [sp, #64]544; NONEON-NOSVE-NEXT:    ldp q0, q1, [sp, #64]545; NONEON-NOSVE-NEXT:    stp q0, q1, [x2]546; NONEON-NOSVE-NEXT:    add sp, sp, #96547; NONEON-NOSVE-NEXT:    ret548  %op1 = load <4 x double>, ptr %a549  %op2 = load <4 x double>, ptr %b550  %cmp = fcmp oeq <4 x double> %op1, %op2551  %sext = sext <4 x i1> %cmp to <4 x i64>552  store <4 x i64> %sext, ptr %c553  ret void554}555 556;557; FCMP UEQ558;559 560define void @fcmp_ueq_v16f16(ptr %a, ptr %b, ptr %c) {561; CHECK-LABEL: fcmp_ueq_v16f16:562; CHECK:       // %bb.0:563; CHECK-NEXT:    ldp q3, q0, [x1]564; CHECK-NEXT:    ptrue p0.h, vl8565; CHECK-NEXT:    ldp q2, q1, [x0]566; CHECK-NEXT:    fcmuo p1.h, p0/z, z1.h, z0.h567; CHECK-NEXT:    fcmuo p2.h, p0/z, z2.h, z3.h568; CHECK-NEXT:    fcmeq p3.h, p0/z, z2.h, z3.h569; CHECK-NEXT:    fcmeq p0.h, p0/z, z1.h, z0.h570; CHECK-NEXT:    mov p2.b, p3/m, p3.b571; CHECK-NEXT:    sel p0.b, p0, p0.b, p1.b572; CHECK-NEXT:    mov z0.h, p2/z, #-1 // =0xffffffffffffffff573; CHECK-NEXT:    mov z1.h, p0/z, #-1 // =0xffffffffffffffff574; CHECK-NEXT:    stp q0, q1, [x2]575; CHECK-NEXT:    ret576;577; NONEON-NOSVE-LABEL: fcmp_ueq_v16f16:578; NONEON-NOSVE:       // %bb.0:579; NONEON-NOSVE-NEXT:    sub sp, sp, #96580; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 96581; NONEON-NOSVE-NEXT:    ldp q3, q0, [x1]582; NONEON-NOSVE-NEXT:    ldp q2, q1, [x0]583; NONEON-NOSVE-NEXT:    stp q2, q3, [sp]584; NONEON-NOSVE-NEXT:    stp q1, q0, [sp, #32]585; NONEON-NOSVE-NEXT:    ldr h0, [sp, #62]586; NONEON-NOSVE-NEXT:    ldr h1, [sp, #46]587; NONEON-NOSVE-NEXT:    fcvt s0, h0588; NONEON-NOSVE-NEXT:    fcvt s1, h1589; NONEON-NOSVE-NEXT:    fcmp s1, s0590; NONEON-NOSVE-NEXT:    ldr h0, [sp, #60]591; NONEON-NOSVE-NEXT:    ldr h1, [sp, #44]592; NONEON-NOSVE-NEXT:    fcvt s0, h0593; NONEON-NOSVE-NEXT:    fcvt s1, h1594; NONEON-NOSVE-NEXT:    csetm w8, eq595; NONEON-NOSVE-NEXT:    csinv w8, w8, wzr, vc596; NONEON-NOSVE-NEXT:    strh w8, [sp, #94]597; NONEON-NOSVE-NEXT:    fcmp s1, s0598; NONEON-NOSVE-NEXT:    ldr h0, [sp, #58]599; NONEON-NOSVE-NEXT:    ldr h1, [sp, #42]600; NONEON-NOSVE-NEXT:    fcvt s0, h0601; NONEON-NOSVE-NEXT:    fcvt s1, h1602; NONEON-NOSVE-NEXT:    csetm w8, eq603; NONEON-NOSVE-NEXT:    csinv w8, w8, wzr, vc604; NONEON-NOSVE-NEXT:    strh w8, [sp, #92]605; NONEON-NOSVE-NEXT:    fcmp s1, s0606; NONEON-NOSVE-NEXT:    ldr h0, [sp, #56]607; NONEON-NOSVE-NEXT:    ldr h1, [sp, #40]608; NONEON-NOSVE-NEXT:    fcvt s0, h0609; NONEON-NOSVE-NEXT:    fcvt s1, h1610; NONEON-NOSVE-NEXT:    csetm w8, eq611; NONEON-NOSVE-NEXT:    csinv w8, w8, wzr, vc612; NONEON-NOSVE-NEXT:    strh w8, [sp, #90]613; NONEON-NOSVE-NEXT:    fcmp s1, s0614; NONEON-NOSVE-NEXT:    ldr h0, [sp, #54]615; NONEON-NOSVE-NEXT:    ldr h1, [sp, #38]616; NONEON-NOSVE-NEXT:    fcvt s0, h0617; NONEON-NOSVE-NEXT:    fcvt s1, h1618; NONEON-NOSVE-NEXT:    csetm w8, eq619; NONEON-NOSVE-NEXT:    csinv w8, w8, wzr, vc620; NONEON-NOSVE-NEXT:    strh w8, [sp, #88]621; NONEON-NOSVE-NEXT:    fcmp s1, s0622; NONEON-NOSVE-NEXT:    ldr h0, [sp, #52]623; NONEON-NOSVE-NEXT:    ldr h1, [sp, #36]624; NONEON-NOSVE-NEXT:    fcvt s0, h0625; NONEON-NOSVE-NEXT:    fcvt s1, h1626; NONEON-NOSVE-NEXT:    csetm w8, eq627; NONEON-NOSVE-NEXT:    csinv w8, w8, wzr, vc628; NONEON-NOSVE-NEXT:    strh w8, [sp, #86]629; NONEON-NOSVE-NEXT:    fcmp s1, s0630; NONEON-NOSVE-NEXT:    ldr h0, [sp, #50]631; NONEON-NOSVE-NEXT:    ldr h1, [sp, #34]632; NONEON-NOSVE-NEXT:    fcvt s0, h0633; NONEON-NOSVE-NEXT:    fcvt s1, h1634; NONEON-NOSVE-NEXT:    csetm w8, eq635; NONEON-NOSVE-NEXT:    csinv w8, w8, wzr, vc636; NONEON-NOSVE-NEXT:    strh w8, [sp, #84]637; NONEON-NOSVE-NEXT:    fcmp s1, s0638; NONEON-NOSVE-NEXT:    ldr h0, [sp, #48]639; NONEON-NOSVE-NEXT:    ldr h1, [sp, #32]640; NONEON-NOSVE-NEXT:    fcvt s0, h0641; NONEON-NOSVE-NEXT:    fcvt s1, h1642; NONEON-NOSVE-NEXT:    csetm w8, eq643; NONEON-NOSVE-NEXT:    csinv w8, w8, wzr, vc644; NONEON-NOSVE-NEXT:    strh w8, [sp, #82]645; NONEON-NOSVE-NEXT:    fcmp s1, s0646; NONEON-NOSVE-NEXT:    ldr h0, [sp, #30]647; NONEON-NOSVE-NEXT:    ldr h1, [sp, #14]648; NONEON-NOSVE-NEXT:    fcvt s0, h0649; NONEON-NOSVE-NEXT:    fcvt s1, h1650; NONEON-NOSVE-NEXT:    csetm w8, eq651; NONEON-NOSVE-NEXT:    csinv w8, w8, wzr, vc652; NONEON-NOSVE-NEXT:    strh w8, [sp, #80]653; NONEON-NOSVE-NEXT:    fcmp s1, s0654; NONEON-NOSVE-NEXT:    ldr h0, [sp, #28]655; NONEON-NOSVE-NEXT:    ldr h1, [sp, #12]656; NONEON-NOSVE-NEXT:    fcvt s0, h0657; NONEON-NOSVE-NEXT:    fcvt s1, h1658; NONEON-NOSVE-NEXT:    csetm w8, eq659; NONEON-NOSVE-NEXT:    csinv w8, w8, wzr, vc660; NONEON-NOSVE-NEXT:    strh w8, [sp, #78]661; NONEON-NOSVE-NEXT:    fcmp s1, s0662; NONEON-NOSVE-NEXT:    ldr h0, [sp, #26]663; NONEON-NOSVE-NEXT:    ldr h1, [sp, #10]664; NONEON-NOSVE-NEXT:    fcvt s0, h0665; NONEON-NOSVE-NEXT:    fcvt s1, h1666; NONEON-NOSVE-NEXT:    csetm w8, eq667; NONEON-NOSVE-NEXT:    csinv w8, w8, wzr, vc668; NONEON-NOSVE-NEXT:    strh w8, [sp, #76]669; NONEON-NOSVE-NEXT:    fcmp s1, s0670; NONEON-NOSVE-NEXT:    ldr h0, [sp, #24]671; NONEON-NOSVE-NEXT:    ldr h1, [sp, #8]672; NONEON-NOSVE-NEXT:    fcvt s0, h0673; NONEON-NOSVE-NEXT:    fcvt s1, h1674; NONEON-NOSVE-NEXT:    csetm w8, eq675; NONEON-NOSVE-NEXT:    csinv w8, w8, wzr, vc676; NONEON-NOSVE-NEXT:    strh w8, [sp, #74]677; NONEON-NOSVE-NEXT:    fcmp s1, s0678; NONEON-NOSVE-NEXT:    ldr h0, [sp, #22]679; NONEON-NOSVE-NEXT:    ldr h1, [sp, #6]680; NONEON-NOSVE-NEXT:    fcvt s0, h0681; NONEON-NOSVE-NEXT:    fcvt s1, h1682; NONEON-NOSVE-NEXT:    csetm w8, eq683; NONEON-NOSVE-NEXT:    csinv w8, w8, wzr, vc684; NONEON-NOSVE-NEXT:    strh w8, [sp, #72]685; NONEON-NOSVE-NEXT:    fcmp s1, s0686; NONEON-NOSVE-NEXT:    ldr h0, [sp, #20]687; NONEON-NOSVE-NEXT:    ldr h1, [sp, #4]688; NONEON-NOSVE-NEXT:    fcvt s0, h0689; NONEON-NOSVE-NEXT:    fcvt s1, h1690; NONEON-NOSVE-NEXT:    csetm w8, eq691; NONEON-NOSVE-NEXT:    csinv w8, w8, wzr, vc692; NONEON-NOSVE-NEXT:    strh w8, [sp, #70]693; NONEON-NOSVE-NEXT:    fcmp s1, s0694; NONEON-NOSVE-NEXT:    ldr h0, [sp, #18]695; NONEON-NOSVE-NEXT:    ldr h1, [sp, #2]696; NONEON-NOSVE-NEXT:    fcvt s0, h0697; NONEON-NOSVE-NEXT:    fcvt s1, h1698; NONEON-NOSVE-NEXT:    csetm w8, eq699; NONEON-NOSVE-NEXT:    csinv w8, w8, wzr, vc700; NONEON-NOSVE-NEXT:    strh w8, [sp, #68]701; NONEON-NOSVE-NEXT:    fcmp s1, s0702; NONEON-NOSVE-NEXT:    ldr h0, [sp, #16]703; NONEON-NOSVE-NEXT:    ldr h1, [sp]704; NONEON-NOSVE-NEXT:    fcvt s0, h0705; NONEON-NOSVE-NEXT:    fcvt s1, h1706; NONEON-NOSVE-NEXT:    csetm w8, eq707; NONEON-NOSVE-NEXT:    csinv w8, w8, wzr, vc708; NONEON-NOSVE-NEXT:    strh w8, [sp, #66]709; NONEON-NOSVE-NEXT:    fcmp s1, s0710; NONEON-NOSVE-NEXT:    csetm w8, eq711; NONEON-NOSVE-NEXT:    csinv w8, w8, wzr, vc712; NONEON-NOSVE-NEXT:    strh w8, [sp, #64]713; NONEON-NOSVE-NEXT:    ldp q0, q1, [sp, #64]714; NONEON-NOSVE-NEXT:    stp q0, q1, [x2]715; NONEON-NOSVE-NEXT:    add sp, sp, #96716; NONEON-NOSVE-NEXT:    ret717  %op1 = load <16 x half>, ptr %a718  %op2 = load <16 x half>, ptr %b719  %cmp = fcmp ueq <16 x half> %op1, %op2720  %sext = sext <16 x i1> %cmp to <16 x i16>721  store <16 x i16> %sext, ptr %c722  ret void723}724 725;726; FCMP ONE727;728 729define void @fcmp_one_v16f16(ptr %a, ptr %b, ptr %c) {730; CHECK-LABEL: fcmp_one_v16f16:731; CHECK:       // %bb.0:732; CHECK-NEXT:    ldp q3, q0, [x1]733; CHECK-NEXT:    ptrue p0.h, vl8734; CHECK-NEXT:    ldp q2, q1, [x0]735; CHECK-NEXT:    fcmgt p1.h, p0/z, z0.h, z1.h736; CHECK-NEXT:    fcmgt p2.h, p0/z, z3.h, z2.h737; CHECK-NEXT:    fcmgt p3.h, p0/z, z2.h, z3.h738; CHECK-NEXT:    fcmgt p0.h, p0/z, z1.h, z0.h739; CHECK-NEXT:    mov p2.b, p3/m, p3.b740; CHECK-NEXT:    sel p0.b, p0, p0.b, p1.b741; CHECK-NEXT:    mov z0.h, p2/z, #-1 // =0xffffffffffffffff742; CHECK-NEXT:    mov z1.h, p0/z, #-1 // =0xffffffffffffffff743; CHECK-NEXT:    stp q0, q1, [x2]744; CHECK-NEXT:    ret745;746; NONEON-NOSVE-LABEL: fcmp_one_v16f16:747; NONEON-NOSVE:       // %bb.0:748; NONEON-NOSVE-NEXT:    sub sp, sp, #96749; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 96750; NONEON-NOSVE-NEXT:    ldp q3, q0, [x1]751; NONEON-NOSVE-NEXT:    ldp q2, q1, [x0]752; NONEON-NOSVE-NEXT:    stp q2, q3, [sp]753; NONEON-NOSVE-NEXT:    stp q1, q0, [sp, #32]754; NONEON-NOSVE-NEXT:    ldr h0, [sp, #62]755; NONEON-NOSVE-NEXT:    ldr h1, [sp, #46]756; NONEON-NOSVE-NEXT:    fcvt s0, h0757; NONEON-NOSVE-NEXT:    fcvt s1, h1758; NONEON-NOSVE-NEXT:    fcmp s1, s0759; NONEON-NOSVE-NEXT:    ldr h0, [sp, #60]760; NONEON-NOSVE-NEXT:    ldr h1, [sp, #44]761; NONEON-NOSVE-NEXT:    fcvt s0, h0762; NONEON-NOSVE-NEXT:    fcvt s1, h1763; NONEON-NOSVE-NEXT:    csetm w8, mi764; NONEON-NOSVE-NEXT:    csinv w8, w8, wzr, le765; NONEON-NOSVE-NEXT:    strh w8, [sp, #94]766; NONEON-NOSVE-NEXT:    fcmp s1, s0767; NONEON-NOSVE-NEXT:    ldr h0, [sp, #58]768; NONEON-NOSVE-NEXT:    ldr h1, [sp, #42]769; NONEON-NOSVE-NEXT:    fcvt s0, h0770; NONEON-NOSVE-NEXT:    fcvt s1, h1771; NONEON-NOSVE-NEXT:    csetm w8, mi772; NONEON-NOSVE-NEXT:    csinv w8, w8, wzr, le773; NONEON-NOSVE-NEXT:    strh w8, [sp, #92]774; NONEON-NOSVE-NEXT:    fcmp s1, s0775; NONEON-NOSVE-NEXT:    ldr h0, [sp, #56]776; NONEON-NOSVE-NEXT:    ldr h1, [sp, #40]777; NONEON-NOSVE-NEXT:    fcvt s0, h0778; NONEON-NOSVE-NEXT:    fcvt s1, h1779; NONEON-NOSVE-NEXT:    csetm w8, mi780; NONEON-NOSVE-NEXT:    csinv w8, w8, wzr, le781; NONEON-NOSVE-NEXT:    strh w8, [sp, #90]782; NONEON-NOSVE-NEXT:    fcmp s1, s0783; NONEON-NOSVE-NEXT:    ldr h0, [sp, #54]784; NONEON-NOSVE-NEXT:    ldr h1, [sp, #38]785; NONEON-NOSVE-NEXT:    fcvt s0, h0786; NONEON-NOSVE-NEXT:    fcvt s1, h1787; NONEON-NOSVE-NEXT:    csetm w8, mi788; NONEON-NOSVE-NEXT:    csinv w8, w8, wzr, le789; NONEON-NOSVE-NEXT:    strh w8, [sp, #88]790; NONEON-NOSVE-NEXT:    fcmp s1, s0791; NONEON-NOSVE-NEXT:    ldr h0, [sp, #52]792; NONEON-NOSVE-NEXT:    ldr h1, [sp, #36]793; NONEON-NOSVE-NEXT:    fcvt s0, h0794; NONEON-NOSVE-NEXT:    fcvt s1, h1795; NONEON-NOSVE-NEXT:    csetm w8, mi796; NONEON-NOSVE-NEXT:    csinv w8, w8, wzr, le797; NONEON-NOSVE-NEXT:    strh w8, [sp, #86]798; NONEON-NOSVE-NEXT:    fcmp s1, s0799; NONEON-NOSVE-NEXT:    ldr h0, [sp, #50]800; NONEON-NOSVE-NEXT:    ldr h1, [sp, #34]801; NONEON-NOSVE-NEXT:    fcvt s0, h0802; NONEON-NOSVE-NEXT:    fcvt s1, h1803; NONEON-NOSVE-NEXT:    csetm w8, mi804; NONEON-NOSVE-NEXT:    csinv w8, w8, wzr, le805; NONEON-NOSVE-NEXT:    strh w8, [sp, #84]806; NONEON-NOSVE-NEXT:    fcmp s1, s0807; NONEON-NOSVE-NEXT:    ldr h0, [sp, #48]808; NONEON-NOSVE-NEXT:    ldr h1, [sp, #32]809; NONEON-NOSVE-NEXT:    fcvt s0, h0810; NONEON-NOSVE-NEXT:    fcvt s1, h1811; NONEON-NOSVE-NEXT:    csetm w8, mi812; NONEON-NOSVE-NEXT:    csinv w8, w8, wzr, le813; NONEON-NOSVE-NEXT:    strh w8, [sp, #82]814; NONEON-NOSVE-NEXT:    fcmp s1, s0815; NONEON-NOSVE-NEXT:    ldr h0, [sp, #30]816; NONEON-NOSVE-NEXT:    ldr h1, [sp, #14]817; NONEON-NOSVE-NEXT:    fcvt s0, h0818; NONEON-NOSVE-NEXT:    fcvt s1, h1819; NONEON-NOSVE-NEXT:    csetm w8, mi820; NONEON-NOSVE-NEXT:    csinv w8, w8, wzr, le821; NONEON-NOSVE-NEXT:    strh w8, [sp, #80]822; NONEON-NOSVE-NEXT:    fcmp s1, s0823; NONEON-NOSVE-NEXT:    ldr h0, [sp, #28]824; NONEON-NOSVE-NEXT:    ldr h1, [sp, #12]825; NONEON-NOSVE-NEXT:    fcvt s0, h0826; NONEON-NOSVE-NEXT:    fcvt s1, h1827; NONEON-NOSVE-NEXT:    csetm w8, mi828; NONEON-NOSVE-NEXT:    csinv w8, w8, wzr, le829; NONEON-NOSVE-NEXT:    strh w8, [sp, #78]830; NONEON-NOSVE-NEXT:    fcmp s1, s0831; NONEON-NOSVE-NEXT:    ldr h0, [sp, #26]832; NONEON-NOSVE-NEXT:    ldr h1, [sp, #10]833; NONEON-NOSVE-NEXT:    fcvt s0, h0834; NONEON-NOSVE-NEXT:    fcvt s1, h1835; NONEON-NOSVE-NEXT:    csetm w8, mi836; NONEON-NOSVE-NEXT:    csinv w8, w8, wzr, le837; NONEON-NOSVE-NEXT:    strh w8, [sp, #76]838; NONEON-NOSVE-NEXT:    fcmp s1, s0839; NONEON-NOSVE-NEXT:    ldr h0, [sp, #24]840; NONEON-NOSVE-NEXT:    ldr h1, [sp, #8]841; NONEON-NOSVE-NEXT:    fcvt s0, h0842; NONEON-NOSVE-NEXT:    fcvt s1, h1843; NONEON-NOSVE-NEXT:    csetm w8, mi844; NONEON-NOSVE-NEXT:    csinv w8, w8, wzr, le845; NONEON-NOSVE-NEXT:    strh w8, [sp, #74]846; NONEON-NOSVE-NEXT:    fcmp s1, s0847; NONEON-NOSVE-NEXT:    ldr h0, [sp, #22]848; NONEON-NOSVE-NEXT:    ldr h1, [sp, #6]849; NONEON-NOSVE-NEXT:    fcvt s0, h0850; NONEON-NOSVE-NEXT:    fcvt s1, h1851; NONEON-NOSVE-NEXT:    csetm w8, mi852; NONEON-NOSVE-NEXT:    csinv w8, w8, wzr, le853; NONEON-NOSVE-NEXT:    strh w8, [sp, #72]854; NONEON-NOSVE-NEXT:    fcmp s1, s0855; NONEON-NOSVE-NEXT:    ldr h0, [sp, #20]856; NONEON-NOSVE-NEXT:    ldr h1, [sp, #4]857; NONEON-NOSVE-NEXT:    fcvt s0, h0858; NONEON-NOSVE-NEXT:    fcvt s1, h1859; NONEON-NOSVE-NEXT:    csetm w8, mi860; NONEON-NOSVE-NEXT:    csinv w8, w8, wzr, le861; NONEON-NOSVE-NEXT:    strh w8, [sp, #70]862; NONEON-NOSVE-NEXT:    fcmp s1, s0863; NONEON-NOSVE-NEXT:    ldr h0, [sp, #18]864; NONEON-NOSVE-NEXT:    ldr h1, [sp, #2]865; NONEON-NOSVE-NEXT:    fcvt s0, h0866; NONEON-NOSVE-NEXT:    fcvt s1, h1867; NONEON-NOSVE-NEXT:    csetm w8, mi868; NONEON-NOSVE-NEXT:    csinv w8, w8, wzr, le869; NONEON-NOSVE-NEXT:    strh w8, [sp, #68]870; NONEON-NOSVE-NEXT:    fcmp s1, s0871; NONEON-NOSVE-NEXT:    ldr h0, [sp, #16]872; NONEON-NOSVE-NEXT:    ldr h1, [sp]873; NONEON-NOSVE-NEXT:    fcvt s0, h0874; NONEON-NOSVE-NEXT:    fcvt s1, h1875; NONEON-NOSVE-NEXT:    csetm w8, mi876; NONEON-NOSVE-NEXT:    csinv w8, w8, wzr, le877; NONEON-NOSVE-NEXT:    strh w8, [sp, #66]878; NONEON-NOSVE-NEXT:    fcmp s1, s0879; NONEON-NOSVE-NEXT:    csetm w8, mi880; NONEON-NOSVE-NEXT:    csinv w8, w8, wzr, le881; NONEON-NOSVE-NEXT:    strh w8, [sp, #64]882; NONEON-NOSVE-NEXT:    ldp q0, q1, [sp, #64]883; NONEON-NOSVE-NEXT:    stp q0, q1, [x2]884; NONEON-NOSVE-NEXT:    add sp, sp, #96885; NONEON-NOSVE-NEXT:    ret886  %op1 = load <16 x half>, ptr %a887  %op2 = load <16 x half>, ptr %b888  %cmp = fcmp one <16 x half> %op1, %op2889  %sext = sext <16 x i1> %cmp to <16 x i16>890  store <16 x i16> %sext, ptr %c891  ret void892}893 894;895; FCMP UNE896;897 898define void @fcmp_une_v16f16(ptr %a, ptr %b, ptr %c) {899; CHECK-LABEL: fcmp_une_v16f16:900; CHECK:       // %bb.0:901; CHECK-NEXT:    ldp q0, q3, [x1]902; CHECK-NEXT:    ptrue p0.h, vl8903; CHECK-NEXT:    ldp q1, q2, [x0]904; CHECK-NEXT:    fcmne p1.h, p0/z, z1.h, z0.h905; CHECK-NEXT:    fcmne p0.h, p0/z, z2.h, z3.h906; CHECK-NEXT:    mov z0.h, p1/z, #-1 // =0xffffffffffffffff907; CHECK-NEXT:    mov z1.h, p0/z, #-1 // =0xffffffffffffffff908; CHECK-NEXT:    stp q0, q1, [x2]909; CHECK-NEXT:    ret910;911; NONEON-NOSVE-LABEL: fcmp_une_v16f16:912; NONEON-NOSVE:       // %bb.0:913; NONEON-NOSVE-NEXT:    sub sp, sp, #96914; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 96915; NONEON-NOSVE-NEXT:    ldp q3, q0, [x1]916; NONEON-NOSVE-NEXT:    ldp q2, q1, [x0]917; NONEON-NOSVE-NEXT:    stp q2, q3, [sp]918; NONEON-NOSVE-NEXT:    stp q1, q0, [sp, #32]919; NONEON-NOSVE-NEXT:    ldr h0, [sp, #62]920; NONEON-NOSVE-NEXT:    ldr h1, [sp, #46]921; NONEON-NOSVE-NEXT:    fcvt s0, h0922; NONEON-NOSVE-NEXT:    fcvt s1, h1923; NONEON-NOSVE-NEXT:    fcmp s1, s0924; NONEON-NOSVE-NEXT:    ldr h0, [sp, #60]925; NONEON-NOSVE-NEXT:    ldr h1, [sp, #44]926; NONEON-NOSVE-NEXT:    fcvt s0, h0927; NONEON-NOSVE-NEXT:    fcvt s1, h1928; NONEON-NOSVE-NEXT:    csetm w8, ne929; NONEON-NOSVE-NEXT:    strh w8, [sp, #94]930; NONEON-NOSVE-NEXT:    fcmp s1, s0931; NONEON-NOSVE-NEXT:    ldr h0, [sp, #58]932; NONEON-NOSVE-NEXT:    ldr h1, [sp, #42]933; NONEON-NOSVE-NEXT:    fcvt s0, h0934; NONEON-NOSVE-NEXT:    fcvt s1, h1935; NONEON-NOSVE-NEXT:    csetm w8, ne936; NONEON-NOSVE-NEXT:    strh w8, [sp, #92]937; NONEON-NOSVE-NEXT:    fcmp s1, s0938; NONEON-NOSVE-NEXT:    ldr h0, [sp, #56]939; NONEON-NOSVE-NEXT:    ldr h1, [sp, #40]940; NONEON-NOSVE-NEXT:    fcvt s0, h0941; NONEON-NOSVE-NEXT:    fcvt s1, h1942; NONEON-NOSVE-NEXT:    csetm w8, ne943; NONEON-NOSVE-NEXT:    strh w8, [sp, #90]944; NONEON-NOSVE-NEXT:    fcmp s1, s0945; NONEON-NOSVE-NEXT:    ldr h0, [sp, #54]946; NONEON-NOSVE-NEXT:    ldr h1, [sp, #38]947; NONEON-NOSVE-NEXT:    fcvt s0, h0948; NONEON-NOSVE-NEXT:    fcvt s1, h1949; NONEON-NOSVE-NEXT:    csetm w8, ne950; NONEON-NOSVE-NEXT:    strh w8, [sp, #88]951; NONEON-NOSVE-NEXT:    fcmp s1, s0952; NONEON-NOSVE-NEXT:    ldr h0, [sp, #52]953; NONEON-NOSVE-NEXT:    ldr h1, [sp, #36]954; NONEON-NOSVE-NEXT:    fcvt s0, h0955; NONEON-NOSVE-NEXT:    fcvt s1, h1956; NONEON-NOSVE-NEXT:    csetm w8, ne957; NONEON-NOSVE-NEXT:    strh w8, [sp, #86]958; NONEON-NOSVE-NEXT:    fcmp s1, s0959; NONEON-NOSVE-NEXT:    ldr h0, [sp, #50]960; NONEON-NOSVE-NEXT:    ldr h1, [sp, #34]961; NONEON-NOSVE-NEXT:    fcvt s0, h0962; NONEON-NOSVE-NEXT:    fcvt s1, h1963; NONEON-NOSVE-NEXT:    csetm w8, ne964; NONEON-NOSVE-NEXT:    strh w8, [sp, #84]965; NONEON-NOSVE-NEXT:    fcmp s1, s0966; NONEON-NOSVE-NEXT:    ldr h0, [sp, #48]967; NONEON-NOSVE-NEXT:    ldr h1, [sp, #32]968; NONEON-NOSVE-NEXT:    fcvt s0, h0969; NONEON-NOSVE-NEXT:    fcvt s1, h1970; NONEON-NOSVE-NEXT:    csetm w8, ne971; NONEON-NOSVE-NEXT:    strh w8, [sp, #82]972; NONEON-NOSVE-NEXT:    fcmp s1, s0973; NONEON-NOSVE-NEXT:    ldr h0, [sp, #30]974; NONEON-NOSVE-NEXT:    ldr h1, [sp, #14]975; NONEON-NOSVE-NEXT:    fcvt s0, h0976; NONEON-NOSVE-NEXT:    fcvt s1, h1977; NONEON-NOSVE-NEXT:    csetm w8, ne978; NONEON-NOSVE-NEXT:    strh w8, [sp, #80]979; NONEON-NOSVE-NEXT:    fcmp s1, s0980; NONEON-NOSVE-NEXT:    ldr h0, [sp, #28]981; NONEON-NOSVE-NEXT:    ldr h1, [sp, #12]982; NONEON-NOSVE-NEXT:    fcvt s0, h0983; NONEON-NOSVE-NEXT:    fcvt s1, h1984; NONEON-NOSVE-NEXT:    csetm w8, ne985; NONEON-NOSVE-NEXT:    strh w8, [sp, #78]986; NONEON-NOSVE-NEXT:    fcmp s1, s0987; NONEON-NOSVE-NEXT:    ldr h0, [sp, #26]988; NONEON-NOSVE-NEXT:    ldr h1, [sp, #10]989; NONEON-NOSVE-NEXT:    fcvt s0, h0990; NONEON-NOSVE-NEXT:    fcvt s1, h1991; NONEON-NOSVE-NEXT:    csetm w8, ne992; NONEON-NOSVE-NEXT:    strh w8, [sp, #76]993; NONEON-NOSVE-NEXT:    fcmp s1, s0994; NONEON-NOSVE-NEXT:    ldr h0, [sp, #24]995; NONEON-NOSVE-NEXT:    ldr h1, [sp, #8]996; NONEON-NOSVE-NEXT:    fcvt s0, h0997; NONEON-NOSVE-NEXT:    fcvt s1, h1998; NONEON-NOSVE-NEXT:    csetm w8, ne999; NONEON-NOSVE-NEXT:    strh w8, [sp, #74]1000; NONEON-NOSVE-NEXT:    fcmp s1, s01001; NONEON-NOSVE-NEXT:    ldr h0, [sp, #22]1002; NONEON-NOSVE-NEXT:    ldr h1, [sp, #6]1003; NONEON-NOSVE-NEXT:    fcvt s0, h01004; NONEON-NOSVE-NEXT:    fcvt s1, h11005; NONEON-NOSVE-NEXT:    csetm w8, ne1006; NONEON-NOSVE-NEXT:    strh w8, [sp, #72]1007; NONEON-NOSVE-NEXT:    fcmp s1, s01008; NONEON-NOSVE-NEXT:    ldr h0, [sp, #20]1009; NONEON-NOSVE-NEXT:    ldr h1, [sp, #4]1010; NONEON-NOSVE-NEXT:    fcvt s0, h01011; NONEON-NOSVE-NEXT:    fcvt s1, h11012; NONEON-NOSVE-NEXT:    csetm w8, ne1013; NONEON-NOSVE-NEXT:    strh w8, [sp, #70]1014; NONEON-NOSVE-NEXT:    fcmp s1, s01015; NONEON-NOSVE-NEXT:    ldr h0, [sp, #18]1016; NONEON-NOSVE-NEXT:    ldr h1, [sp, #2]1017; NONEON-NOSVE-NEXT:    fcvt s0, h01018; NONEON-NOSVE-NEXT:    fcvt s1, h11019; NONEON-NOSVE-NEXT:    csetm w8, ne1020; NONEON-NOSVE-NEXT:    strh w8, [sp, #68]1021; NONEON-NOSVE-NEXT:    fcmp s1, s01022; NONEON-NOSVE-NEXT:    ldr h0, [sp, #16]1023; NONEON-NOSVE-NEXT:    ldr h1, [sp]1024; NONEON-NOSVE-NEXT:    fcvt s0, h01025; NONEON-NOSVE-NEXT:    fcvt s1, h11026; NONEON-NOSVE-NEXT:    csetm w8, ne1027; NONEON-NOSVE-NEXT:    strh w8, [sp, #66]1028; NONEON-NOSVE-NEXT:    fcmp s1, s01029; NONEON-NOSVE-NEXT:    csetm w8, ne1030; NONEON-NOSVE-NEXT:    strh w8, [sp, #64]1031; NONEON-NOSVE-NEXT:    ldp q0, q1, [sp, #64]1032; NONEON-NOSVE-NEXT:    stp q0, q1, [x2]1033; NONEON-NOSVE-NEXT:    add sp, sp, #961034; NONEON-NOSVE-NEXT:    ret1035  %op1 = load <16 x half>, ptr %a1036  %op2 = load <16 x half>, ptr %b1037  %cmp = fcmp une <16 x half> %op1, %op21038  %sext = sext <16 x i1> %cmp to <16 x i16>1039  store <16 x i16> %sext, ptr %c1040  ret void1041}1042 1043;1044; FCMP OGT1045;1046 1047define void @fcmp_ogt_v16f16(ptr %a, ptr %b, ptr %c) {1048; CHECK-LABEL: fcmp_ogt_v16f16:1049; CHECK:       // %bb.0:1050; CHECK-NEXT:    ldp q0, q3, [x1]1051; CHECK-NEXT:    ptrue p0.h, vl81052; CHECK-NEXT:    ldp q1, q2, [x0]1053; CHECK-NEXT:    fcmgt p1.h, p0/z, z1.h, z0.h1054; CHECK-NEXT:    fcmgt p0.h, p0/z, z2.h, z3.h1055; CHECK-NEXT:    mov z0.h, p1/z, #-1 // =0xffffffffffffffff1056; CHECK-NEXT:    mov z1.h, p0/z, #-1 // =0xffffffffffffffff1057; CHECK-NEXT:    stp q0, q1, [x2]1058; CHECK-NEXT:    ret1059;1060; NONEON-NOSVE-LABEL: fcmp_ogt_v16f16:1061; NONEON-NOSVE:       // %bb.0:1062; NONEON-NOSVE-NEXT:    sub sp, sp, #961063; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 961064; NONEON-NOSVE-NEXT:    ldp q3, q0, [x1]1065; NONEON-NOSVE-NEXT:    ldp q2, q1, [x0]1066; NONEON-NOSVE-NEXT:    stp q2, q3, [sp]1067; NONEON-NOSVE-NEXT:    stp q1, q0, [sp, #32]1068; NONEON-NOSVE-NEXT:    ldr h0, [sp, #62]1069; NONEON-NOSVE-NEXT:    ldr h1, [sp, #46]1070; NONEON-NOSVE-NEXT:    fcvt s0, h01071; NONEON-NOSVE-NEXT:    fcvt s1, h11072; NONEON-NOSVE-NEXT:    fcmp s1, s01073; NONEON-NOSVE-NEXT:    ldr h0, [sp, #60]1074; NONEON-NOSVE-NEXT:    ldr h1, [sp, #44]1075; NONEON-NOSVE-NEXT:    fcvt s0, h01076; NONEON-NOSVE-NEXT:    fcvt s1, h11077; NONEON-NOSVE-NEXT:    csetm w8, gt1078; NONEON-NOSVE-NEXT:    strh w8, [sp, #94]1079; NONEON-NOSVE-NEXT:    fcmp s1, s01080; NONEON-NOSVE-NEXT:    ldr h0, [sp, #58]1081; NONEON-NOSVE-NEXT:    ldr h1, [sp, #42]1082; NONEON-NOSVE-NEXT:    fcvt s0, h01083; NONEON-NOSVE-NEXT:    fcvt s1, h11084; NONEON-NOSVE-NEXT:    csetm w8, gt1085; NONEON-NOSVE-NEXT:    strh w8, [sp, #92]1086; NONEON-NOSVE-NEXT:    fcmp s1, s01087; NONEON-NOSVE-NEXT:    ldr h0, [sp, #56]1088; NONEON-NOSVE-NEXT:    ldr h1, [sp, #40]1089; NONEON-NOSVE-NEXT:    fcvt s0, h01090; NONEON-NOSVE-NEXT:    fcvt s1, h11091; NONEON-NOSVE-NEXT:    csetm w8, gt1092; NONEON-NOSVE-NEXT:    strh w8, [sp, #90]1093; NONEON-NOSVE-NEXT:    fcmp s1, s01094; NONEON-NOSVE-NEXT:    ldr h0, [sp, #54]1095; NONEON-NOSVE-NEXT:    ldr h1, [sp, #38]1096; NONEON-NOSVE-NEXT:    fcvt s0, h01097; NONEON-NOSVE-NEXT:    fcvt s1, h11098; NONEON-NOSVE-NEXT:    csetm w8, gt1099; NONEON-NOSVE-NEXT:    strh w8, [sp, #88]1100; NONEON-NOSVE-NEXT:    fcmp s1, s01101; NONEON-NOSVE-NEXT:    ldr h0, [sp, #52]1102; NONEON-NOSVE-NEXT:    ldr h1, [sp, #36]1103; NONEON-NOSVE-NEXT:    fcvt s0, h01104; NONEON-NOSVE-NEXT:    fcvt s1, h11105; NONEON-NOSVE-NEXT:    csetm w8, gt1106; NONEON-NOSVE-NEXT:    strh w8, [sp, #86]1107; NONEON-NOSVE-NEXT:    fcmp s1, s01108; NONEON-NOSVE-NEXT:    ldr h0, [sp, #50]1109; NONEON-NOSVE-NEXT:    ldr h1, [sp, #34]1110; NONEON-NOSVE-NEXT:    fcvt s0, h01111; NONEON-NOSVE-NEXT:    fcvt s1, h11112; NONEON-NOSVE-NEXT:    csetm w8, gt1113; NONEON-NOSVE-NEXT:    strh w8, [sp, #84]1114; NONEON-NOSVE-NEXT:    fcmp s1, s01115; NONEON-NOSVE-NEXT:    ldr h0, [sp, #48]1116; NONEON-NOSVE-NEXT:    ldr h1, [sp, #32]1117; NONEON-NOSVE-NEXT:    fcvt s0, h01118; NONEON-NOSVE-NEXT:    fcvt s1, h11119; NONEON-NOSVE-NEXT:    csetm w8, gt1120; NONEON-NOSVE-NEXT:    strh w8, [sp, #82]1121; NONEON-NOSVE-NEXT:    fcmp s1, s01122; NONEON-NOSVE-NEXT:    ldr h0, [sp, #30]1123; NONEON-NOSVE-NEXT:    ldr h1, [sp, #14]1124; NONEON-NOSVE-NEXT:    fcvt s0, h01125; NONEON-NOSVE-NEXT:    fcvt s1, h11126; NONEON-NOSVE-NEXT:    csetm w8, gt1127; NONEON-NOSVE-NEXT:    strh w8, [sp, #80]1128; NONEON-NOSVE-NEXT:    fcmp s1, s01129; NONEON-NOSVE-NEXT:    ldr h0, [sp, #28]1130; NONEON-NOSVE-NEXT:    ldr h1, [sp, #12]1131; NONEON-NOSVE-NEXT:    fcvt s0, h01132; NONEON-NOSVE-NEXT:    fcvt s1, h11133; NONEON-NOSVE-NEXT:    csetm w8, gt1134; NONEON-NOSVE-NEXT:    strh w8, [sp, #78]1135; NONEON-NOSVE-NEXT:    fcmp s1, s01136; NONEON-NOSVE-NEXT:    ldr h0, [sp, #26]1137; NONEON-NOSVE-NEXT:    ldr h1, [sp, #10]1138; NONEON-NOSVE-NEXT:    fcvt s0, h01139; NONEON-NOSVE-NEXT:    fcvt s1, h11140; NONEON-NOSVE-NEXT:    csetm w8, gt1141; NONEON-NOSVE-NEXT:    strh w8, [sp, #76]1142; NONEON-NOSVE-NEXT:    fcmp s1, s01143; NONEON-NOSVE-NEXT:    ldr h0, [sp, #24]1144; NONEON-NOSVE-NEXT:    ldr h1, [sp, #8]1145; NONEON-NOSVE-NEXT:    fcvt s0, h01146; NONEON-NOSVE-NEXT:    fcvt s1, h11147; NONEON-NOSVE-NEXT:    csetm w8, gt1148; NONEON-NOSVE-NEXT:    strh w8, [sp, #74]1149; NONEON-NOSVE-NEXT:    fcmp s1, s01150; NONEON-NOSVE-NEXT:    ldr h0, [sp, #22]1151; NONEON-NOSVE-NEXT:    ldr h1, [sp, #6]1152; NONEON-NOSVE-NEXT:    fcvt s0, h01153; NONEON-NOSVE-NEXT:    fcvt s1, h11154; NONEON-NOSVE-NEXT:    csetm w8, gt1155; NONEON-NOSVE-NEXT:    strh w8, [sp, #72]1156; NONEON-NOSVE-NEXT:    fcmp s1, s01157; NONEON-NOSVE-NEXT:    ldr h0, [sp, #20]1158; NONEON-NOSVE-NEXT:    ldr h1, [sp, #4]1159; NONEON-NOSVE-NEXT:    fcvt s0, h01160; NONEON-NOSVE-NEXT:    fcvt s1, h11161; NONEON-NOSVE-NEXT:    csetm w8, gt1162; NONEON-NOSVE-NEXT:    strh w8, [sp, #70]1163; NONEON-NOSVE-NEXT:    fcmp s1, s01164; NONEON-NOSVE-NEXT:    ldr h0, [sp, #18]1165; NONEON-NOSVE-NEXT:    ldr h1, [sp, #2]1166; NONEON-NOSVE-NEXT:    fcvt s0, h01167; NONEON-NOSVE-NEXT:    fcvt s1, h11168; NONEON-NOSVE-NEXT:    csetm w8, gt1169; NONEON-NOSVE-NEXT:    strh w8, [sp, #68]1170; NONEON-NOSVE-NEXT:    fcmp s1, s01171; NONEON-NOSVE-NEXT:    ldr h0, [sp, #16]1172; NONEON-NOSVE-NEXT:    ldr h1, [sp]1173; NONEON-NOSVE-NEXT:    fcvt s0, h01174; NONEON-NOSVE-NEXT:    fcvt s1, h11175; NONEON-NOSVE-NEXT:    csetm w8, gt1176; NONEON-NOSVE-NEXT:    strh w8, [sp, #66]1177; NONEON-NOSVE-NEXT:    fcmp s1, s01178; NONEON-NOSVE-NEXT:    csetm w8, gt1179; NONEON-NOSVE-NEXT:    strh w8, [sp, #64]1180; NONEON-NOSVE-NEXT:    ldp q0, q1, [sp, #64]1181; NONEON-NOSVE-NEXT:    stp q0, q1, [x2]1182; NONEON-NOSVE-NEXT:    add sp, sp, #961183; NONEON-NOSVE-NEXT:    ret1184  %op1 = load <16 x half>, ptr %a1185  %op2 = load <16 x half>, ptr %b1186  %cmp = fcmp ogt <16 x half> %op1, %op21187  %sext = sext <16 x i1> %cmp to <16 x i16>1188  store <16 x i16> %sext, ptr %c1189  ret void1190}1191 1192;1193; FCMP UGT1194;1195 1196define void @fcmp_ugt_v16f16(ptr %a, ptr %b, ptr %c) {1197; CHECK-LABEL: fcmp_ugt_v16f16:1198; CHECK:       // %bb.0:1199; CHECK-NEXT:    ldp q0, q3, [x1]1200; CHECK-NEXT:    ptrue p0.h, vl81201; CHECK-NEXT:    ldp q1, q2, [x0]1202; CHECK-NEXT:    fcmge p1.h, p0/z, z0.h, z1.h1203; CHECK-NEXT:    mov z0.h, #-1 // =0xffffffffffffffff1204; CHECK-NEXT:    fcmge p0.h, p0/z, z3.h, z2.h1205; CHECK-NEXT:    mov z1.h, p1/z, #-1 // =0xffffffffffffffff1206; CHECK-NEXT:    mov z2.h, p0/z, #-1 // =0xffffffffffffffff1207; CHECK-NEXT:    eor z1.d, z1.d, z0.d1208; CHECK-NEXT:    eor z0.d, z2.d, z0.d1209; CHECK-NEXT:    stp q1, q0, [x2]1210; CHECK-NEXT:    ret1211;1212; NONEON-NOSVE-LABEL: fcmp_ugt_v16f16:1213; NONEON-NOSVE:       // %bb.0:1214; NONEON-NOSVE-NEXT:    sub sp, sp, #961215; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 961216; NONEON-NOSVE-NEXT:    ldp q3, q0, [x1]1217; NONEON-NOSVE-NEXT:    ldp q2, q1, [x0]1218; NONEON-NOSVE-NEXT:    stp q2, q3, [sp]1219; NONEON-NOSVE-NEXT:    stp q1, q0, [sp, #32]1220; NONEON-NOSVE-NEXT:    ldr h0, [sp, #62]1221; NONEON-NOSVE-NEXT:    ldr h1, [sp, #46]1222; NONEON-NOSVE-NEXT:    fcvt s0, h01223; NONEON-NOSVE-NEXT:    fcvt s1, h11224; NONEON-NOSVE-NEXT:    fcmp s1, s01225; NONEON-NOSVE-NEXT:    ldr h0, [sp, #60]1226; NONEON-NOSVE-NEXT:    ldr h1, [sp, #44]1227; NONEON-NOSVE-NEXT:    fcvt s0, h01228; NONEON-NOSVE-NEXT:    fcvt s1, h11229; NONEON-NOSVE-NEXT:    csetm w8, hi1230; NONEON-NOSVE-NEXT:    strh w8, [sp, #94]1231; NONEON-NOSVE-NEXT:    fcmp s1, s01232; NONEON-NOSVE-NEXT:    ldr h0, [sp, #58]1233; NONEON-NOSVE-NEXT:    ldr h1, [sp, #42]1234; NONEON-NOSVE-NEXT:    fcvt s0, h01235; NONEON-NOSVE-NEXT:    fcvt s1, h11236; NONEON-NOSVE-NEXT:    csetm w8, hi1237; NONEON-NOSVE-NEXT:    strh w8, [sp, #92]1238; NONEON-NOSVE-NEXT:    fcmp s1, s01239; NONEON-NOSVE-NEXT:    ldr h0, [sp, #56]1240; NONEON-NOSVE-NEXT:    ldr h1, [sp, #40]1241; NONEON-NOSVE-NEXT:    fcvt s0, h01242; NONEON-NOSVE-NEXT:    fcvt s1, h11243; NONEON-NOSVE-NEXT:    csetm w8, hi1244; NONEON-NOSVE-NEXT:    strh w8, [sp, #90]1245; NONEON-NOSVE-NEXT:    fcmp s1, s01246; NONEON-NOSVE-NEXT:    ldr h0, [sp, #54]1247; NONEON-NOSVE-NEXT:    ldr h1, [sp, #38]1248; NONEON-NOSVE-NEXT:    fcvt s0, h01249; NONEON-NOSVE-NEXT:    fcvt s1, h11250; NONEON-NOSVE-NEXT:    csetm w8, hi1251; NONEON-NOSVE-NEXT:    strh w8, [sp, #88]1252; NONEON-NOSVE-NEXT:    fcmp s1, s01253; NONEON-NOSVE-NEXT:    ldr h0, [sp, #52]1254; NONEON-NOSVE-NEXT:    ldr h1, [sp, #36]1255; NONEON-NOSVE-NEXT:    fcvt s0, h01256; NONEON-NOSVE-NEXT:    fcvt s1, h11257; NONEON-NOSVE-NEXT:    csetm w8, hi1258; NONEON-NOSVE-NEXT:    strh w8, [sp, #86]1259; NONEON-NOSVE-NEXT:    fcmp s1, s01260; NONEON-NOSVE-NEXT:    ldr h0, [sp, #50]1261; NONEON-NOSVE-NEXT:    ldr h1, [sp, #34]1262; NONEON-NOSVE-NEXT:    fcvt s0, h01263; NONEON-NOSVE-NEXT:    fcvt s1, h11264; NONEON-NOSVE-NEXT:    csetm w8, hi1265; NONEON-NOSVE-NEXT:    strh w8, [sp, #84]1266; NONEON-NOSVE-NEXT:    fcmp s1, s01267; NONEON-NOSVE-NEXT:    ldr h0, [sp, #48]1268; NONEON-NOSVE-NEXT:    ldr h1, [sp, #32]1269; NONEON-NOSVE-NEXT:    fcvt s0, h01270; NONEON-NOSVE-NEXT:    fcvt s1, h11271; NONEON-NOSVE-NEXT:    csetm w8, hi1272; NONEON-NOSVE-NEXT:    strh w8, [sp, #82]1273; NONEON-NOSVE-NEXT:    fcmp s1, s01274; NONEON-NOSVE-NEXT:    ldr h0, [sp, #30]1275; NONEON-NOSVE-NEXT:    ldr h1, [sp, #14]1276; NONEON-NOSVE-NEXT:    fcvt s0, h01277; NONEON-NOSVE-NEXT:    fcvt s1, h11278; NONEON-NOSVE-NEXT:    csetm w8, hi1279; NONEON-NOSVE-NEXT:    strh w8, [sp, #80]1280; NONEON-NOSVE-NEXT:    fcmp s1, s01281; NONEON-NOSVE-NEXT:    ldr h0, [sp, #28]1282; NONEON-NOSVE-NEXT:    ldr h1, [sp, #12]1283; NONEON-NOSVE-NEXT:    fcvt s0, h01284; NONEON-NOSVE-NEXT:    fcvt s1, h11285; NONEON-NOSVE-NEXT:    csetm w8, hi1286; NONEON-NOSVE-NEXT:    strh w8, [sp, #78]1287; NONEON-NOSVE-NEXT:    fcmp s1, s01288; NONEON-NOSVE-NEXT:    ldr h0, [sp, #26]1289; NONEON-NOSVE-NEXT:    ldr h1, [sp, #10]1290; NONEON-NOSVE-NEXT:    fcvt s0, h01291; NONEON-NOSVE-NEXT:    fcvt s1, h11292; NONEON-NOSVE-NEXT:    csetm w8, hi1293; NONEON-NOSVE-NEXT:    strh w8, [sp, #76]1294; NONEON-NOSVE-NEXT:    fcmp s1, s01295; NONEON-NOSVE-NEXT:    ldr h0, [sp, #24]1296; NONEON-NOSVE-NEXT:    ldr h1, [sp, #8]1297; NONEON-NOSVE-NEXT:    fcvt s0, h01298; NONEON-NOSVE-NEXT:    fcvt s1, h11299; NONEON-NOSVE-NEXT:    csetm w8, hi1300; NONEON-NOSVE-NEXT:    strh w8, [sp, #74]1301; NONEON-NOSVE-NEXT:    fcmp s1, s01302; NONEON-NOSVE-NEXT:    ldr h0, [sp, #22]1303; NONEON-NOSVE-NEXT:    ldr h1, [sp, #6]1304; NONEON-NOSVE-NEXT:    fcvt s0, h01305; NONEON-NOSVE-NEXT:    fcvt s1, h11306; NONEON-NOSVE-NEXT:    csetm w8, hi1307; NONEON-NOSVE-NEXT:    strh w8, [sp, #72]1308; NONEON-NOSVE-NEXT:    fcmp s1, s01309; NONEON-NOSVE-NEXT:    ldr h0, [sp, #20]1310; NONEON-NOSVE-NEXT:    ldr h1, [sp, #4]1311; NONEON-NOSVE-NEXT:    fcvt s0, h01312; NONEON-NOSVE-NEXT:    fcvt s1, h11313; NONEON-NOSVE-NEXT:    csetm w8, hi1314; NONEON-NOSVE-NEXT:    strh w8, [sp, #70]1315; NONEON-NOSVE-NEXT:    fcmp s1, s01316; NONEON-NOSVE-NEXT:    ldr h0, [sp, #18]1317; NONEON-NOSVE-NEXT:    ldr h1, [sp, #2]1318; NONEON-NOSVE-NEXT:    fcvt s0, h01319; NONEON-NOSVE-NEXT:    fcvt s1, h11320; NONEON-NOSVE-NEXT:    csetm w8, hi1321; NONEON-NOSVE-NEXT:    strh w8, [sp, #68]1322; NONEON-NOSVE-NEXT:    fcmp s1, s01323; NONEON-NOSVE-NEXT:    ldr h0, [sp, #16]1324; NONEON-NOSVE-NEXT:    ldr h1, [sp]1325; NONEON-NOSVE-NEXT:    fcvt s0, h01326; NONEON-NOSVE-NEXT:    fcvt s1, h11327; NONEON-NOSVE-NEXT:    csetm w8, hi1328; NONEON-NOSVE-NEXT:    strh w8, [sp, #66]1329; NONEON-NOSVE-NEXT:    fcmp s1, s01330; NONEON-NOSVE-NEXT:    csetm w8, hi1331; NONEON-NOSVE-NEXT:    strh w8, [sp, #64]1332; NONEON-NOSVE-NEXT:    ldp q0, q1, [sp, #64]1333; NONEON-NOSVE-NEXT:    stp q0, q1, [x2]1334; NONEON-NOSVE-NEXT:    add sp, sp, #961335; NONEON-NOSVE-NEXT:    ret1336  %op1 = load <16 x half>, ptr %a1337  %op2 = load <16 x half>, ptr %b1338  %cmp = fcmp ugt <16 x half> %op1, %op21339  %sext = sext <16 x i1> %cmp to <16 x i16>1340  store <16 x i16> %sext, ptr %c1341  ret void1342}1343 1344;1345; FCMP OLT1346;1347 1348define void @fcmp_olt_v16f16(ptr %a, ptr %b, ptr %c) {1349; CHECK-LABEL: fcmp_olt_v16f16:1350; CHECK:       // %bb.0:1351; CHECK-NEXT:    ldp q0, q3, [x1]1352; CHECK-NEXT:    ptrue p0.h, vl81353; CHECK-NEXT:    ldp q1, q2, [x0]1354; CHECK-NEXT:    fcmgt p1.h, p0/z, z0.h, z1.h1355; CHECK-NEXT:    fcmgt p0.h, p0/z, z3.h, z2.h1356; CHECK-NEXT:    mov z0.h, p1/z, #-1 // =0xffffffffffffffff1357; CHECK-NEXT:    mov z1.h, p0/z, #-1 // =0xffffffffffffffff1358; CHECK-NEXT:    stp q0, q1, [x2]1359; CHECK-NEXT:    ret1360;1361; NONEON-NOSVE-LABEL: fcmp_olt_v16f16:1362; NONEON-NOSVE:       // %bb.0:1363; NONEON-NOSVE-NEXT:    sub sp, sp, #961364; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 961365; NONEON-NOSVE-NEXT:    ldp q3, q0, [x1]1366; NONEON-NOSVE-NEXT:    ldp q2, q1, [x0]1367; NONEON-NOSVE-NEXT:    stp q2, q3, [sp]1368; NONEON-NOSVE-NEXT:    stp q1, q0, [sp, #32]1369; NONEON-NOSVE-NEXT:    ldr h0, [sp, #62]1370; NONEON-NOSVE-NEXT:    ldr h1, [sp, #46]1371; NONEON-NOSVE-NEXT:    fcvt s0, h01372; NONEON-NOSVE-NEXT:    fcvt s1, h11373; NONEON-NOSVE-NEXT:    fcmp s1, s01374; NONEON-NOSVE-NEXT:    ldr h0, [sp, #60]1375; NONEON-NOSVE-NEXT:    ldr h1, [sp, #44]1376; NONEON-NOSVE-NEXT:    fcvt s0, h01377; NONEON-NOSVE-NEXT:    fcvt s1, h11378; NONEON-NOSVE-NEXT:    csetm w8, mi1379; NONEON-NOSVE-NEXT:    strh w8, [sp, #94]1380; NONEON-NOSVE-NEXT:    fcmp s1, s01381; NONEON-NOSVE-NEXT:    ldr h0, [sp, #58]1382; NONEON-NOSVE-NEXT:    ldr h1, [sp, #42]1383; NONEON-NOSVE-NEXT:    fcvt s0, h01384; NONEON-NOSVE-NEXT:    fcvt s1, h11385; NONEON-NOSVE-NEXT:    csetm w8, mi1386; NONEON-NOSVE-NEXT:    strh w8, [sp, #92]1387; NONEON-NOSVE-NEXT:    fcmp s1, s01388; NONEON-NOSVE-NEXT:    ldr h0, [sp, #56]1389; NONEON-NOSVE-NEXT:    ldr h1, [sp, #40]1390; NONEON-NOSVE-NEXT:    fcvt s0, h01391; NONEON-NOSVE-NEXT:    fcvt s1, h11392; NONEON-NOSVE-NEXT:    csetm w8, mi1393; NONEON-NOSVE-NEXT:    strh w8, [sp, #90]1394; NONEON-NOSVE-NEXT:    fcmp s1, s01395; NONEON-NOSVE-NEXT:    ldr h0, [sp, #54]1396; NONEON-NOSVE-NEXT:    ldr h1, [sp, #38]1397; NONEON-NOSVE-NEXT:    fcvt s0, h01398; NONEON-NOSVE-NEXT:    fcvt s1, h11399; NONEON-NOSVE-NEXT:    csetm w8, mi1400; NONEON-NOSVE-NEXT:    strh w8, [sp, #88]1401; NONEON-NOSVE-NEXT:    fcmp s1, s01402; NONEON-NOSVE-NEXT:    ldr h0, [sp, #52]1403; NONEON-NOSVE-NEXT:    ldr h1, [sp, #36]1404; NONEON-NOSVE-NEXT:    fcvt s0, h01405; NONEON-NOSVE-NEXT:    fcvt s1, h11406; NONEON-NOSVE-NEXT:    csetm w8, mi1407; NONEON-NOSVE-NEXT:    strh w8, [sp, #86]1408; NONEON-NOSVE-NEXT:    fcmp s1, s01409; NONEON-NOSVE-NEXT:    ldr h0, [sp, #50]1410; NONEON-NOSVE-NEXT:    ldr h1, [sp, #34]1411; NONEON-NOSVE-NEXT:    fcvt s0, h01412; NONEON-NOSVE-NEXT:    fcvt s1, h11413; NONEON-NOSVE-NEXT:    csetm w8, mi1414; NONEON-NOSVE-NEXT:    strh w8, [sp, #84]1415; NONEON-NOSVE-NEXT:    fcmp s1, s01416; NONEON-NOSVE-NEXT:    ldr h0, [sp, #48]1417; NONEON-NOSVE-NEXT:    ldr h1, [sp, #32]1418; NONEON-NOSVE-NEXT:    fcvt s0, h01419; NONEON-NOSVE-NEXT:    fcvt s1, h11420; NONEON-NOSVE-NEXT:    csetm w8, mi1421; NONEON-NOSVE-NEXT:    strh w8, [sp, #82]1422; NONEON-NOSVE-NEXT:    fcmp s1, s01423; NONEON-NOSVE-NEXT:    ldr h0, [sp, #30]1424; NONEON-NOSVE-NEXT:    ldr h1, [sp, #14]1425; NONEON-NOSVE-NEXT:    fcvt s0, h01426; NONEON-NOSVE-NEXT:    fcvt s1, h11427; NONEON-NOSVE-NEXT:    csetm w8, mi1428; NONEON-NOSVE-NEXT:    strh w8, [sp, #80]1429; NONEON-NOSVE-NEXT:    fcmp s1, s01430; NONEON-NOSVE-NEXT:    ldr h0, [sp, #28]1431; NONEON-NOSVE-NEXT:    ldr h1, [sp, #12]1432; NONEON-NOSVE-NEXT:    fcvt s0, h01433; NONEON-NOSVE-NEXT:    fcvt s1, h11434; NONEON-NOSVE-NEXT:    csetm w8, mi1435; NONEON-NOSVE-NEXT:    strh w8, [sp, #78]1436; NONEON-NOSVE-NEXT:    fcmp s1, s01437; NONEON-NOSVE-NEXT:    ldr h0, [sp, #26]1438; NONEON-NOSVE-NEXT:    ldr h1, [sp, #10]1439; NONEON-NOSVE-NEXT:    fcvt s0, h01440; NONEON-NOSVE-NEXT:    fcvt s1, h11441; NONEON-NOSVE-NEXT:    csetm w8, mi1442; NONEON-NOSVE-NEXT:    strh w8, [sp, #76]1443; NONEON-NOSVE-NEXT:    fcmp s1, s01444; NONEON-NOSVE-NEXT:    ldr h0, [sp, #24]1445; NONEON-NOSVE-NEXT:    ldr h1, [sp, #8]1446; NONEON-NOSVE-NEXT:    fcvt s0, h01447; NONEON-NOSVE-NEXT:    fcvt s1, h11448; NONEON-NOSVE-NEXT:    csetm w8, mi1449; NONEON-NOSVE-NEXT:    strh w8, [sp, #74]1450; NONEON-NOSVE-NEXT:    fcmp s1, s01451; NONEON-NOSVE-NEXT:    ldr h0, [sp, #22]1452; NONEON-NOSVE-NEXT:    ldr h1, [sp, #6]1453; NONEON-NOSVE-NEXT:    fcvt s0, h01454; NONEON-NOSVE-NEXT:    fcvt s1, h11455; NONEON-NOSVE-NEXT:    csetm w8, mi1456; NONEON-NOSVE-NEXT:    strh w8, [sp, #72]1457; NONEON-NOSVE-NEXT:    fcmp s1, s01458; NONEON-NOSVE-NEXT:    ldr h0, [sp, #20]1459; NONEON-NOSVE-NEXT:    ldr h1, [sp, #4]1460; NONEON-NOSVE-NEXT:    fcvt s0, h01461; NONEON-NOSVE-NEXT:    fcvt s1, h11462; NONEON-NOSVE-NEXT:    csetm w8, mi1463; NONEON-NOSVE-NEXT:    strh w8, [sp, #70]1464; NONEON-NOSVE-NEXT:    fcmp s1, s01465; NONEON-NOSVE-NEXT:    ldr h0, [sp, #18]1466; NONEON-NOSVE-NEXT:    ldr h1, [sp, #2]1467; NONEON-NOSVE-NEXT:    fcvt s0, h01468; NONEON-NOSVE-NEXT:    fcvt s1, h11469; NONEON-NOSVE-NEXT:    csetm w8, mi1470; NONEON-NOSVE-NEXT:    strh w8, [sp, #68]1471; NONEON-NOSVE-NEXT:    fcmp s1, s01472; NONEON-NOSVE-NEXT:    ldr h0, [sp, #16]1473; NONEON-NOSVE-NEXT:    ldr h1, [sp]1474; NONEON-NOSVE-NEXT:    fcvt s0, h01475; NONEON-NOSVE-NEXT:    fcvt s1, h11476; NONEON-NOSVE-NEXT:    csetm w8, mi1477; NONEON-NOSVE-NEXT:    strh w8, [sp, #66]1478; NONEON-NOSVE-NEXT:    fcmp s1, s01479; NONEON-NOSVE-NEXT:    csetm w8, mi1480; NONEON-NOSVE-NEXT:    strh w8, [sp, #64]1481; NONEON-NOSVE-NEXT:    ldp q0, q1, [sp, #64]1482; NONEON-NOSVE-NEXT:    stp q0, q1, [x2]1483; NONEON-NOSVE-NEXT:    add sp, sp, #961484; NONEON-NOSVE-NEXT:    ret1485  %op1 = load <16 x half>, ptr %a1486  %op2 = load <16 x half>, ptr %b1487  %cmp = fcmp olt <16 x half> %op1, %op21488  %sext = sext <16 x i1> %cmp to <16 x i16>1489  store <16 x i16> %sext, ptr %c1490  ret void1491}1492 1493;1494; FCMP ULT1495;1496 1497define void @fcmp_ult_v16f16(ptr %a, ptr %b, ptr %c) {1498; CHECK-LABEL: fcmp_ult_v16f16:1499; CHECK:       // %bb.0:1500; CHECK-NEXT:    ldp q0, q3, [x1]1501; CHECK-NEXT:    ptrue p0.h, vl81502; CHECK-NEXT:    ldp q1, q2, [x0]1503; CHECK-NEXT:    fcmge p1.h, p0/z, z1.h, z0.h1504; CHECK-NEXT:    mov z0.h, #-1 // =0xffffffffffffffff1505; CHECK-NEXT:    fcmge p0.h, p0/z, z2.h, z3.h1506; CHECK-NEXT:    mov z1.h, p1/z, #-1 // =0xffffffffffffffff1507; CHECK-NEXT:    mov z2.h, p0/z, #-1 // =0xffffffffffffffff1508; CHECK-NEXT:    eor z1.d, z1.d, z0.d1509; CHECK-NEXT:    eor z0.d, z2.d, z0.d1510; CHECK-NEXT:    stp q1, q0, [x2]1511; CHECK-NEXT:    ret1512;1513; NONEON-NOSVE-LABEL: fcmp_ult_v16f16:1514; NONEON-NOSVE:       // %bb.0:1515; NONEON-NOSVE-NEXT:    sub sp, sp, #961516; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 961517; NONEON-NOSVE-NEXT:    ldp q3, q0, [x1]1518; NONEON-NOSVE-NEXT:    ldp q2, q1, [x0]1519; NONEON-NOSVE-NEXT:    stp q2, q3, [sp]1520; NONEON-NOSVE-NEXT:    stp q1, q0, [sp, #32]1521; NONEON-NOSVE-NEXT:    ldr h0, [sp, #62]1522; NONEON-NOSVE-NEXT:    ldr h1, [sp, #46]1523; NONEON-NOSVE-NEXT:    fcvt s0, h01524; NONEON-NOSVE-NEXT:    fcvt s1, h11525; NONEON-NOSVE-NEXT:    fcmp s1, s01526; NONEON-NOSVE-NEXT:    ldr h0, [sp, #60]1527; NONEON-NOSVE-NEXT:    ldr h1, [sp, #44]1528; NONEON-NOSVE-NEXT:    fcvt s0, h01529; NONEON-NOSVE-NEXT:    fcvt s1, h11530; NONEON-NOSVE-NEXT:    csetm w8, lt1531; NONEON-NOSVE-NEXT:    strh w8, [sp, #94]1532; NONEON-NOSVE-NEXT:    fcmp s1, s01533; NONEON-NOSVE-NEXT:    ldr h0, [sp, #58]1534; NONEON-NOSVE-NEXT:    ldr h1, [sp, #42]1535; NONEON-NOSVE-NEXT:    fcvt s0, h01536; NONEON-NOSVE-NEXT:    fcvt s1, h11537; NONEON-NOSVE-NEXT:    csetm w8, lt1538; NONEON-NOSVE-NEXT:    strh w8, [sp, #92]1539; NONEON-NOSVE-NEXT:    fcmp s1, s01540; NONEON-NOSVE-NEXT:    ldr h0, [sp, #56]1541; NONEON-NOSVE-NEXT:    ldr h1, [sp, #40]1542; NONEON-NOSVE-NEXT:    fcvt s0, h01543; NONEON-NOSVE-NEXT:    fcvt s1, h11544; NONEON-NOSVE-NEXT:    csetm w8, lt1545; NONEON-NOSVE-NEXT:    strh w8, [sp, #90]1546; NONEON-NOSVE-NEXT:    fcmp s1, s01547; NONEON-NOSVE-NEXT:    ldr h0, [sp, #54]1548; NONEON-NOSVE-NEXT:    ldr h1, [sp, #38]1549; NONEON-NOSVE-NEXT:    fcvt s0, h01550; NONEON-NOSVE-NEXT:    fcvt s1, h11551; NONEON-NOSVE-NEXT:    csetm w8, lt1552; NONEON-NOSVE-NEXT:    strh w8, [sp, #88]1553; NONEON-NOSVE-NEXT:    fcmp s1, s01554; NONEON-NOSVE-NEXT:    ldr h0, [sp, #52]1555; NONEON-NOSVE-NEXT:    ldr h1, [sp, #36]1556; NONEON-NOSVE-NEXT:    fcvt s0, h01557; NONEON-NOSVE-NEXT:    fcvt s1, h11558; NONEON-NOSVE-NEXT:    csetm w8, lt1559; NONEON-NOSVE-NEXT:    strh w8, [sp, #86]1560; NONEON-NOSVE-NEXT:    fcmp s1, s01561; NONEON-NOSVE-NEXT:    ldr h0, [sp, #50]1562; NONEON-NOSVE-NEXT:    ldr h1, [sp, #34]1563; NONEON-NOSVE-NEXT:    fcvt s0, h01564; NONEON-NOSVE-NEXT:    fcvt s1, h11565; NONEON-NOSVE-NEXT:    csetm w8, lt1566; NONEON-NOSVE-NEXT:    strh w8, [sp, #84]1567; NONEON-NOSVE-NEXT:    fcmp s1, s01568; NONEON-NOSVE-NEXT:    ldr h0, [sp, #48]1569; NONEON-NOSVE-NEXT:    ldr h1, [sp, #32]1570; NONEON-NOSVE-NEXT:    fcvt s0, h01571; NONEON-NOSVE-NEXT:    fcvt s1, h11572; NONEON-NOSVE-NEXT:    csetm w8, lt1573; NONEON-NOSVE-NEXT:    strh w8, [sp, #82]1574; NONEON-NOSVE-NEXT:    fcmp s1, s01575; NONEON-NOSVE-NEXT:    ldr h0, [sp, #30]1576; NONEON-NOSVE-NEXT:    ldr h1, [sp, #14]1577; NONEON-NOSVE-NEXT:    fcvt s0, h01578; NONEON-NOSVE-NEXT:    fcvt s1, h11579; NONEON-NOSVE-NEXT:    csetm w8, lt1580; NONEON-NOSVE-NEXT:    strh w8, [sp, #80]1581; NONEON-NOSVE-NEXT:    fcmp s1, s01582; NONEON-NOSVE-NEXT:    ldr h0, [sp, #28]1583; NONEON-NOSVE-NEXT:    ldr h1, [sp, #12]1584; NONEON-NOSVE-NEXT:    fcvt s0, h01585; NONEON-NOSVE-NEXT:    fcvt s1, h11586; NONEON-NOSVE-NEXT:    csetm w8, lt1587; NONEON-NOSVE-NEXT:    strh w8, [sp, #78]1588; NONEON-NOSVE-NEXT:    fcmp s1, s01589; NONEON-NOSVE-NEXT:    ldr h0, [sp, #26]1590; NONEON-NOSVE-NEXT:    ldr h1, [sp, #10]1591; NONEON-NOSVE-NEXT:    fcvt s0, h01592; NONEON-NOSVE-NEXT:    fcvt s1, h11593; NONEON-NOSVE-NEXT:    csetm w8, lt1594; NONEON-NOSVE-NEXT:    strh w8, [sp, #76]1595; NONEON-NOSVE-NEXT:    fcmp s1, s01596; NONEON-NOSVE-NEXT:    ldr h0, [sp, #24]1597; NONEON-NOSVE-NEXT:    ldr h1, [sp, #8]1598; NONEON-NOSVE-NEXT:    fcvt s0, h01599; NONEON-NOSVE-NEXT:    fcvt s1, h11600; NONEON-NOSVE-NEXT:    csetm w8, lt1601; NONEON-NOSVE-NEXT:    strh w8, [sp, #74]1602; NONEON-NOSVE-NEXT:    fcmp s1, s01603; NONEON-NOSVE-NEXT:    ldr h0, [sp, #22]1604; NONEON-NOSVE-NEXT:    ldr h1, [sp, #6]1605; NONEON-NOSVE-NEXT:    fcvt s0, h01606; NONEON-NOSVE-NEXT:    fcvt s1, h11607; NONEON-NOSVE-NEXT:    csetm w8, lt1608; NONEON-NOSVE-NEXT:    strh w8, [sp, #72]1609; NONEON-NOSVE-NEXT:    fcmp s1, s01610; NONEON-NOSVE-NEXT:    ldr h0, [sp, #20]1611; NONEON-NOSVE-NEXT:    ldr h1, [sp, #4]1612; NONEON-NOSVE-NEXT:    fcvt s0, h01613; NONEON-NOSVE-NEXT:    fcvt s1, h11614; NONEON-NOSVE-NEXT:    csetm w8, lt1615; NONEON-NOSVE-NEXT:    strh w8, [sp, #70]1616; NONEON-NOSVE-NEXT:    fcmp s1, s01617; NONEON-NOSVE-NEXT:    ldr h0, [sp, #18]1618; NONEON-NOSVE-NEXT:    ldr h1, [sp, #2]1619; NONEON-NOSVE-NEXT:    fcvt s0, h01620; NONEON-NOSVE-NEXT:    fcvt s1, h11621; NONEON-NOSVE-NEXT:    csetm w8, lt1622; NONEON-NOSVE-NEXT:    strh w8, [sp, #68]1623; NONEON-NOSVE-NEXT:    fcmp s1, s01624; NONEON-NOSVE-NEXT:    ldr h0, [sp, #16]1625; NONEON-NOSVE-NEXT:    ldr h1, [sp]1626; NONEON-NOSVE-NEXT:    fcvt s0, h01627; NONEON-NOSVE-NEXT:    fcvt s1, h11628; NONEON-NOSVE-NEXT:    csetm w8, lt1629; NONEON-NOSVE-NEXT:    strh w8, [sp, #66]1630; NONEON-NOSVE-NEXT:    fcmp s1, s01631; NONEON-NOSVE-NEXT:    csetm w8, lt1632; NONEON-NOSVE-NEXT:    strh w8, [sp, #64]1633; NONEON-NOSVE-NEXT:    ldp q0, q1, [sp, #64]1634; NONEON-NOSVE-NEXT:    stp q0, q1, [x2]1635; NONEON-NOSVE-NEXT:    add sp, sp, #961636; NONEON-NOSVE-NEXT:    ret1637  %op1 = load <16 x half>, ptr %a1638  %op2 = load <16 x half>, ptr %b1639  %cmp = fcmp ult <16 x half> %op1, %op21640  %sext = sext <16 x i1> %cmp to <16 x i16>1641  store <16 x i16> %sext, ptr %c1642  ret void1643}1644 1645;1646; FCMP OGE1647;1648 1649define void @fcmp_oge_v16f16(ptr %a, ptr %b, ptr %c) {1650; CHECK-LABEL: fcmp_oge_v16f16:1651; CHECK:       // %bb.0:1652; CHECK-NEXT:    ldp q0, q3, [x1]1653; CHECK-NEXT:    ptrue p0.h, vl81654; CHECK-NEXT:    ldp q1, q2, [x0]1655; CHECK-NEXT:    fcmge p1.h, p0/z, z1.h, z0.h1656; CHECK-NEXT:    fcmge p0.h, p0/z, z2.h, z3.h1657; CHECK-NEXT:    mov z0.h, p1/z, #-1 // =0xffffffffffffffff1658; CHECK-NEXT:    mov z1.h, p0/z, #-1 // =0xffffffffffffffff1659; CHECK-NEXT:    stp q0, q1, [x2]1660; CHECK-NEXT:    ret1661;1662; NONEON-NOSVE-LABEL: fcmp_oge_v16f16:1663; NONEON-NOSVE:       // %bb.0:1664; NONEON-NOSVE-NEXT:    sub sp, sp, #961665; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 961666; NONEON-NOSVE-NEXT:    ldp q3, q0, [x1]1667; NONEON-NOSVE-NEXT:    ldp q2, q1, [x0]1668; NONEON-NOSVE-NEXT:    stp q2, q3, [sp]1669; NONEON-NOSVE-NEXT:    stp q1, q0, [sp, #32]1670; NONEON-NOSVE-NEXT:    ldr h0, [sp, #62]1671; NONEON-NOSVE-NEXT:    ldr h1, [sp, #46]1672; NONEON-NOSVE-NEXT:    fcvt s0, h01673; NONEON-NOSVE-NEXT:    fcvt s1, h11674; NONEON-NOSVE-NEXT:    fcmp s1, s01675; NONEON-NOSVE-NEXT:    ldr h0, [sp, #60]1676; NONEON-NOSVE-NEXT:    ldr h1, [sp, #44]1677; NONEON-NOSVE-NEXT:    fcvt s0, h01678; NONEON-NOSVE-NEXT:    fcvt s1, h11679; NONEON-NOSVE-NEXT:    csetm w8, ge1680; NONEON-NOSVE-NEXT:    strh w8, [sp, #94]1681; NONEON-NOSVE-NEXT:    fcmp s1, s01682; NONEON-NOSVE-NEXT:    ldr h0, [sp, #58]1683; NONEON-NOSVE-NEXT:    ldr h1, [sp, #42]1684; NONEON-NOSVE-NEXT:    fcvt s0, h01685; NONEON-NOSVE-NEXT:    fcvt s1, h11686; NONEON-NOSVE-NEXT:    csetm w8, ge1687; NONEON-NOSVE-NEXT:    strh w8, [sp, #92]1688; NONEON-NOSVE-NEXT:    fcmp s1, s01689; NONEON-NOSVE-NEXT:    ldr h0, [sp, #56]1690; NONEON-NOSVE-NEXT:    ldr h1, [sp, #40]1691; NONEON-NOSVE-NEXT:    fcvt s0, h01692; NONEON-NOSVE-NEXT:    fcvt s1, h11693; NONEON-NOSVE-NEXT:    csetm w8, ge1694; NONEON-NOSVE-NEXT:    strh w8, [sp, #90]1695; NONEON-NOSVE-NEXT:    fcmp s1, s01696; NONEON-NOSVE-NEXT:    ldr h0, [sp, #54]1697; NONEON-NOSVE-NEXT:    ldr h1, [sp, #38]1698; NONEON-NOSVE-NEXT:    fcvt s0, h01699; NONEON-NOSVE-NEXT:    fcvt s1, h11700; NONEON-NOSVE-NEXT:    csetm w8, ge1701; NONEON-NOSVE-NEXT:    strh w8, [sp, #88]1702; NONEON-NOSVE-NEXT:    fcmp s1, s01703; NONEON-NOSVE-NEXT:    ldr h0, [sp, #52]1704; NONEON-NOSVE-NEXT:    ldr h1, [sp, #36]1705; NONEON-NOSVE-NEXT:    fcvt s0, h01706; NONEON-NOSVE-NEXT:    fcvt s1, h11707; NONEON-NOSVE-NEXT:    csetm w8, ge1708; NONEON-NOSVE-NEXT:    strh w8, [sp, #86]1709; NONEON-NOSVE-NEXT:    fcmp s1, s01710; NONEON-NOSVE-NEXT:    ldr h0, [sp, #50]1711; NONEON-NOSVE-NEXT:    ldr h1, [sp, #34]1712; NONEON-NOSVE-NEXT:    fcvt s0, h01713; NONEON-NOSVE-NEXT:    fcvt s1, h11714; NONEON-NOSVE-NEXT:    csetm w8, ge1715; NONEON-NOSVE-NEXT:    strh w8, [sp, #84]1716; NONEON-NOSVE-NEXT:    fcmp s1, s01717; NONEON-NOSVE-NEXT:    ldr h0, [sp, #48]1718; NONEON-NOSVE-NEXT:    ldr h1, [sp, #32]1719; NONEON-NOSVE-NEXT:    fcvt s0, h01720; NONEON-NOSVE-NEXT:    fcvt s1, h11721; NONEON-NOSVE-NEXT:    csetm w8, ge1722; NONEON-NOSVE-NEXT:    strh w8, [sp, #82]1723; NONEON-NOSVE-NEXT:    fcmp s1, s01724; NONEON-NOSVE-NEXT:    ldr h0, [sp, #30]1725; NONEON-NOSVE-NEXT:    ldr h1, [sp, #14]1726; NONEON-NOSVE-NEXT:    fcvt s0, h01727; NONEON-NOSVE-NEXT:    fcvt s1, h11728; NONEON-NOSVE-NEXT:    csetm w8, ge1729; NONEON-NOSVE-NEXT:    strh w8, [sp, #80]1730; NONEON-NOSVE-NEXT:    fcmp s1, s01731; NONEON-NOSVE-NEXT:    ldr h0, [sp, #28]1732; NONEON-NOSVE-NEXT:    ldr h1, [sp, #12]1733; NONEON-NOSVE-NEXT:    fcvt s0, h01734; NONEON-NOSVE-NEXT:    fcvt s1, h11735; NONEON-NOSVE-NEXT:    csetm w8, ge1736; NONEON-NOSVE-NEXT:    strh w8, [sp, #78]1737; NONEON-NOSVE-NEXT:    fcmp s1, s01738; NONEON-NOSVE-NEXT:    ldr h0, [sp, #26]1739; NONEON-NOSVE-NEXT:    ldr h1, [sp, #10]1740; NONEON-NOSVE-NEXT:    fcvt s0, h01741; NONEON-NOSVE-NEXT:    fcvt s1, h11742; NONEON-NOSVE-NEXT:    csetm w8, ge1743; NONEON-NOSVE-NEXT:    strh w8, [sp, #76]1744; NONEON-NOSVE-NEXT:    fcmp s1, s01745; NONEON-NOSVE-NEXT:    ldr h0, [sp, #24]1746; NONEON-NOSVE-NEXT:    ldr h1, [sp, #8]1747; NONEON-NOSVE-NEXT:    fcvt s0, h01748; NONEON-NOSVE-NEXT:    fcvt s1, h11749; NONEON-NOSVE-NEXT:    csetm w8, ge1750; NONEON-NOSVE-NEXT:    strh w8, [sp, #74]1751; NONEON-NOSVE-NEXT:    fcmp s1, s01752; NONEON-NOSVE-NEXT:    ldr h0, [sp, #22]1753; NONEON-NOSVE-NEXT:    ldr h1, [sp, #6]1754; NONEON-NOSVE-NEXT:    fcvt s0, h01755; NONEON-NOSVE-NEXT:    fcvt s1, h11756; NONEON-NOSVE-NEXT:    csetm w8, ge1757; NONEON-NOSVE-NEXT:    strh w8, [sp, #72]1758; NONEON-NOSVE-NEXT:    fcmp s1, s01759; NONEON-NOSVE-NEXT:    ldr h0, [sp, #20]1760; NONEON-NOSVE-NEXT:    ldr h1, [sp, #4]1761; NONEON-NOSVE-NEXT:    fcvt s0, h01762; NONEON-NOSVE-NEXT:    fcvt s1, h11763; NONEON-NOSVE-NEXT:    csetm w8, ge1764; NONEON-NOSVE-NEXT:    strh w8, [sp, #70]1765; NONEON-NOSVE-NEXT:    fcmp s1, s01766; NONEON-NOSVE-NEXT:    ldr h0, [sp, #18]1767; NONEON-NOSVE-NEXT:    ldr h1, [sp, #2]1768; NONEON-NOSVE-NEXT:    fcvt s0, h01769; NONEON-NOSVE-NEXT:    fcvt s1, h11770; NONEON-NOSVE-NEXT:    csetm w8, ge1771; NONEON-NOSVE-NEXT:    strh w8, [sp, #68]1772; NONEON-NOSVE-NEXT:    fcmp s1, s01773; NONEON-NOSVE-NEXT:    ldr h0, [sp, #16]1774; NONEON-NOSVE-NEXT:    ldr h1, [sp]1775; NONEON-NOSVE-NEXT:    fcvt s0, h01776; NONEON-NOSVE-NEXT:    fcvt s1, h11777; NONEON-NOSVE-NEXT:    csetm w8, ge1778; NONEON-NOSVE-NEXT:    strh w8, [sp, #66]1779; NONEON-NOSVE-NEXT:    fcmp s1, s01780; NONEON-NOSVE-NEXT:    csetm w8, ge1781; NONEON-NOSVE-NEXT:    strh w8, [sp, #64]1782; NONEON-NOSVE-NEXT:    ldp q0, q1, [sp, #64]1783; NONEON-NOSVE-NEXT:    stp q0, q1, [x2]1784; NONEON-NOSVE-NEXT:    add sp, sp, #961785; NONEON-NOSVE-NEXT:    ret1786  %op1 = load <16 x half>, ptr %a1787  %op2 = load <16 x half>, ptr %b1788  %cmp = fcmp oge <16 x half> %op1, %op21789  %sext = sext <16 x i1> %cmp to <16 x i16>1790  store <16 x i16> %sext, ptr %c1791  ret void1792}1793 1794;1795; FCMP UGE1796;1797 1798define void @fcmp_uge_v16f16(ptr %a, ptr %b, ptr %c) {1799; CHECK-LABEL: fcmp_uge_v16f16:1800; CHECK:       // %bb.0:1801; CHECK-NEXT:    ldp q0, q3, [x1]1802; CHECK-NEXT:    ptrue p0.h, vl81803; CHECK-NEXT:    ldp q1, q2, [x0]1804; CHECK-NEXT:    fcmgt p1.h, p0/z, z0.h, z1.h1805; CHECK-NEXT:    mov z0.h, #-1 // =0xffffffffffffffff1806; CHECK-NEXT:    fcmgt p0.h, p0/z, z3.h, z2.h1807; CHECK-NEXT:    mov z1.h, p1/z, #-1 // =0xffffffffffffffff1808; CHECK-NEXT:    mov z2.h, p0/z, #-1 // =0xffffffffffffffff1809; CHECK-NEXT:    eor z1.d, z1.d, z0.d1810; CHECK-NEXT:    eor z0.d, z2.d, z0.d1811; CHECK-NEXT:    stp q1, q0, [x2]1812; CHECK-NEXT:    ret1813;1814; NONEON-NOSVE-LABEL: fcmp_uge_v16f16:1815; NONEON-NOSVE:       // %bb.0:1816; NONEON-NOSVE-NEXT:    sub sp, sp, #961817; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 961818; NONEON-NOSVE-NEXT:    ldp q3, q0, [x1]1819; NONEON-NOSVE-NEXT:    ldp q2, q1, [x0]1820; NONEON-NOSVE-NEXT:    stp q2, q3, [sp]1821; NONEON-NOSVE-NEXT:    stp q1, q0, [sp, #32]1822; NONEON-NOSVE-NEXT:    ldr h0, [sp, #62]1823; NONEON-NOSVE-NEXT:    ldr h1, [sp, #46]1824; NONEON-NOSVE-NEXT:    fcvt s0, h01825; NONEON-NOSVE-NEXT:    fcvt s1, h11826; NONEON-NOSVE-NEXT:    fcmp s1, s01827; NONEON-NOSVE-NEXT:    ldr h0, [sp, #60]1828; NONEON-NOSVE-NEXT:    ldr h1, [sp, #44]1829; NONEON-NOSVE-NEXT:    fcvt s0, h01830; NONEON-NOSVE-NEXT:    fcvt s1, h11831; NONEON-NOSVE-NEXT:    csetm w8, pl1832; NONEON-NOSVE-NEXT:    strh w8, [sp, #94]1833; NONEON-NOSVE-NEXT:    fcmp s1, s01834; NONEON-NOSVE-NEXT:    ldr h0, [sp, #58]1835; NONEON-NOSVE-NEXT:    ldr h1, [sp, #42]1836; NONEON-NOSVE-NEXT:    fcvt s0, h01837; NONEON-NOSVE-NEXT:    fcvt s1, h11838; NONEON-NOSVE-NEXT:    csetm w8, pl1839; NONEON-NOSVE-NEXT:    strh w8, [sp, #92]1840; NONEON-NOSVE-NEXT:    fcmp s1, s01841; NONEON-NOSVE-NEXT:    ldr h0, [sp, #56]1842; NONEON-NOSVE-NEXT:    ldr h1, [sp, #40]1843; NONEON-NOSVE-NEXT:    fcvt s0, h01844; NONEON-NOSVE-NEXT:    fcvt s1, h11845; NONEON-NOSVE-NEXT:    csetm w8, pl1846; NONEON-NOSVE-NEXT:    strh w8, [sp, #90]1847; NONEON-NOSVE-NEXT:    fcmp s1, s01848; NONEON-NOSVE-NEXT:    ldr h0, [sp, #54]1849; NONEON-NOSVE-NEXT:    ldr h1, [sp, #38]1850; NONEON-NOSVE-NEXT:    fcvt s0, h01851; NONEON-NOSVE-NEXT:    fcvt s1, h11852; NONEON-NOSVE-NEXT:    csetm w8, pl1853; NONEON-NOSVE-NEXT:    strh w8, [sp, #88]1854; NONEON-NOSVE-NEXT:    fcmp s1, s01855; NONEON-NOSVE-NEXT:    ldr h0, [sp, #52]1856; NONEON-NOSVE-NEXT:    ldr h1, [sp, #36]1857; NONEON-NOSVE-NEXT:    fcvt s0, h01858; NONEON-NOSVE-NEXT:    fcvt s1, h11859; NONEON-NOSVE-NEXT:    csetm w8, pl1860; NONEON-NOSVE-NEXT:    strh w8, [sp, #86]1861; NONEON-NOSVE-NEXT:    fcmp s1, s01862; NONEON-NOSVE-NEXT:    ldr h0, [sp, #50]1863; NONEON-NOSVE-NEXT:    ldr h1, [sp, #34]1864; NONEON-NOSVE-NEXT:    fcvt s0, h01865; NONEON-NOSVE-NEXT:    fcvt s1, h11866; NONEON-NOSVE-NEXT:    csetm w8, pl1867; NONEON-NOSVE-NEXT:    strh w8, [sp, #84]1868; NONEON-NOSVE-NEXT:    fcmp s1, s01869; NONEON-NOSVE-NEXT:    ldr h0, [sp, #48]1870; NONEON-NOSVE-NEXT:    ldr h1, [sp, #32]1871; NONEON-NOSVE-NEXT:    fcvt s0, h01872; NONEON-NOSVE-NEXT:    fcvt s1, h11873; NONEON-NOSVE-NEXT:    csetm w8, pl1874; NONEON-NOSVE-NEXT:    strh w8, [sp, #82]1875; NONEON-NOSVE-NEXT:    fcmp s1, s01876; NONEON-NOSVE-NEXT:    ldr h0, [sp, #30]1877; NONEON-NOSVE-NEXT:    ldr h1, [sp, #14]1878; NONEON-NOSVE-NEXT:    fcvt s0, h01879; NONEON-NOSVE-NEXT:    fcvt s1, h11880; NONEON-NOSVE-NEXT:    csetm w8, pl1881; NONEON-NOSVE-NEXT:    strh w8, [sp, #80]1882; NONEON-NOSVE-NEXT:    fcmp s1, s01883; NONEON-NOSVE-NEXT:    ldr h0, [sp, #28]1884; NONEON-NOSVE-NEXT:    ldr h1, [sp, #12]1885; NONEON-NOSVE-NEXT:    fcvt s0, h01886; NONEON-NOSVE-NEXT:    fcvt s1, h11887; NONEON-NOSVE-NEXT:    csetm w8, pl1888; NONEON-NOSVE-NEXT:    strh w8, [sp, #78]1889; NONEON-NOSVE-NEXT:    fcmp s1, s01890; NONEON-NOSVE-NEXT:    ldr h0, [sp, #26]1891; NONEON-NOSVE-NEXT:    ldr h1, [sp, #10]1892; NONEON-NOSVE-NEXT:    fcvt s0, h01893; NONEON-NOSVE-NEXT:    fcvt s1, h11894; NONEON-NOSVE-NEXT:    csetm w8, pl1895; NONEON-NOSVE-NEXT:    strh w8, [sp, #76]1896; NONEON-NOSVE-NEXT:    fcmp s1, s01897; NONEON-NOSVE-NEXT:    ldr h0, [sp, #24]1898; NONEON-NOSVE-NEXT:    ldr h1, [sp, #8]1899; NONEON-NOSVE-NEXT:    fcvt s0, h01900; NONEON-NOSVE-NEXT:    fcvt s1, h11901; NONEON-NOSVE-NEXT:    csetm w8, pl1902; NONEON-NOSVE-NEXT:    strh w8, [sp, #74]1903; NONEON-NOSVE-NEXT:    fcmp s1, s01904; NONEON-NOSVE-NEXT:    ldr h0, [sp, #22]1905; NONEON-NOSVE-NEXT:    ldr h1, [sp, #6]1906; NONEON-NOSVE-NEXT:    fcvt s0, h01907; NONEON-NOSVE-NEXT:    fcvt s1, h11908; NONEON-NOSVE-NEXT:    csetm w8, pl1909; NONEON-NOSVE-NEXT:    strh w8, [sp, #72]1910; NONEON-NOSVE-NEXT:    fcmp s1, s01911; NONEON-NOSVE-NEXT:    ldr h0, [sp, #20]1912; NONEON-NOSVE-NEXT:    ldr h1, [sp, #4]1913; NONEON-NOSVE-NEXT:    fcvt s0, h01914; NONEON-NOSVE-NEXT:    fcvt s1, h11915; NONEON-NOSVE-NEXT:    csetm w8, pl1916; NONEON-NOSVE-NEXT:    strh w8, [sp, #70]1917; NONEON-NOSVE-NEXT:    fcmp s1, s01918; NONEON-NOSVE-NEXT:    ldr h0, [sp, #18]1919; NONEON-NOSVE-NEXT:    ldr h1, [sp, #2]1920; NONEON-NOSVE-NEXT:    fcvt s0, h01921; NONEON-NOSVE-NEXT:    fcvt s1, h11922; NONEON-NOSVE-NEXT:    csetm w8, pl1923; NONEON-NOSVE-NEXT:    strh w8, [sp, #68]1924; NONEON-NOSVE-NEXT:    fcmp s1, s01925; NONEON-NOSVE-NEXT:    ldr h0, [sp, #16]1926; NONEON-NOSVE-NEXT:    ldr h1, [sp]1927; NONEON-NOSVE-NEXT:    fcvt s0, h01928; NONEON-NOSVE-NEXT:    fcvt s1, h11929; NONEON-NOSVE-NEXT:    csetm w8, pl1930; NONEON-NOSVE-NEXT:    strh w8, [sp, #66]1931; NONEON-NOSVE-NEXT:    fcmp s1, s01932; NONEON-NOSVE-NEXT:    csetm w8, pl1933; NONEON-NOSVE-NEXT:    strh w8, [sp, #64]1934; NONEON-NOSVE-NEXT:    ldp q0, q1, [sp, #64]1935; NONEON-NOSVE-NEXT:    stp q0, q1, [x2]1936; NONEON-NOSVE-NEXT:    add sp, sp, #961937; NONEON-NOSVE-NEXT:    ret1938  %op1 = load <16 x half>, ptr %a1939  %op2 = load <16 x half>, ptr %b1940  %cmp = fcmp uge <16 x half> %op1, %op21941  %sext = sext <16 x i1> %cmp to <16 x i16>1942  store <16 x i16> %sext, ptr %c1943  ret void1944}1945 1946;1947; FCMP OLE1948;1949 1950define void @fcmp_ole_v16f16(ptr %a, ptr %b, ptr %c) {1951; CHECK-LABEL: fcmp_ole_v16f16:1952; CHECK:       // %bb.0:1953; CHECK-NEXT:    ldp q0, q3, [x1]1954; CHECK-NEXT:    ptrue p0.h, vl81955; CHECK-NEXT:    ldp q1, q2, [x0]1956; CHECK-NEXT:    fcmge p1.h, p0/z, z0.h, z1.h1957; CHECK-NEXT:    fcmge p0.h, p0/z, z3.h, z2.h1958; CHECK-NEXT:    mov z0.h, p1/z, #-1 // =0xffffffffffffffff1959; CHECK-NEXT:    mov z1.h, p0/z, #-1 // =0xffffffffffffffff1960; CHECK-NEXT:    stp q0, q1, [x2]1961; CHECK-NEXT:    ret1962;1963; NONEON-NOSVE-LABEL: fcmp_ole_v16f16:1964; NONEON-NOSVE:       // %bb.0:1965; NONEON-NOSVE-NEXT:    sub sp, sp, #961966; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 961967; NONEON-NOSVE-NEXT:    ldp q3, q0, [x1]1968; NONEON-NOSVE-NEXT:    ldp q2, q1, [x0]1969; NONEON-NOSVE-NEXT:    stp q2, q3, [sp]1970; NONEON-NOSVE-NEXT:    stp q1, q0, [sp, #32]1971; NONEON-NOSVE-NEXT:    ldr h0, [sp, #62]1972; NONEON-NOSVE-NEXT:    ldr h1, [sp, #46]1973; NONEON-NOSVE-NEXT:    fcvt s0, h01974; NONEON-NOSVE-NEXT:    fcvt s1, h11975; NONEON-NOSVE-NEXT:    fcmp s1, s01976; NONEON-NOSVE-NEXT:    ldr h0, [sp, #60]1977; NONEON-NOSVE-NEXT:    ldr h1, [sp, #44]1978; NONEON-NOSVE-NEXT:    fcvt s0, h01979; NONEON-NOSVE-NEXT:    fcvt s1, h11980; NONEON-NOSVE-NEXT:    csetm w8, ls1981; NONEON-NOSVE-NEXT:    strh w8, [sp, #94]1982; NONEON-NOSVE-NEXT:    fcmp s1, s01983; NONEON-NOSVE-NEXT:    ldr h0, [sp, #58]1984; NONEON-NOSVE-NEXT:    ldr h1, [sp, #42]1985; NONEON-NOSVE-NEXT:    fcvt s0, h01986; NONEON-NOSVE-NEXT:    fcvt s1, h11987; NONEON-NOSVE-NEXT:    csetm w8, ls1988; NONEON-NOSVE-NEXT:    strh w8, [sp, #92]1989; NONEON-NOSVE-NEXT:    fcmp s1, s01990; NONEON-NOSVE-NEXT:    ldr h0, [sp, #56]1991; NONEON-NOSVE-NEXT:    ldr h1, [sp, #40]1992; NONEON-NOSVE-NEXT:    fcvt s0, h01993; NONEON-NOSVE-NEXT:    fcvt s1, h11994; NONEON-NOSVE-NEXT:    csetm w8, ls1995; NONEON-NOSVE-NEXT:    strh w8, [sp, #90]1996; NONEON-NOSVE-NEXT:    fcmp s1, s01997; NONEON-NOSVE-NEXT:    ldr h0, [sp, #54]1998; NONEON-NOSVE-NEXT:    ldr h1, [sp, #38]1999; NONEON-NOSVE-NEXT:    fcvt s0, h02000; NONEON-NOSVE-NEXT:    fcvt s1, h12001; NONEON-NOSVE-NEXT:    csetm w8, ls2002; NONEON-NOSVE-NEXT:    strh w8, [sp, #88]2003; NONEON-NOSVE-NEXT:    fcmp s1, s02004; NONEON-NOSVE-NEXT:    ldr h0, [sp, #52]2005; NONEON-NOSVE-NEXT:    ldr h1, [sp, #36]2006; NONEON-NOSVE-NEXT:    fcvt s0, h02007; NONEON-NOSVE-NEXT:    fcvt s1, h12008; NONEON-NOSVE-NEXT:    csetm w8, ls2009; NONEON-NOSVE-NEXT:    strh w8, [sp, #86]2010; NONEON-NOSVE-NEXT:    fcmp s1, s02011; NONEON-NOSVE-NEXT:    ldr h0, [sp, #50]2012; NONEON-NOSVE-NEXT:    ldr h1, [sp, #34]2013; NONEON-NOSVE-NEXT:    fcvt s0, h02014; NONEON-NOSVE-NEXT:    fcvt s1, h12015; NONEON-NOSVE-NEXT:    csetm w8, ls2016; NONEON-NOSVE-NEXT:    strh w8, [sp, #84]2017; NONEON-NOSVE-NEXT:    fcmp s1, s02018; NONEON-NOSVE-NEXT:    ldr h0, [sp, #48]2019; NONEON-NOSVE-NEXT:    ldr h1, [sp, #32]2020; NONEON-NOSVE-NEXT:    fcvt s0, h02021; NONEON-NOSVE-NEXT:    fcvt s1, h12022; NONEON-NOSVE-NEXT:    csetm w8, ls2023; NONEON-NOSVE-NEXT:    strh w8, [sp, #82]2024; NONEON-NOSVE-NEXT:    fcmp s1, s02025; NONEON-NOSVE-NEXT:    ldr h0, [sp, #30]2026; NONEON-NOSVE-NEXT:    ldr h1, [sp, #14]2027; NONEON-NOSVE-NEXT:    fcvt s0, h02028; NONEON-NOSVE-NEXT:    fcvt s1, h12029; NONEON-NOSVE-NEXT:    csetm w8, ls2030; NONEON-NOSVE-NEXT:    strh w8, [sp, #80]2031; NONEON-NOSVE-NEXT:    fcmp s1, s02032; NONEON-NOSVE-NEXT:    ldr h0, [sp, #28]2033; NONEON-NOSVE-NEXT:    ldr h1, [sp, #12]2034; NONEON-NOSVE-NEXT:    fcvt s0, h02035; NONEON-NOSVE-NEXT:    fcvt s1, h12036; NONEON-NOSVE-NEXT:    csetm w8, ls2037; NONEON-NOSVE-NEXT:    strh w8, [sp, #78]2038; NONEON-NOSVE-NEXT:    fcmp s1, s02039; NONEON-NOSVE-NEXT:    ldr h0, [sp, #26]2040; NONEON-NOSVE-NEXT:    ldr h1, [sp, #10]2041; NONEON-NOSVE-NEXT:    fcvt s0, h02042; NONEON-NOSVE-NEXT:    fcvt s1, h12043; NONEON-NOSVE-NEXT:    csetm w8, ls2044; NONEON-NOSVE-NEXT:    strh w8, [sp, #76]2045; NONEON-NOSVE-NEXT:    fcmp s1, s02046; NONEON-NOSVE-NEXT:    ldr h0, [sp, #24]2047; NONEON-NOSVE-NEXT:    ldr h1, [sp, #8]2048; NONEON-NOSVE-NEXT:    fcvt s0, h02049; NONEON-NOSVE-NEXT:    fcvt s1, h12050; NONEON-NOSVE-NEXT:    csetm w8, ls2051; NONEON-NOSVE-NEXT:    strh w8, [sp, #74]2052; NONEON-NOSVE-NEXT:    fcmp s1, s02053; NONEON-NOSVE-NEXT:    ldr h0, [sp, #22]2054; NONEON-NOSVE-NEXT:    ldr h1, [sp, #6]2055; NONEON-NOSVE-NEXT:    fcvt s0, h02056; NONEON-NOSVE-NEXT:    fcvt s1, h12057; NONEON-NOSVE-NEXT:    csetm w8, ls2058; NONEON-NOSVE-NEXT:    strh w8, [sp, #72]2059; NONEON-NOSVE-NEXT:    fcmp s1, s02060; NONEON-NOSVE-NEXT:    ldr h0, [sp, #20]2061; NONEON-NOSVE-NEXT:    ldr h1, [sp, #4]2062; NONEON-NOSVE-NEXT:    fcvt s0, h02063; NONEON-NOSVE-NEXT:    fcvt s1, h12064; NONEON-NOSVE-NEXT:    csetm w8, ls2065; NONEON-NOSVE-NEXT:    strh w8, [sp, #70]2066; NONEON-NOSVE-NEXT:    fcmp s1, s02067; NONEON-NOSVE-NEXT:    ldr h0, [sp, #18]2068; NONEON-NOSVE-NEXT:    ldr h1, [sp, #2]2069; NONEON-NOSVE-NEXT:    fcvt s0, h02070; NONEON-NOSVE-NEXT:    fcvt s1, h12071; NONEON-NOSVE-NEXT:    csetm w8, ls2072; NONEON-NOSVE-NEXT:    strh w8, [sp, #68]2073; NONEON-NOSVE-NEXT:    fcmp s1, s02074; NONEON-NOSVE-NEXT:    ldr h0, [sp, #16]2075; NONEON-NOSVE-NEXT:    ldr h1, [sp]2076; NONEON-NOSVE-NEXT:    fcvt s0, h02077; NONEON-NOSVE-NEXT:    fcvt s1, h12078; NONEON-NOSVE-NEXT:    csetm w8, ls2079; NONEON-NOSVE-NEXT:    strh w8, [sp, #66]2080; NONEON-NOSVE-NEXT:    fcmp s1, s02081; NONEON-NOSVE-NEXT:    csetm w8, ls2082; NONEON-NOSVE-NEXT:    strh w8, [sp, #64]2083; NONEON-NOSVE-NEXT:    ldp q0, q1, [sp, #64]2084; NONEON-NOSVE-NEXT:    stp q0, q1, [x2]2085; NONEON-NOSVE-NEXT:    add sp, sp, #962086; NONEON-NOSVE-NEXT:    ret2087  %op1 = load <16 x half>, ptr %a2088  %op2 = load <16 x half>, ptr %b2089  %cmp = fcmp ole <16 x half> %op1, %op22090  %sext = sext <16 x i1> %cmp to <16 x i16>2091  store <16 x i16> %sext, ptr %c2092  ret void2093}2094 2095;2096; FCMP ULE2097;2098 2099define void @fcmp_ule_v16f16(ptr %a, ptr %b, ptr %c) {2100; CHECK-LABEL: fcmp_ule_v16f16:2101; CHECK:       // %bb.0:2102; CHECK-NEXT:    ldp q0, q3, [x1]2103; CHECK-NEXT:    ptrue p0.h, vl82104; CHECK-NEXT:    ldp q1, q2, [x0]2105; CHECK-NEXT:    fcmgt p1.h, p0/z, z1.h, z0.h2106; CHECK-NEXT:    mov z0.h, #-1 // =0xffffffffffffffff2107; CHECK-NEXT:    fcmgt p0.h, p0/z, z2.h, z3.h2108; CHECK-NEXT:    mov z1.h, p1/z, #-1 // =0xffffffffffffffff2109; CHECK-NEXT:    mov z2.h, p0/z, #-1 // =0xffffffffffffffff2110; CHECK-NEXT:    eor z1.d, z1.d, z0.d2111; CHECK-NEXT:    eor z0.d, z2.d, z0.d2112; CHECK-NEXT:    stp q1, q0, [x2]2113; CHECK-NEXT:    ret2114;2115; NONEON-NOSVE-LABEL: fcmp_ule_v16f16:2116; NONEON-NOSVE:       // %bb.0:2117; NONEON-NOSVE-NEXT:    sub sp, sp, #962118; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 962119; NONEON-NOSVE-NEXT:    ldp q3, q0, [x1]2120; NONEON-NOSVE-NEXT:    ldp q2, q1, [x0]2121; NONEON-NOSVE-NEXT:    stp q2, q3, [sp]2122; NONEON-NOSVE-NEXT:    stp q1, q0, [sp, #32]2123; NONEON-NOSVE-NEXT:    ldr h0, [sp, #62]2124; NONEON-NOSVE-NEXT:    ldr h1, [sp, #46]2125; NONEON-NOSVE-NEXT:    fcvt s0, h02126; NONEON-NOSVE-NEXT:    fcvt s1, h12127; NONEON-NOSVE-NEXT:    fcmp s1, s02128; NONEON-NOSVE-NEXT:    ldr h0, [sp, #60]2129; NONEON-NOSVE-NEXT:    ldr h1, [sp, #44]2130; NONEON-NOSVE-NEXT:    fcvt s0, h02131; NONEON-NOSVE-NEXT:    fcvt s1, h12132; NONEON-NOSVE-NEXT:    csetm w8, le2133; NONEON-NOSVE-NEXT:    strh w8, [sp, #94]2134; NONEON-NOSVE-NEXT:    fcmp s1, s02135; NONEON-NOSVE-NEXT:    ldr h0, [sp, #58]2136; NONEON-NOSVE-NEXT:    ldr h1, [sp, #42]2137; NONEON-NOSVE-NEXT:    fcvt s0, h02138; NONEON-NOSVE-NEXT:    fcvt s1, h12139; NONEON-NOSVE-NEXT:    csetm w8, le2140; NONEON-NOSVE-NEXT:    strh w8, [sp, #92]2141; NONEON-NOSVE-NEXT:    fcmp s1, s02142; NONEON-NOSVE-NEXT:    ldr h0, [sp, #56]2143; NONEON-NOSVE-NEXT:    ldr h1, [sp, #40]2144; NONEON-NOSVE-NEXT:    fcvt s0, h02145; NONEON-NOSVE-NEXT:    fcvt s1, h12146; NONEON-NOSVE-NEXT:    csetm w8, le2147; NONEON-NOSVE-NEXT:    strh w8, [sp, #90]2148; NONEON-NOSVE-NEXT:    fcmp s1, s02149; NONEON-NOSVE-NEXT:    ldr h0, [sp, #54]2150; NONEON-NOSVE-NEXT:    ldr h1, [sp, #38]2151; NONEON-NOSVE-NEXT:    fcvt s0, h02152; NONEON-NOSVE-NEXT:    fcvt s1, h12153; NONEON-NOSVE-NEXT:    csetm w8, le2154; NONEON-NOSVE-NEXT:    strh w8, [sp, #88]2155; NONEON-NOSVE-NEXT:    fcmp s1, s02156; NONEON-NOSVE-NEXT:    ldr h0, [sp, #52]2157; NONEON-NOSVE-NEXT:    ldr h1, [sp, #36]2158; NONEON-NOSVE-NEXT:    fcvt s0, h02159; NONEON-NOSVE-NEXT:    fcvt s1, h12160; NONEON-NOSVE-NEXT:    csetm w8, le2161; NONEON-NOSVE-NEXT:    strh w8, [sp, #86]2162; NONEON-NOSVE-NEXT:    fcmp s1, s02163; NONEON-NOSVE-NEXT:    ldr h0, [sp, #50]2164; NONEON-NOSVE-NEXT:    ldr h1, [sp, #34]2165; NONEON-NOSVE-NEXT:    fcvt s0, h02166; NONEON-NOSVE-NEXT:    fcvt s1, h12167; NONEON-NOSVE-NEXT:    csetm w8, le2168; NONEON-NOSVE-NEXT:    strh w8, [sp, #84]2169; NONEON-NOSVE-NEXT:    fcmp s1, s02170; NONEON-NOSVE-NEXT:    ldr h0, [sp, #48]2171; NONEON-NOSVE-NEXT:    ldr h1, [sp, #32]2172; NONEON-NOSVE-NEXT:    fcvt s0, h02173; NONEON-NOSVE-NEXT:    fcvt s1, h12174; NONEON-NOSVE-NEXT:    csetm w8, le2175; NONEON-NOSVE-NEXT:    strh w8, [sp, #82]2176; NONEON-NOSVE-NEXT:    fcmp s1, s02177; NONEON-NOSVE-NEXT:    ldr h0, [sp, #30]2178; NONEON-NOSVE-NEXT:    ldr h1, [sp, #14]2179; NONEON-NOSVE-NEXT:    fcvt s0, h02180; NONEON-NOSVE-NEXT:    fcvt s1, h12181; NONEON-NOSVE-NEXT:    csetm w8, le2182; NONEON-NOSVE-NEXT:    strh w8, [sp, #80]2183; NONEON-NOSVE-NEXT:    fcmp s1, s02184; NONEON-NOSVE-NEXT:    ldr h0, [sp, #28]2185; NONEON-NOSVE-NEXT:    ldr h1, [sp, #12]2186; NONEON-NOSVE-NEXT:    fcvt s0, h02187; NONEON-NOSVE-NEXT:    fcvt s1, h12188; NONEON-NOSVE-NEXT:    csetm w8, le2189; NONEON-NOSVE-NEXT:    strh w8, [sp, #78]2190; NONEON-NOSVE-NEXT:    fcmp s1, s02191; NONEON-NOSVE-NEXT:    ldr h0, [sp, #26]2192; NONEON-NOSVE-NEXT:    ldr h1, [sp, #10]2193; NONEON-NOSVE-NEXT:    fcvt s0, h02194; NONEON-NOSVE-NEXT:    fcvt s1, h12195; NONEON-NOSVE-NEXT:    csetm w8, le2196; NONEON-NOSVE-NEXT:    strh w8, [sp, #76]2197; NONEON-NOSVE-NEXT:    fcmp s1, s02198; NONEON-NOSVE-NEXT:    ldr h0, [sp, #24]2199; NONEON-NOSVE-NEXT:    ldr h1, [sp, #8]2200; NONEON-NOSVE-NEXT:    fcvt s0, h02201; NONEON-NOSVE-NEXT:    fcvt s1, h12202; NONEON-NOSVE-NEXT:    csetm w8, le2203; NONEON-NOSVE-NEXT:    strh w8, [sp, #74]2204; NONEON-NOSVE-NEXT:    fcmp s1, s02205; NONEON-NOSVE-NEXT:    ldr h0, [sp, #22]2206; NONEON-NOSVE-NEXT:    ldr h1, [sp, #6]2207; NONEON-NOSVE-NEXT:    fcvt s0, h02208; NONEON-NOSVE-NEXT:    fcvt s1, h12209; NONEON-NOSVE-NEXT:    csetm w8, le2210; NONEON-NOSVE-NEXT:    strh w8, [sp, #72]2211; NONEON-NOSVE-NEXT:    fcmp s1, s02212; NONEON-NOSVE-NEXT:    ldr h0, [sp, #20]2213; NONEON-NOSVE-NEXT:    ldr h1, [sp, #4]2214; NONEON-NOSVE-NEXT:    fcvt s0, h02215; NONEON-NOSVE-NEXT:    fcvt s1, h12216; NONEON-NOSVE-NEXT:    csetm w8, le2217; NONEON-NOSVE-NEXT:    strh w8, [sp, #70]2218; NONEON-NOSVE-NEXT:    fcmp s1, s02219; NONEON-NOSVE-NEXT:    ldr h0, [sp, #18]2220; NONEON-NOSVE-NEXT:    ldr h1, [sp, #2]2221; NONEON-NOSVE-NEXT:    fcvt s0, h02222; NONEON-NOSVE-NEXT:    fcvt s1, h12223; NONEON-NOSVE-NEXT:    csetm w8, le2224; NONEON-NOSVE-NEXT:    strh w8, [sp, #68]2225; NONEON-NOSVE-NEXT:    fcmp s1, s02226; NONEON-NOSVE-NEXT:    ldr h0, [sp, #16]2227; NONEON-NOSVE-NEXT:    ldr h1, [sp]2228; NONEON-NOSVE-NEXT:    fcvt s0, h02229; NONEON-NOSVE-NEXT:    fcvt s1, h12230; NONEON-NOSVE-NEXT:    csetm w8, le2231; NONEON-NOSVE-NEXT:    strh w8, [sp, #66]2232; NONEON-NOSVE-NEXT:    fcmp s1, s02233; NONEON-NOSVE-NEXT:    csetm w8, le2234; NONEON-NOSVE-NEXT:    strh w8, [sp, #64]2235; NONEON-NOSVE-NEXT:    ldp q0, q1, [sp, #64]2236; NONEON-NOSVE-NEXT:    stp q0, q1, [x2]2237; NONEON-NOSVE-NEXT:    add sp, sp, #962238; NONEON-NOSVE-NEXT:    ret2239  %op1 = load <16 x half>, ptr %a2240  %op2 = load <16 x half>, ptr %b2241  %cmp = fcmp ule <16 x half> %op1, %op22242  %sext = sext <16 x i1> %cmp to <16 x i16>2243  store <16 x i16> %sext, ptr %c2244  ret void2245}2246 2247;2248; FCMP UNO2249;2250 2251define void @fcmp_uno_v16f16(ptr %a, ptr %b, ptr %c) {2252; CHECK-LABEL: fcmp_uno_v16f16:2253; CHECK:       // %bb.0:2254; CHECK-NEXT:    ldp q0, q3, [x1]2255; CHECK-NEXT:    ptrue p0.h, vl82256; CHECK-NEXT:    ldp q1, q2, [x0]2257; CHECK-NEXT:    fcmuo p1.h, p0/z, z1.h, z0.h2258; CHECK-NEXT:    fcmuo p0.h, p0/z, z2.h, z3.h2259; CHECK-NEXT:    mov z0.h, p1/z, #-1 // =0xffffffffffffffff2260; CHECK-NEXT:    mov z1.h, p0/z, #-1 // =0xffffffffffffffff2261; CHECK-NEXT:    stp q0, q1, [x2]2262; CHECK-NEXT:    ret2263;2264; NONEON-NOSVE-LABEL: fcmp_uno_v16f16:2265; NONEON-NOSVE:       // %bb.0:2266; NONEON-NOSVE-NEXT:    sub sp, sp, #962267; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 962268; NONEON-NOSVE-NEXT:    ldp q3, q0, [x1]2269; NONEON-NOSVE-NEXT:    ldp q2, q1, [x0]2270; NONEON-NOSVE-NEXT:    stp q2, q3, [sp]2271; NONEON-NOSVE-NEXT:    stp q1, q0, [sp, #32]2272; NONEON-NOSVE-NEXT:    ldr h0, [sp, #62]2273; NONEON-NOSVE-NEXT:    ldr h1, [sp, #46]2274; NONEON-NOSVE-NEXT:    fcvt s0, h02275; NONEON-NOSVE-NEXT:    fcvt s1, h12276; NONEON-NOSVE-NEXT:    fcmp s1, s02277; NONEON-NOSVE-NEXT:    ldr h0, [sp, #60]2278; NONEON-NOSVE-NEXT:    ldr h1, [sp, #44]2279; NONEON-NOSVE-NEXT:    fcvt s0, h02280; NONEON-NOSVE-NEXT:    fcvt s1, h12281; NONEON-NOSVE-NEXT:    csetm w8, vs2282; NONEON-NOSVE-NEXT:    strh w8, [sp, #94]2283; NONEON-NOSVE-NEXT:    fcmp s1, s02284; NONEON-NOSVE-NEXT:    ldr h0, [sp, #58]2285; NONEON-NOSVE-NEXT:    ldr h1, [sp, #42]2286; NONEON-NOSVE-NEXT:    fcvt s0, h02287; NONEON-NOSVE-NEXT:    fcvt s1, h12288; NONEON-NOSVE-NEXT:    csetm w8, vs2289; NONEON-NOSVE-NEXT:    strh w8, [sp, #92]2290; NONEON-NOSVE-NEXT:    fcmp s1, s02291; NONEON-NOSVE-NEXT:    ldr h0, [sp, #56]2292; NONEON-NOSVE-NEXT:    ldr h1, [sp, #40]2293; NONEON-NOSVE-NEXT:    fcvt s0, h02294; NONEON-NOSVE-NEXT:    fcvt s1, h12295; NONEON-NOSVE-NEXT:    csetm w8, vs2296; NONEON-NOSVE-NEXT:    strh w8, [sp, #90]2297; NONEON-NOSVE-NEXT:    fcmp s1, s02298; NONEON-NOSVE-NEXT:    ldr h0, [sp, #54]2299; NONEON-NOSVE-NEXT:    ldr h1, [sp, #38]2300; NONEON-NOSVE-NEXT:    fcvt s0, h02301; NONEON-NOSVE-NEXT:    fcvt s1, h12302; NONEON-NOSVE-NEXT:    csetm w8, vs2303; NONEON-NOSVE-NEXT:    strh w8, [sp, #88]2304; NONEON-NOSVE-NEXT:    fcmp s1, s02305; NONEON-NOSVE-NEXT:    ldr h0, [sp, #52]2306; NONEON-NOSVE-NEXT:    ldr h1, [sp, #36]2307; NONEON-NOSVE-NEXT:    fcvt s0, h02308; NONEON-NOSVE-NEXT:    fcvt s1, h12309; NONEON-NOSVE-NEXT:    csetm w8, vs2310; NONEON-NOSVE-NEXT:    strh w8, [sp, #86]2311; NONEON-NOSVE-NEXT:    fcmp s1, s02312; NONEON-NOSVE-NEXT:    ldr h0, [sp, #50]2313; NONEON-NOSVE-NEXT:    ldr h1, [sp, #34]2314; NONEON-NOSVE-NEXT:    fcvt s0, h02315; NONEON-NOSVE-NEXT:    fcvt s1, h12316; NONEON-NOSVE-NEXT:    csetm w8, vs2317; NONEON-NOSVE-NEXT:    strh w8, [sp, #84]2318; NONEON-NOSVE-NEXT:    fcmp s1, s02319; NONEON-NOSVE-NEXT:    ldr h0, [sp, #48]2320; NONEON-NOSVE-NEXT:    ldr h1, [sp, #32]2321; NONEON-NOSVE-NEXT:    fcvt s0, h02322; NONEON-NOSVE-NEXT:    fcvt s1, h12323; NONEON-NOSVE-NEXT:    csetm w8, vs2324; NONEON-NOSVE-NEXT:    strh w8, [sp, #82]2325; NONEON-NOSVE-NEXT:    fcmp s1, s02326; NONEON-NOSVE-NEXT:    ldr h0, [sp, #30]2327; NONEON-NOSVE-NEXT:    ldr h1, [sp, #14]2328; NONEON-NOSVE-NEXT:    fcvt s0, h02329; NONEON-NOSVE-NEXT:    fcvt s1, h12330; NONEON-NOSVE-NEXT:    csetm w8, vs2331; NONEON-NOSVE-NEXT:    strh w8, [sp, #80]2332; NONEON-NOSVE-NEXT:    fcmp s1, s02333; NONEON-NOSVE-NEXT:    ldr h0, [sp, #28]2334; NONEON-NOSVE-NEXT:    ldr h1, [sp, #12]2335; NONEON-NOSVE-NEXT:    fcvt s0, h02336; NONEON-NOSVE-NEXT:    fcvt s1, h12337; NONEON-NOSVE-NEXT:    csetm w8, vs2338; NONEON-NOSVE-NEXT:    strh w8, [sp, #78]2339; NONEON-NOSVE-NEXT:    fcmp s1, s02340; NONEON-NOSVE-NEXT:    ldr h0, [sp, #26]2341; NONEON-NOSVE-NEXT:    ldr h1, [sp, #10]2342; NONEON-NOSVE-NEXT:    fcvt s0, h02343; NONEON-NOSVE-NEXT:    fcvt s1, h12344; NONEON-NOSVE-NEXT:    csetm w8, vs2345; NONEON-NOSVE-NEXT:    strh w8, [sp, #76]2346; NONEON-NOSVE-NEXT:    fcmp s1, s02347; NONEON-NOSVE-NEXT:    ldr h0, [sp, #24]2348; NONEON-NOSVE-NEXT:    ldr h1, [sp, #8]2349; NONEON-NOSVE-NEXT:    fcvt s0, h02350; NONEON-NOSVE-NEXT:    fcvt s1, h12351; NONEON-NOSVE-NEXT:    csetm w8, vs2352; NONEON-NOSVE-NEXT:    strh w8, [sp, #74]2353; NONEON-NOSVE-NEXT:    fcmp s1, s02354; NONEON-NOSVE-NEXT:    ldr h0, [sp, #22]2355; NONEON-NOSVE-NEXT:    ldr h1, [sp, #6]2356; NONEON-NOSVE-NEXT:    fcvt s0, h02357; NONEON-NOSVE-NEXT:    fcvt s1, h12358; NONEON-NOSVE-NEXT:    csetm w8, vs2359; NONEON-NOSVE-NEXT:    strh w8, [sp, #72]2360; NONEON-NOSVE-NEXT:    fcmp s1, s02361; NONEON-NOSVE-NEXT:    ldr h0, [sp, #20]2362; NONEON-NOSVE-NEXT:    ldr h1, [sp, #4]2363; NONEON-NOSVE-NEXT:    fcvt s0, h02364; NONEON-NOSVE-NEXT:    fcvt s1, h12365; NONEON-NOSVE-NEXT:    csetm w8, vs2366; NONEON-NOSVE-NEXT:    strh w8, [sp, #70]2367; NONEON-NOSVE-NEXT:    fcmp s1, s02368; NONEON-NOSVE-NEXT:    ldr h0, [sp, #18]2369; NONEON-NOSVE-NEXT:    ldr h1, [sp, #2]2370; NONEON-NOSVE-NEXT:    fcvt s0, h02371; NONEON-NOSVE-NEXT:    fcvt s1, h12372; NONEON-NOSVE-NEXT:    csetm w8, vs2373; NONEON-NOSVE-NEXT:    strh w8, [sp, #68]2374; NONEON-NOSVE-NEXT:    fcmp s1, s02375; NONEON-NOSVE-NEXT:    ldr h0, [sp, #16]2376; NONEON-NOSVE-NEXT:    ldr h1, [sp]2377; NONEON-NOSVE-NEXT:    fcvt s0, h02378; NONEON-NOSVE-NEXT:    fcvt s1, h12379; NONEON-NOSVE-NEXT:    csetm w8, vs2380; NONEON-NOSVE-NEXT:    strh w8, [sp, #66]2381; NONEON-NOSVE-NEXT:    fcmp s1, s02382; NONEON-NOSVE-NEXT:    csetm w8, vs2383; NONEON-NOSVE-NEXT:    strh w8, [sp, #64]2384; NONEON-NOSVE-NEXT:    ldp q0, q1, [sp, #64]2385; NONEON-NOSVE-NEXT:    stp q0, q1, [x2]2386; NONEON-NOSVE-NEXT:    add sp, sp, #962387; NONEON-NOSVE-NEXT:    ret2388  %op1 = load <16 x half>, ptr %a2389  %op2 = load <16 x half>, ptr %b2390  %cmp = fcmp uno <16 x half> %op1, %op22391  %sext = sext <16 x i1> %cmp to <16 x i16>2392  store <16 x i16> %sext, ptr %c2393  ret void2394}2395 2396;2397; FCMP ORD2398;2399 2400define void @fcmp_ord_v16f16(ptr %a, ptr %b, ptr %c) {2401; CHECK-LABEL: fcmp_ord_v16f16:2402; CHECK:       // %bb.0:2403; CHECK-NEXT:    ldp q0, q3, [x1]2404; CHECK-NEXT:    ptrue p0.h, vl82405; CHECK-NEXT:    ldp q1, q2, [x0]2406; CHECK-NEXT:    fcmuo p1.h, p0/z, z1.h, z0.h2407; CHECK-NEXT:    mov z0.h, #-1 // =0xffffffffffffffff2408; CHECK-NEXT:    fcmuo p0.h, p0/z, z2.h, z3.h2409; CHECK-NEXT:    mov z1.h, p1/z, #-1 // =0xffffffffffffffff2410; CHECK-NEXT:    mov z2.h, p0/z, #-1 // =0xffffffffffffffff2411; CHECK-NEXT:    eor z1.d, z1.d, z0.d2412; CHECK-NEXT:    eor z0.d, z2.d, z0.d2413; CHECK-NEXT:    stp q1, q0, [x2]2414; CHECK-NEXT:    ret2415;2416; NONEON-NOSVE-LABEL: fcmp_ord_v16f16:2417; NONEON-NOSVE:       // %bb.0:2418; NONEON-NOSVE-NEXT:    sub sp, sp, #962419; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 962420; NONEON-NOSVE-NEXT:    ldp q3, q0, [x1]2421; NONEON-NOSVE-NEXT:    ldp q2, q1, [x0]2422; NONEON-NOSVE-NEXT:    stp q2, q3, [sp]2423; NONEON-NOSVE-NEXT:    stp q1, q0, [sp, #32]2424; NONEON-NOSVE-NEXT:    ldr h0, [sp, #62]2425; NONEON-NOSVE-NEXT:    ldr h1, [sp, #46]2426; NONEON-NOSVE-NEXT:    fcvt s0, h02427; NONEON-NOSVE-NEXT:    fcvt s1, h12428; NONEON-NOSVE-NEXT:    fcmp s1, s02429; NONEON-NOSVE-NEXT:    ldr h0, [sp, #60]2430; NONEON-NOSVE-NEXT:    ldr h1, [sp, #44]2431; NONEON-NOSVE-NEXT:    fcvt s0, h02432; NONEON-NOSVE-NEXT:    fcvt s1, h12433; NONEON-NOSVE-NEXT:    csetm w8, vc2434; NONEON-NOSVE-NEXT:    strh w8, [sp, #94]2435; NONEON-NOSVE-NEXT:    fcmp s1, s02436; NONEON-NOSVE-NEXT:    ldr h0, [sp, #58]2437; NONEON-NOSVE-NEXT:    ldr h1, [sp, #42]2438; NONEON-NOSVE-NEXT:    fcvt s0, h02439; NONEON-NOSVE-NEXT:    fcvt s1, h12440; NONEON-NOSVE-NEXT:    csetm w8, vc2441; NONEON-NOSVE-NEXT:    strh w8, [sp, #92]2442; NONEON-NOSVE-NEXT:    fcmp s1, s02443; NONEON-NOSVE-NEXT:    ldr h0, [sp, #56]2444; NONEON-NOSVE-NEXT:    ldr h1, [sp, #40]2445; NONEON-NOSVE-NEXT:    fcvt s0, h02446; NONEON-NOSVE-NEXT:    fcvt s1, h12447; NONEON-NOSVE-NEXT:    csetm w8, vc2448; NONEON-NOSVE-NEXT:    strh w8, [sp, #90]2449; NONEON-NOSVE-NEXT:    fcmp s1, s02450; NONEON-NOSVE-NEXT:    ldr h0, [sp, #54]2451; NONEON-NOSVE-NEXT:    ldr h1, [sp, #38]2452; NONEON-NOSVE-NEXT:    fcvt s0, h02453; NONEON-NOSVE-NEXT:    fcvt s1, h12454; NONEON-NOSVE-NEXT:    csetm w8, vc2455; NONEON-NOSVE-NEXT:    strh w8, [sp, #88]2456; NONEON-NOSVE-NEXT:    fcmp s1, s02457; NONEON-NOSVE-NEXT:    ldr h0, [sp, #52]2458; NONEON-NOSVE-NEXT:    ldr h1, [sp, #36]2459; NONEON-NOSVE-NEXT:    fcvt s0, h02460; NONEON-NOSVE-NEXT:    fcvt s1, h12461; NONEON-NOSVE-NEXT:    csetm w8, vc2462; NONEON-NOSVE-NEXT:    strh w8, [sp, #86]2463; NONEON-NOSVE-NEXT:    fcmp s1, s02464; NONEON-NOSVE-NEXT:    ldr h0, [sp, #50]2465; NONEON-NOSVE-NEXT:    ldr h1, [sp, #34]2466; NONEON-NOSVE-NEXT:    fcvt s0, h02467; NONEON-NOSVE-NEXT:    fcvt s1, h12468; NONEON-NOSVE-NEXT:    csetm w8, vc2469; NONEON-NOSVE-NEXT:    strh w8, [sp, #84]2470; NONEON-NOSVE-NEXT:    fcmp s1, s02471; NONEON-NOSVE-NEXT:    ldr h0, [sp, #48]2472; NONEON-NOSVE-NEXT:    ldr h1, [sp, #32]2473; NONEON-NOSVE-NEXT:    fcvt s0, h02474; NONEON-NOSVE-NEXT:    fcvt s1, h12475; NONEON-NOSVE-NEXT:    csetm w8, vc2476; NONEON-NOSVE-NEXT:    strh w8, [sp, #82]2477; NONEON-NOSVE-NEXT:    fcmp s1, s02478; NONEON-NOSVE-NEXT:    ldr h0, [sp, #30]2479; NONEON-NOSVE-NEXT:    ldr h1, [sp, #14]2480; NONEON-NOSVE-NEXT:    fcvt s0, h02481; NONEON-NOSVE-NEXT:    fcvt s1, h12482; NONEON-NOSVE-NEXT:    csetm w8, vc2483; NONEON-NOSVE-NEXT:    strh w8, [sp, #80]2484; NONEON-NOSVE-NEXT:    fcmp s1, s02485; NONEON-NOSVE-NEXT:    ldr h0, [sp, #28]2486; NONEON-NOSVE-NEXT:    ldr h1, [sp, #12]2487; NONEON-NOSVE-NEXT:    fcvt s0, h02488; NONEON-NOSVE-NEXT:    fcvt s1, h12489; NONEON-NOSVE-NEXT:    csetm w8, vc2490; NONEON-NOSVE-NEXT:    strh w8, [sp, #78]2491; NONEON-NOSVE-NEXT:    fcmp s1, s02492; NONEON-NOSVE-NEXT:    ldr h0, [sp, #26]2493; NONEON-NOSVE-NEXT:    ldr h1, [sp, #10]2494; NONEON-NOSVE-NEXT:    fcvt s0, h02495; NONEON-NOSVE-NEXT:    fcvt s1, h12496; NONEON-NOSVE-NEXT:    csetm w8, vc2497; NONEON-NOSVE-NEXT:    strh w8, [sp, #76]2498; NONEON-NOSVE-NEXT:    fcmp s1, s02499; NONEON-NOSVE-NEXT:    ldr h0, [sp, #24]2500; NONEON-NOSVE-NEXT:    ldr h1, [sp, #8]2501; NONEON-NOSVE-NEXT:    fcvt s0, h02502; NONEON-NOSVE-NEXT:    fcvt s1, h12503; NONEON-NOSVE-NEXT:    csetm w8, vc2504; NONEON-NOSVE-NEXT:    strh w8, [sp, #74]2505; NONEON-NOSVE-NEXT:    fcmp s1, s02506; NONEON-NOSVE-NEXT:    ldr h0, [sp, #22]2507; NONEON-NOSVE-NEXT:    ldr h1, [sp, #6]2508; NONEON-NOSVE-NEXT:    fcvt s0, h02509; NONEON-NOSVE-NEXT:    fcvt s1, h12510; NONEON-NOSVE-NEXT:    csetm w8, vc2511; NONEON-NOSVE-NEXT:    strh w8, [sp, #72]2512; NONEON-NOSVE-NEXT:    fcmp s1, s02513; NONEON-NOSVE-NEXT:    ldr h0, [sp, #20]2514; NONEON-NOSVE-NEXT:    ldr h1, [sp, #4]2515; NONEON-NOSVE-NEXT:    fcvt s0, h02516; NONEON-NOSVE-NEXT:    fcvt s1, h12517; NONEON-NOSVE-NEXT:    csetm w8, vc2518; NONEON-NOSVE-NEXT:    strh w8, [sp, #70]2519; NONEON-NOSVE-NEXT:    fcmp s1, s02520; NONEON-NOSVE-NEXT:    ldr h0, [sp, #18]2521; NONEON-NOSVE-NEXT:    ldr h1, [sp, #2]2522; NONEON-NOSVE-NEXT:    fcvt s0, h02523; NONEON-NOSVE-NEXT:    fcvt s1, h12524; NONEON-NOSVE-NEXT:    csetm w8, vc2525; NONEON-NOSVE-NEXT:    strh w8, [sp, #68]2526; NONEON-NOSVE-NEXT:    fcmp s1, s02527; NONEON-NOSVE-NEXT:    ldr h0, [sp, #16]2528; NONEON-NOSVE-NEXT:    ldr h1, [sp]2529; NONEON-NOSVE-NEXT:    fcvt s0, h02530; NONEON-NOSVE-NEXT:    fcvt s1, h12531; NONEON-NOSVE-NEXT:    csetm w8, vc2532; NONEON-NOSVE-NEXT:    strh w8, [sp, #66]2533; NONEON-NOSVE-NEXT:    fcmp s1, s02534; NONEON-NOSVE-NEXT:    csetm w8, vc2535; NONEON-NOSVE-NEXT:    strh w8, [sp, #64]2536; NONEON-NOSVE-NEXT:    ldp q0, q1, [sp, #64]2537; NONEON-NOSVE-NEXT:    stp q0, q1, [x2]2538; NONEON-NOSVE-NEXT:    add sp, sp, #962539; NONEON-NOSVE-NEXT:    ret2540  %op1 = load <16 x half>, ptr %a2541  %op2 = load <16 x half>, ptr %b2542  %cmp = fcmp ord <16 x half> %op1, %op22543  %sext = sext <16 x i1> %cmp to <16 x i16>2544  store <16 x i16> %sext, ptr %c2545  ret void2546}2547 2548;2549; FCMP EQ2550;2551 2552define void @fcmp_eq_v16f16(ptr %a, ptr %b, ptr %c) {2553; CHECK-LABEL: fcmp_eq_v16f16:2554; CHECK:       // %bb.0:2555; CHECK-NEXT:    ldp q0, q3, [x1]2556; CHECK-NEXT:    ptrue p0.h, vl82557; CHECK-NEXT:    ldp q1, q2, [x0]2558; CHECK-NEXT:    fcmeq p1.h, p0/z, z1.h, z0.h2559; CHECK-NEXT:    fcmeq p0.h, p0/z, z2.h, z3.h2560; CHECK-NEXT:    mov z0.h, p1/z, #-1 // =0xffffffffffffffff2561; CHECK-NEXT:    mov z1.h, p0/z, #-1 // =0xffffffffffffffff2562; CHECK-NEXT:    stp q0, q1, [x2]2563; CHECK-NEXT:    ret2564;2565; NONEON-NOSVE-LABEL: fcmp_eq_v16f16:2566; NONEON-NOSVE:       // %bb.0:2567; NONEON-NOSVE-NEXT:    sub sp, sp, #962568; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 962569; NONEON-NOSVE-NEXT:    ldp q3, q0, [x1]2570; NONEON-NOSVE-NEXT:    ldp q2, q1, [x0]2571; NONEON-NOSVE-NEXT:    stp q2, q3, [sp]2572; NONEON-NOSVE-NEXT:    stp q1, q0, [sp, #32]2573; NONEON-NOSVE-NEXT:    ldr h0, [sp, #62]2574; NONEON-NOSVE-NEXT:    ldr h1, [sp, #46]2575; NONEON-NOSVE-NEXT:    fcvt s0, h02576; NONEON-NOSVE-NEXT:    fcvt s1, h12577; NONEON-NOSVE-NEXT:    fcmp s1, s02578; NONEON-NOSVE-NEXT:    ldr h0, [sp, #60]2579; NONEON-NOSVE-NEXT:    ldr h1, [sp, #44]2580; NONEON-NOSVE-NEXT:    fcvt s0, h02581; NONEON-NOSVE-NEXT:    fcvt s1, h12582; NONEON-NOSVE-NEXT:    csetm w8, eq2583; NONEON-NOSVE-NEXT:    strh w8, [sp, #94]2584; NONEON-NOSVE-NEXT:    fcmp s1, s02585; NONEON-NOSVE-NEXT:    ldr h0, [sp, #58]2586; NONEON-NOSVE-NEXT:    ldr h1, [sp, #42]2587; NONEON-NOSVE-NEXT:    fcvt s0, h02588; NONEON-NOSVE-NEXT:    fcvt s1, h12589; NONEON-NOSVE-NEXT:    csetm w8, eq2590; NONEON-NOSVE-NEXT:    strh w8, [sp, #92]2591; NONEON-NOSVE-NEXT:    fcmp s1, s02592; NONEON-NOSVE-NEXT:    ldr h0, [sp, #56]2593; NONEON-NOSVE-NEXT:    ldr h1, [sp, #40]2594; NONEON-NOSVE-NEXT:    fcvt s0, h02595; NONEON-NOSVE-NEXT:    fcvt s1, h12596; NONEON-NOSVE-NEXT:    csetm w8, eq2597; NONEON-NOSVE-NEXT:    strh w8, [sp, #90]2598; NONEON-NOSVE-NEXT:    fcmp s1, s02599; NONEON-NOSVE-NEXT:    ldr h0, [sp, #54]2600; NONEON-NOSVE-NEXT:    ldr h1, [sp, #38]2601; NONEON-NOSVE-NEXT:    fcvt s0, h02602; NONEON-NOSVE-NEXT:    fcvt s1, h12603; NONEON-NOSVE-NEXT:    csetm w8, eq2604; NONEON-NOSVE-NEXT:    strh w8, [sp, #88]2605; NONEON-NOSVE-NEXT:    fcmp s1, s02606; NONEON-NOSVE-NEXT:    ldr h0, [sp, #52]2607; NONEON-NOSVE-NEXT:    ldr h1, [sp, #36]2608; NONEON-NOSVE-NEXT:    fcvt s0, h02609; NONEON-NOSVE-NEXT:    fcvt s1, h12610; NONEON-NOSVE-NEXT:    csetm w8, eq2611; NONEON-NOSVE-NEXT:    strh w8, [sp, #86]2612; NONEON-NOSVE-NEXT:    fcmp s1, s02613; NONEON-NOSVE-NEXT:    ldr h0, [sp, #50]2614; NONEON-NOSVE-NEXT:    ldr h1, [sp, #34]2615; NONEON-NOSVE-NEXT:    fcvt s0, h02616; NONEON-NOSVE-NEXT:    fcvt s1, h12617; NONEON-NOSVE-NEXT:    csetm w8, eq2618; NONEON-NOSVE-NEXT:    strh w8, [sp, #84]2619; NONEON-NOSVE-NEXT:    fcmp s1, s02620; NONEON-NOSVE-NEXT:    ldr h0, [sp, #48]2621; NONEON-NOSVE-NEXT:    ldr h1, [sp, #32]2622; NONEON-NOSVE-NEXT:    fcvt s0, h02623; NONEON-NOSVE-NEXT:    fcvt s1, h12624; NONEON-NOSVE-NEXT:    csetm w8, eq2625; NONEON-NOSVE-NEXT:    strh w8, [sp, #82]2626; NONEON-NOSVE-NEXT:    fcmp s1, s02627; NONEON-NOSVE-NEXT:    ldr h0, [sp, #30]2628; NONEON-NOSVE-NEXT:    ldr h1, [sp, #14]2629; NONEON-NOSVE-NEXT:    fcvt s0, h02630; NONEON-NOSVE-NEXT:    fcvt s1, h12631; NONEON-NOSVE-NEXT:    csetm w8, eq2632; NONEON-NOSVE-NEXT:    strh w8, [sp, #80]2633; NONEON-NOSVE-NEXT:    fcmp s1, s02634; NONEON-NOSVE-NEXT:    ldr h0, [sp, #28]2635; NONEON-NOSVE-NEXT:    ldr h1, [sp, #12]2636; NONEON-NOSVE-NEXT:    fcvt s0, h02637; NONEON-NOSVE-NEXT:    fcvt s1, h12638; NONEON-NOSVE-NEXT:    csetm w8, eq2639; NONEON-NOSVE-NEXT:    strh w8, [sp, #78]2640; NONEON-NOSVE-NEXT:    fcmp s1, s02641; NONEON-NOSVE-NEXT:    ldr h0, [sp, #26]2642; NONEON-NOSVE-NEXT:    ldr h1, [sp, #10]2643; NONEON-NOSVE-NEXT:    fcvt s0, h02644; NONEON-NOSVE-NEXT:    fcvt s1, h12645; NONEON-NOSVE-NEXT:    csetm w8, eq2646; NONEON-NOSVE-NEXT:    strh w8, [sp, #76]2647; NONEON-NOSVE-NEXT:    fcmp s1, s02648; NONEON-NOSVE-NEXT:    ldr h0, [sp, #24]2649; NONEON-NOSVE-NEXT:    ldr h1, [sp, #8]2650; NONEON-NOSVE-NEXT:    fcvt s0, h02651; NONEON-NOSVE-NEXT:    fcvt s1, h12652; NONEON-NOSVE-NEXT:    csetm w8, eq2653; NONEON-NOSVE-NEXT:    strh w8, [sp, #74]2654; NONEON-NOSVE-NEXT:    fcmp s1, s02655; NONEON-NOSVE-NEXT:    ldr h0, [sp, #22]2656; NONEON-NOSVE-NEXT:    ldr h1, [sp, #6]2657; NONEON-NOSVE-NEXT:    fcvt s0, h02658; NONEON-NOSVE-NEXT:    fcvt s1, h12659; NONEON-NOSVE-NEXT:    csetm w8, eq2660; NONEON-NOSVE-NEXT:    strh w8, [sp, #72]2661; NONEON-NOSVE-NEXT:    fcmp s1, s02662; NONEON-NOSVE-NEXT:    ldr h0, [sp, #20]2663; NONEON-NOSVE-NEXT:    ldr h1, [sp, #4]2664; NONEON-NOSVE-NEXT:    fcvt s0, h02665; NONEON-NOSVE-NEXT:    fcvt s1, h12666; NONEON-NOSVE-NEXT:    csetm w8, eq2667; NONEON-NOSVE-NEXT:    strh w8, [sp, #70]2668; NONEON-NOSVE-NEXT:    fcmp s1, s02669; NONEON-NOSVE-NEXT:    ldr h0, [sp, #18]2670; NONEON-NOSVE-NEXT:    ldr h1, [sp, #2]2671; NONEON-NOSVE-NEXT:    fcvt s0, h02672; NONEON-NOSVE-NEXT:    fcvt s1, h12673; NONEON-NOSVE-NEXT:    csetm w8, eq2674; NONEON-NOSVE-NEXT:    strh w8, [sp, #68]2675; NONEON-NOSVE-NEXT:    fcmp s1, s02676; NONEON-NOSVE-NEXT:    ldr h0, [sp, #16]2677; NONEON-NOSVE-NEXT:    ldr h1, [sp]2678; NONEON-NOSVE-NEXT:    fcvt s0, h02679; NONEON-NOSVE-NEXT:    fcvt s1, h12680; NONEON-NOSVE-NEXT:    csetm w8, eq2681; NONEON-NOSVE-NEXT:    strh w8, [sp, #66]2682; NONEON-NOSVE-NEXT:    fcmp s1, s02683; NONEON-NOSVE-NEXT:    csetm w8, eq2684; NONEON-NOSVE-NEXT:    strh w8, [sp, #64]2685; NONEON-NOSVE-NEXT:    ldp q0, q1, [sp, #64]2686; NONEON-NOSVE-NEXT:    stp q0, q1, [x2]2687; NONEON-NOSVE-NEXT:    add sp, sp, #962688; NONEON-NOSVE-NEXT:    ret2689  %op1 = load <16 x half>, ptr %a2690  %op2 = load <16 x half>, ptr %b2691  %cmp = fcmp fast oeq <16 x half> %op1, %op22692  %sext = sext <16 x i1> %cmp to <16 x i16>2693  store <16 x i16> %sext, ptr %c2694  ret void2695}2696 2697;2698; FCMP NE2699;2700 2701define void @fcmp_ne_v16f16(ptr %a, ptr %b, ptr %c) {2702; CHECK-LABEL: fcmp_ne_v16f16:2703; CHECK:       // %bb.0:2704; CHECK-NEXT:    ldp q0, q3, [x1]2705; CHECK-NEXT:    ptrue p0.h, vl82706; CHECK-NEXT:    ldp q1, q2, [x0]2707; CHECK-NEXT:    fcmne p1.h, p0/z, z1.h, z0.h2708; CHECK-NEXT:    fcmne p0.h, p0/z, z2.h, z3.h2709; CHECK-NEXT:    mov z0.h, p1/z, #-1 // =0xffffffffffffffff2710; CHECK-NEXT:    mov z1.h, p0/z, #-1 // =0xffffffffffffffff2711; CHECK-NEXT:    stp q0, q1, [x2]2712; CHECK-NEXT:    ret2713;2714; NONEON-NOSVE-LABEL: fcmp_ne_v16f16:2715; NONEON-NOSVE:       // %bb.0:2716; NONEON-NOSVE-NEXT:    sub sp, sp, #962717; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 962718; NONEON-NOSVE-NEXT:    ldp q3, q0, [x1]2719; NONEON-NOSVE-NEXT:    ldp q2, q1, [x0]2720; NONEON-NOSVE-NEXT:    stp q2, q3, [sp]2721; NONEON-NOSVE-NEXT:    stp q1, q0, [sp, #32]2722; NONEON-NOSVE-NEXT:    ldr h0, [sp, #62]2723; NONEON-NOSVE-NEXT:    ldr h1, [sp, #46]2724; NONEON-NOSVE-NEXT:    fcvt s0, h02725; NONEON-NOSVE-NEXT:    fcvt s1, h12726; NONEON-NOSVE-NEXT:    fcmp s1, s02727; NONEON-NOSVE-NEXT:    ldr h0, [sp, #60]2728; NONEON-NOSVE-NEXT:    ldr h1, [sp, #44]2729; NONEON-NOSVE-NEXT:    fcvt s0, h02730; NONEON-NOSVE-NEXT:    fcvt s1, h12731; NONEON-NOSVE-NEXT:    csetm w8, ne2732; NONEON-NOSVE-NEXT:    strh w8, [sp, #94]2733; NONEON-NOSVE-NEXT:    fcmp s1, s02734; NONEON-NOSVE-NEXT:    ldr h0, [sp, #58]2735; NONEON-NOSVE-NEXT:    ldr h1, [sp, #42]2736; NONEON-NOSVE-NEXT:    fcvt s0, h02737; NONEON-NOSVE-NEXT:    fcvt s1, h12738; NONEON-NOSVE-NEXT:    csetm w8, ne2739; NONEON-NOSVE-NEXT:    strh w8, [sp, #92]2740; NONEON-NOSVE-NEXT:    fcmp s1, s02741; NONEON-NOSVE-NEXT:    ldr h0, [sp, #56]2742; NONEON-NOSVE-NEXT:    ldr h1, [sp, #40]2743; NONEON-NOSVE-NEXT:    fcvt s0, h02744; NONEON-NOSVE-NEXT:    fcvt s1, h12745; NONEON-NOSVE-NEXT:    csetm w8, ne2746; NONEON-NOSVE-NEXT:    strh w8, [sp, #90]2747; NONEON-NOSVE-NEXT:    fcmp s1, s02748; NONEON-NOSVE-NEXT:    ldr h0, [sp, #54]2749; NONEON-NOSVE-NEXT:    ldr h1, [sp, #38]2750; NONEON-NOSVE-NEXT:    fcvt s0, h02751; NONEON-NOSVE-NEXT:    fcvt s1, h12752; NONEON-NOSVE-NEXT:    csetm w8, ne2753; NONEON-NOSVE-NEXT:    strh w8, [sp, #88]2754; NONEON-NOSVE-NEXT:    fcmp s1, s02755; NONEON-NOSVE-NEXT:    ldr h0, [sp, #52]2756; NONEON-NOSVE-NEXT:    ldr h1, [sp, #36]2757; NONEON-NOSVE-NEXT:    fcvt s0, h02758; NONEON-NOSVE-NEXT:    fcvt s1, h12759; NONEON-NOSVE-NEXT:    csetm w8, ne2760; NONEON-NOSVE-NEXT:    strh w8, [sp, #86]2761; NONEON-NOSVE-NEXT:    fcmp s1, s02762; NONEON-NOSVE-NEXT:    ldr h0, [sp, #50]2763; NONEON-NOSVE-NEXT:    ldr h1, [sp, #34]2764; NONEON-NOSVE-NEXT:    fcvt s0, h02765; NONEON-NOSVE-NEXT:    fcvt s1, h12766; NONEON-NOSVE-NEXT:    csetm w8, ne2767; NONEON-NOSVE-NEXT:    strh w8, [sp, #84]2768; NONEON-NOSVE-NEXT:    fcmp s1, s02769; NONEON-NOSVE-NEXT:    ldr h0, [sp, #48]2770; NONEON-NOSVE-NEXT:    ldr h1, [sp, #32]2771; NONEON-NOSVE-NEXT:    fcvt s0, h02772; NONEON-NOSVE-NEXT:    fcvt s1, h12773; NONEON-NOSVE-NEXT:    csetm w8, ne2774; NONEON-NOSVE-NEXT:    strh w8, [sp, #82]2775; NONEON-NOSVE-NEXT:    fcmp s1, s02776; NONEON-NOSVE-NEXT:    ldr h0, [sp, #30]2777; NONEON-NOSVE-NEXT:    ldr h1, [sp, #14]2778; NONEON-NOSVE-NEXT:    fcvt s0, h02779; NONEON-NOSVE-NEXT:    fcvt s1, h12780; NONEON-NOSVE-NEXT:    csetm w8, ne2781; NONEON-NOSVE-NEXT:    strh w8, [sp, #80]2782; NONEON-NOSVE-NEXT:    fcmp s1, s02783; NONEON-NOSVE-NEXT:    ldr h0, [sp, #28]2784; NONEON-NOSVE-NEXT:    ldr h1, [sp, #12]2785; NONEON-NOSVE-NEXT:    fcvt s0, h02786; NONEON-NOSVE-NEXT:    fcvt s1, h12787; NONEON-NOSVE-NEXT:    csetm w8, ne2788; NONEON-NOSVE-NEXT:    strh w8, [sp, #78]2789; NONEON-NOSVE-NEXT:    fcmp s1, s02790; NONEON-NOSVE-NEXT:    ldr h0, [sp, #26]2791; NONEON-NOSVE-NEXT:    ldr h1, [sp, #10]2792; NONEON-NOSVE-NEXT:    fcvt s0, h02793; NONEON-NOSVE-NEXT:    fcvt s1, h12794; NONEON-NOSVE-NEXT:    csetm w8, ne2795; NONEON-NOSVE-NEXT:    strh w8, [sp, #76]2796; NONEON-NOSVE-NEXT:    fcmp s1, s02797; NONEON-NOSVE-NEXT:    ldr h0, [sp, #24]2798; NONEON-NOSVE-NEXT:    ldr h1, [sp, #8]2799; NONEON-NOSVE-NEXT:    fcvt s0, h02800; NONEON-NOSVE-NEXT:    fcvt s1, h12801; NONEON-NOSVE-NEXT:    csetm w8, ne2802; NONEON-NOSVE-NEXT:    strh w8, [sp, #74]2803; NONEON-NOSVE-NEXT:    fcmp s1, s02804; NONEON-NOSVE-NEXT:    ldr h0, [sp, #22]2805; NONEON-NOSVE-NEXT:    ldr h1, [sp, #6]2806; NONEON-NOSVE-NEXT:    fcvt s0, h02807; NONEON-NOSVE-NEXT:    fcvt s1, h12808; NONEON-NOSVE-NEXT:    csetm w8, ne2809; NONEON-NOSVE-NEXT:    strh w8, [sp, #72]2810; NONEON-NOSVE-NEXT:    fcmp s1, s02811; NONEON-NOSVE-NEXT:    ldr h0, [sp, #20]2812; NONEON-NOSVE-NEXT:    ldr h1, [sp, #4]2813; NONEON-NOSVE-NEXT:    fcvt s0, h02814; NONEON-NOSVE-NEXT:    fcvt s1, h12815; NONEON-NOSVE-NEXT:    csetm w8, ne2816; NONEON-NOSVE-NEXT:    strh w8, [sp, #70]2817; NONEON-NOSVE-NEXT:    fcmp s1, s02818; NONEON-NOSVE-NEXT:    ldr h0, [sp, #18]2819; NONEON-NOSVE-NEXT:    ldr h1, [sp, #2]2820; NONEON-NOSVE-NEXT:    fcvt s0, h02821; NONEON-NOSVE-NEXT:    fcvt s1, h12822; NONEON-NOSVE-NEXT:    csetm w8, ne2823; NONEON-NOSVE-NEXT:    strh w8, [sp, #68]2824; NONEON-NOSVE-NEXT:    fcmp s1, s02825; NONEON-NOSVE-NEXT:    ldr h0, [sp, #16]2826; NONEON-NOSVE-NEXT:    ldr h1, [sp]2827; NONEON-NOSVE-NEXT:    fcvt s0, h02828; NONEON-NOSVE-NEXT:    fcvt s1, h12829; NONEON-NOSVE-NEXT:    csetm w8, ne2830; NONEON-NOSVE-NEXT:    strh w8, [sp, #66]2831; NONEON-NOSVE-NEXT:    fcmp s1, s02832; NONEON-NOSVE-NEXT:    csetm w8, ne2833; NONEON-NOSVE-NEXT:    strh w8, [sp, #64]2834; NONEON-NOSVE-NEXT:    ldp q0, q1, [sp, #64]2835; NONEON-NOSVE-NEXT:    stp q0, q1, [x2]2836; NONEON-NOSVE-NEXT:    add sp, sp, #962837; NONEON-NOSVE-NEXT:    ret2838  %op1 = load <16 x half>, ptr %a2839  %op2 = load <16 x half>, ptr %b2840  %cmp = fcmp fast one <16 x half> %op1, %op22841  %sext = sext <16 x i1> %cmp to <16 x i16>2842  store <16 x i16> %sext, ptr %c2843  ret void2844}2845 2846;2847; FCMP GT2848;2849 2850define void @fcmp_gt_v16f16(ptr %a, ptr %b, ptr %c) {2851; CHECK-LABEL: fcmp_gt_v16f16:2852; CHECK:       // %bb.0:2853; CHECK-NEXT:    ldp q0, q3, [x1]2854; CHECK-NEXT:    ptrue p0.h, vl82855; CHECK-NEXT:    ldp q1, q2, [x0]2856; CHECK-NEXT:    fcmgt p1.h, p0/z, z1.h, z0.h2857; CHECK-NEXT:    fcmgt p0.h, p0/z, z2.h, z3.h2858; CHECK-NEXT:    mov z0.h, p1/z, #-1 // =0xffffffffffffffff2859; CHECK-NEXT:    mov z1.h, p0/z, #-1 // =0xffffffffffffffff2860; CHECK-NEXT:    stp q0, q1, [x2]2861; CHECK-NEXT:    ret2862;2863; NONEON-NOSVE-LABEL: fcmp_gt_v16f16:2864; NONEON-NOSVE:       // %bb.0:2865; NONEON-NOSVE-NEXT:    sub sp, sp, #962866; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 962867; NONEON-NOSVE-NEXT:    ldp q3, q0, [x1]2868; NONEON-NOSVE-NEXT:    ldp q2, q1, [x0]2869; NONEON-NOSVE-NEXT:    stp q2, q3, [sp]2870; NONEON-NOSVE-NEXT:    stp q1, q0, [sp, #32]2871; NONEON-NOSVE-NEXT:    ldr h0, [sp, #62]2872; NONEON-NOSVE-NEXT:    ldr h1, [sp, #46]2873; NONEON-NOSVE-NEXT:    fcvt s0, h02874; NONEON-NOSVE-NEXT:    fcvt s1, h12875; NONEON-NOSVE-NEXT:    fcmp s1, s02876; NONEON-NOSVE-NEXT:    ldr h0, [sp, #60]2877; NONEON-NOSVE-NEXT:    ldr h1, [sp, #44]2878; NONEON-NOSVE-NEXT:    fcvt s0, h02879; NONEON-NOSVE-NEXT:    fcvt s1, h12880; NONEON-NOSVE-NEXT:    csetm w8, gt2881; NONEON-NOSVE-NEXT:    strh w8, [sp, #94]2882; NONEON-NOSVE-NEXT:    fcmp s1, s02883; NONEON-NOSVE-NEXT:    ldr h0, [sp, #58]2884; NONEON-NOSVE-NEXT:    ldr h1, [sp, #42]2885; NONEON-NOSVE-NEXT:    fcvt s0, h02886; NONEON-NOSVE-NEXT:    fcvt s1, h12887; NONEON-NOSVE-NEXT:    csetm w8, gt2888; NONEON-NOSVE-NEXT:    strh w8, [sp, #92]2889; NONEON-NOSVE-NEXT:    fcmp s1, s02890; NONEON-NOSVE-NEXT:    ldr h0, [sp, #56]2891; NONEON-NOSVE-NEXT:    ldr h1, [sp, #40]2892; NONEON-NOSVE-NEXT:    fcvt s0, h02893; NONEON-NOSVE-NEXT:    fcvt s1, h12894; NONEON-NOSVE-NEXT:    csetm w8, gt2895; NONEON-NOSVE-NEXT:    strh w8, [sp, #90]2896; NONEON-NOSVE-NEXT:    fcmp s1, s02897; NONEON-NOSVE-NEXT:    ldr h0, [sp, #54]2898; NONEON-NOSVE-NEXT:    ldr h1, [sp, #38]2899; NONEON-NOSVE-NEXT:    fcvt s0, h02900; NONEON-NOSVE-NEXT:    fcvt s1, h12901; NONEON-NOSVE-NEXT:    csetm w8, gt2902; NONEON-NOSVE-NEXT:    strh w8, [sp, #88]2903; NONEON-NOSVE-NEXT:    fcmp s1, s02904; NONEON-NOSVE-NEXT:    ldr h0, [sp, #52]2905; NONEON-NOSVE-NEXT:    ldr h1, [sp, #36]2906; NONEON-NOSVE-NEXT:    fcvt s0, h02907; NONEON-NOSVE-NEXT:    fcvt s1, h12908; NONEON-NOSVE-NEXT:    csetm w8, gt2909; NONEON-NOSVE-NEXT:    strh w8, [sp, #86]2910; NONEON-NOSVE-NEXT:    fcmp s1, s02911; NONEON-NOSVE-NEXT:    ldr h0, [sp, #50]2912; NONEON-NOSVE-NEXT:    ldr h1, [sp, #34]2913; NONEON-NOSVE-NEXT:    fcvt s0, h02914; NONEON-NOSVE-NEXT:    fcvt s1, h12915; NONEON-NOSVE-NEXT:    csetm w8, gt2916; NONEON-NOSVE-NEXT:    strh w8, [sp, #84]2917; NONEON-NOSVE-NEXT:    fcmp s1, s02918; NONEON-NOSVE-NEXT:    ldr h0, [sp, #48]2919; NONEON-NOSVE-NEXT:    ldr h1, [sp, #32]2920; NONEON-NOSVE-NEXT:    fcvt s0, h02921; NONEON-NOSVE-NEXT:    fcvt s1, h12922; NONEON-NOSVE-NEXT:    csetm w8, gt2923; NONEON-NOSVE-NEXT:    strh w8, [sp, #82]2924; NONEON-NOSVE-NEXT:    fcmp s1, s02925; NONEON-NOSVE-NEXT:    ldr h0, [sp, #30]2926; NONEON-NOSVE-NEXT:    ldr h1, [sp, #14]2927; NONEON-NOSVE-NEXT:    fcvt s0, h02928; NONEON-NOSVE-NEXT:    fcvt s1, h12929; NONEON-NOSVE-NEXT:    csetm w8, gt2930; NONEON-NOSVE-NEXT:    strh w8, [sp, #80]2931; NONEON-NOSVE-NEXT:    fcmp s1, s02932; NONEON-NOSVE-NEXT:    ldr h0, [sp, #28]2933; NONEON-NOSVE-NEXT:    ldr h1, [sp, #12]2934; NONEON-NOSVE-NEXT:    fcvt s0, h02935; NONEON-NOSVE-NEXT:    fcvt s1, h12936; NONEON-NOSVE-NEXT:    csetm w8, gt2937; NONEON-NOSVE-NEXT:    strh w8, [sp, #78]2938; NONEON-NOSVE-NEXT:    fcmp s1, s02939; NONEON-NOSVE-NEXT:    ldr h0, [sp, #26]2940; NONEON-NOSVE-NEXT:    ldr h1, [sp, #10]2941; NONEON-NOSVE-NEXT:    fcvt s0, h02942; NONEON-NOSVE-NEXT:    fcvt s1, h12943; NONEON-NOSVE-NEXT:    csetm w8, gt2944; NONEON-NOSVE-NEXT:    strh w8, [sp, #76]2945; NONEON-NOSVE-NEXT:    fcmp s1, s02946; NONEON-NOSVE-NEXT:    ldr h0, [sp, #24]2947; NONEON-NOSVE-NEXT:    ldr h1, [sp, #8]2948; NONEON-NOSVE-NEXT:    fcvt s0, h02949; NONEON-NOSVE-NEXT:    fcvt s1, h12950; NONEON-NOSVE-NEXT:    csetm w8, gt2951; NONEON-NOSVE-NEXT:    strh w8, [sp, #74]2952; NONEON-NOSVE-NEXT:    fcmp s1, s02953; NONEON-NOSVE-NEXT:    ldr h0, [sp, #22]2954; NONEON-NOSVE-NEXT:    ldr h1, [sp, #6]2955; NONEON-NOSVE-NEXT:    fcvt s0, h02956; NONEON-NOSVE-NEXT:    fcvt s1, h12957; NONEON-NOSVE-NEXT:    csetm w8, gt2958; NONEON-NOSVE-NEXT:    strh w8, [sp, #72]2959; NONEON-NOSVE-NEXT:    fcmp s1, s02960; NONEON-NOSVE-NEXT:    ldr h0, [sp, #20]2961; NONEON-NOSVE-NEXT:    ldr h1, [sp, #4]2962; NONEON-NOSVE-NEXT:    fcvt s0, h02963; NONEON-NOSVE-NEXT:    fcvt s1, h12964; NONEON-NOSVE-NEXT:    csetm w8, gt2965; NONEON-NOSVE-NEXT:    strh w8, [sp, #70]2966; NONEON-NOSVE-NEXT:    fcmp s1, s02967; NONEON-NOSVE-NEXT:    ldr h0, [sp, #18]2968; NONEON-NOSVE-NEXT:    ldr h1, [sp, #2]2969; NONEON-NOSVE-NEXT:    fcvt s0, h02970; NONEON-NOSVE-NEXT:    fcvt s1, h12971; NONEON-NOSVE-NEXT:    csetm w8, gt2972; NONEON-NOSVE-NEXT:    strh w8, [sp, #68]2973; NONEON-NOSVE-NEXT:    fcmp s1, s02974; NONEON-NOSVE-NEXT:    ldr h0, [sp, #16]2975; NONEON-NOSVE-NEXT:    ldr h1, [sp]2976; NONEON-NOSVE-NEXT:    fcvt s0, h02977; NONEON-NOSVE-NEXT:    fcvt s1, h12978; NONEON-NOSVE-NEXT:    csetm w8, gt2979; NONEON-NOSVE-NEXT:    strh w8, [sp, #66]2980; NONEON-NOSVE-NEXT:    fcmp s1, s02981; NONEON-NOSVE-NEXT:    csetm w8, gt2982; NONEON-NOSVE-NEXT:    strh w8, [sp, #64]2983; NONEON-NOSVE-NEXT:    ldp q0, q1, [sp, #64]2984; NONEON-NOSVE-NEXT:    stp q0, q1, [x2]2985; NONEON-NOSVE-NEXT:    add sp, sp, #962986; NONEON-NOSVE-NEXT:    ret2987  %op1 = load <16 x half>, ptr %a2988  %op2 = load <16 x half>, ptr %b2989  %cmp = fcmp fast ogt <16 x half> %op1, %op22990  %sext = sext <16 x i1> %cmp to <16 x i16>2991  store <16 x i16> %sext, ptr %c2992  ret void2993}2994 2995;2996; FCMP LT2997;2998 2999define void @fcmp_lt_v16f16(ptr %a, ptr %b, ptr %c) {3000; CHECK-LABEL: fcmp_lt_v16f16:3001; CHECK:       // %bb.0:3002; CHECK-NEXT:    ldp q0, q3, [x1]3003; CHECK-NEXT:    ptrue p0.h, vl83004; CHECK-NEXT:    ldp q1, q2, [x0]3005; CHECK-NEXT:    fcmgt p1.h, p0/z, z0.h, z1.h3006; CHECK-NEXT:    fcmgt p0.h, p0/z, z3.h, z2.h3007; CHECK-NEXT:    mov z0.h, p1/z, #-1 // =0xffffffffffffffff3008; CHECK-NEXT:    mov z1.h, p0/z, #-1 // =0xffffffffffffffff3009; CHECK-NEXT:    stp q0, q1, [x2]3010; CHECK-NEXT:    ret3011;3012; NONEON-NOSVE-LABEL: fcmp_lt_v16f16:3013; NONEON-NOSVE:       // %bb.0:3014; NONEON-NOSVE-NEXT:    sub sp, sp, #963015; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 963016; NONEON-NOSVE-NEXT:    ldp q3, q0, [x1]3017; NONEON-NOSVE-NEXT:    ldp q2, q1, [x0]3018; NONEON-NOSVE-NEXT:    stp q2, q3, [sp]3019; NONEON-NOSVE-NEXT:    stp q1, q0, [sp, #32]3020; NONEON-NOSVE-NEXT:    ldr h0, [sp, #62]3021; NONEON-NOSVE-NEXT:    ldr h1, [sp, #46]3022; NONEON-NOSVE-NEXT:    fcvt s0, h03023; NONEON-NOSVE-NEXT:    fcvt s1, h13024; NONEON-NOSVE-NEXT:    fcmp s1, s03025; NONEON-NOSVE-NEXT:    ldr h0, [sp, #60]3026; NONEON-NOSVE-NEXT:    ldr h1, [sp, #44]3027; NONEON-NOSVE-NEXT:    fcvt s0, h03028; NONEON-NOSVE-NEXT:    fcvt s1, h13029; NONEON-NOSVE-NEXT:    csetm w8, lt3030; NONEON-NOSVE-NEXT:    strh w8, [sp, #94]3031; NONEON-NOSVE-NEXT:    fcmp s1, s03032; NONEON-NOSVE-NEXT:    ldr h0, [sp, #58]3033; NONEON-NOSVE-NEXT:    ldr h1, [sp, #42]3034; NONEON-NOSVE-NEXT:    fcvt s0, h03035; NONEON-NOSVE-NEXT:    fcvt s1, h13036; NONEON-NOSVE-NEXT:    csetm w8, lt3037; NONEON-NOSVE-NEXT:    strh w8, [sp, #92]3038; NONEON-NOSVE-NEXT:    fcmp s1, s03039; NONEON-NOSVE-NEXT:    ldr h0, [sp, #56]3040; NONEON-NOSVE-NEXT:    ldr h1, [sp, #40]3041; NONEON-NOSVE-NEXT:    fcvt s0, h03042; NONEON-NOSVE-NEXT:    fcvt s1, h13043; NONEON-NOSVE-NEXT:    csetm w8, lt3044; NONEON-NOSVE-NEXT:    strh w8, [sp, #90]3045; NONEON-NOSVE-NEXT:    fcmp s1, s03046; NONEON-NOSVE-NEXT:    ldr h0, [sp, #54]3047; NONEON-NOSVE-NEXT:    ldr h1, [sp, #38]3048; NONEON-NOSVE-NEXT:    fcvt s0, h03049; NONEON-NOSVE-NEXT:    fcvt s1, h13050; NONEON-NOSVE-NEXT:    csetm w8, lt3051; NONEON-NOSVE-NEXT:    strh w8, [sp, #88]3052; NONEON-NOSVE-NEXT:    fcmp s1, s03053; NONEON-NOSVE-NEXT:    ldr h0, [sp, #52]3054; NONEON-NOSVE-NEXT:    ldr h1, [sp, #36]3055; NONEON-NOSVE-NEXT:    fcvt s0, h03056; NONEON-NOSVE-NEXT:    fcvt s1, h13057; NONEON-NOSVE-NEXT:    csetm w8, lt3058; NONEON-NOSVE-NEXT:    strh w8, [sp, #86]3059; NONEON-NOSVE-NEXT:    fcmp s1, s03060; NONEON-NOSVE-NEXT:    ldr h0, [sp, #50]3061; NONEON-NOSVE-NEXT:    ldr h1, [sp, #34]3062; NONEON-NOSVE-NEXT:    fcvt s0, h03063; NONEON-NOSVE-NEXT:    fcvt s1, h13064; NONEON-NOSVE-NEXT:    csetm w8, lt3065; NONEON-NOSVE-NEXT:    strh w8, [sp, #84]3066; NONEON-NOSVE-NEXT:    fcmp s1, s03067; NONEON-NOSVE-NEXT:    ldr h0, [sp, #48]3068; NONEON-NOSVE-NEXT:    ldr h1, [sp, #32]3069; NONEON-NOSVE-NEXT:    fcvt s0, h03070; NONEON-NOSVE-NEXT:    fcvt s1, h13071; NONEON-NOSVE-NEXT:    csetm w8, lt3072; NONEON-NOSVE-NEXT:    strh w8, [sp, #82]3073; NONEON-NOSVE-NEXT:    fcmp s1, s03074; NONEON-NOSVE-NEXT:    ldr h0, [sp, #30]3075; NONEON-NOSVE-NEXT:    ldr h1, [sp, #14]3076; NONEON-NOSVE-NEXT:    fcvt s0, h03077; NONEON-NOSVE-NEXT:    fcvt s1, h13078; NONEON-NOSVE-NEXT:    csetm w8, lt3079; NONEON-NOSVE-NEXT:    strh w8, [sp, #80]3080; NONEON-NOSVE-NEXT:    fcmp s1, s03081; NONEON-NOSVE-NEXT:    ldr h0, [sp, #28]3082; NONEON-NOSVE-NEXT:    ldr h1, [sp, #12]3083; NONEON-NOSVE-NEXT:    fcvt s0, h03084; NONEON-NOSVE-NEXT:    fcvt s1, h13085; NONEON-NOSVE-NEXT:    csetm w8, lt3086; NONEON-NOSVE-NEXT:    strh w8, [sp, #78]3087; NONEON-NOSVE-NEXT:    fcmp s1, s03088; NONEON-NOSVE-NEXT:    ldr h0, [sp, #26]3089; NONEON-NOSVE-NEXT:    ldr h1, [sp, #10]3090; NONEON-NOSVE-NEXT:    fcvt s0, h03091; NONEON-NOSVE-NEXT:    fcvt s1, h13092; NONEON-NOSVE-NEXT:    csetm w8, lt3093; NONEON-NOSVE-NEXT:    strh w8, [sp, #76]3094; NONEON-NOSVE-NEXT:    fcmp s1, s03095; NONEON-NOSVE-NEXT:    ldr h0, [sp, #24]3096; NONEON-NOSVE-NEXT:    ldr h1, [sp, #8]3097; NONEON-NOSVE-NEXT:    fcvt s0, h03098; NONEON-NOSVE-NEXT:    fcvt s1, h13099; NONEON-NOSVE-NEXT:    csetm w8, lt3100; NONEON-NOSVE-NEXT:    strh w8, [sp, #74]3101; NONEON-NOSVE-NEXT:    fcmp s1, s03102; NONEON-NOSVE-NEXT:    ldr h0, [sp, #22]3103; NONEON-NOSVE-NEXT:    ldr h1, [sp, #6]3104; NONEON-NOSVE-NEXT:    fcvt s0, h03105; NONEON-NOSVE-NEXT:    fcvt s1, h13106; NONEON-NOSVE-NEXT:    csetm w8, lt3107; NONEON-NOSVE-NEXT:    strh w8, [sp, #72]3108; NONEON-NOSVE-NEXT:    fcmp s1, s03109; NONEON-NOSVE-NEXT:    ldr h0, [sp, #20]3110; NONEON-NOSVE-NEXT:    ldr h1, [sp, #4]3111; NONEON-NOSVE-NEXT:    fcvt s0, h03112; NONEON-NOSVE-NEXT:    fcvt s1, h13113; NONEON-NOSVE-NEXT:    csetm w8, lt3114; NONEON-NOSVE-NEXT:    strh w8, [sp, #70]3115; NONEON-NOSVE-NEXT:    fcmp s1, s03116; NONEON-NOSVE-NEXT:    ldr h0, [sp, #18]3117; NONEON-NOSVE-NEXT:    ldr h1, [sp, #2]3118; NONEON-NOSVE-NEXT:    fcvt s0, h03119; NONEON-NOSVE-NEXT:    fcvt s1, h13120; NONEON-NOSVE-NEXT:    csetm w8, lt3121; NONEON-NOSVE-NEXT:    strh w8, [sp, #68]3122; NONEON-NOSVE-NEXT:    fcmp s1, s03123; NONEON-NOSVE-NEXT:    ldr h0, [sp, #16]3124; NONEON-NOSVE-NEXT:    ldr h1, [sp]3125; NONEON-NOSVE-NEXT:    fcvt s0, h03126; NONEON-NOSVE-NEXT:    fcvt s1, h13127; NONEON-NOSVE-NEXT:    csetm w8, lt3128; NONEON-NOSVE-NEXT:    strh w8, [sp, #66]3129; NONEON-NOSVE-NEXT:    fcmp s1, s03130; NONEON-NOSVE-NEXT:    csetm w8, lt3131; NONEON-NOSVE-NEXT:    strh w8, [sp, #64]3132; NONEON-NOSVE-NEXT:    ldp q0, q1, [sp, #64]3133; NONEON-NOSVE-NEXT:    stp q0, q1, [x2]3134; NONEON-NOSVE-NEXT:    add sp, sp, #963135; NONEON-NOSVE-NEXT:    ret3136  %op1 = load <16 x half>, ptr %a3137  %op2 = load <16 x half>, ptr %b3138  %cmp = fcmp fast olt <16 x half> %op1, %op23139  %sext = sext <16 x i1> %cmp to <16 x i16>3140  store <16 x i16> %sext, ptr %c3141  ret void3142}3143 3144;3145; FCMP GE3146;3147 3148define void @fcmp_ge_v16f16(ptr %a, ptr %b, ptr %c) {3149; CHECK-LABEL: fcmp_ge_v16f16:3150; CHECK:       // %bb.0:3151; CHECK-NEXT:    ldp q0, q3, [x1]3152; CHECK-NEXT:    ptrue p0.h, vl83153; CHECK-NEXT:    ldp q1, q2, [x0]3154; CHECK-NEXT:    fcmge p1.h, p0/z, z1.h, z0.h3155; CHECK-NEXT:    fcmge p0.h, p0/z, z2.h, z3.h3156; CHECK-NEXT:    mov z0.h, p1/z, #-1 // =0xffffffffffffffff3157; CHECK-NEXT:    mov z1.h, p0/z, #-1 // =0xffffffffffffffff3158; CHECK-NEXT:    stp q0, q1, [x2]3159; CHECK-NEXT:    ret3160;3161; NONEON-NOSVE-LABEL: fcmp_ge_v16f16:3162; NONEON-NOSVE:       // %bb.0:3163; NONEON-NOSVE-NEXT:    sub sp, sp, #963164; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 963165; NONEON-NOSVE-NEXT:    ldp q3, q0, [x1]3166; NONEON-NOSVE-NEXT:    ldp q2, q1, [x0]3167; NONEON-NOSVE-NEXT:    stp q2, q3, [sp]3168; NONEON-NOSVE-NEXT:    stp q1, q0, [sp, #32]3169; NONEON-NOSVE-NEXT:    ldr h0, [sp, #62]3170; NONEON-NOSVE-NEXT:    ldr h1, [sp, #46]3171; NONEON-NOSVE-NEXT:    fcvt s0, h03172; NONEON-NOSVE-NEXT:    fcvt s1, h13173; NONEON-NOSVE-NEXT:    fcmp s1, s03174; NONEON-NOSVE-NEXT:    ldr h0, [sp, #60]3175; NONEON-NOSVE-NEXT:    ldr h1, [sp, #44]3176; NONEON-NOSVE-NEXT:    fcvt s0, h03177; NONEON-NOSVE-NEXT:    fcvt s1, h13178; NONEON-NOSVE-NEXT:    csetm w8, ge3179; NONEON-NOSVE-NEXT:    strh w8, [sp, #94]3180; NONEON-NOSVE-NEXT:    fcmp s1, s03181; NONEON-NOSVE-NEXT:    ldr h0, [sp, #58]3182; NONEON-NOSVE-NEXT:    ldr h1, [sp, #42]3183; NONEON-NOSVE-NEXT:    fcvt s0, h03184; NONEON-NOSVE-NEXT:    fcvt s1, h13185; NONEON-NOSVE-NEXT:    csetm w8, ge3186; NONEON-NOSVE-NEXT:    strh w8, [sp, #92]3187; NONEON-NOSVE-NEXT:    fcmp s1, s03188; NONEON-NOSVE-NEXT:    ldr h0, [sp, #56]3189; NONEON-NOSVE-NEXT:    ldr h1, [sp, #40]3190; NONEON-NOSVE-NEXT:    fcvt s0, h03191; NONEON-NOSVE-NEXT:    fcvt s1, h13192; NONEON-NOSVE-NEXT:    csetm w8, ge3193; NONEON-NOSVE-NEXT:    strh w8, [sp, #90]3194; NONEON-NOSVE-NEXT:    fcmp s1, s03195; NONEON-NOSVE-NEXT:    ldr h0, [sp, #54]3196; NONEON-NOSVE-NEXT:    ldr h1, [sp, #38]3197; NONEON-NOSVE-NEXT:    fcvt s0, h03198; NONEON-NOSVE-NEXT:    fcvt s1, h13199; NONEON-NOSVE-NEXT:    csetm w8, ge3200; NONEON-NOSVE-NEXT:    strh w8, [sp, #88]3201; NONEON-NOSVE-NEXT:    fcmp s1, s03202; NONEON-NOSVE-NEXT:    ldr h0, [sp, #52]3203; NONEON-NOSVE-NEXT:    ldr h1, [sp, #36]3204; NONEON-NOSVE-NEXT:    fcvt s0, h03205; NONEON-NOSVE-NEXT:    fcvt s1, h13206; NONEON-NOSVE-NEXT:    csetm w8, ge3207; NONEON-NOSVE-NEXT:    strh w8, [sp, #86]3208; NONEON-NOSVE-NEXT:    fcmp s1, s03209; NONEON-NOSVE-NEXT:    ldr h0, [sp, #50]3210; NONEON-NOSVE-NEXT:    ldr h1, [sp, #34]3211; NONEON-NOSVE-NEXT:    fcvt s0, h03212; NONEON-NOSVE-NEXT:    fcvt s1, h13213; NONEON-NOSVE-NEXT:    csetm w8, ge3214; NONEON-NOSVE-NEXT:    strh w8, [sp, #84]3215; NONEON-NOSVE-NEXT:    fcmp s1, s03216; NONEON-NOSVE-NEXT:    ldr h0, [sp, #48]3217; NONEON-NOSVE-NEXT:    ldr h1, [sp, #32]3218; NONEON-NOSVE-NEXT:    fcvt s0, h03219; NONEON-NOSVE-NEXT:    fcvt s1, h13220; NONEON-NOSVE-NEXT:    csetm w8, ge3221; NONEON-NOSVE-NEXT:    strh w8, [sp, #82]3222; NONEON-NOSVE-NEXT:    fcmp s1, s03223; NONEON-NOSVE-NEXT:    ldr h0, [sp, #30]3224; NONEON-NOSVE-NEXT:    ldr h1, [sp, #14]3225; NONEON-NOSVE-NEXT:    fcvt s0, h03226; NONEON-NOSVE-NEXT:    fcvt s1, h13227; NONEON-NOSVE-NEXT:    csetm w8, ge3228; NONEON-NOSVE-NEXT:    strh w8, [sp, #80]3229; NONEON-NOSVE-NEXT:    fcmp s1, s03230; NONEON-NOSVE-NEXT:    ldr h0, [sp, #28]3231; NONEON-NOSVE-NEXT:    ldr h1, [sp, #12]3232; NONEON-NOSVE-NEXT:    fcvt s0, h03233; NONEON-NOSVE-NEXT:    fcvt s1, h13234; NONEON-NOSVE-NEXT:    csetm w8, ge3235; NONEON-NOSVE-NEXT:    strh w8, [sp, #78]3236; NONEON-NOSVE-NEXT:    fcmp s1, s03237; NONEON-NOSVE-NEXT:    ldr h0, [sp, #26]3238; NONEON-NOSVE-NEXT:    ldr h1, [sp, #10]3239; NONEON-NOSVE-NEXT:    fcvt s0, h03240; NONEON-NOSVE-NEXT:    fcvt s1, h13241; NONEON-NOSVE-NEXT:    csetm w8, ge3242; NONEON-NOSVE-NEXT:    strh w8, [sp, #76]3243; NONEON-NOSVE-NEXT:    fcmp s1, s03244; NONEON-NOSVE-NEXT:    ldr h0, [sp, #24]3245; NONEON-NOSVE-NEXT:    ldr h1, [sp, #8]3246; NONEON-NOSVE-NEXT:    fcvt s0, h03247; NONEON-NOSVE-NEXT:    fcvt s1, h13248; NONEON-NOSVE-NEXT:    csetm w8, ge3249; NONEON-NOSVE-NEXT:    strh w8, [sp, #74]3250; NONEON-NOSVE-NEXT:    fcmp s1, s03251; NONEON-NOSVE-NEXT:    ldr h0, [sp, #22]3252; NONEON-NOSVE-NEXT:    ldr h1, [sp, #6]3253; NONEON-NOSVE-NEXT:    fcvt s0, h03254; NONEON-NOSVE-NEXT:    fcvt s1, h13255; NONEON-NOSVE-NEXT:    csetm w8, ge3256; NONEON-NOSVE-NEXT:    strh w8, [sp, #72]3257; NONEON-NOSVE-NEXT:    fcmp s1, s03258; NONEON-NOSVE-NEXT:    ldr h0, [sp, #20]3259; NONEON-NOSVE-NEXT:    ldr h1, [sp, #4]3260; NONEON-NOSVE-NEXT:    fcvt s0, h03261; NONEON-NOSVE-NEXT:    fcvt s1, h13262; NONEON-NOSVE-NEXT:    csetm w8, ge3263; NONEON-NOSVE-NEXT:    strh w8, [sp, #70]3264; NONEON-NOSVE-NEXT:    fcmp s1, s03265; NONEON-NOSVE-NEXT:    ldr h0, [sp, #18]3266; NONEON-NOSVE-NEXT:    ldr h1, [sp, #2]3267; NONEON-NOSVE-NEXT:    fcvt s0, h03268; NONEON-NOSVE-NEXT:    fcvt s1, h13269; NONEON-NOSVE-NEXT:    csetm w8, ge3270; NONEON-NOSVE-NEXT:    strh w8, [sp, #68]3271; NONEON-NOSVE-NEXT:    fcmp s1, s03272; NONEON-NOSVE-NEXT:    ldr h0, [sp, #16]3273; NONEON-NOSVE-NEXT:    ldr h1, [sp]3274; NONEON-NOSVE-NEXT:    fcvt s0, h03275; NONEON-NOSVE-NEXT:    fcvt s1, h13276; NONEON-NOSVE-NEXT:    csetm w8, ge3277; NONEON-NOSVE-NEXT:    strh w8, [sp, #66]3278; NONEON-NOSVE-NEXT:    fcmp s1, s03279; NONEON-NOSVE-NEXT:    csetm w8, ge3280; NONEON-NOSVE-NEXT:    strh w8, [sp, #64]3281; NONEON-NOSVE-NEXT:    ldp q0, q1, [sp, #64]3282; NONEON-NOSVE-NEXT:    stp q0, q1, [x2]3283; NONEON-NOSVE-NEXT:    add sp, sp, #963284; NONEON-NOSVE-NEXT:    ret3285  %op1 = load <16 x half>, ptr %a3286  %op2 = load <16 x half>, ptr %b3287  %cmp = fcmp fast oge <16 x half> %op1, %op23288  %sext = sext <16 x i1> %cmp to <16 x i16>3289  store <16 x i16> %sext, ptr %c3290  ret void3291}3292 3293;3294; FCMP LE3295;3296 3297define void @fcmp_le_v16f16(ptr %a, ptr %b, ptr %c) {3298; CHECK-LABEL: fcmp_le_v16f16:3299; CHECK:       // %bb.0:3300; CHECK-NEXT:    ldp q0, q3, [x1]3301; CHECK-NEXT:    ptrue p0.h, vl83302; CHECK-NEXT:    ldp q1, q2, [x0]3303; CHECK-NEXT:    fcmge p1.h, p0/z, z0.h, z1.h3304; CHECK-NEXT:    fcmge p0.h, p0/z, z3.h, z2.h3305; CHECK-NEXT:    mov z0.h, p1/z, #-1 // =0xffffffffffffffff3306; CHECK-NEXT:    mov z1.h, p0/z, #-1 // =0xffffffffffffffff3307; CHECK-NEXT:    stp q0, q1, [x2]3308; CHECK-NEXT:    ret3309;3310; NONEON-NOSVE-LABEL: fcmp_le_v16f16:3311; NONEON-NOSVE:       // %bb.0:3312; NONEON-NOSVE-NEXT:    sub sp, sp, #963313; NONEON-NOSVE-NEXT:    .cfi_def_cfa_offset 963314; NONEON-NOSVE-NEXT:    ldp q3, q0, [x1]3315; NONEON-NOSVE-NEXT:    ldp q2, q1, [x0]3316; NONEON-NOSVE-NEXT:    stp q2, q3, [sp]3317; NONEON-NOSVE-NEXT:    stp q1, q0, [sp, #32]3318; NONEON-NOSVE-NEXT:    ldr h0, [sp, #62]3319; NONEON-NOSVE-NEXT:    ldr h1, [sp, #46]3320; NONEON-NOSVE-NEXT:    fcvt s0, h03321; NONEON-NOSVE-NEXT:    fcvt s1, h13322; NONEON-NOSVE-NEXT:    fcmp s1, s03323; NONEON-NOSVE-NEXT:    ldr h0, [sp, #60]3324; NONEON-NOSVE-NEXT:    ldr h1, [sp, #44]3325; NONEON-NOSVE-NEXT:    fcvt s0, h03326; NONEON-NOSVE-NEXT:    fcvt s1, h13327; NONEON-NOSVE-NEXT:    csetm w8, le3328; NONEON-NOSVE-NEXT:    strh w8, [sp, #94]3329; NONEON-NOSVE-NEXT:    fcmp s1, s03330; NONEON-NOSVE-NEXT:    ldr h0, [sp, #58]3331; NONEON-NOSVE-NEXT:    ldr h1, [sp, #42]3332; NONEON-NOSVE-NEXT:    fcvt s0, h03333; NONEON-NOSVE-NEXT:    fcvt s1, h13334; NONEON-NOSVE-NEXT:    csetm w8, le3335; NONEON-NOSVE-NEXT:    strh w8, [sp, #92]3336; NONEON-NOSVE-NEXT:    fcmp s1, s03337; NONEON-NOSVE-NEXT:    ldr h0, [sp, #56]3338; NONEON-NOSVE-NEXT:    ldr h1, [sp, #40]3339; NONEON-NOSVE-NEXT:    fcvt s0, h03340; NONEON-NOSVE-NEXT:    fcvt s1, h13341; NONEON-NOSVE-NEXT:    csetm w8, le3342; NONEON-NOSVE-NEXT:    strh w8, [sp, #90]3343; NONEON-NOSVE-NEXT:    fcmp s1, s03344; NONEON-NOSVE-NEXT:    ldr h0, [sp, #54]3345; NONEON-NOSVE-NEXT:    ldr h1, [sp, #38]3346; NONEON-NOSVE-NEXT:    fcvt s0, h03347; NONEON-NOSVE-NEXT:    fcvt s1, h13348; NONEON-NOSVE-NEXT:    csetm w8, le3349; NONEON-NOSVE-NEXT:    strh w8, [sp, #88]3350; NONEON-NOSVE-NEXT:    fcmp s1, s03351; NONEON-NOSVE-NEXT:    ldr h0, [sp, #52]3352; NONEON-NOSVE-NEXT:    ldr h1, [sp, #36]3353; NONEON-NOSVE-NEXT:    fcvt s0, h03354; NONEON-NOSVE-NEXT:    fcvt s1, h13355; NONEON-NOSVE-NEXT:    csetm w8, le3356; NONEON-NOSVE-NEXT:    strh w8, [sp, #86]3357; NONEON-NOSVE-NEXT:    fcmp s1, s03358; NONEON-NOSVE-NEXT:    ldr h0, [sp, #50]3359; NONEON-NOSVE-NEXT:    ldr h1, [sp, #34]3360; NONEON-NOSVE-NEXT:    fcvt s0, h03361; NONEON-NOSVE-NEXT:    fcvt s1, h13362; NONEON-NOSVE-NEXT:    csetm w8, le3363; NONEON-NOSVE-NEXT:    strh w8, [sp, #84]3364; NONEON-NOSVE-NEXT:    fcmp s1, s03365; NONEON-NOSVE-NEXT:    ldr h0, [sp, #48]3366; NONEON-NOSVE-NEXT:    ldr h1, [sp, #32]3367; NONEON-NOSVE-NEXT:    fcvt s0, h03368; NONEON-NOSVE-NEXT:    fcvt s1, h13369; NONEON-NOSVE-NEXT:    csetm w8, le3370; NONEON-NOSVE-NEXT:    strh w8, [sp, #82]3371; NONEON-NOSVE-NEXT:    fcmp s1, s03372; NONEON-NOSVE-NEXT:    ldr h0, [sp, #30]3373; NONEON-NOSVE-NEXT:    ldr h1, [sp, #14]3374; NONEON-NOSVE-NEXT:    fcvt s0, h03375; NONEON-NOSVE-NEXT:    fcvt s1, h13376; NONEON-NOSVE-NEXT:    csetm w8, le3377; NONEON-NOSVE-NEXT:    strh w8, [sp, #80]3378; NONEON-NOSVE-NEXT:    fcmp s1, s03379; NONEON-NOSVE-NEXT:    ldr h0, [sp, #28]3380; NONEON-NOSVE-NEXT:    ldr h1, [sp, #12]3381; NONEON-NOSVE-NEXT:    fcvt s0, h03382; NONEON-NOSVE-NEXT:    fcvt s1, h13383; NONEON-NOSVE-NEXT:    csetm w8, le3384; NONEON-NOSVE-NEXT:    strh w8, [sp, #78]3385; NONEON-NOSVE-NEXT:    fcmp s1, s03386; NONEON-NOSVE-NEXT:    ldr h0, [sp, #26]3387; NONEON-NOSVE-NEXT:    ldr h1, [sp, #10]3388; NONEON-NOSVE-NEXT:    fcvt s0, h03389; NONEON-NOSVE-NEXT:    fcvt s1, h13390; NONEON-NOSVE-NEXT:    csetm w8, le3391; NONEON-NOSVE-NEXT:    strh w8, [sp, #76]3392; NONEON-NOSVE-NEXT:    fcmp s1, s03393; NONEON-NOSVE-NEXT:    ldr h0, [sp, #24]3394; NONEON-NOSVE-NEXT:    ldr h1, [sp, #8]3395; NONEON-NOSVE-NEXT:    fcvt s0, h03396; NONEON-NOSVE-NEXT:    fcvt s1, h13397; NONEON-NOSVE-NEXT:    csetm w8, le3398; NONEON-NOSVE-NEXT:    strh w8, [sp, #74]3399; NONEON-NOSVE-NEXT:    fcmp s1, s03400; NONEON-NOSVE-NEXT:    ldr h0, [sp, #22]3401; NONEON-NOSVE-NEXT:    ldr h1, [sp, #6]3402; NONEON-NOSVE-NEXT:    fcvt s0, h03403; NONEON-NOSVE-NEXT:    fcvt s1, h13404; NONEON-NOSVE-NEXT:    csetm w8, le3405; NONEON-NOSVE-NEXT:    strh w8, [sp, #72]3406; NONEON-NOSVE-NEXT:    fcmp s1, s03407; NONEON-NOSVE-NEXT:    ldr h0, [sp, #20]3408; NONEON-NOSVE-NEXT:    ldr h1, [sp, #4]3409; NONEON-NOSVE-NEXT:    fcvt s0, h03410; NONEON-NOSVE-NEXT:    fcvt s1, h13411; NONEON-NOSVE-NEXT:    csetm w8, le3412; NONEON-NOSVE-NEXT:    strh w8, [sp, #70]3413; NONEON-NOSVE-NEXT:    fcmp s1, s03414; NONEON-NOSVE-NEXT:    ldr h0, [sp, #18]3415; NONEON-NOSVE-NEXT:    ldr h1, [sp, #2]3416; NONEON-NOSVE-NEXT:    fcvt s0, h03417; NONEON-NOSVE-NEXT:    fcvt s1, h13418; NONEON-NOSVE-NEXT:    csetm w8, le3419; NONEON-NOSVE-NEXT:    strh w8, [sp, #68]3420; NONEON-NOSVE-NEXT:    fcmp s1, s03421; NONEON-NOSVE-NEXT:    ldr h0, [sp, #16]3422; NONEON-NOSVE-NEXT:    ldr h1, [sp]3423; NONEON-NOSVE-NEXT:    fcvt s0, h03424; NONEON-NOSVE-NEXT:    fcvt s1, h13425; NONEON-NOSVE-NEXT:    csetm w8, le3426; NONEON-NOSVE-NEXT:    strh w8, [sp, #66]3427; NONEON-NOSVE-NEXT:    fcmp s1, s03428; NONEON-NOSVE-NEXT:    csetm w8, le3429; NONEON-NOSVE-NEXT:    strh w8, [sp, #64]3430; NONEON-NOSVE-NEXT:    ldp q0, q1, [sp, #64]3431; NONEON-NOSVE-NEXT:    stp q0, q1, [x2]3432; NONEON-NOSVE-NEXT:    add sp, sp, #963433; NONEON-NOSVE-NEXT:    ret3434  %op1 = load <16 x half>, ptr %a3435  %op2 = load <16 x half>, ptr %b3436  %cmp = fcmp fast ole <16 x half> %op1, %op23437  %sext = sext <16 x i1> %cmp to <16 x i16>3438  store <16 x i16> %sext, ptr %c3439  ret void3440}3441