brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.5 KiB · 5a925a5 Raw
230 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mcpu=pwr9 -mtriple=powerpc64le-unknown-unknown -verify-machineinstrs \3; RUN:   -ppc-vsr-nums-as-vr -ppc-asm-full-reg-names < %s | FileCheck %s4; RUN: llc -mcpu=pwr8 -mtriple=powerpc64le-unknown-unknown -verify-machineinstrs \5; RUN:   -ppc-vsr-nums-as-vr -ppc-asm-full-reg-names < %s | FileCheck %s \6; RUN:   -check-prefix=CHECK-P87 8define void @qp_trunc(ptr nocapture readonly %a, ptr nocapture %res) {9; CHECK-LABEL: qp_trunc:10; CHECK:       # %bb.0: # %entry11; CHECK-NEXT:    lxv v2, 0(r3)12; CHECK-NEXT:    xsrqpi 1, v2, v2, 113; CHECK-NEXT:    stxv v2, 0(r4)14; CHECK-NEXT:    blr15;16; CHECK-P8-LABEL: qp_trunc:17; CHECK-P8:       # %bb.0: # %entry18; CHECK-P8-NEXT:    mflr r019; CHECK-P8-NEXT:    .cfi_def_cfa_offset 4820; CHECK-P8-NEXT:    .cfi_offset lr, 1621; CHECK-P8-NEXT:    .cfi_offset r30, -1622; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill23; CHECK-P8-NEXT:    stdu r1, -48(r1)24; CHECK-P8-NEXT:    std r0, 64(r1)25; CHECK-P8-NEXT:    mr r30, r426; CHECK-P8-NEXT:    lxvd2x vs0, 0, r327; CHECK-P8-NEXT:    xxswapd v2, vs028; CHECK-P8-NEXT:    bl truncf12829; CHECK-P8-NEXT:    nop30; CHECK-P8-NEXT:    xxswapd vs0, v231; CHECK-P8-NEXT:    stxvd2x vs0, 0, r3032; CHECK-P8-NEXT:    addi r1, r1, 4833; CHECK-P8-NEXT:    ld r0, 16(r1)34; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload35; CHECK-P8-NEXT:    mtlr r036; CHECK-P8-NEXT:    blr37entry:38  %0 = load fp128, ptr %a, align 1639  %1 = tail call fp128 @llvm.trunc.f128(fp128 %0)40  store fp128 %1, ptr %res, align 1641  ret void42}43declare fp128     @llvm.trunc.f128(fp128 %Val)44 45define void @qp_rint(ptr nocapture readonly %a, ptr nocapture %res) {46; CHECK-LABEL: qp_rint:47; CHECK:       # %bb.0: # %entry48; CHECK-NEXT:    lxv v2, 0(r3)49; CHECK-NEXT:    xsrqpix 0, v2, v2, 350; CHECK-NEXT:    stxv v2, 0(r4)51; CHECK-NEXT:    blr52;53; CHECK-P8-LABEL: qp_rint:54; CHECK-P8:       # %bb.0: # %entry55; CHECK-P8-NEXT:    mflr r056; CHECK-P8-NEXT:    .cfi_def_cfa_offset 4857; CHECK-P8-NEXT:    .cfi_offset lr, 1658; CHECK-P8-NEXT:    .cfi_offset r30, -1659; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill60; CHECK-P8-NEXT:    stdu r1, -48(r1)61; CHECK-P8-NEXT:    std r0, 64(r1)62; CHECK-P8-NEXT:    mr r30, r463; CHECK-P8-NEXT:    lxvd2x vs0, 0, r364; CHECK-P8-NEXT:    xxswapd v2, vs065; CHECK-P8-NEXT:    bl rintf12866; CHECK-P8-NEXT:    nop67; CHECK-P8-NEXT:    xxswapd vs0, v268; CHECK-P8-NEXT:    stxvd2x vs0, 0, r3069; CHECK-P8-NEXT:    addi r1, r1, 4870; CHECK-P8-NEXT:    ld r0, 16(r1)71; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload72; CHECK-P8-NEXT:    mtlr r073; CHECK-P8-NEXT:    blr74entry:75  %0 = load fp128, ptr %a, align 1676  %1 = tail call fp128 @llvm.rint.f128(fp128 %0)77  store fp128 %1, ptr %res, align 1678  ret void79}80declare fp128     @llvm.rint.f128(fp128 %Val)81 82define void @qp_nearbyint(ptr nocapture readonly %a, ptr nocapture %res) {83; CHECK-LABEL: qp_nearbyint:84; CHECK:       # %bb.0: # %entry85; CHECK-NEXT:    lxv v2, 0(r3)86; CHECK-NEXT:    xsrqpi 0, v2, v2, 387; CHECK-NEXT:    stxv v2, 0(r4)88; CHECK-NEXT:    blr89;90; CHECK-P8-LABEL: qp_nearbyint:91; CHECK-P8:       # %bb.0: # %entry92; CHECK-P8-NEXT:    mflr r093; CHECK-P8-NEXT:    .cfi_def_cfa_offset 4894; CHECK-P8-NEXT:    .cfi_offset lr, 1695; CHECK-P8-NEXT:    .cfi_offset r30, -1696; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill97; CHECK-P8-NEXT:    stdu r1, -48(r1)98; CHECK-P8-NEXT:    std r0, 64(r1)99; CHECK-P8-NEXT:    mr r30, r4100; CHECK-P8-NEXT:    lxvd2x vs0, 0, r3101; CHECK-P8-NEXT:    xxswapd v2, vs0102; CHECK-P8-NEXT:    bl nearbyintf128103; CHECK-P8-NEXT:    nop104; CHECK-P8-NEXT:    xxswapd vs0, v2105; CHECK-P8-NEXT:    stxvd2x vs0, 0, r30106; CHECK-P8-NEXT:    addi r1, r1, 48107; CHECK-P8-NEXT:    ld r0, 16(r1)108; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload109; CHECK-P8-NEXT:    mtlr r0110; CHECK-P8-NEXT:    blr111entry:112  %0 = load fp128, ptr %a, align 16113  %1 = tail call fp128 @llvm.nearbyint.f128(fp128 %0)114  store fp128 %1, ptr %res, align 16115  ret void116}117declare fp128     @llvm.nearbyint.f128(fp128 %Val)118 119define void @qp_round(ptr nocapture readonly %a, ptr nocapture %res) {120; CHECK-LABEL: qp_round:121; CHECK:       # %bb.0: # %entry122; CHECK-NEXT:    lxv v2, 0(r3)123; CHECK-NEXT:    xsrqpi 0, v2, v2, 0124; CHECK-NEXT:    stxv v2, 0(r4)125; CHECK-NEXT:    blr126;127; CHECK-P8-LABEL: qp_round:128; CHECK-P8:       # %bb.0: # %entry129; CHECK-P8-NEXT:    mflr r0130; CHECK-P8-NEXT:    .cfi_def_cfa_offset 48131; CHECK-P8-NEXT:    .cfi_offset lr, 16132; CHECK-P8-NEXT:    .cfi_offset r30, -16133; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill134; CHECK-P8-NEXT:    stdu r1, -48(r1)135; CHECK-P8-NEXT:    std r0, 64(r1)136; CHECK-P8-NEXT:    mr r30, r4137; CHECK-P8-NEXT:    lxvd2x vs0, 0, r3138; CHECK-P8-NEXT:    xxswapd v2, vs0139; CHECK-P8-NEXT:    bl roundf128140; CHECK-P8-NEXT:    nop141; CHECK-P8-NEXT:    xxswapd vs0, v2142; CHECK-P8-NEXT:    stxvd2x vs0, 0, r30143; CHECK-P8-NEXT:    addi r1, r1, 48144; CHECK-P8-NEXT:    ld r0, 16(r1)145; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload146; CHECK-P8-NEXT:    mtlr r0147; CHECK-P8-NEXT:    blr148entry:149  %0 = load fp128, ptr %a, align 16150  %1 = tail call fp128 @llvm.round.f128(fp128 %0)151  store fp128 %1, ptr %res, align 16152  ret void153}154declare fp128     @llvm.round.f128(fp128 %Val)155 156define void @qp_floor(ptr nocapture readonly %a, ptr nocapture %res) {157; CHECK-LABEL: qp_floor:158; CHECK:       # %bb.0: # %entry159; CHECK-NEXT:    lxv v2, 0(r3)160; CHECK-NEXT:    xsrqpi 1, v2, v2, 3161; CHECK-NEXT:    stxv v2, 0(r4)162; CHECK-NEXT:    blr163;164; CHECK-P8-LABEL: qp_floor:165; CHECK-P8:       # %bb.0: # %entry166; CHECK-P8-NEXT:    mflr r0167; CHECK-P8-NEXT:    .cfi_def_cfa_offset 48168; CHECK-P8-NEXT:    .cfi_offset lr, 16169; CHECK-P8-NEXT:    .cfi_offset r30, -16170; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill171; CHECK-P8-NEXT:    stdu r1, -48(r1)172; CHECK-P8-NEXT:    std r0, 64(r1)173; CHECK-P8-NEXT:    mr r30, r4174; CHECK-P8-NEXT:    lxvd2x vs0, 0, r3175; CHECK-P8-NEXT:    xxswapd v2, vs0176; CHECK-P8-NEXT:    bl floorf128177; CHECK-P8-NEXT:    nop178; CHECK-P8-NEXT:    xxswapd vs0, v2179; CHECK-P8-NEXT:    stxvd2x vs0, 0, r30180; CHECK-P8-NEXT:    addi r1, r1, 48181; CHECK-P8-NEXT:    ld r0, 16(r1)182; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload183; CHECK-P8-NEXT:    mtlr r0184; CHECK-P8-NEXT:    blr185entry:186  %0 = load fp128, ptr %a, align 16187  %1 = tail call fp128 @llvm.floor.f128(fp128 %0)188  store fp128 %1, ptr %res, align 16189  ret void190}191declare fp128     @llvm.floor.f128(fp128 %Val)192 193define void @qp_ceil(ptr nocapture readonly %a, ptr nocapture %res) {194; CHECK-LABEL: qp_ceil:195; CHECK:       # %bb.0: # %entry196; CHECK-NEXT:    lxv v2, 0(r3)197; CHECK-NEXT:    xsrqpi 1, v2, v2, 2198; CHECK-NEXT:    stxv v2, 0(r4)199; CHECK-NEXT:    blr200;201; CHECK-P8-LABEL: qp_ceil:202; CHECK-P8:       # %bb.0: # %entry203; CHECK-P8-NEXT:    mflr r0204; CHECK-P8-NEXT:    .cfi_def_cfa_offset 48205; CHECK-P8-NEXT:    .cfi_offset lr, 16206; CHECK-P8-NEXT:    .cfi_offset r30, -16207; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill208; CHECK-P8-NEXT:    stdu r1, -48(r1)209; CHECK-P8-NEXT:    std r0, 64(r1)210; CHECK-P8-NEXT:    mr r30, r4211; CHECK-P8-NEXT:    lxvd2x vs0, 0, r3212; CHECK-P8-NEXT:    xxswapd v2, vs0213; CHECK-P8-NEXT:    bl ceilf128214; CHECK-P8-NEXT:    nop215; CHECK-P8-NEXT:    xxswapd vs0, v2216; CHECK-P8-NEXT:    stxvd2x vs0, 0, r30217; CHECK-P8-NEXT:    addi r1, r1, 48218; CHECK-P8-NEXT:    ld r0, 16(r1)219; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload220; CHECK-P8-NEXT:    mtlr r0221; CHECK-P8-NEXT:    blr222entry:223  %0 = load fp128, ptr %a, align 16224  %1 = tail call fp128 @llvm.ceil.f128(fp128 %0)225  store fp128 %1, ptr %res, align 16226  ret void227}228declare fp128     @llvm.ceil.f128(fp128 %Val)229 230