brintos

brintos / llvm-project-archived public Read only

0
0
Text · 8.4 KiB · fbf5be1 Raw
263 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -verify-machineinstrs -ppc-asm-full-reg-names < %s -mcpu=e500 \3; RUN:   -mtriple=powerpc-unknown-linux-gnu -mattr=spe | FileCheck %s \4; RUN:   -check-prefix=SPE5 6declare i32 @llvm.experimental.constrained.fptosi.i32.f64(double, metadata)7declare i64 @llvm.experimental.constrained.fptosi.i64.f64(double, metadata)8declare i64 @llvm.experimental.constrained.fptoui.i64.f64(double, metadata)9declare i32 @llvm.experimental.constrained.fptoui.i32.f64(double, metadata)10 11declare i32 @llvm.experimental.constrained.fptosi.i32.f32(float, metadata)12declare i64 @llvm.experimental.constrained.fptosi.i64.f32(float, metadata)13declare i64 @llvm.experimental.constrained.fptoui.i64.f32(float, metadata)14declare i32 @llvm.experimental.constrained.fptoui.i32.f32(float, metadata)15 16declare double @llvm.experimental.constrained.sitofp.f64.i32(i32, metadata, metadata)17declare double @llvm.experimental.constrained.sitofp.f64.i64(i64, metadata, metadata)18declare double @llvm.experimental.constrained.uitofp.f64.i32(i32, metadata, metadata)19declare double @llvm.experimental.constrained.uitofp.f64.i64(i64, metadata, metadata)20 21declare float @llvm.experimental.constrained.sitofp.f32.i64(i64, metadata, metadata)22declare float @llvm.experimental.constrained.sitofp.f32.i32(i32, metadata, metadata)23declare float @llvm.experimental.constrained.uitofp.f32.i32(i32, metadata, metadata)24declare float @llvm.experimental.constrained.uitofp.f32.i64(i64, metadata, metadata)25 26define i32 @d_to_i32(double %m) #0 {27; SPE-LABEL: d_to_i32:28; SPE:       # %bb.0: # %entry29; SPE-NEXT:    evmergelo r3, r3, r430; SPE-NEXT:    efdctsiz r3, r331; SPE-NEXT:    blr32entry:33  %conv = call i32 @llvm.experimental.constrained.fptosi.i32.f64(double %m, metadata !"fpexcept.strict") #034  ret i32 %conv35}36 37define i64 @d_to_i64(double %m) #0 {38; SPE-LABEL: d_to_i64:39; SPE:       # %bb.0: # %entry40; SPE-NEXT:    mflr r041; SPE-NEXT:    stwu r1, -16(r1)42; SPE-NEXT:    stw r0, 20(r1)43; SPE-NEXT:    .cfi_def_cfa_offset 1644; SPE-NEXT:    .cfi_offset lr, 445; SPE-NEXT:    evmergelo r4, r3, r446; SPE-NEXT:    evmergehi r3, r4, r447; SPE-NEXT:    bl __fixdfdi48; SPE-NEXT:    lwz r0, 20(r1)49; SPE-NEXT:    addi r1, r1, 1650; SPE-NEXT:    mtlr r051; SPE-NEXT:    blr52entry:53  %conv = call i64 @llvm.experimental.constrained.fptosi.i64.f64(double %m, metadata !"fpexcept.strict") #054  ret i64 %conv55}56 57define i64 @d_to_u64(double %m) #0 {58; SPE-LABEL: d_to_u64:59; SPE:       # %bb.0: # %entry60; SPE-NEXT:    mflr r061; SPE-NEXT:    stwu r1, -16(r1)62; SPE-NEXT:    stw r0, 20(r1)63; SPE-NEXT:    .cfi_def_cfa_offset 1664; SPE-NEXT:    .cfi_offset lr, 465; SPE-NEXT:    evmergelo r4, r3, r466; SPE-NEXT:    evmergehi r3, r4, r467; SPE-NEXT:    bl __fixunsdfdi68; SPE-NEXT:    lwz r0, 20(r1)69; SPE-NEXT:    addi r1, r1, 1670; SPE-NEXT:    mtlr r071; SPE-NEXT:    blr72entry:73  %conv = call i64 @llvm.experimental.constrained.fptoui.i64.f64(double %m, metadata !"fpexcept.strict") #074  ret i64 %conv75}76 77define zeroext i32 @d_to_u32(double %m) #0 {78; SPE-LABEL: d_to_u32:79; SPE:       # %bb.0: # %entry80; SPE-NEXT:    evmergelo r3, r3, r481; SPE-NEXT:    efdctuiz r3, r382; SPE-NEXT:    blr83entry:84  %conv = call i32 @llvm.experimental.constrained.fptoui.i32.f64(double %m, metadata !"fpexcept.strict") #085  ret i32 %conv86}87 88define signext i32 @f_to_i32(float %m) #0 {89; SPE-LABEL: f_to_i32:90; SPE:       # %bb.0: # %entry91; SPE-NEXT:    efsctsiz r3, r392; SPE-NEXT:    blr93entry:94  %conv = call i32 @llvm.experimental.constrained.fptosi.i32.f32(float %m, metadata !"fpexcept.strict") #095  ret i32 %conv96}97 98define i64 @f_to_i64(float %m) #0 {99; SPE-LABEL: f_to_i64:100; SPE:       # %bb.0: # %entry101; SPE-NEXT:    mflr r0102; SPE-NEXT:    stwu r1, -16(r1)103; SPE-NEXT:    stw r0, 20(r1)104; SPE-NEXT:    .cfi_def_cfa_offset 16105; SPE-NEXT:    .cfi_offset lr, 4106; SPE-NEXT:    bl __fixsfdi107; SPE-NEXT:    lwz r0, 20(r1)108; SPE-NEXT:    addi r1, r1, 16109; SPE-NEXT:    mtlr r0110; SPE-NEXT:    blr111entry:112  %conv = call i64 @llvm.experimental.constrained.fptosi.i64.f32(float %m, metadata !"fpexcept.strict") #0113  ret i64 %conv114}115 116define i64 @f_to_u64(float %m) #0 {117; SPE-LABEL: f_to_u64:118; SPE:       # %bb.0: # %entry119; SPE-NEXT:    mflr r0120; SPE-NEXT:    stwu r1, -16(r1)121; SPE-NEXT:    stw r0, 20(r1)122; SPE-NEXT:    .cfi_def_cfa_offset 16123; SPE-NEXT:    .cfi_offset lr, 4124; SPE-NEXT:    bl __fixunssfdi125; SPE-NEXT:    lwz r0, 20(r1)126; SPE-NEXT:    addi r1, r1, 16127; SPE-NEXT:    mtlr r0128; SPE-NEXT:    blr129entry:130  %conv = call i64 @llvm.experimental.constrained.fptoui.i64.f32(float %m, metadata !"fpexcept.strict") #0131  ret i64 %conv132}133 134define zeroext i32 @f_to_u32(float %m) #0 {135; SPE-LABEL: f_to_u32:136; SPE:       # %bb.0: # %entry137; SPE-NEXT:    efsctuiz r3, r3138; SPE-NEXT:    blr139entry:140  %conv = call i32 @llvm.experimental.constrained.fptoui.i32.f32(float %m, metadata !"fpexcept.strict") #0141  ret i32 %conv142}143 144define double @i32_to_d(i32 signext %m) #0 {145; SPE-LABEL: i32_to_d:146; SPE:       # %bb.0: # %entry147; SPE-NEXT:    efdcfsi r4, r3148; SPE-NEXT:    evmergehi r3, r4, r4149; SPE-NEXT:    blr150entry:151  %conv = tail call double @llvm.experimental.constrained.sitofp.f64.i32(i32 %m, metadata !"round.dynamic", metadata !"fpexcept.strict") #0152  ret double %conv153}154 155define double @i64_to_d(i64 %m) #0 {156; SPE-LABEL: i64_to_d:157; SPE:       # %bb.0: # %entry158; SPE-NEXT:    mflr r0159; SPE-NEXT:    stwu r1, -16(r1)160; SPE-NEXT:    stw r0, 20(r1)161; SPE-NEXT:    .cfi_def_cfa_offset 16162; SPE-NEXT:    .cfi_offset lr, 4163; SPE-NEXT:    bl __floatdidf164; SPE-NEXT:    evmergelo r4, r3, r4165; SPE-NEXT:    evmergehi r3, r4, r4166; SPE-NEXT:    lwz r0, 20(r1)167; SPE-NEXT:    addi r1, r1, 16168; SPE-NEXT:    mtlr r0169; SPE-NEXT:    blr170entry:171  %conv = tail call double @llvm.experimental.constrained.sitofp.f64.i64(i64 %m, metadata !"round.dynamic", metadata !"fpexcept.strict") #0172  ret double %conv173}174 175define double @u32_to_d(i32 zeroext %m) #0 {176; SPE-LABEL: u32_to_d:177; SPE:       # %bb.0: # %entry178; SPE-NEXT:    efdcfui r4, r3179; SPE-NEXT:    evmergehi r3, r4, r4180; SPE-NEXT:    blr181entry:182  %conv = tail call double @llvm.experimental.constrained.uitofp.f64.i32(i32 %m, metadata !"round.dynamic", metadata !"fpexcept.strict") #0183  ret double %conv184}185 186define double @u64_to_d(i64 %m) #0 {187; SPE-LABEL: u64_to_d:188; SPE:       # %bb.0: # %entry189; SPE-NEXT:    mflr r0190; SPE-NEXT:    stwu r1, -16(r1)191; SPE-NEXT:    stw r0, 20(r1)192; SPE-NEXT:    .cfi_def_cfa_offset 16193; SPE-NEXT:    .cfi_offset lr, 4194; SPE-NEXT:    bl __floatundidf195; SPE-NEXT:    evmergelo r4, r3, r4196; SPE-NEXT:    evmergehi r3, r4, r4197; SPE-NEXT:    lwz r0, 20(r1)198; SPE-NEXT:    addi r1, r1, 16199; SPE-NEXT:    mtlr r0200; SPE-NEXT:    blr201entry:202  %conv = tail call double @llvm.experimental.constrained.uitofp.f64.i64(i64 %m, metadata !"round.dynamic", metadata !"fpexcept.strict") #0203  ret double %conv204}205 206define float @i32_to_f(i32 signext %m) #0 {207; SPE-LABEL: i32_to_f:208; SPE:       # %bb.0: # %entry209; SPE-NEXT:    efscfsi r3, r3210; SPE-NEXT:    blr211entry:212  %conv = tail call float @llvm.experimental.constrained.sitofp.f32.i32(i32 %m, metadata !"round.dynamic", metadata !"fpexcept.strict") #0213  ret float %conv214}215 216define float @i64_to_f(i64 %m) #0 {217; SPE-LABEL: i64_to_f:218; SPE:       # %bb.0: # %entry219; SPE-NEXT:    mflr r0220; SPE-NEXT:    stwu r1, -16(r1)221; SPE-NEXT:    stw r0, 20(r1)222; SPE-NEXT:    .cfi_def_cfa_offset 16223; SPE-NEXT:    .cfi_offset lr, 4224; SPE-NEXT:    bl __floatdisf225; SPE-NEXT:    lwz r0, 20(r1)226; SPE-NEXT:    addi r1, r1, 16227; SPE-NEXT:    mtlr r0228; SPE-NEXT:    blr229entry:230  %conv = tail call float @llvm.experimental.constrained.sitofp.f32.i64(i64 %m, metadata !"round.dynamic", metadata !"fpexcept.strict") #0231  ret float %conv232}233 234define float @u32_to_f(i32 zeroext %m) #0 {235; SPE-LABEL: u32_to_f:236; SPE:       # %bb.0: # %entry237; SPE-NEXT:    efscfui r3, r3238; SPE-NEXT:    blr239entry:240  %conv = tail call float @llvm.experimental.constrained.uitofp.f32.i32(i32 %m, metadata !"round.dynamic", metadata !"fpexcept.strict") #0241  ret float %conv242}243 244define float @u64_to_f(i64 %m) #0 {245; SPE-LABEL: u64_to_f:246; SPE:       # %bb.0: # %entry247; SPE-NEXT:    mflr r0248; SPE-NEXT:    stwu r1, -16(r1)249; SPE-NEXT:    stw r0, 20(r1)250; SPE-NEXT:    .cfi_def_cfa_offset 16251; SPE-NEXT:    .cfi_offset lr, 4252; SPE-NEXT:    bl __floatundisf253; SPE-NEXT:    lwz r0, 20(r1)254; SPE-NEXT:    addi r1, r1, 16255; SPE-NEXT:    mtlr r0256; SPE-NEXT:    blr257entry:258  %conv = tail call float @llvm.experimental.constrained.uitofp.f32.i64(i64 %m, metadata !"round.dynamic", metadata !"fpexcept.strict") #0259  ret float %conv260}261 262attributes #0 = { strictfp }263