brintos

brintos / llvm-project-archived public Read only

0
0
Text · 8.8 KiB · dc9853f Raw
338 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=powerpc64le-unknown-linux-gnu -mcpu=pwr8 < %s \3; RUN:   -verify-machineinstrs | FileCheck %s --check-prefix=P84; RUN: llc -mtriple=powerpc64le-unknown-linux-gnu -mcpu=pwr9 < %s \5; RUN:   -verify-machineinstrs | FileCheck %s --check-prefix=P96 7define zeroext i1 @abs_isinff(float %x) {8; P8-LABEL: abs_isinff:9; P8:       # %bb.0: # %entry10; P8-NEXT:    xscvdpspn 0, 111; P8-NEXT:    lis 4, 3264012; P8-NEXT:    mffprwz 3, 013; P8-NEXT:    clrlwi 3, 3, 114; P8-NEXT:    xor 3, 3, 415; P8-NEXT:    cntlzw 3, 316; P8-NEXT:    srwi 3, 3, 517; P8-NEXT:    blr18;19; P9-LABEL: abs_isinff:20; P9:       # %bb.0: # %entry21; P9-NEXT:    xststdcsp 0, 1, 4822; P9-NEXT:    li 3, 023; P9-NEXT:    li 4, 124; P9-NEXT:    iseleq 3, 4, 325; P9-NEXT:    blr26entry:27  %0 = tail call float @llvm.fabs.f32(float %x)28  %cmpinf = fcmp oeq float %0, 0x7FF000000000000029  ret i1 %cmpinf30}31 32define zeroext i1 @abs_isinf(double %x) {33; P8-LABEL: abs_isinf:34; P8:       # %bb.0: # %entry35; P8-NEXT:    mffprd 3, 136; P8-NEXT:    li 4, 204737; P8-NEXT:    rldic 4, 4, 52, 138; P8-NEXT:    clrldi 3, 3, 139; P8-NEXT:    xor 3, 3, 440; P8-NEXT:    cntlzd 3, 341; P8-NEXT:    rldicl 3, 3, 58, 6342; P8-NEXT:    blr43;44; P9-LABEL: abs_isinf:45; P9:       # %bb.0: # %entry46; P9-NEXT:    xststdcdp 0, 1, 4847; P9-NEXT:    li 3, 048; P9-NEXT:    li 4, 149; P9-NEXT:    iseleq 3, 4, 350; P9-NEXT:    blr51entry:52  %0 = tail call double @llvm.fabs.f64(double %x)53  %cmpinf = fcmp oeq double %0, 0x7FF000000000000054  ret i1 %cmpinf55}56 57define zeroext i1 @abs_isinfq(fp128 %x) {58; P8-LABEL: abs_isinfq:59; P8:       # %bb.0: # %entry60; P8-NEXT:    xxswapd 0, 3461; P8-NEXT:    addi 3, 1, -1662; P8-NEXT:    li 5, 3276763; P8-NEXT:    stxvd2x 0, 0, 364; P8-NEXT:    rldic 5, 5, 48, 165; P8-NEXT:    ld 4, -8(1)66; P8-NEXT:    ld 3, -16(1)67; P8-NEXT:    clrldi 4, 4, 168; P8-NEXT:    xor 4, 4, 569; P8-NEXT:    or 3, 3, 470; P8-NEXT:    cntlzd 3, 371; P8-NEXT:    rldicl 3, 3, 58, 6372; P8-NEXT:    blr73;74; P9-LABEL: abs_isinfq:75; P9:       # %bb.0: # %entry76; P9-NEXT:    xststdcqp 0, 2, 4877; P9-NEXT:    li 3, 078; P9-NEXT:    li 4, 179; P9-NEXT:    iseleq 3, 4, 380; P9-NEXT:    blr81entry:82  %0 = tail call fp128 @llvm.fabs.f128(fp128 %x)83  %cmpinf = fcmp oeq fp128 %0, 0xL00000000000000007FFF00000000000084  ret i1 %cmpinf85}86 87define zeroext i1 @abs_isinfornanf(float %x) {88; P8-LABEL: abs_isinfornanf:89; P8:       # %bb.0: # %entry90; P8-NEXT:    xscvdpspn 0, 191; P8-NEXT:    lis 4, 3263992; P8-NEXT:    ori 4, 4, 6553593; P8-NEXT:    mffprwz 3, 094; P8-NEXT:    clrlwi 3, 3, 195; P8-NEXT:    sub 3, 4, 396; P8-NEXT:    rldicl 3, 3, 1, 6397; P8-NEXT:    blr98;99; P9-LABEL: abs_isinfornanf:100; P9:       # %bb.0: # %entry101; P9-NEXT:    xststdcsp 0, 1, 112102; P9-NEXT:    li 3, 0103; P9-NEXT:    li 4, 1104; P9-NEXT:    iseleq 3, 4, 3105; P9-NEXT:    blr106entry:107  %0 = tail call float @llvm.fabs.f32(float %x)108  %cmpinf = fcmp ueq float %0, 0x7FF0000000000000109  ret i1 %cmpinf110}111 112define zeroext i1 @abs_isinfornan(double %x) {113; P8-LABEL: abs_isinfornan:114; P8:       # %bb.0: # %entry115; P8-NEXT:    mffprd 3, 1116; P8-NEXT:    li 4, -33117; P8-NEXT:    rldicl 4, 4, 47, 1118; P8-NEXT:    sradi 5, 4, 63119; P8-NEXT:    clrldi 3, 3, 1120; P8-NEXT:    rldicl 6, 3, 1, 63121; P8-NEXT:    subc 3, 4, 3122; P8-NEXT:    adde 3, 6, 5123; P8-NEXT:    xori 3, 3, 1124; P8-NEXT:    blr125;126; P9-LABEL: abs_isinfornan:127; P9:       # %bb.0: # %entry128; P9-NEXT:    xststdcdp 0, 1, 112129; P9-NEXT:    li 3, 0130; P9-NEXT:    li 4, 1131; P9-NEXT:    iseleq 3, 4, 3132; P9-NEXT:    blr133entry:134  %0 = tail call double @llvm.fabs.f64(double %x)135  %cmpinf = fcmp ueq double %0, 0x7FF0000000000000136  ret i1 %cmpinf137}138 139define zeroext i1 @abs_isinfornanq(fp128 %x) {140; P8-LABEL: abs_isinfornanq:141; P8:       # %bb.0: # %entry142; P8-NEXT:    xxswapd 0, 34143; P8-NEXT:    addi 3, 1, -16144; P8-NEXT:    li 4, -3145; P8-NEXT:    stxvd2x 0, 0, 3146; P8-NEXT:    rldicl 4, 4, 47, 1147; P8-NEXT:    ld 3, -8(1)148; P8-NEXT:    sradi 5, 4, 63149; P8-NEXT:    clrldi 3, 3, 1150; P8-NEXT:    rldicl 6, 3, 1, 63151; P8-NEXT:    subc 3, 4, 3152; P8-NEXT:    adde 3, 6, 5153; P8-NEXT:    xori 3, 3, 1154; P8-NEXT:    blr155;156; P9-LABEL: abs_isinfornanq:157; P9:       # %bb.0: # %entry158; P9-NEXT:    xststdcqp 0, 2, 112159; P9-NEXT:    li 3, 0160; P9-NEXT:    li 4, 1161; P9-NEXT:    iseleq 3, 4, 3162; P9-NEXT:    blr163entry:164  %0 = tail call fp128 @llvm.fabs.f128(fp128 %x)165  %cmpinf = fcmp ueq fp128 %0, 0xL00000000000000007FFF000000000000166  ret i1 %cmpinf167}168 169define <4 x i1> @abs_isinfv4f32(<4 x float> %x) {170; P8-LABEL: abs_isinfv4f32:171; P8:       # %bb.0: # %entry172; P8-NEXT:    addis 3, 2, .LCPI6_0@toc@ha173; P8-NEXT:    xvabssp 0, 34174; P8-NEXT:    addi 3, 3, .LCPI6_0@toc@l175; P8-NEXT:    lxvd2x 1, 0, 3176; P8-NEXT:    xvcmpeqsp 34, 0, 1177; P8-NEXT:    blr178;179; P9-LABEL: abs_isinfv4f32:180; P9:       # %bb.0: # %entry181; P9-NEXT:    addis 3, 2, .LCPI6_0@toc@ha182; P9-NEXT:    xvabssp 0, 34183; P9-NEXT:    addi 3, 3, .LCPI6_0@toc@l184; P9-NEXT:    lxv 1, 0(3)185; P9-NEXT:    xvcmpeqsp 34, 0, 1186; P9-NEXT:    blr187entry:188  %0 = tail call <4 x float> @llvm.fabs.v4f32(<4 x float> %x)189  %cmpinf = fcmp oeq <4 x float> %0, <float 0x7FF0000000000000, float 0x7FF0000000000000, float 0x7FF0000000000000, float 0x7FF0000000000000>190  ret <4 x i1> %cmpinf191}192 193define <2 x i1> @abs_isinfv2f64(<2 x double> %x) {194; P8-LABEL: abs_isinfv2f64:195; P8:       # %bb.0: # %entry196; P8-NEXT:    addis 3, 2, .LCPI7_0@toc@ha197; P8-NEXT:    xvabsdp 0, 34198; P8-NEXT:    addi 3, 3, .LCPI7_0@toc@l199; P8-NEXT:    lxvd2x 1, 0, 3200; P8-NEXT:    xvcmpeqdp 34, 0, 1201; P8-NEXT:    blr202;203; P9-LABEL: abs_isinfv2f64:204; P9:       # %bb.0: # %entry205; P9-NEXT:    addis 3, 2, .LCPI7_0@toc@ha206; P9-NEXT:    xvabsdp 0, 34207; P9-NEXT:    addi 3, 3, .LCPI7_0@toc@l208; P9-NEXT:    lxv 1, 0(3)209; P9-NEXT:    xvcmpeqdp 34, 0, 1210; P9-NEXT:    blr211entry:212  %0 = tail call <2 x double> @llvm.fabs.v2f64(<2 x double> %x)213  %cmpinf = fcmp oeq <2 x double> %0, <double 0x7FF0000000000000, double 0x7FF0000000000000>214  ret <2 x i1> %cmpinf215}216 217define zeroext i1 @iszerof(float %x) {218; P8-LABEL: iszerof:219; P8:       # %bb.0: # %entry220; P8-NEXT:    xxlxor 0, 0, 0221; P8-NEXT:    li 3, 0222; P8-NEXT:    li 4, 1223; P8-NEXT:    fcmpu 0, 1, 0224; P8-NEXT:    iseleq 3, 4, 3225; P8-NEXT:    blr226;227; P9-LABEL: iszerof:228; P9:       # %bb.0: # %entry229; P9-NEXT:    xxlxor 0, 0, 0230; P9-NEXT:    li 3, 0231; P9-NEXT:    li 4, 1232; P9-NEXT:    fcmpu 0, 1, 0233; P9-NEXT:    iseleq 3, 4, 3234; P9-NEXT:    blr235entry:236  %cmp = fcmp oeq float %x, 0.000000e+00237  ret i1 %cmp238}239 240define zeroext i1 @iszero(double %x) {241; P8-LABEL: iszero:242; P8:       # %bb.0: # %entry243; P8-NEXT:    xxlxor 0, 0, 0244; P8-NEXT:    li 3, 0245; P8-NEXT:    li 4, 1246; P8-NEXT:    fcmpu 0, 1, 0247; P8-NEXT:    iseleq 3, 4, 3248; P8-NEXT:    blr249;250; P9-LABEL: iszero:251; P9:       # %bb.0: # %entry252; P9-NEXT:    xxlxor 0, 0, 0253; P9-NEXT:    li 3, 0254; P9-NEXT:    li 4, 1255; P9-NEXT:    fcmpu 0, 1, 0256; P9-NEXT:    iseleq 3, 4, 3257; P9-NEXT:    blr258entry:259  %cmp = fcmp oeq double %x, 0.000000e+00260  ret i1 %cmp261}262 263define zeroext i1 @iszeroq(fp128 %x) {264; P8-LABEL: iszeroq:265; P8:       # %bb.0: # %entry266; P8-NEXT:    mflr 0267; P8-NEXT:    stdu 1, -32(1)268; P8-NEXT:    std 0, 48(1)269; P8-NEXT:    .cfi_def_cfa_offset 32270; P8-NEXT:    .cfi_offset lr, 16271; P8-NEXT:    addis 3, 2, .LCPI10_0@toc@ha272; P8-NEXT:    addi 3, 3, .LCPI10_0@toc@l273; P8-NEXT:    lxvd2x 0, 0, 3274; P8-NEXT:    xxswapd 35, 0275; P8-NEXT:    bl __eqkf2276; P8-NEXT:    nop277; P8-NEXT:    cntlzw 3, 3278; P8-NEXT:    srwi 3, 3, 5279; P8-NEXT:    addi 1, 1, 32280; P8-NEXT:    ld 0, 16(1)281; P8-NEXT:    mtlr 0282; P8-NEXT:    blr283;284; P9-LABEL: iszeroq:285; P9:       # %bb.0: # %entry286; P9-NEXT:    addis 3, 2, .LCPI10_0@toc@ha287; P9-NEXT:    li 4, 1288; P9-NEXT:    addi 3, 3, .LCPI10_0@toc@l289; P9-NEXT:    lxv 35, 0(3)290; P9-NEXT:    li 3, 0291; P9-NEXT:    xscmpuqp 0, 2, 3292; P9-NEXT:    iseleq 3, 4, 3293; P9-NEXT:    blr294entry:295  %cmp = fcmp oeq fp128 %x, 0xL00000000000000000000000000000000296  ret i1 %cmp297}298 299define <4 x i1> @iszerov4f32(<4 x float> %x) {300; P8-LABEL: iszerov4f32:301; P8:       # %bb.0: # %entry302; P8-NEXT:    xxlxor 0, 0, 0303; P8-NEXT:    xvcmpeqsp 34, 34, 0304; P8-NEXT:    blr305;306; P9-LABEL: iszerov4f32:307; P9:       # %bb.0: # %entry308; P9-NEXT:    xxlxor 0, 0, 0309; P9-NEXT:    xvcmpeqsp 34, 34, 0310; P9-NEXT:    blr311entry:312  %cmp = fcmp oeq <4 x float> %x, <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00>313  ret <4 x i1> %cmp314}315 316define <2 x i1> @iszerov2f64(<2 x double> %x) {317; P8-LABEL: iszerov2f64:318; P8:       # %bb.0: # %entry319; P8-NEXT:    xxlxor 0, 0, 0320; P8-NEXT:    xvcmpeqdp 34, 34, 0321; P8-NEXT:    blr322;323; P9-LABEL: iszerov2f64:324; P9:       # %bb.0: # %entry325; P9-NEXT:    xxlxor 0, 0, 0326; P9-NEXT:    xvcmpeqdp 34, 34, 0327; P9-NEXT:    blr328entry:329  %cmp = fcmp oeq <2 x double> %x, <double 0.000000e+00, double 0.000000e+00>330  ret <2 x i1> %cmp331}332 333declare float @llvm.fabs.f32(float)334declare double @llvm.fabs.f64(double)335declare fp128 @llvm.fabs.f128(fp128)336declare <4 x float> @llvm.fabs.v4f32(<4 x float>)337declare <2 x double> @llvm.fabs.v2f64(<2 x double>)338