brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.2 KiB · 4ad5b38 Raw
174 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 -mattr=+sme2p2 -force-streaming-compatible < %s | FileCheck %s --check-prefix=USE-NEON-NO-GPRS5; RUN: llc -force-streaming-compatible < %s | FileCheck %s --check-prefix=NONEON-NOSVE6 7target triple = "aarch64-unknown-linux-gnu"8 9define double @t1(double %x) {10; CHECK-LABEL: t1:11; CHECK:       // %bb.0: // %entry12; CHECK-NEXT:    ptrue p0.d13; CHECK-NEXT:    // kill: def $d0 killed $d0 def $z014; CHECK-NEXT:    fcvtzs z0.d, p0/m, z0.d15; CHECK-NEXT:    scvtf z0.d, p0/m, z0.d16; CHECK-NEXT:    // kill: def $d0 killed $d0 killed $z017; CHECK-NEXT:    ret18;19; USE-NEON-NO-GPRS-LABEL: t1:20; USE-NEON-NO-GPRS:       // %bb.0: // %entry21; USE-NEON-NO-GPRS-NEXT:    fcvtzs d0, d022; USE-NEON-NO-GPRS-NEXT:    scvtf d0, d023; USE-NEON-NO-GPRS-NEXT:    ret24;25; NONEON-NOSVE-LABEL: t1:26; NONEON-NOSVE:       // %bb.0: // %entry27; NONEON-NOSVE-NEXT:    fcvtzs x8, d028; NONEON-NOSVE-NEXT:    scvtf d0, x829; NONEON-NOSVE-NEXT:    ret30entry:31  %conv = fptosi double %x to i6432  %conv1 = sitofp i64 %conv to double33  ret double %conv134}35 36define float @t2(float %x) {37; CHECK-LABEL: t2:38; CHECK:       // %bb.0: // %entry39; CHECK-NEXT:    ptrue p0.s40; CHECK-NEXT:    // kill: def $s0 killed $s0 def $z041; CHECK-NEXT:    fcvtzs z0.s, p0/m, z0.s42; CHECK-NEXT:    scvtf z0.s, p0/m, z0.s43; CHECK-NEXT:    // kill: def $s0 killed $s0 killed $z044; CHECK-NEXT:    ret45;46; USE-NEON-NO-GPRS-LABEL: t2:47; USE-NEON-NO-GPRS:       // %bb.0: // %entry48; USE-NEON-NO-GPRS-NEXT:    fcvtzs s0, s049; USE-NEON-NO-GPRS-NEXT:    scvtf s0, s050; USE-NEON-NO-GPRS-NEXT:    ret51;52; NONEON-NOSVE-LABEL: t2:53; NONEON-NOSVE:       // %bb.0: // %entry54; NONEON-NOSVE-NEXT:    fcvtzs w8, s055; NONEON-NOSVE-NEXT:    scvtf s0, w856; NONEON-NOSVE-NEXT:    ret57entry:58  %conv = fptosi float %x to i3259  %conv1 = sitofp i32 %conv to float60  ret float %conv161}62 63define half @t3(half %x)  {64; CHECK-LABEL: t3:65; CHECK:       // %bb.0: // %entry66; CHECK-NEXT:    ptrue p0.s67; CHECK-NEXT:    // kill: def $h0 killed $h0 def $z068; CHECK-NEXT:    fcvtzs z0.s, p0/m, z0.h69; CHECK-NEXT:    scvtf z0.h, p0/m, z0.s70; CHECK-NEXT:    // kill: def $h0 killed $h0 killed $z071; CHECK-NEXT:    ret72;73; USE-NEON-NO-GPRS-LABEL: t3:74; USE-NEON-NO-GPRS:       // %bb.0: // %entry75; USE-NEON-NO-GPRS-NEXT:    fcvtzs h0, h076; USE-NEON-NO-GPRS-NEXT:    scvtf h0, h077; USE-NEON-NO-GPRS-NEXT:    ret78;79; NONEON-NOSVE-LABEL: t3:80; NONEON-NOSVE:       // %bb.0: // %entry81; NONEON-NOSVE-NEXT:    fcvt s0, h082; NONEON-NOSVE-NEXT:    fcvtzs w8, s083; NONEON-NOSVE-NEXT:    scvtf s0, w884; NONEON-NOSVE-NEXT:    fcvt h0, s085; NONEON-NOSVE-NEXT:    ret86entry:87  %conv = fptosi half %x to i3288  %conv1 = sitofp i32 %conv to half89  ret half %conv190}91 92define double @t4(double %x) {93; CHECK-LABEL: t4:94; CHECK:       // %bb.0: // %entry95; CHECK-NEXT:    ptrue p0.d96; CHECK-NEXT:    // kill: def $d0 killed $d0 def $z097; CHECK-NEXT:    fcvtzu z0.d, p0/m, z0.d98; CHECK-NEXT:    ucvtf z0.d, p0/m, z0.d99; CHECK-NEXT:    // kill: def $d0 killed $d0 killed $z0100; CHECK-NEXT:    ret101;102; USE-NEON-NO-GPRS-LABEL: t4:103; USE-NEON-NO-GPRS:       // %bb.0: // %entry104; USE-NEON-NO-GPRS-NEXT:    fcvtzu d0, d0105; USE-NEON-NO-GPRS-NEXT:    ucvtf d0, d0106; USE-NEON-NO-GPRS-NEXT:    ret107;108; NONEON-NOSVE-LABEL: t4:109; NONEON-NOSVE:       // %bb.0: // %entry110; NONEON-NOSVE-NEXT:    fcvtzu x8, d0111; NONEON-NOSVE-NEXT:    ucvtf d0, x8112; NONEON-NOSVE-NEXT:    ret113entry:114  %conv = fptoui double %x to i64115  %conv1 = uitofp i64 %conv to double116  ret double %conv1117}118 119define float @t5(float %x) {120; CHECK-LABEL: t5:121; CHECK:       // %bb.0: // %entry122; CHECK-NEXT:    ptrue p0.s123; CHECK-NEXT:    // kill: def $s0 killed $s0 def $z0124; CHECK-NEXT:    fcvtzu z0.s, p0/m, z0.s125; CHECK-NEXT:    ucvtf z0.s, p0/m, z0.s126; CHECK-NEXT:    // kill: def $s0 killed $s0 killed $z0127; CHECK-NEXT:    ret128;129; USE-NEON-NO-GPRS-LABEL: t5:130; USE-NEON-NO-GPRS:       // %bb.0: // %entry131; USE-NEON-NO-GPRS-NEXT:    fcvtzu s0, s0132; USE-NEON-NO-GPRS-NEXT:    ucvtf s0, s0133; USE-NEON-NO-GPRS-NEXT:    ret134;135; NONEON-NOSVE-LABEL: t5:136; NONEON-NOSVE:       // %bb.0: // %entry137; NONEON-NOSVE-NEXT:    fcvtzu w8, s0138; NONEON-NOSVE-NEXT:    ucvtf s0, w8139; NONEON-NOSVE-NEXT:    ret140entry:141  %conv = fptoui float %x to i32142  %conv1 = uitofp i32 %conv to float143  ret float %conv1144}145 146define half @t6(half %x)  {147; CHECK-LABEL: t6:148; CHECK:       // %bb.0: // %entry149; CHECK-NEXT:    ptrue p0.s150; CHECK-NEXT:    // kill: def $h0 killed $h0 def $z0151; CHECK-NEXT:    fcvtzu z0.s, p0/m, z0.h152; CHECK-NEXT:    ucvtf z0.h, p0/m, z0.s153; CHECK-NEXT:    // kill: def $h0 killed $h0 killed $z0154; CHECK-NEXT:    ret155;156; USE-NEON-NO-GPRS-LABEL: t6:157; USE-NEON-NO-GPRS:       // %bb.0: // %entry158; USE-NEON-NO-GPRS-NEXT:    fcvtzu h0, h0159; USE-NEON-NO-GPRS-NEXT:    ucvtf h0, h0160; USE-NEON-NO-GPRS-NEXT:    ret161;162; NONEON-NOSVE-LABEL: t6:163; NONEON-NOSVE:       // %bb.0: // %entry164; NONEON-NOSVE-NEXT:    fcvt s0, h0165; NONEON-NOSVE-NEXT:    fcvtzu w8, s0166; NONEON-NOSVE-NEXT:    ucvtf s0, w8167; NONEON-NOSVE-NEXT:    fcvt h0, s0168; NONEON-NOSVE-NEXT:    ret169entry:170  %conv = fptoui half %x to i32171  %conv1 = uitofp i32 %conv to half172  ret half %conv1173}174