brintos

brintos / llvm-project-archived public Read only

0
0
Text · 10.1 KiB · 823e0ec Raw
366 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc  -O0 -mtriple=mipsel-linux-gnu -global-isel -verify-machineinstrs %s -o -| FileCheck %s -check-prefixes=MIPS32,FP323; RUN: llc  -O0 -mtriple=mipsel-linux-gnu -mattr=+fp64,+mips32r2 -global-isel -verify-machineinstrs %s -o -| FileCheck %s -check-prefixes=MIPS32,FP644 5define i64 @f32toi64(float %a) {6; MIPS32-LABEL: f32toi64:7; MIPS32:       # %bb.0: # %entry8; MIPS32-NEXT:    addiu $sp, $sp, -249; MIPS32-NEXT:    .cfi_def_cfa_offset 2410; MIPS32-NEXT:    sw $ra, 20($sp) # 4-byte Folded Spill11; MIPS32-NEXT:    .cfi_offset 31, -412; MIPS32-NEXT:    jal __fixsfdi13; MIPS32-NEXT:    nop14; MIPS32-NEXT:    lw $ra, 20($sp) # 4-byte Folded Reload15; MIPS32-NEXT:    addiu $sp, $sp, 2416; MIPS32-NEXT:    jr $ra17; MIPS32-NEXT:    nop18entry:19  %conv = fptosi float %a to i6420  ret i64 %conv21}22 23define i32 @f32toi32(float %a) {24; MIPS32-LABEL: f32toi32:25; MIPS32:       # %bb.0: # %entry26; MIPS32-NEXT:    trunc.w.s $f0, $f1227; MIPS32-NEXT:    mfc1 $2, $f028; MIPS32-NEXT:    jr $ra29; MIPS32-NEXT:    nop30entry:31  %conv = fptosi float %a to i3232  ret i32 %conv33}34 35define signext i16 @f32toi16(float %a) {36; MIPS32-LABEL: f32toi16:37; MIPS32:       # %bb.0: # %entry38; MIPS32-NEXT:    trunc.w.s $f0, $f1239; MIPS32-NEXT:    mfc1 $1, $f040; MIPS32-NEXT:    sll $1, $1, 1641; MIPS32-NEXT:    sra $2, $1, 1642; MIPS32-NEXT:    jr $ra43; MIPS32-NEXT:    nop44entry:45  %conv = fptosi float %a to i1646  ret i16 %conv47}48 49define signext i8 @f32toi8(float %a) {50; MIPS32-LABEL: f32toi8:51; MIPS32:       # %bb.0: # %entry52; MIPS32-NEXT:    trunc.w.s $f0, $f1253; MIPS32-NEXT:    mfc1 $1, $f054; MIPS32-NEXT:    sll $1, $1, 2455; MIPS32-NEXT:    sra $2, $1, 2456; MIPS32-NEXT:    jr $ra57; MIPS32-NEXT:    nop58entry:59  %conv = fptosi float %a to i860  ret i8 %conv61}62 63define i64 @f64toi64(double %a) {64; MIPS32-LABEL: f64toi64:65; MIPS32:       # %bb.0: # %entry66; MIPS32-NEXT:    addiu $sp, $sp, -2467; MIPS32-NEXT:    .cfi_def_cfa_offset 2468; MIPS32-NEXT:    sw $ra, 20($sp) # 4-byte Folded Spill69; MIPS32-NEXT:    .cfi_offset 31, -470; MIPS32-NEXT:    jal __fixdfdi71; MIPS32-NEXT:    nop72; MIPS32-NEXT:    lw $ra, 20($sp) # 4-byte Folded Reload73; MIPS32-NEXT:    addiu $sp, $sp, 2474; MIPS32-NEXT:    jr $ra75; MIPS32-NEXT:    nop76entry:77  %conv = fptosi double %a to i6478  ret i64 %conv79}80 81define i32 @f64toi32(double %a) {82; MIPS32-LABEL: f64toi32:83; MIPS32:       # %bb.0: # %entry84; MIPS32-NEXT:    trunc.w.d $f0, $f1285; MIPS32-NEXT:    mfc1 $2, $f086; MIPS32-NEXT:    jr $ra87; MIPS32-NEXT:    nop88entry:89  %conv = fptosi double %a to i3290  ret i32 %conv91}92 93define signext i16 @f64toi16(double %a) {94; MIPS32-LABEL: f64toi16:95; MIPS32:       # %bb.0: # %entry96; MIPS32-NEXT:    trunc.w.d $f0, $f1297; MIPS32-NEXT:    mfc1 $1, $f098; MIPS32-NEXT:    sll $1, $1, 1699; MIPS32-NEXT:    sra $2, $1, 16100; MIPS32-NEXT:    jr $ra101; MIPS32-NEXT:    nop102entry:103  %conv = fptosi double %a to i16104  ret i16 %conv105}106 107define signext i8 @f64toi8(double %a) {108; MIPS32-LABEL: f64toi8:109; MIPS32:       # %bb.0: # %entry110; MIPS32-NEXT:    trunc.w.d $f0, $f12111; MIPS32-NEXT:    mfc1 $1, $f0112; MIPS32-NEXT:    sll $1, $1, 24113; MIPS32-NEXT:    sra $2, $1, 24114; MIPS32-NEXT:    jr $ra115; MIPS32-NEXT:    nop116entry:117  %conv = fptosi double %a to i8118  ret i8 %conv119}120 121define i64 @f32tou64(float %a) {122; MIPS32-LABEL: f32tou64:123; MIPS32:       # %bb.0: # %entry124; MIPS32-NEXT:    addiu $sp, $sp, -24125; MIPS32-NEXT:    .cfi_def_cfa_offset 24126; MIPS32-NEXT:    sw $ra, 20($sp) # 4-byte Folded Spill127; MIPS32-NEXT:    .cfi_offset 31, -4128; MIPS32-NEXT:    jal __fixunssfdi129; MIPS32-NEXT:    nop130; MIPS32-NEXT:    lw $ra, 20($sp) # 4-byte Folded Reload131; MIPS32-NEXT:    addiu $sp, $sp, 24132; MIPS32-NEXT:    jr $ra133; MIPS32-NEXT:    nop134entry:135  %conv = fptoui float %a to i64136  ret i64 %conv137}138 139define i32 @f32tou32(float %a) {140; MIPS32-LABEL: f32tou32:141; MIPS32:       # %bb.0: # %entry142; MIPS32-NEXT:    trunc.w.s $f0, $f12143; MIPS32-NEXT:    mfc1 $1, $f0144; MIPS32-NEXT:    lui $2, 20224145; MIPS32-NEXT:    mtc1 $2, $f0146; MIPS32-NEXT:    sub.s $f1, $f12, $f0147; MIPS32-NEXT:    trunc.w.s $f1, $f1148; MIPS32-NEXT:    mfc1 $2, $f1149; MIPS32-NEXT:    lui $3, 32768150; MIPS32-NEXT:    xor $2, $2, $3151; MIPS32-NEXT:    addiu $3, $zero, 1152; MIPS32-NEXT:    c.ult.s $f12, $f0153; MIPS32-NEXT:    movf $3, $zero, $fcc0154; MIPS32-NEXT:    movn $2, $1, $3155; MIPS32-NEXT:    jr $ra156; MIPS32-NEXT:    nop157entry:158  %conv = fptoui float %a to i32159  ret i32 %conv160}161 162define zeroext i16 @f32tou16(float %a) {163; MIPS32-LABEL: f32tou16:164; MIPS32:       # %bb.0: # %entry165; MIPS32-NEXT:    trunc.w.s $f0, $f12166; MIPS32-NEXT:    mfc1 $2, $f0167; MIPS32-NEXT:    lui $1, 20224168; MIPS32-NEXT:    mtc1 $1, $f0169; MIPS32-NEXT:    sub.s $f1, $f12, $f0170; MIPS32-NEXT:    trunc.w.s $f1, $f1171; MIPS32-NEXT:    mfc1 $1, $f1172; MIPS32-NEXT:    lui $3, 32768173; MIPS32-NEXT:    xor $1, $1, $3174; MIPS32-NEXT:    addiu $3, $zero, 1175; MIPS32-NEXT:    c.ult.s $f12, $f0176; MIPS32-NEXT:    movf $3, $zero, $fcc0177; MIPS32-NEXT:    movn $1, $2, $3178; MIPS32-NEXT:    andi $2, $1, 65535179; MIPS32-NEXT:    jr $ra180; MIPS32-NEXT:    nop181entry:182  %conv = fptoui float %a to i16183  ret i16 %conv184}185 186define zeroext i8 @f32tou8(float %a) {187; MIPS32-LABEL: f32tou8:188; MIPS32:       # %bb.0: # %entry189; MIPS32-NEXT:    trunc.w.s $f0, $f12190; MIPS32-NEXT:    mfc1 $2, $f0191; MIPS32-NEXT:    lui $1, 20224192; MIPS32-NEXT:    mtc1 $1, $f0193; MIPS32-NEXT:    sub.s $f1, $f12, $f0194; MIPS32-NEXT:    trunc.w.s $f1, $f1195; MIPS32-NEXT:    mfc1 $1, $f1196; MIPS32-NEXT:    lui $3, 32768197; MIPS32-NEXT:    xor $1, $1, $3198; MIPS32-NEXT:    addiu $3, $zero, 1199; MIPS32-NEXT:    c.ult.s $f12, $f0200; MIPS32-NEXT:    movf $3, $zero, $fcc0201; MIPS32-NEXT:    movn $1, $2, $3202; MIPS32-NEXT:    andi $2, $1, 255203; MIPS32-NEXT:    jr $ra204; MIPS32-NEXT:    nop205entry:206  %conv = fptoui float %a to i8207  ret i8 %conv208}209 210define i64 @f64tou64(double %a) {211; MIPS32-LABEL: f64tou64:212; MIPS32:       # %bb.0: # %entry213; MIPS32-NEXT:    addiu $sp, $sp, -24214; MIPS32-NEXT:    .cfi_def_cfa_offset 24215; MIPS32-NEXT:    sw $ra, 20($sp) # 4-byte Folded Spill216; MIPS32-NEXT:    .cfi_offset 31, -4217; MIPS32-NEXT:    jal __fixunsdfdi218; MIPS32-NEXT:    nop219; MIPS32-NEXT:    lw $ra, 20($sp) # 4-byte Folded Reload220; MIPS32-NEXT:    addiu $sp, $sp, 24221; MIPS32-NEXT:    jr $ra222; MIPS32-NEXT:    nop223entry:224  %conv = fptoui double %a to i64225  ret i64 %conv226}227 228define i32 @f64tou32(double %a) {229; FP32-LABEL: f64tou32:230; FP32:       # %bb.0: # %entry231; FP32-NEXT:    trunc.w.d $f0, $f12232; FP32-NEXT:    mfc1 $1, $f0233; FP32-NEXT:    lui $3, 16864234; FP32-NEXT:    ori $2, $zero, 0235; FP32-NEXT:    mtc1 $2, $f0236; FP32-NEXT:    mtc1 $3, $f1237; FP32-NEXT:    sub.d $f2, $f12, $f0238; FP32-NEXT:    trunc.w.d $f2, $f2239; FP32-NEXT:    mfc1 $2, $f2240; FP32-NEXT:    lui $3, 32768241; FP32-NEXT:    xor $2, $2, $3242; FP32-NEXT:    addiu $3, $zero, 1243; FP32-NEXT:    c.ult.d $f12, $f0244; FP32-NEXT:    movf $3, $zero, $fcc0245; FP32-NEXT:    movn $2, $1, $3246; FP32-NEXT:    jr $ra247; FP32-NEXT:    nop248;249; FP64-LABEL: f64tou32:250; FP64:       # %bb.0: # %entry251; FP64-NEXT:    trunc.w.d $f0, $f12252; FP64-NEXT:    mfc1 $1, $f0253; FP64-NEXT:    lui $3, 16864254; FP64-NEXT:    ori $2, $zero, 0255; FP64-NEXT:    mtc1 $2, $f0256; FP64-NEXT:    mthc1 $3, $f0257; FP64-NEXT:    sub.d $f1, $f12, $f0258; FP64-NEXT:    trunc.w.d $f1, $f1259; FP64-NEXT:    mfc1 $2, $f1260; FP64-NEXT:    lui $3, 32768261; FP64-NEXT:    xor $2, $2, $3262; FP64-NEXT:    addiu $3, $zero, 1263; FP64-NEXT:    c.ult.d $f12, $f0264; FP64-NEXT:    movf $3, $zero, $fcc0265; FP64-NEXT:    movn $2, $1, $3266; FP64-NEXT:    jr $ra267; FP64-NEXT:    nop268entry:269  %conv = fptoui double %a to i32270  ret i32 %conv271}272 273define zeroext i16 @f64tou16(double %a) {274; FP32-LABEL: f64tou16:275; FP32:       # %bb.0: # %entry276; FP32-NEXT:    trunc.w.d $f0, $f12277; FP32-NEXT:    mfc1 $2, $f0278; FP32-NEXT:    lui $3, 16864279; FP32-NEXT:    ori $1, $zero, 0280; FP32-NEXT:    mtc1 $1, $f0281; FP32-NEXT:    mtc1 $3, $f1282; FP32-NEXT:    sub.d $f2, $f12, $f0283; FP32-NEXT:    trunc.w.d $f2, $f2284; FP32-NEXT:    mfc1 $1, $f2285; FP32-NEXT:    lui $3, 32768286; FP32-NEXT:    xor $1, $1, $3287; FP32-NEXT:    addiu $3, $zero, 1288; FP32-NEXT:    c.ult.d $f12, $f0289; FP32-NEXT:    movf $3, $zero, $fcc0290; FP32-NEXT:    movn $1, $2, $3291; FP32-NEXT:    andi $2, $1, 65535292; FP32-NEXT:    jr $ra293; FP32-NEXT:    nop294;295; FP64-LABEL: f64tou16:296; FP64:       # %bb.0: # %entry297; FP64-NEXT:    trunc.w.d $f0, $f12298; FP64-NEXT:    mfc1 $2, $f0299; FP64-NEXT:    lui $3, 16864300; FP64-NEXT:    ori $1, $zero, 0301; FP64-NEXT:    mtc1 $1, $f0302; FP64-NEXT:    mthc1 $3, $f0303; FP64-NEXT:    sub.d $f1, $f12, $f0304; FP64-NEXT:    trunc.w.d $f1, $f1305; FP64-NEXT:    mfc1 $1, $f1306; FP64-NEXT:    lui $3, 32768307; FP64-NEXT:    xor $1, $1, $3308; FP64-NEXT:    addiu $3, $zero, 1309; FP64-NEXT:    c.ult.d $f12, $f0310; FP64-NEXT:    movf $3, $zero, $fcc0311; FP64-NEXT:    movn $1, $2, $3312; FP64-NEXT:    andi $2, $1, 65535313; FP64-NEXT:    jr $ra314; FP64-NEXT:    nop315entry:316  %conv = fptoui double %a to i16317  ret i16 %conv318}319 320define zeroext i8 @f64tou8(double %a) {321; FP32-LABEL: f64tou8:322; FP32:       # %bb.0: # %entry323; FP32-NEXT:    trunc.w.d $f0, $f12324; FP32-NEXT:    mfc1 $2, $f0325; FP32-NEXT:    lui $3, 16864326; FP32-NEXT:    ori $1, $zero, 0327; FP32-NEXT:    mtc1 $1, $f0328; FP32-NEXT:    mtc1 $3, $f1329; FP32-NEXT:    sub.d $f2, $f12, $f0330; FP32-NEXT:    trunc.w.d $f2, $f2331; FP32-NEXT:    mfc1 $1, $f2332; FP32-NEXT:    lui $3, 32768333; FP32-NEXT:    xor $1, $1, $3334; FP32-NEXT:    addiu $3, $zero, 1335; FP32-NEXT:    c.ult.d $f12, $f0336; FP32-NEXT:    movf $3, $zero, $fcc0337; FP32-NEXT:    movn $1, $2, $3338; FP32-NEXT:    andi $2, $1, 255339; FP32-NEXT:    jr $ra340; FP32-NEXT:    nop341;342; FP64-LABEL: f64tou8:343; FP64:       # %bb.0: # %entry344; FP64-NEXT:    trunc.w.d $f0, $f12345; FP64-NEXT:    mfc1 $2, $f0346; FP64-NEXT:    lui $3, 16864347; FP64-NEXT:    ori $1, $zero, 0348; FP64-NEXT:    mtc1 $1, $f0349; FP64-NEXT:    mthc1 $3, $f0350; FP64-NEXT:    sub.d $f1, $f12, $f0351; FP64-NEXT:    trunc.w.d $f1, $f1352; FP64-NEXT:    mfc1 $1, $f1353; FP64-NEXT:    lui $3, 32768354; FP64-NEXT:    xor $1, $1, $3355; FP64-NEXT:    addiu $3, $zero, 1356; FP64-NEXT:    c.ult.d $f12, $f0357; FP64-NEXT:    movf $3, $zero, $fcc0358; FP64-NEXT:    movn $1, $2, $3359; FP64-NEXT:    andi $2, $1, 255360; FP64-NEXT:    jr $ra361; FP64-NEXT:    nop362entry:363  %conv = fptoui double %a to i8364  ret i8 %conv365}366