brintos

brintos / llvm-project-archived public Read only

0
0
Text · 12.2 KiB · 0b715cb Raw
383 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc --mtriple=loongarch32 --mattr=+d -loongarch-materialize-float-imm=0 < %s | FileCheck %s --check-prefixes=LA32,LA32-03; RUN: llc --mtriple=loongarch32 --mattr=+d -loongarch-materialize-float-imm=2 < %s | FileCheck %s --check-prefixes=LA32,LA32-24; RUN: llc --mtriple=loongarch32 --mattr=+d -loongarch-materialize-float-imm=3 < %s | FileCheck %s --check-prefixes=LA32,LA32-35; RUN: llc --mtriple=loongarch32 --mattr=+d -loongarch-materialize-float-imm=4 < %s | FileCheck %s --check-prefixes=LA32,LA32-46; RUN: llc --mtriple=loongarch32 --mattr=+d -loongarch-materialize-float-imm=5 < %s | FileCheck %s --check-prefixes=LA32,LA32-57; RUN: llc --mtriple=loongarch32 --mattr=+d -loongarch-materialize-float-imm=6 < %s | FileCheck %s --check-prefixes=LA32,LA32-68; RUN: llc --mtriple=loongarch64 --mattr=+d -loongarch-materialize-float-imm=0 < %s | FileCheck %s --check-prefixes=LA64,LA64-09; RUN: llc --mtriple=loongarch64 --mattr=+d -loongarch-materialize-float-imm=2 < %s | FileCheck %s --check-prefixes=LA64,LA64-210; RUN: llc --mtriple=loongarch64 --mattr=+d -loongarch-materialize-float-imm=3 < %s | FileCheck %s --check-prefixes=LA64,LA64-311; RUN: llc --mtriple=loongarch64 --mattr=+d -loongarch-materialize-float-imm=4 < %s | FileCheck %s --check-prefixes=LA64,LA64-412; RUN: llc --mtriple=loongarch64 --mattr=+d -loongarch-materialize-float-imm=5 < %s | FileCheck %s --check-prefixes=LA64,LA64-513; RUN: llc --mtriple=loongarch64 --mattr=+d -loongarch-materialize-float-imm=6 < %s | FileCheck %s --check-prefixes=LA64,LA64-514 15define double @f64_positive_zero() nounwind {16; LA32-LABEL: f64_positive_zero:17; LA32:       # %bb.0:18; LA32-NEXT:    movgr2fr.w $fa0, $zero19; LA32-NEXT:    movgr2frh.w $fa0, $zero20; LA32-NEXT:    ret21;22; LA64-LABEL: f64_positive_zero:23; LA64:       # %bb.0:24; LA64-NEXT:    movgr2fr.d $fa0, $zero25; LA64-NEXT:    ret26  ret double 0.027}28 29define double @f64_negative_zero() nounwind {30; LA32-LABEL: f64_negative_zero:31; LA32:       # %bb.0:32; LA32-NEXT:    movgr2fr.w $fa0, $zero33; LA32-NEXT:    movgr2frh.w $fa0, $zero34; LA32-NEXT:    fneg.d $fa0, $fa035; LA32-NEXT:    ret36;37; LA64-LABEL: f64_negative_zero:38; LA64:       # %bb.0:39; LA64-NEXT:    movgr2fr.d $fa0, $zero40; LA64-NEXT:    fneg.d $fa0, $fa041; LA64-NEXT:    ret42  ret double -0.043}44 45define double @f64_constant_ins1() nounwind {46; LA32-0-LABEL: f64_constant_ins1:47; LA32-0:       # %bb.0:48; LA32-0-NEXT:    pcalau12i $a0, %pc_hi20(.LCPI2_0)49; LA32-0-NEXT:    fld.d $fa0, $a0, %pc_lo12(.LCPI2_0)50; LA32-0-NEXT:    ret51;52; LA32-2-LABEL: f64_constant_ins1:53; LA32-2:       # %bb.0:54; LA32-2-NEXT:    pcalau12i $a0, %pc_hi20(.LCPI2_0)55; LA32-2-NEXT:    fld.d $fa0, $a0, %pc_lo12(.LCPI2_0)56; LA32-2-NEXT:    ret57;58; LA32-3-LABEL: f64_constant_ins1:59; LA32-3:       # %bb.0:60; LA32-3-NEXT:    movgr2fr.w $fa0, $zero61; LA32-3-NEXT:    lu12i.w $a0, 26342462; LA32-3-NEXT:    movgr2frh.w $fa0, $a063; LA32-3-NEXT:    ret64;65; LA32-4-LABEL: f64_constant_ins1:66; LA32-4:       # %bb.0:67; LA32-4-NEXT:    movgr2fr.w $fa0, $zero68; LA32-4-NEXT:    lu12i.w $a0, 26342469; LA32-4-NEXT:    movgr2frh.w $fa0, $a070; LA32-4-NEXT:    ret71;72; LA32-5-LABEL: f64_constant_ins1:73; LA32-5:       # %bb.0:74; LA32-5-NEXT:    movgr2fr.w $fa0, $zero75; LA32-5-NEXT:    lu12i.w $a0, 26342476; LA32-5-NEXT:    movgr2frh.w $fa0, $a077; LA32-5-NEXT:    ret78;79; LA32-6-LABEL: f64_constant_ins1:80; LA32-6:       # %bb.0:81; LA32-6-NEXT:    movgr2fr.w $fa0, $zero82; LA32-6-NEXT:    lu12i.w $a0, 26342483; LA32-6-NEXT:    movgr2frh.w $fa0, $a084; LA32-6-NEXT:    ret85;86; LA64-0-LABEL: f64_constant_ins1:87; LA64-0:       # %bb.0:88; LA64-0-NEXT:    pcalau12i $a0, %pc_hi20(.LCPI2_0)89; LA64-0-NEXT:    fld.d $fa0, $a0, %pc_lo12(.LCPI2_0)90; LA64-0-NEXT:    ret91;92; LA64-2-LABEL: f64_constant_ins1:93; LA64-2:       # %bb.0:94; LA64-2-NEXT:    lu52i.d $a0, $zero, 102995; LA64-2-NEXT:    movgr2fr.d $fa0, $a096; LA64-2-NEXT:    ret97;98; LA64-3-LABEL: f64_constant_ins1:99; LA64-3:       # %bb.0:100; LA64-3-NEXT:    lu52i.d $a0, $zero, 1029101; LA64-3-NEXT:    movgr2fr.d $fa0, $a0102; LA64-3-NEXT:    ret103;104; LA64-4-LABEL: f64_constant_ins1:105; LA64-4:       # %bb.0:106; LA64-4-NEXT:    lu52i.d $a0, $zero, 1029107; LA64-4-NEXT:    movgr2fr.d $fa0, $a0108; LA64-4-NEXT:    ret109;110; LA64-5-LABEL: f64_constant_ins1:111; LA64-5:       # %bb.0:112; LA64-5-NEXT:    lu52i.d $a0, $zero, 1029113; LA64-5-NEXT:    movgr2fr.d $fa0, $a0114; LA64-5-NEXT:    ret115  ret double 64.0116}117 118define double @f64_constant_ins2() nounwind {119; LA32-0-LABEL: f64_constant_ins2:120; LA32-0:       # %bb.0:121; LA32-0-NEXT:    pcalau12i $a0, %pc_hi20(.LCPI3_0)122; LA32-0-NEXT:    fld.d $fa0, $a0, %pc_lo12(.LCPI3_0)123; LA32-0-NEXT:    ret124;125; LA32-2-LABEL: f64_constant_ins2:126; LA32-2:       # %bb.0:127; LA32-2-NEXT:    pcalau12i $a0, %pc_hi20(.LCPI3_0)128; LA32-2-NEXT:    fld.d $fa0, $a0, %pc_lo12(.LCPI3_0)129; LA32-2-NEXT:    ret130;131; LA32-3-LABEL: f64_constant_ins2:132; LA32-3:       # %bb.0:133; LA32-3-NEXT:    pcalau12i $a0, %pc_hi20(.LCPI3_0)134; LA32-3-NEXT:    fld.d $fa0, $a0, %pc_lo12(.LCPI3_0)135; LA32-3-NEXT:    ret136;137; LA32-4-LABEL: f64_constant_ins2:138; LA32-4:       # %bb.0:139; LA32-4-NEXT:    ori $a0, $zero, 3140; LA32-4-NEXT:    movgr2fr.w $fa0, $a0141; LA32-4-NEXT:    lu12i.w $a0, 262144142; LA32-4-NEXT:    movgr2frh.w $fa0, $a0143; LA32-4-NEXT:    ret144;145; LA32-5-LABEL: f64_constant_ins2:146; LA32-5:       # %bb.0:147; LA32-5-NEXT:    ori $a0, $zero, 3148; LA32-5-NEXT:    movgr2fr.w $fa0, $a0149; LA32-5-NEXT:    lu12i.w $a0, 262144150; LA32-5-NEXT:    movgr2frh.w $fa0, $a0151; LA32-5-NEXT:    ret152;153; LA32-6-LABEL: f64_constant_ins2:154; LA32-6:       # %bb.0:155; LA32-6-NEXT:    ori $a0, $zero, 3156; LA32-6-NEXT:    movgr2fr.w $fa0, $a0157; LA32-6-NEXT:    lu12i.w $a0, 262144158; LA32-6-NEXT:    movgr2frh.w $fa0, $a0159; LA32-6-NEXT:    ret160;161; LA64-0-LABEL: f64_constant_ins2:162; LA64-0:       # %bb.0:163; LA64-0-NEXT:    pcalau12i $a0, %pc_hi20(.LCPI3_0)164; LA64-0-NEXT:    fld.d $fa0, $a0, %pc_lo12(.LCPI3_0)165; LA64-0-NEXT:    ret166;167; LA64-2-LABEL: f64_constant_ins2:168; LA64-2:       # %bb.0:169; LA64-2-NEXT:    pcalau12i $a0, %pc_hi20(.LCPI3_0)170; LA64-2-NEXT:    fld.d $fa0, $a0, %pc_lo12(.LCPI3_0)171; LA64-2-NEXT:    ret172;173; LA64-3-LABEL: f64_constant_ins2:174; LA64-3:       # %bb.0:175; LA64-3-NEXT:    ori $a0, $zero, 3176; LA64-3-NEXT:    lu52i.d $a0, $a0, 1024177; LA64-3-NEXT:    movgr2fr.d $fa0, $a0178; LA64-3-NEXT:    ret179;180; LA64-4-LABEL: f64_constant_ins2:181; LA64-4:       # %bb.0:182; LA64-4-NEXT:    ori $a0, $zero, 3183; LA64-4-NEXT:    lu52i.d $a0, $a0, 1024184; LA64-4-NEXT:    movgr2fr.d $fa0, $a0185; LA64-4-NEXT:    ret186;187; LA64-5-LABEL: f64_constant_ins2:188; LA64-5:       # %bb.0:189; LA64-5-NEXT:    ori $a0, $zero, 3190; LA64-5-NEXT:    lu52i.d $a0, $a0, 1024191; LA64-5-NEXT:    movgr2fr.d $fa0, $a0192; LA64-5-NEXT:    ret193  ret double 2.00000000000000137194}195 196define double @f64_constant_ins3() nounwind {197; LA32-0-LABEL: f64_constant_ins3:198; LA32-0:       # %bb.0:199; LA32-0-NEXT:    pcalau12i $a0, %pc_hi20(.LCPI4_0)200; LA32-0-NEXT:    fld.d $fa0, $a0, %pc_lo12(.LCPI4_0)201; LA32-0-NEXT:    ret202;203; LA32-2-LABEL: f64_constant_ins3:204; LA32-2:       # %bb.0:205; LA32-2-NEXT:    pcalau12i $a0, %pc_hi20(.LCPI4_0)206; LA32-2-NEXT:    fld.d $fa0, $a0, %pc_lo12(.LCPI4_0)207; LA32-2-NEXT:    ret208;209; LA32-3-LABEL: f64_constant_ins3:210; LA32-3:       # %bb.0:211; LA32-3-NEXT:    pcalau12i $a0, %pc_hi20(.LCPI4_0)212; LA32-3-NEXT:    fld.d $fa0, $a0, %pc_lo12(.LCPI4_0)213; LA32-3-NEXT:    ret214;215; LA32-4-LABEL: f64_constant_ins3:216; LA32-4:       # %bb.0:217; LA32-4-NEXT:    pcalau12i $a0, %pc_hi20(.LCPI4_0)218; LA32-4-NEXT:    fld.d $fa0, $a0, %pc_lo12(.LCPI4_0)219; LA32-4-NEXT:    ret220;221; LA32-5-LABEL: f64_constant_ins3:222; LA32-5:       # %bb.0:223; LA32-5-NEXT:    lu12i.w $a0, 268115224; LA32-5-NEXT:    ori $a0, $a0, 344225; LA32-5-NEXT:    lu12i.w $a1, -131072226; LA32-5-NEXT:    movgr2fr.w $fa0, $a1227; LA32-5-NEXT:    movgr2frh.w $fa0, $a0228; LA32-5-NEXT:    ret229;230; LA32-6-LABEL: f64_constant_ins3:231; LA32-6:       # %bb.0:232; LA32-6-NEXT:    lu12i.w $a0, 268115233; LA32-6-NEXT:    ori $a0, $a0, 344234; LA32-6-NEXT:    lu12i.w $a1, -131072235; LA32-6-NEXT:    movgr2fr.w $fa0, $a1236; LA32-6-NEXT:    movgr2frh.w $fa0, $a0237; LA32-6-NEXT:    ret238;239; LA64-0-LABEL: f64_constant_ins3:240; LA64-0:       # %bb.0:241; LA64-0-NEXT:    pcalau12i $a0, %pc_hi20(.LCPI4_0)242; LA64-0-NEXT:    fld.d $fa0, $a0, %pc_lo12(.LCPI4_0)243; LA64-0-NEXT:    ret244;245; LA64-2-LABEL: f64_constant_ins3:246; LA64-2:       # %bb.0:247; LA64-2-NEXT:    pcalau12i $a0, %pc_hi20(.LCPI4_0)248; LA64-2-NEXT:    fld.d $fa0, $a0, %pc_lo12(.LCPI4_0)249; LA64-2-NEXT:    ret250;251; LA64-3-LABEL: f64_constant_ins3:252; LA64-3:       # %bb.0:253; LA64-3-NEXT:    pcalau12i $a0, %pc_hi20(.LCPI4_0)254; LA64-3-NEXT:    fld.d $fa0, $a0, %pc_lo12(.LCPI4_0)255; LA64-3-NEXT:    ret256;257; LA64-4-LABEL: f64_constant_ins3:258; LA64-4:       # %bb.0:259; LA64-4-NEXT:    lu12i.w $a0, -131072260; LA64-4-NEXT:    lu32i.d $a0, 340312261; LA64-4-NEXT:    lu52i.d $a0, $a0, 1047262; LA64-4-NEXT:    movgr2fr.d $fa0, $a0263; LA64-4-NEXT:    ret264;265; LA64-5-LABEL: f64_constant_ins3:266; LA64-5:       # %bb.0:267; LA64-5-NEXT:    lu12i.w $a0, -131072268; LA64-5-NEXT:    lu32i.d $a0, 340312269; LA64-5-NEXT:    lu52i.d $a0, $a0, 1047270; LA64-5-NEXT:    movgr2fr.d $fa0, $a0271; LA64-5-NEXT:    ret272  ret double 22222222.0273}274 275define double @f64_constant_pi() nounwind {276; LA32-0-LABEL: f64_constant_pi:277; LA32-0:       # %bb.0:278; LA32-0-NEXT:    pcalau12i $a0, %pc_hi20(.LCPI5_0)279; LA32-0-NEXT:    fld.d $fa0, $a0, %pc_lo12(.LCPI5_0)280; LA32-0-NEXT:    ret281;282; LA32-2-LABEL: f64_constant_pi:283; LA32-2:       # %bb.0:284; LA32-2-NEXT:    pcalau12i $a0, %pc_hi20(.LCPI5_0)285; LA32-2-NEXT:    fld.d $fa0, $a0, %pc_lo12(.LCPI5_0)286; LA32-2-NEXT:    ret287;288; LA32-3-LABEL: f64_constant_pi:289; LA32-3:       # %bb.0:290; LA32-3-NEXT:    pcalau12i $a0, %pc_hi20(.LCPI5_0)291; LA32-3-NEXT:    fld.d $fa0, $a0, %pc_lo12(.LCPI5_0)292; LA32-3-NEXT:    ret293;294; LA32-4-LABEL: f64_constant_pi:295; LA32-4:       # %bb.0:296; LA32-4-NEXT:    pcalau12i $a0, %pc_hi20(.LCPI5_0)297; LA32-4-NEXT:    fld.d $fa0, $a0, %pc_lo12(.LCPI5_0)298; LA32-4-NEXT:    ret299;300; LA32-5-LABEL: f64_constant_pi:301; LA32-5:       # %bb.0:302; LA32-5-NEXT:    pcalau12i $a0, %pc_hi20(.LCPI5_0)303; LA32-5-NEXT:    fld.d $fa0, $a0, %pc_lo12(.LCPI5_0)304; LA32-5-NEXT:    ret305;306; LA32-6-LABEL: f64_constant_pi:307; LA32-6:       # %bb.0:308; LA32-6-NEXT:    lu12i.w $a0, 262290309; LA32-6-NEXT:    ori $a0, $a0, 507310; LA32-6-NEXT:    lu12i.w $a1, 345154311; LA32-6-NEXT:    ori $a1, $a1, 3352312; LA32-6-NEXT:    movgr2fr.w $fa0, $a1313; LA32-6-NEXT:    movgr2frh.w $fa0, $a0314; LA32-6-NEXT:    ret315;316; LA64-0-LABEL: f64_constant_pi:317; LA64-0:       # %bb.0:318; LA64-0-NEXT:    pcalau12i $a0, %pc_hi20(.LCPI5_0)319; LA64-0-NEXT:    fld.d $fa0, $a0, %pc_lo12(.LCPI5_0)320; LA64-0-NEXT:    ret321;322; LA64-2-LABEL: f64_constant_pi:323; LA64-2:       # %bb.0:324; LA64-2-NEXT:    pcalau12i $a0, %pc_hi20(.LCPI5_0)325; LA64-2-NEXT:    fld.d $fa0, $a0, %pc_lo12(.LCPI5_0)326; LA64-2-NEXT:    ret327;328; LA64-3-LABEL: f64_constant_pi:329; LA64-3:       # %bb.0:330; LA64-3-NEXT:    pcalau12i $a0, %pc_hi20(.LCPI5_0)331; LA64-3-NEXT:    fld.d $fa0, $a0, %pc_lo12(.LCPI5_0)332; LA64-3-NEXT:    ret333;334; LA64-4-LABEL: f64_constant_pi:335; LA64-4:       # %bb.0:336; LA64-4-NEXT:    pcalau12i $a0, %pc_hi20(.LCPI5_0)337; LA64-4-NEXT:    fld.d $fa0, $a0, %pc_lo12(.LCPI5_0)338; LA64-4-NEXT:    ret339;340; LA64-5-LABEL: f64_constant_pi:341; LA64-5:       # %bb.0:342; LA64-5-NEXT:    lu12i.w $a0, 345154343; LA64-5-NEXT:    ori $a0, $a0, 3352344; LA64-5-NEXT:    lu32i.d $a0, -450053345; LA64-5-NEXT:    lu52i.d $a0, $a0, 1024346; LA64-5-NEXT:    movgr2fr.d $fa0, $a0347; LA64-5-NEXT:    ret348  ret double 3.1415926535897931159979634685441851615905761718750349}350 351define double @f64_add_fimm1(double %a) nounwind {352; LA32-LABEL: f64_add_fimm1:353; LA32:       # %bb.0:354; LA32-NEXT:    movgr2fr.w $fa1, $zero355; LA32-NEXT:    lu12i.w $a0, 261888356; LA32-NEXT:    movgr2frh.w $fa1, $a0357; LA32-NEXT:    fadd.d $fa0, $fa0, $fa1358; LA32-NEXT:    ret359;360; LA64-LABEL: f64_add_fimm1:361; LA64:       # %bb.0:362; LA64-NEXT:    vldi $vr1, -912363; LA64-NEXT:    fadd.d $fa0, $fa0, $fa1364; LA64-NEXT:    ret365  %1 = fadd double %a, 1.0366  ret double %1367}368 369define double @f64_positive_fimm1() nounwind {370; LA32-LABEL: f64_positive_fimm1:371; LA32:       # %bb.0:372; LA32-NEXT:    movgr2fr.w $fa0, $zero373; LA32-NEXT:    lu12i.w $a0, 261888374; LA32-NEXT:    movgr2frh.w $fa0, $a0375; LA32-NEXT:    ret376;377; LA64-LABEL: f64_positive_fimm1:378; LA64:       # %bb.0:379; LA64-NEXT:    vldi $vr0, -912380; LA64-NEXT:    ret381  ret double 1.0382}383