brintos

brintos / llvm-project-archived public Read only

0
0
Text · 32.6 KiB · 16c9e75 Raw
895 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc --mtriple=loongarch32 --mattr=+f,-d < %s | FileCheck %s --check-prefix=LA32F3; RUN: llc --mtriple=loongarch32 --mattr=+d < %s | FileCheck %s --check-prefix=LA32D4; RUN: llc --mtriple=loongarch64 --mattr=+f,-d < %s | FileCheck %s --check-prefix=LA64F5; RUN: llc --mtriple=loongarch64 --mattr=+d < %s | FileCheck %s --check-prefix=LA64D6 7;; TODO: Merge the offset of address calculation into the offset field of instructions.8 9%f2 = type <2 x float>10%f4 = type <4 x float>11%f8 = type <8 x float>12%d2 = type <2 x double>13%d4 = type <4 x double>14%d8 = type <8 x double>15 16define void @test_zero(ptr %P, ptr %S) nounwind {17; LA32F-LABEL: test_zero:18; LA32F:       # %bb.0:19; LA32F-NEXT:    fld.s $fa0, $a0, 1220; LA32F-NEXT:    fld.s $fa1, $a0, 021; LA32F-NEXT:    fld.s $fa2, $a0, 422; LA32F-NEXT:    fld.s $fa3, $a0, 823; LA32F-NEXT:    movgr2fr.w $fa4, $zero24; LA32F-NEXT:    fadd.s $fa1, $fa1, $fa425; LA32F-NEXT:    fadd.s $fa2, $fa2, $fa426; LA32F-NEXT:    fadd.s $fa3, $fa3, $fa427; LA32F-NEXT:    fadd.s $fa0, $fa0, $fa428; LA32F-NEXT:    fst.s $fa0, $a1, 1229; LA32F-NEXT:    fst.s $fa3, $a1, 830; LA32F-NEXT:    fst.s $fa2, $a1, 431; LA32F-NEXT:    fst.s $fa1, $a1, 032; LA32F-NEXT:    ret33;34; LA32D-LABEL: test_zero:35; LA32D:       # %bb.0:36; LA32D-NEXT:    fld.s $fa0, $a0, 1237; LA32D-NEXT:    fld.s $fa1, $a0, 038; LA32D-NEXT:    fld.s $fa2, $a0, 439; LA32D-NEXT:    fld.s $fa3, $a0, 840; LA32D-NEXT:    movgr2fr.w $fa4, $zero41; LA32D-NEXT:    fadd.s $fa1, $fa1, $fa442; LA32D-NEXT:    fadd.s $fa2, $fa2, $fa443; LA32D-NEXT:    fadd.s $fa3, $fa3, $fa444; LA32D-NEXT:    fadd.s $fa0, $fa0, $fa445; LA32D-NEXT:    fst.s $fa0, $a1, 1246; LA32D-NEXT:    fst.s $fa3, $a1, 847; LA32D-NEXT:    fst.s $fa2, $a1, 448; LA32D-NEXT:    fst.s $fa1, $a1, 049; LA32D-NEXT:    ret50;51; LA64F-LABEL: test_zero:52; LA64F:       # %bb.0:53; LA64F-NEXT:    fld.s $fa0, $a0, 1254; LA64F-NEXT:    fld.s $fa1, $a0, 055; LA64F-NEXT:    fld.s $fa2, $a0, 456; LA64F-NEXT:    fld.s $fa3, $a0, 857; LA64F-NEXT:    movgr2fr.w $fa4, $zero58; LA64F-NEXT:    fadd.s $fa1, $fa1, $fa459; LA64F-NEXT:    fadd.s $fa2, $fa2, $fa460; LA64F-NEXT:    fadd.s $fa3, $fa3, $fa461; LA64F-NEXT:    fadd.s $fa0, $fa0, $fa462; LA64F-NEXT:    fst.s $fa0, $a1, 1263; LA64F-NEXT:    fst.s $fa3, $a1, 864; LA64F-NEXT:    fst.s $fa2, $a1, 465; LA64F-NEXT:    fst.s $fa1, $a1, 066; LA64F-NEXT:    ret67;68; LA64D-LABEL: test_zero:69; LA64D:       # %bb.0:70; LA64D-NEXT:    vld $vr0, $a0, 071; LA64D-NEXT:    vrepli.b $vr1, 072; LA64D-NEXT:    vfadd.s $vr0, $vr0, $vr173; LA64D-NEXT:    vst $vr0, $a1, 074; LA64D-NEXT:    ret75  %p = load %f4, ptr %P76  %R = fadd %f4 %p, zeroinitializer77  store %f4 %R, ptr %S78  ret void79}80 81define void @test_f2(ptr %P, ptr %S) nounwind {82; LA32F-LABEL: test_f2:83; LA32F:       # %bb.0:84; LA32F-NEXT:    fld.s $fa0, $a0, 085; LA32F-NEXT:    fld.s $fa1, $a0, 486; LA32F-NEXT:    lu12i.w $a0, 26009687; LA32F-NEXT:    movgr2fr.w $fa2, $a088; LA32F-NEXT:    fadd.s $fa0, $fa0, $fa289; LA32F-NEXT:    lu12i.w $a0, 26214490; LA32F-NEXT:    movgr2fr.w $fa2, $a091; LA32F-NEXT:    fadd.s $fa1, $fa1, $fa292; LA32F-NEXT:    fst.s $fa1, $a1, 493; LA32F-NEXT:    fst.s $fa0, $a1, 094; LA32F-NEXT:    ret95;96; LA32D-LABEL: test_f2:97; LA32D:       # %bb.0:98; LA32D-NEXT:    fld.s $fa0, $a0, 099; LA32D-NEXT:    fld.s $fa1, $a0, 4100; LA32D-NEXT:    lu12i.w $a0, 260096101; LA32D-NEXT:    movgr2fr.w $fa2, $a0102; LA32D-NEXT:    fadd.s $fa0, $fa0, $fa2103; LA32D-NEXT:    lu12i.w $a0, 262144104; LA32D-NEXT:    movgr2fr.w $fa2, $a0105; LA32D-NEXT:    fadd.s $fa1, $fa1, $fa2106; LA32D-NEXT:    fst.s $fa1, $a1, 4107; LA32D-NEXT:    fst.s $fa0, $a1, 0108; LA32D-NEXT:    ret109;110; LA64F-LABEL: test_f2:111; LA64F:       # %bb.0:112; LA64F-NEXT:    fld.s $fa0, $a0, 0113; LA64F-NEXT:    fld.s $fa1, $a0, 4114; LA64F-NEXT:    lu12i.w $a0, 260096115; LA64F-NEXT:    movgr2fr.w $fa2, $a0116; LA64F-NEXT:    fadd.s $fa0, $fa0, $fa2117; LA64F-NEXT:    lu12i.w $a0, 262144118; LA64F-NEXT:    movgr2fr.w $fa2, $a0119; LA64F-NEXT:    fadd.s $fa1, $fa1, $fa2120; LA64F-NEXT:    fst.s $fa1, $a1, 4121; LA64F-NEXT:    fst.s $fa0, $a1, 0122; LA64F-NEXT:    ret123;124; LA64D-LABEL: test_f2:125; LA64D:       # %bb.0:126; LA64D-NEXT:    ld.d $a0, $a0, 0127; LA64D-NEXT:    vinsgr2vr.d $vr0, $a0, 0128; LA64D-NEXT:    lu12i.w $a0, 260096129; LA64D-NEXT:    lu52i.d $a0, $a0, 1024130; LA64D-NEXT:    vreplgr2vr.d $vr1, $a0131; LA64D-NEXT:    vfadd.s $vr0, $vr0, $vr1132; LA64D-NEXT:    vstelm.d $vr0, $a1, 0, 0133; LA64D-NEXT:    ret134  %p = load %f2, ptr %P135  %R = fadd %f2 %p, < float 1.000000e+00, float 2.000000e+00 >136  store %f2 %R, ptr %S137  ret void138}139 140define void @test_f4(ptr %P, ptr %S) nounwind {141; LA32F-LABEL: test_f4:142; LA32F:       # %bb.0:143; LA32F-NEXT:    fld.s $fa0, $a0, 12144; LA32F-NEXT:    fld.s $fa1, $a0, 8145; LA32F-NEXT:    fld.s $fa2, $a0, 0146; LA32F-NEXT:    fld.s $fa3, $a0, 4147; LA32F-NEXT:    lu12i.w $a0, 260096148; LA32F-NEXT:    movgr2fr.w $fa4, $a0149; LA32F-NEXT:    fadd.s $fa2, $fa2, $fa4150; LA32F-NEXT:    lu12i.w $a0, 262144151; LA32F-NEXT:    movgr2fr.w $fa4, $a0152; LA32F-NEXT:    fadd.s $fa3, $fa3, $fa4153; LA32F-NEXT:    lu12i.w $a0, 263168154; LA32F-NEXT:    movgr2fr.w $fa4, $a0155; LA32F-NEXT:    fadd.s $fa1, $fa1, $fa4156; LA32F-NEXT:    lu12i.w $a0, 264192157; LA32F-NEXT:    movgr2fr.w $fa4, $a0158; LA32F-NEXT:    fadd.s $fa0, $fa0, $fa4159; LA32F-NEXT:    fst.s $fa0, $a1, 12160; LA32F-NEXT:    fst.s $fa1, $a1, 8161; LA32F-NEXT:    fst.s $fa3, $a1, 4162; LA32F-NEXT:    fst.s $fa2, $a1, 0163; LA32F-NEXT:    ret164;165; LA32D-LABEL: test_f4:166; LA32D:       # %bb.0:167; LA32D-NEXT:    fld.s $fa0, $a0, 12168; LA32D-NEXT:    fld.s $fa1, $a0, 8169; LA32D-NEXT:    fld.s $fa2, $a0, 0170; LA32D-NEXT:    fld.s $fa3, $a0, 4171; LA32D-NEXT:    lu12i.w $a0, 260096172; LA32D-NEXT:    movgr2fr.w $fa4, $a0173; LA32D-NEXT:    fadd.s $fa2, $fa2, $fa4174; LA32D-NEXT:    lu12i.w $a0, 262144175; LA32D-NEXT:    movgr2fr.w $fa4, $a0176; LA32D-NEXT:    fadd.s $fa3, $fa3, $fa4177; LA32D-NEXT:    lu12i.w $a0, 263168178; LA32D-NEXT:    movgr2fr.w $fa4, $a0179; LA32D-NEXT:    fadd.s $fa1, $fa1, $fa4180; LA32D-NEXT:    lu12i.w $a0, 264192181; LA32D-NEXT:    movgr2fr.w $fa4, $a0182; LA32D-NEXT:    fadd.s $fa0, $fa0, $fa4183; LA32D-NEXT:    fst.s $fa0, $a1, 12184; LA32D-NEXT:    fst.s $fa1, $a1, 8185; LA32D-NEXT:    fst.s $fa3, $a1, 4186; LA32D-NEXT:    fst.s $fa2, $a1, 0187; LA32D-NEXT:    ret188;189; LA64F-LABEL: test_f4:190; LA64F:       # %bb.0:191; LA64F-NEXT:    fld.s $fa0, $a0, 12192; LA64F-NEXT:    fld.s $fa1, $a0, 8193; LA64F-NEXT:    fld.s $fa2, $a0, 0194; LA64F-NEXT:    fld.s $fa3, $a0, 4195; LA64F-NEXT:    lu12i.w $a0, 260096196; LA64F-NEXT:    movgr2fr.w $fa4, $a0197; LA64F-NEXT:    fadd.s $fa2, $fa2, $fa4198; LA64F-NEXT:    lu12i.w $a0, 262144199; LA64F-NEXT:    movgr2fr.w $fa4, $a0200; LA64F-NEXT:    fadd.s $fa3, $fa3, $fa4201; LA64F-NEXT:    lu12i.w $a0, 263168202; LA64F-NEXT:    movgr2fr.w $fa4, $a0203; LA64F-NEXT:    fadd.s $fa1, $fa1, $fa4204; LA64F-NEXT:    lu12i.w $a0, 264192205; LA64F-NEXT:    movgr2fr.w $fa4, $a0206; LA64F-NEXT:    fadd.s $fa0, $fa0, $fa4207; LA64F-NEXT:    fst.s $fa0, $a1, 12208; LA64F-NEXT:    fst.s $fa1, $a1, 8209; LA64F-NEXT:    fst.s $fa3, $a1, 4210; LA64F-NEXT:    fst.s $fa2, $a1, 0211; LA64F-NEXT:    ret212;213; LA64D-LABEL: test_f4:214; LA64D:       # %bb.0:215; LA64D-NEXT:    vld $vr0, $a0, 0216; LA64D-NEXT:    pcalau12i $a0, %pc_hi20(.LCPI2_0)217; LA64D-NEXT:    vld $vr1, $a0, %pc_lo12(.LCPI2_0)218; LA64D-NEXT:    vfadd.s $vr0, $vr0, $vr1219; LA64D-NEXT:    vst $vr0, $a1, 0220; LA64D-NEXT:    ret221  %p = load %f4, ptr %P222  %R = fadd %f4 %p, < float 1.000000e+00, float 2.000000e+00, float 3.000000e+00, float 4.000000e+00 >223  store %f4 %R, ptr %S224  ret void225}226 227define void @test_f8(ptr %P, ptr %S) nounwind {228; LA32F-LABEL: test_f8:229; LA32F:       # %bb.0:230; LA32F-NEXT:    fld.s $fa0, $a0, 28231; LA32F-NEXT:    fld.s $fa1, $a0, 24232; LA32F-NEXT:    fld.s $fa2, $a0, 20233; LA32F-NEXT:    fld.s $fa3, $a0, 16234; LA32F-NEXT:    fld.s $fa4, $a0, 12235; LA32F-NEXT:    fld.s $fa5, $a0, 8236; LA32F-NEXT:    fld.s $fa6, $a0, 0237; LA32F-NEXT:    fld.s $fa7, $a0, 4238; LA32F-NEXT:    lu12i.w $a0, 260096239; LA32F-NEXT:    movgr2fr.w $ft0, $a0240; LA32F-NEXT:    fadd.s $fa6, $fa6, $ft0241; LA32F-NEXT:    lu12i.w $a0, 262144242; LA32F-NEXT:    movgr2fr.w $ft1, $a0243; LA32F-NEXT:    fadd.s $fa7, $fa7, $ft1244; LA32F-NEXT:    lu12i.w $a0, 263168245; LA32F-NEXT:    movgr2fr.w $ft2, $a0246; LA32F-NEXT:    fadd.s $fa5, $fa5, $ft2247; LA32F-NEXT:    lu12i.w $a0, 264192248; LA32F-NEXT:    movgr2fr.w $ft3, $a0249; LA32F-NEXT:    fadd.s $fa4, $fa4, $ft3250; LA32F-NEXT:    fadd.s $fa3, $fa3, $ft0251; LA32F-NEXT:    fadd.s $fa2, $fa2, $ft1252; LA32F-NEXT:    fadd.s $fa1, $fa1, $ft2253; LA32F-NEXT:    fadd.s $fa0, $fa0, $ft3254; LA32F-NEXT:    fst.s $fa0, $a1, 28255; LA32F-NEXT:    fst.s $fa1, $a1, 24256; LA32F-NEXT:    fst.s $fa2, $a1, 20257; LA32F-NEXT:    fst.s $fa3, $a1, 16258; LA32F-NEXT:    fst.s $fa4, $a1, 12259; LA32F-NEXT:    fst.s $fa5, $a1, 8260; LA32F-NEXT:    fst.s $fa7, $a1, 4261; LA32F-NEXT:    fst.s $fa6, $a1, 0262; LA32F-NEXT:    ret263;264; LA32D-LABEL: test_f8:265; LA32D:       # %bb.0:266; LA32D-NEXT:    fld.s $fa0, $a0, 28267; LA32D-NEXT:    fld.s $fa1, $a0, 24268; LA32D-NEXT:    fld.s $fa2, $a0, 20269; LA32D-NEXT:    fld.s $fa3, $a0, 16270; LA32D-NEXT:    fld.s $fa4, $a0, 12271; LA32D-NEXT:    fld.s $fa5, $a0, 8272; LA32D-NEXT:    fld.s $fa6, $a0, 0273; LA32D-NEXT:    fld.s $fa7, $a0, 4274; LA32D-NEXT:    lu12i.w $a0, 260096275; LA32D-NEXT:    movgr2fr.w $ft0, $a0276; LA32D-NEXT:    fadd.s $fa6, $fa6, $ft0277; LA32D-NEXT:    lu12i.w $a0, 262144278; LA32D-NEXT:    movgr2fr.w $ft1, $a0279; LA32D-NEXT:    fadd.s $fa7, $fa7, $ft1280; LA32D-NEXT:    lu12i.w $a0, 263168281; LA32D-NEXT:    movgr2fr.w $ft2, $a0282; LA32D-NEXT:    fadd.s $fa5, $fa5, $ft2283; LA32D-NEXT:    lu12i.w $a0, 264192284; LA32D-NEXT:    movgr2fr.w $ft3, $a0285; LA32D-NEXT:    fadd.s $fa4, $fa4, $ft3286; LA32D-NEXT:    fadd.s $fa3, $fa3, $ft0287; LA32D-NEXT:    fadd.s $fa2, $fa2, $ft1288; LA32D-NEXT:    fadd.s $fa1, $fa1, $ft2289; LA32D-NEXT:    fadd.s $fa0, $fa0, $ft3290; LA32D-NEXT:    fst.s $fa0, $a1, 28291; LA32D-NEXT:    fst.s $fa1, $a1, 24292; LA32D-NEXT:    fst.s $fa2, $a1, 20293; LA32D-NEXT:    fst.s $fa3, $a1, 16294; LA32D-NEXT:    fst.s $fa4, $a1, 12295; LA32D-NEXT:    fst.s $fa5, $a1, 8296; LA32D-NEXT:    fst.s $fa7, $a1, 4297; LA32D-NEXT:    fst.s $fa6, $a1, 0298; LA32D-NEXT:    ret299;300; LA64F-LABEL: test_f8:301; LA64F:       # %bb.0:302; LA64F-NEXT:    fld.s $fa0, $a0, 28303; LA64F-NEXT:    fld.s $fa1, $a0, 24304; LA64F-NEXT:    fld.s $fa2, $a0, 20305; LA64F-NEXT:    fld.s $fa3, $a0, 16306; LA64F-NEXT:    fld.s $fa4, $a0, 12307; LA64F-NEXT:    fld.s $fa5, $a0, 8308; LA64F-NEXT:    fld.s $fa6, $a0, 0309; LA64F-NEXT:    fld.s $fa7, $a0, 4310; LA64F-NEXT:    lu12i.w $a0, 260096311; LA64F-NEXT:    movgr2fr.w $ft0, $a0312; LA64F-NEXT:    fadd.s $fa6, $fa6, $ft0313; LA64F-NEXT:    lu12i.w $a0, 262144314; LA64F-NEXT:    movgr2fr.w $ft1, $a0315; LA64F-NEXT:    fadd.s $fa7, $fa7, $ft1316; LA64F-NEXT:    lu12i.w $a0, 263168317; LA64F-NEXT:    movgr2fr.w $ft2, $a0318; LA64F-NEXT:    fadd.s $fa5, $fa5, $ft2319; LA64F-NEXT:    lu12i.w $a0, 264192320; LA64F-NEXT:    movgr2fr.w $ft3, $a0321; LA64F-NEXT:    fadd.s $fa4, $fa4, $ft3322; LA64F-NEXT:    fadd.s $fa3, $fa3, $ft0323; LA64F-NEXT:    fadd.s $fa2, $fa2, $ft1324; LA64F-NEXT:    fadd.s $fa1, $fa1, $ft2325; LA64F-NEXT:    fadd.s $fa0, $fa0, $ft3326; LA64F-NEXT:    fst.s $fa0, $a1, 28327; LA64F-NEXT:    fst.s $fa1, $a1, 24328; LA64F-NEXT:    fst.s $fa2, $a1, 20329; LA64F-NEXT:    fst.s $fa3, $a1, 16330; LA64F-NEXT:    fst.s $fa4, $a1, 12331; LA64F-NEXT:    fst.s $fa5, $a1, 8332; LA64F-NEXT:    fst.s $fa7, $a1, 4333; LA64F-NEXT:    fst.s $fa6, $a1, 0334; LA64F-NEXT:    ret335;336; LA64D-LABEL: test_f8:337; LA64D:       # %bb.0:338; LA64D-NEXT:    vld $vr0, $a0, 16339; LA64D-NEXT:    pcalau12i $a2, %pc_hi20(.LCPI3_0)340; LA64D-NEXT:    vld $vr1, $a2, %pc_lo12(.LCPI3_0)341; LA64D-NEXT:    vld $vr2, $a0, 0342; LA64D-NEXT:    vfadd.s $vr0, $vr0, $vr1343; LA64D-NEXT:    vfadd.s $vr1, $vr2, $vr1344; LA64D-NEXT:    vst $vr1, $a1, 0345; LA64D-NEXT:    vst $vr0, $a1, 16346; LA64D-NEXT:    ret347  %p = load %f8, ptr %P348  %R = fadd %f8 %p, < float 1.000000e+00, float 2.000000e+00, float 3.000000e+00, float 4.000000e+00, float 1.000000e+00, float 2.000000e+00, float 3.000000e+00, float 4.000000e+00 >349  store %f8 %R, ptr %S350  ret void351}352 353define void @test_d2(ptr %P, ptr %S) nounwind {354; LA32F-LABEL: test_d2:355; LA32F:       # %bb.0:356; LA32F-NEXT:    addi.w $sp, $sp, -32357; LA32F-NEXT:    st.w $ra, $sp, 28 # 4-byte Folded Spill358; LA32F-NEXT:    st.w $fp, $sp, 24 # 4-byte Folded Spill359; LA32F-NEXT:    st.w $s0, $sp, 20 # 4-byte Folded Spill360; LA32F-NEXT:    st.w $s1, $sp, 16 # 4-byte Folded Spill361; LA32F-NEXT:    st.w $s2, $sp, 12 # 4-byte Folded Spill362; LA32F-NEXT:    st.w $s3, $sp, 8 # 4-byte Folded Spill363; LA32F-NEXT:    ld.w $fp, $a0, 8364; LA32F-NEXT:    ld.w $s0, $a0, 12365; LA32F-NEXT:    ld.w $a2, $a0, 0366; LA32F-NEXT:    ld.w $a4, $a0, 4367; LA32F-NEXT:    move $s1, $a1368; LA32F-NEXT:    lu12i.w $a3, 261888369; LA32F-NEXT:    move $a0, $a2370; LA32F-NEXT:    move $a1, $a4371; LA32F-NEXT:    move $a2, $zero372; LA32F-NEXT:    bl __adddf3373; LA32F-NEXT:    move $s2, $a0374; LA32F-NEXT:    move $s3, $a1375; LA32F-NEXT:    lu12i.w $a3, 262144376; LA32F-NEXT:    move $a0, $fp377; LA32F-NEXT:    move $a1, $s0378; LA32F-NEXT:    move $a2, $zero379; LA32F-NEXT:    bl __adddf3380; LA32F-NEXT:    st.w $a0, $s1, 8381; LA32F-NEXT:    st.w $a1, $s1, 12382; LA32F-NEXT:    st.w $s2, $s1, 0383; LA32F-NEXT:    st.w $s3, $s1, 4384; LA32F-NEXT:    ld.w $s3, $sp, 8 # 4-byte Folded Reload385; LA32F-NEXT:    ld.w $s2, $sp, 12 # 4-byte Folded Reload386; LA32F-NEXT:    ld.w $s1, $sp, 16 # 4-byte Folded Reload387; LA32F-NEXT:    ld.w $s0, $sp, 20 # 4-byte Folded Reload388; LA32F-NEXT:    ld.w $fp, $sp, 24 # 4-byte Folded Reload389; LA32F-NEXT:    ld.w $ra, $sp, 28 # 4-byte Folded Reload390; LA32F-NEXT:    addi.w $sp, $sp, 32391; LA32F-NEXT:    ret392;393; LA32D-LABEL: test_d2:394; LA32D:       # %bb.0:395; LA32D-NEXT:    fld.d $fa0, $a0, 8396; LA32D-NEXT:    fld.d $fa1, $a0, 0397; LA32D-NEXT:    movgr2fr.w $fa2, $zero398; LA32D-NEXT:    lu12i.w $a0, 261888399; LA32D-NEXT:    fmov.d $fa3, $fa2400; LA32D-NEXT:    movgr2frh.w $fa3, $a0401; LA32D-NEXT:    fadd.d $fa1, $fa1, $fa3402; LA32D-NEXT:    lu12i.w $a0, 262144403; LA32D-NEXT:    movgr2frh.w $fa2, $a0404; LA32D-NEXT:    fadd.d $fa0, $fa0, $fa2405; LA32D-NEXT:    fst.d $fa0, $a1, 8406; LA32D-NEXT:    fst.d $fa1, $a1, 0407; LA32D-NEXT:    ret408;409; LA64F-LABEL: test_d2:410; LA64F:       # %bb.0:411; LA64F-NEXT:    addi.d $sp, $sp, -32412; LA64F-NEXT:    st.d $ra, $sp, 24 # 8-byte Folded Spill413; LA64F-NEXT:    st.d $fp, $sp, 16 # 8-byte Folded Spill414; LA64F-NEXT:    st.d $s0, $sp, 8 # 8-byte Folded Spill415; LA64F-NEXT:    st.d $s1, $sp, 0 # 8-byte Folded Spill416; LA64F-NEXT:    ld.d $fp, $a0, 8417; LA64F-NEXT:    ld.d $a0, $a0, 0418; LA64F-NEXT:    move $s0, $a1419; LA64F-NEXT:    lu52i.d $a1, $zero, 1023420; LA64F-NEXT:    pcaddu18i $ra, %call36(__adddf3)421; LA64F-NEXT:    jirl $ra, $ra, 0422; LA64F-NEXT:    move $s1, $a0423; LA64F-NEXT:    lu52i.d $a1, $zero, 1024424; LA64F-NEXT:    move $a0, $fp425; LA64F-NEXT:    pcaddu18i $ra, %call36(__adddf3)426; LA64F-NEXT:    jirl $ra, $ra, 0427; LA64F-NEXT:    st.d $a0, $s0, 8428; LA64F-NEXT:    st.d $s1, $s0, 0429; LA64F-NEXT:    ld.d $s1, $sp, 0 # 8-byte Folded Reload430; LA64F-NEXT:    ld.d $s0, $sp, 8 # 8-byte Folded Reload431; LA64F-NEXT:    ld.d $fp, $sp, 16 # 8-byte Folded Reload432; LA64F-NEXT:    ld.d $ra, $sp, 24 # 8-byte Folded Reload433; LA64F-NEXT:    addi.d $sp, $sp, 32434; LA64F-NEXT:    ret435;436; LA64D-LABEL: test_d2:437; LA64D:       # %bb.0:438; LA64D-NEXT:    vld $vr0, $a0, 0439; LA64D-NEXT:    pcalau12i $a0, %pc_hi20(.LCPI4_0)440; LA64D-NEXT:    vld $vr1, $a0, %pc_lo12(.LCPI4_0)441; LA64D-NEXT:    vfadd.d $vr0, $vr0, $vr1442; LA64D-NEXT:    vst $vr0, $a1, 0443; LA64D-NEXT:    ret444  %p = load %d2, ptr %P445  %R = fadd %d2 %p, < double 1.000000e+00, double 2.000000e+00 >446  store %d2 %R, ptr %S447  ret void448}449 450define void @test_d4(ptr %P, ptr %S) nounwind {451; LA32F-LABEL: test_d4:452; LA32F:       # %bb.0:453; LA32F-NEXT:    addi.w $sp, $sp, -48454; LA32F-NEXT:    st.w $ra, $sp, 44 # 4-byte Folded Spill455; LA32F-NEXT:    st.w $fp, $sp, 40 # 4-byte Folded Spill456; LA32F-NEXT:    st.w $s0, $sp, 36 # 4-byte Folded Spill457; LA32F-NEXT:    st.w $s1, $sp, 32 # 4-byte Folded Spill458; LA32F-NEXT:    st.w $s2, $sp, 28 # 4-byte Folded Spill459; LA32F-NEXT:    st.w $s3, $sp, 24 # 4-byte Folded Spill460; LA32F-NEXT:    st.w $s4, $sp, 20 # 4-byte Folded Spill461; LA32F-NEXT:    st.w $s5, $sp, 16 # 4-byte Folded Spill462; LA32F-NEXT:    st.w $s6, $sp, 12 # 4-byte Folded Spill463; LA32F-NEXT:    st.w $s7, $sp, 8 # 4-byte Folded Spill464; LA32F-NEXT:    ld.w $fp, $a0, 24465; LA32F-NEXT:    ld.w $s0, $a0, 28466; LA32F-NEXT:    ld.w $s1, $a0, 16467; LA32F-NEXT:    ld.w $s2, $a0, 20468; LA32F-NEXT:    ld.w $s3, $a0, 8469; LA32F-NEXT:    ld.w $s4, $a0, 12470; LA32F-NEXT:    ld.w $a2, $a0, 0471; LA32F-NEXT:    ld.w $a4, $a0, 4472; LA32F-NEXT:    move $s5, $a1473; LA32F-NEXT:    lu12i.w $a3, 261888474; LA32F-NEXT:    move $a0, $a2475; LA32F-NEXT:    move $a1, $a4476; LA32F-NEXT:    move $a2, $zero477; LA32F-NEXT:    bl __adddf3478; LA32F-NEXT:    move $s6, $a0479; LA32F-NEXT:    move $s7, $a1480; LA32F-NEXT:    lu12i.w $a3, 262144481; LA32F-NEXT:    move $a0, $s3482; LA32F-NEXT:    move $a1, $s4483; LA32F-NEXT:    move $a2, $zero484; LA32F-NEXT:    bl __adddf3485; LA32F-NEXT:    move $s3, $a0486; LA32F-NEXT:    move $s4, $a1487; LA32F-NEXT:    lu12i.w $a3, 262272488; LA32F-NEXT:    move $a0, $s1489; LA32F-NEXT:    move $a1, $s2490; LA32F-NEXT:    move $a2, $zero491; LA32F-NEXT:    bl __adddf3492; LA32F-NEXT:    move $s1, $a0493; LA32F-NEXT:    move $s2, $a1494; LA32F-NEXT:    lu12i.w $a3, 262400495; LA32F-NEXT:    move $a0, $fp496; LA32F-NEXT:    move $a1, $s0497; LA32F-NEXT:    move $a2, $zero498; LA32F-NEXT:    bl __adddf3499; LA32F-NEXT:    st.w $a0, $s5, 24500; LA32F-NEXT:    st.w $a1, $s5, 28501; LA32F-NEXT:    st.w $s1, $s5, 16502; LA32F-NEXT:    st.w $s2, $s5, 20503; LA32F-NEXT:    st.w $s3, $s5, 8504; LA32F-NEXT:    st.w $s4, $s5, 12505; LA32F-NEXT:    st.w $s6, $s5, 0506; LA32F-NEXT:    st.w $s7, $s5, 4507; LA32F-NEXT:    ld.w $s7, $sp, 8 # 4-byte Folded Reload508; LA32F-NEXT:    ld.w $s6, $sp, 12 # 4-byte Folded Reload509; LA32F-NEXT:    ld.w $s5, $sp, 16 # 4-byte Folded Reload510; LA32F-NEXT:    ld.w $s4, $sp, 20 # 4-byte Folded Reload511; LA32F-NEXT:    ld.w $s3, $sp, 24 # 4-byte Folded Reload512; LA32F-NEXT:    ld.w $s2, $sp, 28 # 4-byte Folded Reload513; LA32F-NEXT:    ld.w $s1, $sp, 32 # 4-byte Folded Reload514; LA32F-NEXT:    ld.w $s0, $sp, 36 # 4-byte Folded Reload515; LA32F-NEXT:    ld.w $fp, $sp, 40 # 4-byte Folded Reload516; LA32F-NEXT:    ld.w $ra, $sp, 44 # 4-byte Folded Reload517; LA32F-NEXT:    addi.w $sp, $sp, 48518; LA32F-NEXT:    ret519;520; LA32D-LABEL: test_d4:521; LA32D:       # %bb.0:522; LA32D-NEXT:    fld.d $fa0, $a0, 16523; LA32D-NEXT:    fld.d $fa1, $a0, 24524; LA32D-NEXT:    fld.d $fa2, $a0, 8525; LA32D-NEXT:    fld.d $fa3, $a0, 0526; LA32D-NEXT:    movgr2fr.w $fa4, $zero527; LA32D-NEXT:    lu12i.w $a0, 261888528; LA32D-NEXT:    fmov.d $fa5, $fa4529; LA32D-NEXT:    movgr2frh.w $fa5, $a0530; LA32D-NEXT:    fadd.d $fa3, $fa3, $fa5531; LA32D-NEXT:    lu12i.w $a0, 262144532; LA32D-NEXT:    fmov.d $fa5, $fa4533; LA32D-NEXT:    movgr2frh.w $fa5, $a0534; LA32D-NEXT:    fadd.d $fa2, $fa2, $fa5535; LA32D-NEXT:    pcalau12i $a0, %pc_hi20(.LCPI5_0)536; LA32D-NEXT:    fld.d $fa5, $a0, %pc_lo12(.LCPI5_0)537; LA32D-NEXT:    lu12i.w $a0, 262400538; LA32D-NEXT:    movgr2frh.w $fa4, $a0539; LA32D-NEXT:    fadd.d $fa1, $fa1, $fa4540; LA32D-NEXT:    fadd.d $fa0, $fa0, $fa5541; LA32D-NEXT:    fst.d $fa0, $a1, 16542; LA32D-NEXT:    fst.d $fa1, $a1, 24543; LA32D-NEXT:    fst.d $fa2, $a1, 8544; LA32D-NEXT:    fst.d $fa3, $a1, 0545; LA32D-NEXT:    ret546;547; LA64F-LABEL: test_d4:548; LA64F:       # %bb.0:549; LA64F-NEXT:    addi.d $sp, $sp, -48550; LA64F-NEXT:    st.d $ra, $sp, 40 # 8-byte Folded Spill551; LA64F-NEXT:    st.d $fp, $sp, 32 # 8-byte Folded Spill552; LA64F-NEXT:    st.d $s0, $sp, 24 # 8-byte Folded Spill553; LA64F-NEXT:    st.d $s1, $sp, 16 # 8-byte Folded Spill554; LA64F-NEXT:    st.d $s2, $sp, 8 # 8-byte Folded Spill555; LA64F-NEXT:    st.d $s3, $sp, 0 # 8-byte Folded Spill556; LA64F-NEXT:    ld.d $fp, $a0, 24557; LA64F-NEXT:    ld.d $s0, $a0, 8558; LA64F-NEXT:    ld.d $s1, $a0, 0559; LA64F-NEXT:    ld.d $a0, $a0, 16560; LA64F-NEXT:    move $s2, $a1561; LA64F-NEXT:    ori $a1, $zero, 0562; LA64F-NEXT:    lu32i.d $a1, -524288563; LA64F-NEXT:    lu52i.d $a1, $a1, 1024564; LA64F-NEXT:    pcaddu18i $ra, %call36(__adddf3)565; LA64F-NEXT:    jirl $ra, $ra, 0566; LA64F-NEXT:    move $s3, $a0567; LA64F-NEXT:    lu52i.d $a1, $zero, 1023568; LA64F-NEXT:    move $a0, $s1569; LA64F-NEXT:    pcaddu18i $ra, %call36(__adddf3)570; LA64F-NEXT:    jirl $ra, $ra, 0571; LA64F-NEXT:    move $s1, $a0572; LA64F-NEXT:    lu52i.d $a1, $zero, 1024573; LA64F-NEXT:    move $a0, $s0574; LA64F-NEXT:    pcaddu18i $ra, %call36(__adddf3)575; LA64F-NEXT:    jirl $ra, $ra, 0576; LA64F-NEXT:    move $s0, $a0577; LA64F-NEXT:    lu52i.d $a1, $zero, 1025578; LA64F-NEXT:    move $a0, $fp579; LA64F-NEXT:    pcaddu18i $ra, %call36(__adddf3)580; LA64F-NEXT:    jirl $ra, $ra, 0581; LA64F-NEXT:    st.d $a0, $s2, 24582; LA64F-NEXT:    st.d $s0, $s2, 8583; LA64F-NEXT:    st.d $s1, $s2, 0584; LA64F-NEXT:    st.d $s3, $s2, 16585; LA64F-NEXT:    ld.d $s3, $sp, 0 # 8-byte Folded Reload586; LA64F-NEXT:    ld.d $s2, $sp, 8 # 8-byte Folded Reload587; LA64F-NEXT:    ld.d $s1, $sp, 16 # 8-byte Folded Reload588; LA64F-NEXT:    ld.d $s0, $sp, 24 # 8-byte Folded Reload589; LA64F-NEXT:    ld.d $fp, $sp, 32 # 8-byte Folded Reload590; LA64F-NEXT:    ld.d $ra, $sp, 40 # 8-byte Folded Reload591; LA64F-NEXT:    addi.d $sp, $sp, 48592; LA64F-NEXT:    ret593;594; LA64D-LABEL: test_d4:595; LA64D:       # %bb.0:596; LA64D-NEXT:    vld $vr0, $a0, 0597; LA64D-NEXT:    vld $vr1, $a0, 16598; LA64D-NEXT:    pcalau12i $a0, %pc_hi20(.LCPI5_0)599; LA64D-NEXT:    vld $vr2, $a0, %pc_lo12(.LCPI5_0)600; LA64D-NEXT:    pcalau12i $a0, %pc_hi20(.LCPI5_1)601; LA64D-NEXT:    vld $vr3, $a0, %pc_lo12(.LCPI5_1)602; LA64D-NEXT:    vfadd.d $vr1, $vr1, $vr2603; LA64D-NEXT:    vfadd.d $vr0, $vr0, $vr3604; LA64D-NEXT:    vst $vr0, $a1, 0605; LA64D-NEXT:    vst $vr1, $a1, 16606; LA64D-NEXT:    ret607  %p = load %d4, ptr %P608  %R = fadd %d4 %p, < double 1.000000e+00, double 2.000000e+00, double 3.000000e+00, double 4.000000e+00 >609  store %d4 %R, ptr %S610  ret void611}612 613define void @test_d8(ptr %P, ptr %S) nounwind {614; LA32F-LABEL: test_d8:615; LA32F:       # %bb.0:616; LA32F-NEXT:    addi.w $sp, $sp, -96617; LA32F-NEXT:    st.w $ra, $sp, 92 # 4-byte Folded Spill618; LA32F-NEXT:    st.w $fp, $sp, 88 # 4-byte Folded Spill619; LA32F-NEXT:    st.w $s0, $sp, 84 # 4-byte Folded Spill620; LA32F-NEXT:    st.w $s1, $sp, 80 # 4-byte Folded Spill621; LA32F-NEXT:    st.w $s2, $sp, 76 # 4-byte Folded Spill622; LA32F-NEXT:    st.w $s3, $sp, 72 # 4-byte Folded Spill623; LA32F-NEXT:    st.w $s4, $sp, 68 # 4-byte Folded Spill624; LA32F-NEXT:    st.w $s5, $sp, 64 # 4-byte Folded Spill625; LA32F-NEXT:    st.w $s6, $sp, 60 # 4-byte Folded Spill626; LA32F-NEXT:    st.w $s7, $sp, 56 # 4-byte Folded Spill627; LA32F-NEXT:    st.w $s8, $sp, 52 # 4-byte Folded Spill628; LA32F-NEXT:    ld.w $a2, $a0, 56629; LA32F-NEXT:    st.w $a2, $sp, 48 # 4-byte Folded Spill630; LA32F-NEXT:    ld.w $a2, $a0, 60631; LA32F-NEXT:    st.w $a2, $sp, 44 # 4-byte Folded Spill632; LA32F-NEXT:    ld.w $a2, $a0, 48633; LA32F-NEXT:    st.w $a2, $sp, 32 # 4-byte Folded Spill634; LA32F-NEXT:    ld.w $a2, $a0, 52635; LA32F-NEXT:    st.w $a2, $sp, 28 # 4-byte Folded Spill636; LA32F-NEXT:    ld.w $s8, $a0, 40637; LA32F-NEXT:    ld.w $a2, $a0, 44638; LA32F-NEXT:    st.w $a2, $sp, 16 # 4-byte Folded Spill639; LA32F-NEXT:    ld.w $s3, $a0, 32640; LA32F-NEXT:    ld.w $s4, $a0, 36641; LA32F-NEXT:    ld.w $s5, $a0, 24642; LA32F-NEXT:    ld.w $s6, $a0, 28643; LA32F-NEXT:    ld.w $s1, $a0, 16644; LA32F-NEXT:    ld.w $s2, $a0, 20645; LA32F-NEXT:    ld.w $s7, $a0, 8646; LA32F-NEXT:    ld.w $s0, $a0, 12647; LA32F-NEXT:    ld.w $a2, $a0, 0648; LA32F-NEXT:    ld.w $a4, $a0, 4649; LA32F-NEXT:    move $fp, $a1650; LA32F-NEXT:    lu12i.w $a3, 261888651; LA32F-NEXT:    move $a0, $a2652; LA32F-NEXT:    move $a1, $a4653; LA32F-NEXT:    move $a2, $zero654; LA32F-NEXT:    bl __adddf3655; LA32F-NEXT:    st.w $a0, $sp, 40 # 4-byte Folded Spill656; LA32F-NEXT:    st.w $a1, $sp, 36 # 4-byte Folded Spill657; LA32F-NEXT:    lu12i.w $a3, 262144658; LA32F-NEXT:    move $a0, $s7659; LA32F-NEXT:    move $a1, $s0660; LA32F-NEXT:    move $a2, $zero661; LA32F-NEXT:    move $s0, $a3662; LA32F-NEXT:    bl __adddf3663; LA32F-NEXT:    st.w $a0, $sp, 24 # 4-byte Folded Spill664; LA32F-NEXT:    st.w $a1, $sp, 20 # 4-byte Folded Spill665; LA32F-NEXT:    lu12i.w $s7, 262272666; LA32F-NEXT:    move $a0, $s1667; LA32F-NEXT:    move $a1, $s2668; LA32F-NEXT:    move $a2, $zero669; LA32F-NEXT:    move $a3, $s7670; LA32F-NEXT:    bl __adddf3671; LA32F-NEXT:    st.w $a0, $sp, 12 # 4-byte Folded Spill672; LA32F-NEXT:    move $s2, $a1673; LA32F-NEXT:    lu12i.w $a3, 262400674; LA32F-NEXT:    move $a0, $s5675; LA32F-NEXT:    move $a1, $s6676; LA32F-NEXT:    move $a2, $zero677; LA32F-NEXT:    bl __adddf3678; LA32F-NEXT:    move $s5, $a0679; LA32F-NEXT:    move $s6, $a1680; LA32F-NEXT:    move $a0, $s3681; LA32F-NEXT:    move $a1, $s4682; LA32F-NEXT:    move $a2, $zero683; LA32F-NEXT:    lu12i.w $a3, 261888684; LA32F-NEXT:    bl __adddf3685; LA32F-NEXT:    move $s3, $a0686; LA32F-NEXT:    move $s4, $a1687; LA32F-NEXT:    move $a0, $s8688; LA32F-NEXT:    ld.w $a1, $sp, 16 # 4-byte Folded Reload689; LA32F-NEXT:    move $a2, $zero690; LA32F-NEXT:    move $a3, $s0691; LA32F-NEXT:    bl __adddf3692; LA32F-NEXT:    move $s8, $a0693; LA32F-NEXT:    move $s0, $a1694; LA32F-NEXT:    ld.w $a0, $sp, 32 # 4-byte Folded Reload695; LA32F-NEXT:    ld.w $a1, $sp, 28 # 4-byte Folded Reload696; LA32F-NEXT:    move $a2, $zero697; LA32F-NEXT:    move $a3, $s7698; LA32F-NEXT:    bl __adddf3699; LA32F-NEXT:    move $s7, $a0700; LA32F-NEXT:    move $s1, $a1701; LA32F-NEXT:    ld.w $a0, $sp, 48 # 4-byte Folded Reload702; LA32F-NEXT:    ld.w $a1, $sp, 44 # 4-byte Folded Reload703; LA32F-NEXT:    move $a2, $zero704; LA32F-NEXT:    lu12i.w $a3, 262400705; LA32F-NEXT:    bl __adddf3706; LA32F-NEXT:    st.w $a0, $fp, 56707; LA32F-NEXT:    st.w $a1, $fp, 60708; LA32F-NEXT:    st.w $s7, $fp, 48709; LA32F-NEXT:    st.w $s1, $fp, 52710; LA32F-NEXT:    st.w $s8, $fp, 40711; LA32F-NEXT:    st.w $s0, $fp, 44712; LA32F-NEXT:    st.w $s3, $fp, 32713; LA32F-NEXT:    st.w $s4, $fp, 36714; LA32F-NEXT:    st.w $s5, $fp, 24715; LA32F-NEXT:    st.w $s6, $fp, 28716; LA32F-NEXT:    ld.w $a0, $sp, 12 # 4-byte Folded Reload717; LA32F-NEXT:    st.w $a0, $fp, 16718; LA32F-NEXT:    st.w $s2, $fp, 20719; LA32F-NEXT:    ld.w $a0, $sp, 24 # 4-byte Folded Reload720; LA32F-NEXT:    st.w $a0, $fp, 8721; LA32F-NEXT:    ld.w $a0, $sp, 20 # 4-byte Folded Reload722; LA32F-NEXT:    st.w $a0, $fp, 12723; LA32F-NEXT:    ld.w $a0, $sp, 40 # 4-byte Folded Reload724; LA32F-NEXT:    st.w $a0, $fp, 0725; LA32F-NEXT:    ld.w $a0, $sp, 36 # 4-byte Folded Reload726; LA32F-NEXT:    st.w $a0, $fp, 4727; LA32F-NEXT:    ld.w $s8, $sp, 52 # 4-byte Folded Reload728; LA32F-NEXT:    ld.w $s7, $sp, 56 # 4-byte Folded Reload729; LA32F-NEXT:    ld.w $s6, $sp, 60 # 4-byte Folded Reload730; LA32F-NEXT:    ld.w $s5, $sp, 64 # 4-byte Folded Reload731; LA32F-NEXT:    ld.w $s4, $sp, 68 # 4-byte Folded Reload732; LA32F-NEXT:    ld.w $s3, $sp, 72 # 4-byte Folded Reload733; LA32F-NEXT:    ld.w $s2, $sp, 76 # 4-byte Folded Reload734; LA32F-NEXT:    ld.w $s1, $sp, 80 # 4-byte Folded Reload735; LA32F-NEXT:    ld.w $s0, $sp, 84 # 4-byte Folded Reload736; LA32F-NEXT:    ld.w $fp, $sp, 88 # 4-byte Folded Reload737; LA32F-NEXT:    ld.w $ra, $sp, 92 # 4-byte Folded Reload738; LA32F-NEXT:    addi.w $sp, $sp, 96739; LA32F-NEXT:    ret740;741; LA32D-LABEL: test_d8:742; LA32D:       # %bb.0:743; LA32D-NEXT:    fld.d $fa0, $a0, 48744; LA32D-NEXT:    fld.d $fa1, $a0, 16745; LA32D-NEXT:    fld.d $fa2, $a0, 56746; LA32D-NEXT:    fld.d $fa3, $a0, 40747; LA32D-NEXT:    fld.d $fa4, $a0, 32748; LA32D-NEXT:    fld.d $fa5, $a0, 24749; LA32D-NEXT:    fld.d $fa6, $a0, 8750; LA32D-NEXT:    fld.d $fa7, $a0, 0751; LA32D-NEXT:    movgr2fr.w $ft0, $zero752; LA32D-NEXT:    lu12i.w $a0, 261888753; LA32D-NEXT:    fmov.d $ft1, $ft0754; LA32D-NEXT:    movgr2frh.w $ft1, $a0755; LA32D-NEXT:    fadd.d $fa7, $fa7, $ft1756; LA32D-NEXT:    lu12i.w $a0, 262144757; LA32D-NEXT:    fmov.d $ft2, $ft0758; LA32D-NEXT:    movgr2frh.w $ft2, $a0759; LA32D-NEXT:    fadd.d $fa6, $fa6, $ft2760; LA32D-NEXT:    lu12i.w $a0, 262400761; LA32D-NEXT:    movgr2frh.w $ft0, $a0762; LA32D-NEXT:    fadd.d $fa4, $fa4, $ft1763; LA32D-NEXT:    pcalau12i $a0, %pc_hi20(.LCPI6_0)764; LA32D-NEXT:    fld.d $ft1, $a0, %pc_lo12(.LCPI6_0)765; LA32D-NEXT:    fadd.d $fa5, $fa5, $ft0766; LA32D-NEXT:    fadd.d $fa3, $fa3, $ft2767; LA32D-NEXT:    fadd.d $fa2, $fa2, $ft0768; LA32D-NEXT:    fadd.d $fa1, $fa1, $ft1769; LA32D-NEXT:    fadd.d $fa0, $fa0, $ft1770; LA32D-NEXT:    fst.d $fa0, $a1, 48771; LA32D-NEXT:    fst.d $fa1, $a1, 16772; LA32D-NEXT:    fst.d $fa2, $a1, 56773; LA32D-NEXT:    fst.d $fa3, $a1, 40774; LA32D-NEXT:    fst.d $fa4, $a1, 32775; LA32D-NEXT:    fst.d $fa5, $a1, 24776; LA32D-NEXT:    fst.d $fa6, $a1, 8777; LA32D-NEXT:    fst.d $fa7, $a1, 0778; LA32D-NEXT:    ret779;780; LA64F-LABEL: test_d8:781; LA64F:       # %bb.0:782; LA64F-NEXT:    addi.d $sp, $sp, -112783; LA64F-NEXT:    st.d $ra, $sp, 104 # 8-byte Folded Spill784; LA64F-NEXT:    st.d $fp, $sp, 96 # 8-byte Folded Spill785; LA64F-NEXT:    st.d $s0, $sp, 88 # 8-byte Folded Spill786; LA64F-NEXT:    st.d $s1, $sp, 80 # 8-byte Folded Spill787; LA64F-NEXT:    st.d $s2, $sp, 72 # 8-byte Folded Spill788; LA64F-NEXT:    st.d $s3, $sp, 64 # 8-byte Folded Spill789; LA64F-NEXT:    st.d $s4, $sp, 56 # 8-byte Folded Spill790; LA64F-NEXT:    st.d $s5, $sp, 48 # 8-byte Folded Spill791; LA64F-NEXT:    st.d $s6, $sp, 40 # 8-byte Folded Spill792; LA64F-NEXT:    st.d $s7, $sp, 32 # 8-byte Folded Spill793; LA64F-NEXT:    st.d $s8, $sp, 24 # 8-byte Folded Spill794; LA64F-NEXT:    ld.d $a2, $a0, 56795; LA64F-NEXT:    st.d $a2, $sp, 16 # 8-byte Folded Spill796; LA64F-NEXT:    ld.d $s1, $a0, 40797; LA64F-NEXT:    ld.d $s2, $a0, 32798; LA64F-NEXT:    ld.d $s3, $a0, 24799; LA64F-NEXT:    ld.d $s4, $a0, 8800; LA64F-NEXT:    ld.d $s5, $a0, 0801; LA64F-NEXT:    ld.d $s6, $a0, 48802; LA64F-NEXT:    ld.d $a0, $a0, 16803; LA64F-NEXT:    move $fp, $a1804; LA64F-NEXT:    ori $a1, $zero, 0805; LA64F-NEXT:    lu32i.d $a1, -524288806; LA64F-NEXT:    lu52i.d $s7, $a1, 1024807; LA64F-NEXT:    move $a1, $s7808; LA64F-NEXT:    pcaddu18i $ra, %call36(__adddf3)809; LA64F-NEXT:    jirl $ra, $ra, 0810; LA64F-NEXT:    st.d $a0, $sp, 8 # 8-byte Folded Spill811; LA64F-NEXT:    move $a0, $s6812; LA64F-NEXT:    move $a1, $s7813; LA64F-NEXT:    pcaddu18i $ra, %call36(__adddf3)814; LA64F-NEXT:    jirl $ra, $ra, 0815; LA64F-NEXT:    move $s6, $a0816; LA64F-NEXT:    lu52i.d $s7, $zero, 1023817; LA64F-NEXT:    move $a0, $s5818; LA64F-NEXT:    move $a1, $s7819; LA64F-NEXT:    pcaddu18i $ra, %call36(__adddf3)820; LA64F-NEXT:    jirl $ra, $ra, 0821; LA64F-NEXT:    move $s5, $a0822; LA64F-NEXT:    lu52i.d $s0, $zero, 1024823; LA64F-NEXT:    move $a0, $s4824; LA64F-NEXT:    move $a1, $s0825; LA64F-NEXT:    pcaddu18i $ra, %call36(__adddf3)826; LA64F-NEXT:    jirl $ra, $ra, 0827; LA64F-NEXT:    move $s4, $a0828; LA64F-NEXT:    lu52i.d $s8, $zero, 1025829; LA64F-NEXT:    move $a0, $s3830; LA64F-NEXT:    move $a1, $s8831; LA64F-NEXT:    pcaddu18i $ra, %call36(__adddf3)832; LA64F-NEXT:    jirl $ra, $ra, 0833; LA64F-NEXT:    move $s3, $a0834; LA64F-NEXT:    move $a0, $s2835; LA64F-NEXT:    move $a1, $s7836; LA64F-NEXT:    pcaddu18i $ra, %call36(__adddf3)837; LA64F-NEXT:    jirl $ra, $ra, 0838; LA64F-NEXT:    move $s2, $a0839; LA64F-NEXT:    move $a0, $s1840; LA64F-NEXT:    move $a1, $s0841; LA64F-NEXT:    pcaddu18i $ra, %call36(__adddf3)842; LA64F-NEXT:    jirl $ra, $ra, 0843; LA64F-NEXT:    move $s0, $a0844; LA64F-NEXT:    ld.d $a0, $sp, 16 # 8-byte Folded Reload845; LA64F-NEXT:    move $a1, $s8846; LA64F-NEXT:    pcaddu18i $ra, %call36(__adddf3)847; LA64F-NEXT:    jirl $ra, $ra, 0848; LA64F-NEXT:    st.d $a0, $fp, 56849; LA64F-NEXT:    st.d $s0, $fp, 40850; LA64F-NEXT:    st.d $s2, $fp, 32851; LA64F-NEXT:    st.d $s3, $fp, 24852; LA64F-NEXT:    st.d $s4, $fp, 8853; LA64F-NEXT:    st.d $s5, $fp, 0854; LA64F-NEXT:    st.d $s6, $fp, 48855; LA64F-NEXT:    ld.d $a0, $sp, 8 # 8-byte Folded Reload856; LA64F-NEXT:    st.d $a0, $fp, 16857; LA64F-NEXT:    ld.d $s8, $sp, 24 # 8-byte Folded Reload858; LA64F-NEXT:    ld.d $s7, $sp, 32 # 8-byte Folded Reload859; LA64F-NEXT:    ld.d $s6, $sp, 40 # 8-byte Folded Reload860; LA64F-NEXT:    ld.d $s5, $sp, 48 # 8-byte Folded Reload861; LA64F-NEXT:    ld.d $s4, $sp, 56 # 8-byte Folded Reload862; LA64F-NEXT:    ld.d $s3, $sp, 64 # 8-byte Folded Reload863; LA64F-NEXT:    ld.d $s2, $sp, 72 # 8-byte Folded Reload864; LA64F-NEXT:    ld.d $s1, $sp, 80 # 8-byte Folded Reload865; LA64F-NEXT:    ld.d $s0, $sp, 88 # 8-byte Folded Reload866; LA64F-NEXT:    ld.d $fp, $sp, 96 # 8-byte Folded Reload867; LA64F-NEXT:    ld.d $ra, $sp, 104 # 8-byte Folded Reload868; LA64F-NEXT:    addi.d $sp, $sp, 112869; LA64F-NEXT:    ret870;871; LA64D-LABEL: test_d8:872; LA64D:       # %bb.0:873; LA64D-NEXT:    pcalau12i $a2, %pc_hi20(.LCPI6_0)874; LA64D-NEXT:    vld $vr0, $a2, %pc_lo12(.LCPI6_0)875; LA64D-NEXT:    pcalau12i $a2, %pc_hi20(.LCPI6_1)876; LA64D-NEXT:    vld $vr1, $a2, %pc_lo12(.LCPI6_1)877; LA64D-NEXT:    vld $vr2, $a0, 16878; LA64D-NEXT:    vld $vr3, $a0, 0879; LA64D-NEXT:    vld $vr4, $a0, 48880; LA64D-NEXT:    vld $vr5, $a0, 32881; LA64D-NEXT:    vfadd.d $vr2, $vr2, $vr0882; LA64D-NEXT:    vfadd.d $vr3, $vr3, $vr1883; LA64D-NEXT:    vfadd.d $vr0, $vr4, $vr0884; LA64D-NEXT:    vfadd.d $vr1, $vr5, $vr1885; LA64D-NEXT:    vst $vr1, $a1, 32886; LA64D-NEXT:    vst $vr0, $a1, 48887; LA64D-NEXT:    vst $vr3, $a1, 0888; LA64D-NEXT:    vst $vr2, $a1, 16889; LA64D-NEXT:    ret890  %p = load %d8, ptr %P891  %R = fadd %d8 %p, < double 1.000000e+00, double 2.000000e+00, double 3.000000e+00, double 4.000000e+00, double 1.000000e+00, double 2.000000e+00, double 3.000000e+00, double 4.000000e+00 >892  store %d8 %R, ptr %S893  ret void894}895