brintos

brintos / llvm-project-archived public Read only

0
0
Text · 72.3 KiB · 4ba3785 Raw
1936 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 22; RUN: llc -mtriple=riscv32 -mattr=+d \3; RUN:   -verify-machineinstrs -target-abi=ilp32d < %s \4; RUN:   | FileCheck -check-prefix=RV32IFD %s5; RUN: llc -mtriple=riscv64 -mattr=+d \6; RUN:   -verify-machineinstrs -target-abi=lp64d < %s \7; RUN:   | FileCheck -check-prefix=RV64IFD %s8; RUN: llc -mtriple=riscv32 -mattr=+zdinx \9; RUN:   -verify-machineinstrs -target-abi=ilp32 < %s \10; RUN:   | FileCheck -check-prefix=RV32IZFINXZDINX %s11; RUN: llc -mtriple=riscv64 -mattr=+zdinx \12; RUN:   -verify-machineinstrs -target-abi=lp64 < %s \13; RUN:   | FileCheck -check-prefix=RV64IZFINXZDINX %s14; RUN: llc -mtriple=riscv32 -verify-machineinstrs < %s \15; RUN:   | FileCheck -check-prefix=RV32I %s16; RUN: llc -mtriple=riscv64 -verify-machineinstrs < %s \17; RUN:   | FileCheck -check-prefix=RV64I %s18 19; TODO: FIXMEs are copied blindly across from the X86 version of this test.20 21define { half, i32 } @test_frexp_f16_i32(half %a) nounwind {22; RV32IFD-LABEL: test_frexp_f16_i32:23; RV32IFD:       # %bb.0:24; RV32IFD-NEXT:    addi sp, sp, -1625; RV32IFD-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill26; RV32IFD-NEXT:    call __extendhfsf227; RV32IFD-NEXT:    addi a0, sp, 828; RV32IFD-NEXT:    call frexpf29; RV32IFD-NEXT:    call __truncsfhf230; RV32IFD-NEXT:    fmv.x.w a1, fa031; RV32IFD-NEXT:    lw a0, 8(sp)32; RV32IFD-NEXT:    lui a2, 104856033; RV32IFD-NEXT:    or a1, a1, a234; RV32IFD-NEXT:    fmv.w.x fa0, a135; RV32IFD-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload36; RV32IFD-NEXT:    addi sp, sp, 1637; RV32IFD-NEXT:    ret38;39; RV64IFD-LABEL: test_frexp_f16_i32:40; RV64IFD:       # %bb.0:41; RV64IFD-NEXT:    addi sp, sp, -1642; RV64IFD-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill43; RV64IFD-NEXT:    call __extendhfsf244; RV64IFD-NEXT:    mv a0, sp45; RV64IFD-NEXT:    call frexpf46; RV64IFD-NEXT:    call __truncsfhf247; RV64IFD-NEXT:    fmv.x.w a1, fa048; RV64IFD-NEXT:    ld a0, 0(sp)49; RV64IFD-NEXT:    lui a2, 104856050; RV64IFD-NEXT:    or a1, a1, a251; RV64IFD-NEXT:    fmv.w.x fa0, a152; RV64IFD-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload53; RV64IFD-NEXT:    addi sp, sp, 1654; RV64IFD-NEXT:    ret55;56; RV32IZFINXZDINX-LABEL: test_frexp_f16_i32:57; RV32IZFINXZDINX:       # %bb.0:58; RV32IZFINXZDINX-NEXT:    addi sp, sp, -1659; RV32IZFINXZDINX-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill60; RV32IZFINXZDINX-NEXT:    call __extendhfsf261; RV32IZFINXZDINX-NEXT:    addi a1, sp, 862; RV32IZFINXZDINX-NEXT:    call frexpf63; RV32IZFINXZDINX-NEXT:    call __truncsfhf264; RV32IZFINXZDINX-NEXT:    # kill: def $x10_w killed $x10_w def $x1065; RV32IZFINXZDINX-NEXT:    lw a1, 8(sp)66; RV32IZFINXZDINX-NEXT:    lui a2, 104856067; RV32IZFINXZDINX-NEXT:    or a0, a0, a268; RV32IZFINXZDINX-NEXT:    # kill: def $x10_w killed $x10_w killed $x1069; RV32IZFINXZDINX-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload70; RV32IZFINXZDINX-NEXT:    addi sp, sp, 1671; RV32IZFINXZDINX-NEXT:    ret72;73; RV64IZFINXZDINX-LABEL: test_frexp_f16_i32:74; RV64IZFINXZDINX:       # %bb.0:75; RV64IZFINXZDINX-NEXT:    addi sp, sp, -1676; RV64IZFINXZDINX-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill77; RV64IZFINXZDINX-NEXT:    call __extendhfsf278; RV64IZFINXZDINX-NEXT:    mv a1, sp79; RV64IZFINXZDINX-NEXT:    call frexpf80; RV64IZFINXZDINX-NEXT:    call __truncsfhf281; RV64IZFINXZDINX-NEXT:    # kill: def $x10_w killed $x10_w def $x1082; RV64IZFINXZDINX-NEXT:    ld a1, 0(sp)83; RV64IZFINXZDINX-NEXT:    lui a2, 104856084; RV64IZFINXZDINX-NEXT:    or a0, a0, a285; RV64IZFINXZDINX-NEXT:    # kill: def $x10_w killed $x10_w killed $x1086; RV64IZFINXZDINX-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload87; RV64IZFINXZDINX-NEXT:    addi sp, sp, 1688; RV64IZFINXZDINX-NEXT:    ret89;90; RV32I-LABEL: test_frexp_f16_i32:91; RV32I:       # %bb.0:92; RV32I-NEXT:    addi sp, sp, -1693; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill94; RV32I-NEXT:    slli a0, a0, 1695; RV32I-NEXT:    srli a0, a0, 1696; RV32I-NEXT:    call __extendhfsf297; RV32I-NEXT:    addi a1, sp, 898; RV32I-NEXT:    call frexpf99; RV32I-NEXT:    call __truncsfhf2100; RV32I-NEXT:    lw a1, 8(sp)101; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload102; RV32I-NEXT:    addi sp, sp, 16103; RV32I-NEXT:    ret104;105; RV64I-LABEL: test_frexp_f16_i32:106; RV64I:       # %bb.0:107; RV64I-NEXT:    addi sp, sp, -16108; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill109; RV64I-NEXT:    slli a0, a0, 48110; RV64I-NEXT:    srli a0, a0, 48111; RV64I-NEXT:    call __extendhfsf2112; RV64I-NEXT:    addi a1, sp, 4113; RV64I-NEXT:    call frexpf114; RV64I-NEXT:    call __truncsfhf2115; RV64I-NEXT:    lw a1, 4(sp)116; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload117; RV64I-NEXT:    addi sp, sp, 16118; RV64I-NEXT:    ret119  %result = call { half, i32 } @llvm.frexp.f16.i32(half %a)120  ret { half, i32 } %result121}122 123define half @test_frexp_f16_i32_only_use_fract(half %a) nounwind {124; RV32IFD-LABEL: test_frexp_f16_i32_only_use_fract:125; RV32IFD:       # %bb.0:126; RV32IFD-NEXT:    addi sp, sp, -16127; RV32IFD-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill128; RV32IFD-NEXT:    call __extendhfsf2129; RV32IFD-NEXT:    addi a0, sp, 8130; RV32IFD-NEXT:    call frexpf131; RV32IFD-NEXT:    call __truncsfhf2132; RV32IFD-NEXT:    fmv.x.w a0, fa0133; RV32IFD-NEXT:    lui a1, 1048560134; RV32IFD-NEXT:    or a0, a0, a1135; RV32IFD-NEXT:    fmv.w.x fa0, a0136; RV32IFD-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload137; RV32IFD-NEXT:    addi sp, sp, 16138; RV32IFD-NEXT:    ret139;140; RV64IFD-LABEL: test_frexp_f16_i32_only_use_fract:141; RV64IFD:       # %bb.0:142; RV64IFD-NEXT:    addi sp, sp, -16143; RV64IFD-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill144; RV64IFD-NEXT:    call __extendhfsf2145; RV64IFD-NEXT:    mv a0, sp146; RV64IFD-NEXT:    call frexpf147; RV64IFD-NEXT:    call __truncsfhf2148; RV64IFD-NEXT:    fmv.x.w a0, fa0149; RV64IFD-NEXT:    lui a1, 1048560150; RV64IFD-NEXT:    or a0, a0, a1151; RV64IFD-NEXT:    fmv.w.x fa0, a0152; RV64IFD-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload153; RV64IFD-NEXT:    addi sp, sp, 16154; RV64IFD-NEXT:    ret155;156; RV32IZFINXZDINX-LABEL: test_frexp_f16_i32_only_use_fract:157; RV32IZFINXZDINX:       # %bb.0:158; RV32IZFINXZDINX-NEXT:    addi sp, sp, -16159; RV32IZFINXZDINX-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill160; RV32IZFINXZDINX-NEXT:    call __extendhfsf2161; RV32IZFINXZDINX-NEXT:    addi a1, sp, 8162; RV32IZFINXZDINX-NEXT:    call frexpf163; RV32IZFINXZDINX-NEXT:    call __truncsfhf2164; RV32IZFINXZDINX-NEXT:    # kill: def $x10_w killed $x10_w def $x10165; RV32IZFINXZDINX-NEXT:    lui a1, 1048560166; RV32IZFINXZDINX-NEXT:    or a0, a0, a1167; RV32IZFINXZDINX-NEXT:    # kill: def $x10_w killed $x10_w killed $x10168; RV32IZFINXZDINX-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload169; RV32IZFINXZDINX-NEXT:    addi sp, sp, 16170; RV32IZFINXZDINX-NEXT:    ret171;172; RV64IZFINXZDINX-LABEL: test_frexp_f16_i32_only_use_fract:173; RV64IZFINXZDINX:       # %bb.0:174; RV64IZFINXZDINX-NEXT:    addi sp, sp, -16175; RV64IZFINXZDINX-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill176; RV64IZFINXZDINX-NEXT:    call __extendhfsf2177; RV64IZFINXZDINX-NEXT:    mv a1, sp178; RV64IZFINXZDINX-NEXT:    call frexpf179; RV64IZFINXZDINX-NEXT:    call __truncsfhf2180; RV64IZFINXZDINX-NEXT:    # kill: def $x10_w killed $x10_w def $x10181; RV64IZFINXZDINX-NEXT:    lui a1, 1048560182; RV64IZFINXZDINX-NEXT:    or a0, a0, a1183; RV64IZFINXZDINX-NEXT:    # kill: def $x10_w killed $x10_w killed $x10184; RV64IZFINXZDINX-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload185; RV64IZFINXZDINX-NEXT:    addi sp, sp, 16186; RV64IZFINXZDINX-NEXT:    ret187;188; RV32I-LABEL: test_frexp_f16_i32_only_use_fract:189; RV32I:       # %bb.0:190; RV32I-NEXT:    addi sp, sp, -16191; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill192; RV32I-NEXT:    slli a0, a0, 16193; RV32I-NEXT:    srli a0, a0, 16194; RV32I-NEXT:    call __extendhfsf2195; RV32I-NEXT:    addi a1, sp, 8196; RV32I-NEXT:    call frexpf197; RV32I-NEXT:    call __truncsfhf2198; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload199; RV32I-NEXT:    addi sp, sp, 16200; RV32I-NEXT:    ret201;202; RV64I-LABEL: test_frexp_f16_i32_only_use_fract:203; RV64I:       # %bb.0:204; RV64I-NEXT:    addi sp, sp, -16205; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill206; RV64I-NEXT:    slli a0, a0, 48207; RV64I-NEXT:    srli a0, a0, 48208; RV64I-NEXT:    call __extendhfsf2209; RV64I-NEXT:    addi a1, sp, 4210; RV64I-NEXT:    call frexpf211; RV64I-NEXT:    call __truncsfhf2212; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload213; RV64I-NEXT:    addi sp, sp, 16214; RV64I-NEXT:    ret215  %result = call { half, i32 } @llvm.frexp.f16.i32(half %a)216  %result.0 = extractvalue { half, i32 } %result, 0217  ret half %result.0218}219 220define i32 @test_frexp_f16_i32_only_use_exp(half %a) nounwind {221; RV32IFD-LABEL: test_frexp_f16_i32_only_use_exp:222; RV32IFD:       # %bb.0:223; RV32IFD-NEXT:    addi sp, sp, -16224; RV32IFD-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill225; RV32IFD-NEXT:    call __extendhfsf2226; RV32IFD-NEXT:    addi a0, sp, 8227; RV32IFD-NEXT:    call frexpf228; RV32IFD-NEXT:    lw a0, 8(sp)229; RV32IFD-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload230; RV32IFD-NEXT:    addi sp, sp, 16231; RV32IFD-NEXT:    ret232;233; RV64IFD-LABEL: test_frexp_f16_i32_only_use_exp:234; RV64IFD:       # %bb.0:235; RV64IFD-NEXT:    addi sp, sp, -16236; RV64IFD-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill237; RV64IFD-NEXT:    call __extendhfsf2238; RV64IFD-NEXT:    mv a0, sp239; RV64IFD-NEXT:    call frexpf240; RV64IFD-NEXT:    ld a0, 0(sp)241; RV64IFD-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload242; RV64IFD-NEXT:    addi sp, sp, 16243; RV64IFD-NEXT:    ret244;245; RV32IZFINXZDINX-LABEL: test_frexp_f16_i32_only_use_exp:246; RV32IZFINXZDINX:       # %bb.0:247; RV32IZFINXZDINX-NEXT:    addi sp, sp, -16248; RV32IZFINXZDINX-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill249; RV32IZFINXZDINX-NEXT:    call __extendhfsf2250; RV32IZFINXZDINX-NEXT:    addi a1, sp, 8251; RV32IZFINXZDINX-NEXT:    call frexpf252; RV32IZFINXZDINX-NEXT:    lw a0, 8(sp)253; RV32IZFINXZDINX-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload254; RV32IZFINXZDINX-NEXT:    addi sp, sp, 16255; RV32IZFINXZDINX-NEXT:    ret256;257; RV64IZFINXZDINX-LABEL: test_frexp_f16_i32_only_use_exp:258; RV64IZFINXZDINX:       # %bb.0:259; RV64IZFINXZDINX-NEXT:    addi sp, sp, -16260; RV64IZFINXZDINX-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill261; RV64IZFINXZDINX-NEXT:    call __extendhfsf2262; RV64IZFINXZDINX-NEXT:    mv a1, sp263; RV64IZFINXZDINX-NEXT:    call frexpf264; RV64IZFINXZDINX-NEXT:    ld a0, 0(sp)265; RV64IZFINXZDINX-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload266; RV64IZFINXZDINX-NEXT:    addi sp, sp, 16267; RV64IZFINXZDINX-NEXT:    ret268;269; RV32I-LABEL: test_frexp_f16_i32_only_use_exp:270; RV32I:       # %bb.0:271; RV32I-NEXT:    addi sp, sp, -16272; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill273; RV32I-NEXT:    slli a0, a0, 16274; RV32I-NEXT:    srli a0, a0, 16275; RV32I-NEXT:    call __extendhfsf2276; RV32I-NEXT:    addi a1, sp, 8277; RV32I-NEXT:    call frexpf278; RV32I-NEXT:    lw a0, 8(sp)279; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload280; RV32I-NEXT:    addi sp, sp, 16281; RV32I-NEXT:    ret282;283; RV64I-LABEL: test_frexp_f16_i32_only_use_exp:284; RV64I:       # %bb.0:285; RV64I-NEXT:    addi sp, sp, -16286; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill287; RV64I-NEXT:    slli a0, a0, 48288; RV64I-NEXT:    srli a0, a0, 48289; RV64I-NEXT:    call __extendhfsf2290; RV64I-NEXT:    addi a1, sp, 4291; RV64I-NEXT:    call frexpf292; RV64I-NEXT:    lw a0, 4(sp)293; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload294; RV64I-NEXT:    addi sp, sp, 16295; RV64I-NEXT:    ret296  %result = call { half, i32 } @llvm.frexp.f16.i32(half %a)297  %result.0 = extractvalue { half, i32 } %result, 1298  ret i32 %result.0299}300 301; FIXME302; define { <2 x half>, <2 x i32> } @test_frexp_v2f16_v2i32(<2 x half> %a) nounwind {303;   %result = call { <2 x half>, <2 x i32> } @llvm.frexp.v2f16.v2i32(<2 x half> %a)304;   ret { <2 x half>, <2 x i32> } %result305; }306 307; define <2 x half> @test_frexp_v2f16_v2i32_only_use_fract(<2 x half> %a) nounwind {308;   %result = call { <2 x half>, <2 x i32> } @llvm.frexp.v2f16.v2i32(<2 x half> %a)309;   %result.0 = extractvalue { <2 x half>, <2 x i32> } %result, 0310;   ret <2 x half> %result.0311; }312 313; define <2 x i32> @test_frexp_v2f16_v2i32_only_use_exp(<2 x half> %a) nounwind {314;   %result = call { <2 x half>, <2 x i32> } @llvm.frexp.v2f16.v2i32(<2 x half> %a)315;   %result.1 = extractvalue { <2 x half>, <2 x i32> } %result, 1316;   ret <2 x i32> %result.1317; }318 319define { float, i32 } @test_frexp_f32_i32(float %a) nounwind {320; RV32IFD-LABEL: test_frexp_f32_i32:321; RV32IFD:       # %bb.0:322; RV32IFD-NEXT:    addi sp, sp, -16323; RV32IFD-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill324; RV32IFD-NEXT:    addi a0, sp, 8325; RV32IFD-NEXT:    call frexpf326; RV32IFD-NEXT:    lw a0, 8(sp)327; RV32IFD-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload328; RV32IFD-NEXT:    addi sp, sp, 16329; RV32IFD-NEXT:    ret330;331; RV64IFD-LABEL: test_frexp_f32_i32:332; RV64IFD:       # %bb.0:333; RV64IFD-NEXT:    addi sp, sp, -16334; RV64IFD-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill335; RV64IFD-NEXT:    mv a0, sp336; RV64IFD-NEXT:    call frexpf337; RV64IFD-NEXT:    ld a0, 0(sp)338; RV64IFD-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload339; RV64IFD-NEXT:    addi sp, sp, 16340; RV64IFD-NEXT:    ret341;342; RV32IZFINXZDINX-LABEL: test_frexp_f32_i32:343; RV32IZFINXZDINX:       # %bb.0:344; RV32IZFINXZDINX-NEXT:    addi sp, sp, -16345; RV32IZFINXZDINX-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill346; RV32IZFINXZDINX-NEXT:    addi a1, sp, 8347; RV32IZFINXZDINX-NEXT:    call frexpf348; RV32IZFINXZDINX-NEXT:    lw a1, 8(sp)349; RV32IZFINXZDINX-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload350; RV32IZFINXZDINX-NEXT:    addi sp, sp, 16351; RV32IZFINXZDINX-NEXT:    ret352;353; RV64IZFINXZDINX-LABEL: test_frexp_f32_i32:354; RV64IZFINXZDINX:       # %bb.0:355; RV64IZFINXZDINX-NEXT:    addi sp, sp, -16356; RV64IZFINXZDINX-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill357; RV64IZFINXZDINX-NEXT:    mv a1, sp358; RV64IZFINXZDINX-NEXT:    call frexpf359; RV64IZFINXZDINX-NEXT:    ld a1, 0(sp)360; RV64IZFINXZDINX-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload361; RV64IZFINXZDINX-NEXT:    addi sp, sp, 16362; RV64IZFINXZDINX-NEXT:    ret363;364; RV32I-LABEL: test_frexp_f32_i32:365; RV32I:       # %bb.0:366; RV32I-NEXT:    addi sp, sp, -16367; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill368; RV32I-NEXT:    addi a1, sp, 8369; RV32I-NEXT:    call frexpf370; RV32I-NEXT:    lw a1, 8(sp)371; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload372; RV32I-NEXT:    addi sp, sp, 16373; RV32I-NEXT:    ret374;375; RV64I-LABEL: test_frexp_f32_i32:376; RV64I:       # %bb.0:377; RV64I-NEXT:    addi sp, sp, -16378; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill379; RV64I-NEXT:    addi a1, sp, 4380; RV64I-NEXT:    call frexpf381; RV64I-NEXT:    lw a1, 4(sp)382; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload383; RV64I-NEXT:    addi sp, sp, 16384; RV64I-NEXT:    ret385  %result = call { float, i32 } @llvm.frexp.f32.i32(float %a)386  ret { float, i32 } %result387}388 389define float @test_frexp_f32_i32_only_use_fract(float %a) nounwind {390; RV32IFD-LABEL: test_frexp_f32_i32_only_use_fract:391; RV32IFD:       # %bb.0:392; RV32IFD-NEXT:    addi sp, sp, -16393; RV32IFD-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill394; RV32IFD-NEXT:    addi a0, sp, 8395; RV32IFD-NEXT:    call frexpf396; RV32IFD-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload397; RV32IFD-NEXT:    addi sp, sp, 16398; RV32IFD-NEXT:    ret399;400; RV64IFD-LABEL: test_frexp_f32_i32_only_use_fract:401; RV64IFD:       # %bb.0:402; RV64IFD-NEXT:    addi sp, sp, -16403; RV64IFD-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill404; RV64IFD-NEXT:    mv a0, sp405; RV64IFD-NEXT:    call frexpf406; RV64IFD-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload407; RV64IFD-NEXT:    addi sp, sp, 16408; RV64IFD-NEXT:    ret409;410; RV32IZFINXZDINX-LABEL: test_frexp_f32_i32_only_use_fract:411; RV32IZFINXZDINX:       # %bb.0:412; RV32IZFINXZDINX-NEXT:    addi sp, sp, -16413; RV32IZFINXZDINX-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill414; RV32IZFINXZDINX-NEXT:    addi a1, sp, 8415; RV32IZFINXZDINX-NEXT:    call frexpf416; RV32IZFINXZDINX-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload417; RV32IZFINXZDINX-NEXT:    addi sp, sp, 16418; RV32IZFINXZDINX-NEXT:    ret419;420; RV64IZFINXZDINX-LABEL: test_frexp_f32_i32_only_use_fract:421; RV64IZFINXZDINX:       # %bb.0:422; RV64IZFINXZDINX-NEXT:    addi sp, sp, -16423; RV64IZFINXZDINX-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill424; RV64IZFINXZDINX-NEXT:    mv a1, sp425; RV64IZFINXZDINX-NEXT:    call frexpf426; RV64IZFINXZDINX-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload427; RV64IZFINXZDINX-NEXT:    addi sp, sp, 16428; RV64IZFINXZDINX-NEXT:    ret429;430; RV32I-LABEL: test_frexp_f32_i32_only_use_fract:431; RV32I:       # %bb.0:432; RV32I-NEXT:    addi sp, sp, -16433; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill434; RV32I-NEXT:    addi a1, sp, 8435; RV32I-NEXT:    call frexpf436; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload437; RV32I-NEXT:    addi sp, sp, 16438; RV32I-NEXT:    ret439;440; RV64I-LABEL: test_frexp_f32_i32_only_use_fract:441; RV64I:       # %bb.0:442; RV64I-NEXT:    addi sp, sp, -16443; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill444; RV64I-NEXT:    addi a1, sp, 4445; RV64I-NEXT:    call frexpf446; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload447; RV64I-NEXT:    addi sp, sp, 16448; RV64I-NEXT:    ret449  %result = call { float, i32 } @llvm.frexp.f32.i32(float %a)450  %result.0 = extractvalue { float, i32 } %result, 0451  ret float %result.0452}453 454define i32 @test_frexp_f32_i32_only_use_exp(float %a) nounwind {455; RV32IFD-LABEL: test_frexp_f32_i32_only_use_exp:456; RV32IFD:       # %bb.0:457; RV32IFD-NEXT:    addi sp, sp, -16458; RV32IFD-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill459; RV32IFD-NEXT:    addi a0, sp, 8460; RV32IFD-NEXT:    call frexpf461; RV32IFD-NEXT:    lw a0, 8(sp)462; RV32IFD-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload463; RV32IFD-NEXT:    addi sp, sp, 16464; RV32IFD-NEXT:    ret465;466; RV64IFD-LABEL: test_frexp_f32_i32_only_use_exp:467; RV64IFD:       # %bb.0:468; RV64IFD-NEXT:    addi sp, sp, -16469; RV64IFD-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill470; RV64IFD-NEXT:    mv a0, sp471; RV64IFD-NEXT:    call frexpf472; RV64IFD-NEXT:    ld a0, 0(sp)473; RV64IFD-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload474; RV64IFD-NEXT:    addi sp, sp, 16475; RV64IFD-NEXT:    ret476;477; RV32IZFINXZDINX-LABEL: test_frexp_f32_i32_only_use_exp:478; RV32IZFINXZDINX:       # %bb.0:479; RV32IZFINXZDINX-NEXT:    addi sp, sp, -16480; RV32IZFINXZDINX-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill481; RV32IZFINXZDINX-NEXT:    addi a1, sp, 8482; RV32IZFINXZDINX-NEXT:    call frexpf483; RV32IZFINXZDINX-NEXT:    lw a0, 8(sp)484; RV32IZFINXZDINX-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload485; RV32IZFINXZDINX-NEXT:    addi sp, sp, 16486; RV32IZFINXZDINX-NEXT:    ret487;488; RV64IZFINXZDINX-LABEL: test_frexp_f32_i32_only_use_exp:489; RV64IZFINXZDINX:       # %bb.0:490; RV64IZFINXZDINX-NEXT:    addi sp, sp, -16491; RV64IZFINXZDINX-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill492; RV64IZFINXZDINX-NEXT:    mv a1, sp493; RV64IZFINXZDINX-NEXT:    call frexpf494; RV64IZFINXZDINX-NEXT:    ld a0, 0(sp)495; RV64IZFINXZDINX-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload496; RV64IZFINXZDINX-NEXT:    addi sp, sp, 16497; RV64IZFINXZDINX-NEXT:    ret498;499; RV32I-LABEL: test_frexp_f32_i32_only_use_exp:500; RV32I:       # %bb.0:501; RV32I-NEXT:    addi sp, sp, -16502; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill503; RV32I-NEXT:    addi a1, sp, 8504; RV32I-NEXT:    call frexpf505; RV32I-NEXT:    lw a0, 8(sp)506; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload507; RV32I-NEXT:    addi sp, sp, 16508; RV32I-NEXT:    ret509;510; RV64I-LABEL: test_frexp_f32_i32_only_use_exp:511; RV64I:       # %bb.0:512; RV64I-NEXT:    addi sp, sp, -16513; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill514; RV64I-NEXT:    addi a1, sp, 4515; RV64I-NEXT:    call frexpf516; RV64I-NEXT:    lw a0, 4(sp)517; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload518; RV64I-NEXT:    addi sp, sp, 16519; RV64I-NEXT:    ret520  %result = call { float, i32 } @llvm.frexp.f32.i32(float %a)521  %result.0 = extractvalue { float, i32 } %result, 1522  ret i32 %result.0523}524 525; FIXME: Widen vector result526; define { <2 x float>, <2 x i32> } @test_frexp_v2f32_v2i32(<2 x float> %a) nounwind {527;   %result = call { <2 x float>, <2 x i32> } @llvm.frexp.v2f32.v2i32(<2 x float> %a)528;   ret { <2 x float>, <2 x i32> } %result529; }530 531; define <2 x float> @test_frexp_v2f32_v2i32_only_use_fract(<2 x float> %a) nounwind {532;   %result = call { <2 x float>, <2 x i32> } @llvm.frexp.v2f32.v2i32(<2 x float> %a)533;   %result.0 = extractvalue { <2 x float>, <2 x i32> } %result, 0534;   ret <2 x float> %result.0535; }536 537; define <2 x i32> @test_frexp_v2f32_v2i32_only_use_exp(<2 x float> %a) nounwind {538;   %result = call { <2 x float>, <2 x i32> } @llvm.frexp.v2f32.v2i32(<2 x float> %a)539;   %result.1 = extractvalue { <2 x float>, <2 x i32> } %result, 1540;   ret <2 x i32> %result.1541; }542 543define { <4 x float>, <4 x i32> } @test_frexp_v4f32_v4i32(<4 x float> %a) nounwind {544; RV32IFD-LABEL: test_frexp_v4f32_v4i32:545; RV32IFD:       # %bb.0:546; RV32IFD-NEXT:    addi sp, sp, -48547; RV32IFD-NEXT:    sw ra, 44(sp) # 4-byte Folded Spill548; RV32IFD-NEXT:    sw s0, 40(sp) # 4-byte Folded Spill549; RV32IFD-NEXT:    fsd fs0, 32(sp) # 8-byte Folded Spill550; RV32IFD-NEXT:    fsd fs1, 24(sp) # 8-byte Folded Spill551; RV32IFD-NEXT:    fsd fs2, 16(sp) # 8-byte Folded Spill552; RV32IFD-NEXT:    fsd fs3, 8(sp) # 8-byte Folded Spill553; RV32IFD-NEXT:    fmv.s fs0, fa3554; RV32IFD-NEXT:    fmv.s fs1, fa2555; RV32IFD-NEXT:    fmv.s fs2, fa1556; RV32IFD-NEXT:    mv s0, a0557; RV32IFD-NEXT:    addi a0, a0, 16558; RV32IFD-NEXT:    call frexpf559; RV32IFD-NEXT:    fmv.s fs3, fa0560; RV32IFD-NEXT:    addi a0, s0, 20561; RV32IFD-NEXT:    fmv.s fa0, fs2562; RV32IFD-NEXT:    call frexpf563; RV32IFD-NEXT:    fmv.s fs2, fa0564; RV32IFD-NEXT:    addi a0, s0, 24565; RV32IFD-NEXT:    fmv.s fa0, fs1566; RV32IFD-NEXT:    call frexpf567; RV32IFD-NEXT:    fmv.s fs1, fa0568; RV32IFD-NEXT:    addi a0, s0, 28569; RV32IFD-NEXT:    fmv.s fa0, fs0570; RV32IFD-NEXT:    call frexpf571; RV32IFD-NEXT:    fsw fs3, 0(s0)572; RV32IFD-NEXT:    fsw fs2, 4(s0)573; RV32IFD-NEXT:    fsw fs1, 8(s0)574; RV32IFD-NEXT:    fsw fa0, 12(s0)575; RV32IFD-NEXT:    lw ra, 44(sp) # 4-byte Folded Reload576; RV32IFD-NEXT:    lw s0, 40(sp) # 4-byte Folded Reload577; RV32IFD-NEXT:    fld fs0, 32(sp) # 8-byte Folded Reload578; RV32IFD-NEXT:    fld fs1, 24(sp) # 8-byte Folded Reload579; RV32IFD-NEXT:    fld fs2, 16(sp) # 8-byte Folded Reload580; RV32IFD-NEXT:    fld fs3, 8(sp) # 8-byte Folded Reload581; RV32IFD-NEXT:    addi sp, sp, 48582; RV32IFD-NEXT:    ret583;584; RV64IFD-LABEL: test_frexp_v4f32_v4i32:585; RV64IFD:       # %bb.0:586; RV64IFD-NEXT:    addi sp, sp, -80587; RV64IFD-NEXT:    sd ra, 72(sp) # 8-byte Folded Spill588; RV64IFD-NEXT:    sd s0, 64(sp) # 8-byte Folded Spill589; RV64IFD-NEXT:    fsd fs0, 56(sp) # 8-byte Folded Spill590; RV64IFD-NEXT:    fsd fs1, 48(sp) # 8-byte Folded Spill591; RV64IFD-NEXT:    fsd fs2, 40(sp) # 8-byte Folded Spill592; RV64IFD-NEXT:    fsd fs3, 32(sp) # 8-byte Folded Spill593; RV64IFD-NEXT:    fmv.s fs0, fa3594; RV64IFD-NEXT:    fmv.s fs1, fa2595; RV64IFD-NEXT:    fmv.s fs2, fa1596; RV64IFD-NEXT:    mv s0, a0597; RV64IFD-NEXT:    mv a0, sp598; RV64IFD-NEXT:    call frexpf599; RV64IFD-NEXT:    fmv.s fs3, fa0600; RV64IFD-NEXT:    addi a0, sp, 8601; RV64IFD-NEXT:    fmv.s fa0, fs2602; RV64IFD-NEXT:    call frexpf603; RV64IFD-NEXT:    fmv.s fs2, fa0604; RV64IFD-NEXT:    addi a0, sp, 16605; RV64IFD-NEXT:    fmv.s fa0, fs1606; RV64IFD-NEXT:    call frexpf607; RV64IFD-NEXT:    fmv.s fs1, fa0608; RV64IFD-NEXT:    addi a0, sp, 24609; RV64IFD-NEXT:    fmv.s fa0, fs0610; RV64IFD-NEXT:    call frexpf611; RV64IFD-NEXT:    ld a0, 0(sp)612; RV64IFD-NEXT:    ld a1, 8(sp)613; RV64IFD-NEXT:    ld a2, 16(sp)614; RV64IFD-NEXT:    ld a3, 24(sp)615; RV64IFD-NEXT:    sw a0, 16(s0)616; RV64IFD-NEXT:    sw a1, 20(s0)617; RV64IFD-NEXT:    sw a2, 24(s0)618; RV64IFD-NEXT:    sw a3, 28(s0)619; RV64IFD-NEXT:    fsw fs3, 0(s0)620; RV64IFD-NEXT:    fsw fs2, 4(s0)621; RV64IFD-NEXT:    fsw fs1, 8(s0)622; RV64IFD-NEXT:    fsw fa0, 12(s0)623; RV64IFD-NEXT:    ld ra, 72(sp) # 8-byte Folded Reload624; RV64IFD-NEXT:    ld s0, 64(sp) # 8-byte Folded Reload625; RV64IFD-NEXT:    fld fs0, 56(sp) # 8-byte Folded Reload626; RV64IFD-NEXT:    fld fs1, 48(sp) # 8-byte Folded Reload627; RV64IFD-NEXT:    fld fs2, 40(sp) # 8-byte Folded Reload628; RV64IFD-NEXT:    fld fs3, 32(sp) # 8-byte Folded Reload629; RV64IFD-NEXT:    addi sp, sp, 80630; RV64IFD-NEXT:    ret631;632; RV32IZFINXZDINX-LABEL: test_frexp_v4f32_v4i32:633; RV32IZFINXZDINX:       # %bb.0:634; RV32IZFINXZDINX-NEXT:    addi sp, sp, -32635; RV32IZFINXZDINX-NEXT:    sw ra, 28(sp) # 4-byte Folded Spill636; RV32IZFINXZDINX-NEXT:    sw s0, 24(sp) # 4-byte Folded Spill637; RV32IZFINXZDINX-NEXT:    sw s1, 20(sp) # 4-byte Folded Spill638; RV32IZFINXZDINX-NEXT:    sw s2, 16(sp) # 4-byte Folded Spill639; RV32IZFINXZDINX-NEXT:    sw s3, 12(sp) # 4-byte Folded Spill640; RV32IZFINXZDINX-NEXT:    sw s4, 8(sp) # 4-byte Folded Spill641; RV32IZFINXZDINX-NEXT:    mv s0, a4642; RV32IZFINXZDINX-NEXT:    mv s1, a3643; RV32IZFINXZDINX-NEXT:    mv s2, a2644; RV32IZFINXZDINX-NEXT:    mv a2, a1645; RV32IZFINXZDINX-NEXT:    mv s3, a0646; RV32IZFINXZDINX-NEXT:    addi a1, a0, 16647; RV32IZFINXZDINX-NEXT:    mv a0, a2648; RV32IZFINXZDINX-NEXT:    call frexpf649; RV32IZFINXZDINX-NEXT:    mv s4, a0650; RV32IZFINXZDINX-NEXT:    addi a1, s3, 20651; RV32IZFINXZDINX-NEXT:    mv a0, s2652; RV32IZFINXZDINX-NEXT:    call frexpf653; RV32IZFINXZDINX-NEXT:    mv s2, a0654; RV32IZFINXZDINX-NEXT:    addi a1, s3, 24655; RV32IZFINXZDINX-NEXT:    mv a0, s1656; RV32IZFINXZDINX-NEXT:    call frexpf657; RV32IZFINXZDINX-NEXT:    mv s1, a0658; RV32IZFINXZDINX-NEXT:    addi a1, s3, 28659; RV32IZFINXZDINX-NEXT:    mv a0, s0660; RV32IZFINXZDINX-NEXT:    call frexpf661; RV32IZFINXZDINX-NEXT:    sw s4, 0(s3)662; RV32IZFINXZDINX-NEXT:    sw s2, 4(s3)663; RV32IZFINXZDINX-NEXT:    sw s1, 8(s3)664; RV32IZFINXZDINX-NEXT:    sw a0, 12(s3)665; RV32IZFINXZDINX-NEXT:    lw ra, 28(sp) # 4-byte Folded Reload666; RV32IZFINXZDINX-NEXT:    lw s0, 24(sp) # 4-byte Folded Reload667; RV32IZFINXZDINX-NEXT:    lw s1, 20(sp) # 4-byte Folded Reload668; RV32IZFINXZDINX-NEXT:    lw s2, 16(sp) # 4-byte Folded Reload669; RV32IZFINXZDINX-NEXT:    lw s3, 12(sp) # 4-byte Folded Reload670; RV32IZFINXZDINX-NEXT:    lw s4, 8(sp) # 4-byte Folded Reload671; RV32IZFINXZDINX-NEXT:    addi sp, sp, 32672; RV32IZFINXZDINX-NEXT:    ret673;674; RV64IZFINXZDINX-LABEL: test_frexp_v4f32_v4i32:675; RV64IZFINXZDINX:       # %bb.0:676; RV64IZFINXZDINX-NEXT:    addi sp, sp, -80677; RV64IZFINXZDINX-NEXT:    sd ra, 72(sp) # 8-byte Folded Spill678; RV64IZFINXZDINX-NEXT:    sd s0, 64(sp) # 8-byte Folded Spill679; RV64IZFINXZDINX-NEXT:    sd s1, 56(sp) # 8-byte Folded Spill680; RV64IZFINXZDINX-NEXT:    sd s2, 48(sp) # 8-byte Folded Spill681; RV64IZFINXZDINX-NEXT:    sd s3, 40(sp) # 8-byte Folded Spill682; RV64IZFINXZDINX-NEXT:    sd s4, 32(sp) # 8-byte Folded Spill683; RV64IZFINXZDINX-NEXT:    mv s0, a4684; RV64IZFINXZDINX-NEXT:    mv s1, a3685; RV64IZFINXZDINX-NEXT:    mv s2, a2686; RV64IZFINXZDINX-NEXT:    mv a2, a1687; RV64IZFINXZDINX-NEXT:    mv s3, a0688; RV64IZFINXZDINX-NEXT:    mv a1, sp689; RV64IZFINXZDINX-NEXT:    mv a0, a2690; RV64IZFINXZDINX-NEXT:    call frexpf691; RV64IZFINXZDINX-NEXT:    mv s4, a0692; RV64IZFINXZDINX-NEXT:    addi a1, sp, 8693; RV64IZFINXZDINX-NEXT:    mv a0, s2694; RV64IZFINXZDINX-NEXT:    call frexpf695; RV64IZFINXZDINX-NEXT:    mv s2, a0696; RV64IZFINXZDINX-NEXT:    addi a1, sp, 16697; RV64IZFINXZDINX-NEXT:    mv a0, s1698; RV64IZFINXZDINX-NEXT:    call frexpf699; RV64IZFINXZDINX-NEXT:    mv s1, a0700; RV64IZFINXZDINX-NEXT:    addi a1, sp, 24701; RV64IZFINXZDINX-NEXT:    mv a0, s0702; RV64IZFINXZDINX-NEXT:    call frexpf703; RV64IZFINXZDINX-NEXT:    ld a1, 0(sp)704; RV64IZFINXZDINX-NEXT:    ld a2, 8(sp)705; RV64IZFINXZDINX-NEXT:    ld a3, 16(sp)706; RV64IZFINXZDINX-NEXT:    ld a4, 24(sp)707; RV64IZFINXZDINX-NEXT:    sw a1, 16(s3)708; RV64IZFINXZDINX-NEXT:    sw a2, 20(s3)709; RV64IZFINXZDINX-NEXT:    sw a3, 24(s3)710; RV64IZFINXZDINX-NEXT:    sw a4, 28(s3)711; RV64IZFINXZDINX-NEXT:    sw s4, 0(s3)712; RV64IZFINXZDINX-NEXT:    sw s2, 4(s3)713; RV64IZFINXZDINX-NEXT:    sw s1, 8(s3)714; RV64IZFINXZDINX-NEXT:    sw a0, 12(s3)715; RV64IZFINXZDINX-NEXT:    ld ra, 72(sp) # 8-byte Folded Reload716; RV64IZFINXZDINX-NEXT:    ld s0, 64(sp) # 8-byte Folded Reload717; RV64IZFINXZDINX-NEXT:    ld s1, 56(sp) # 8-byte Folded Reload718; RV64IZFINXZDINX-NEXT:    ld s2, 48(sp) # 8-byte Folded Reload719; RV64IZFINXZDINX-NEXT:    ld s3, 40(sp) # 8-byte Folded Reload720; RV64IZFINXZDINX-NEXT:    ld s4, 32(sp) # 8-byte Folded Reload721; RV64IZFINXZDINX-NEXT:    addi sp, sp, 80722; RV64IZFINXZDINX-NEXT:    ret723;724; RV32I-LABEL: test_frexp_v4f32_v4i32:725; RV32I:       # %bb.0:726; RV32I-NEXT:    addi sp, sp, -48727; RV32I-NEXT:    sw ra, 44(sp) # 4-byte Folded Spill728; RV32I-NEXT:    sw s0, 40(sp) # 4-byte Folded Spill729; RV32I-NEXT:    sw s1, 36(sp) # 4-byte Folded Spill730; RV32I-NEXT:    sw s2, 32(sp) # 4-byte Folded Spill731; RV32I-NEXT:    sw s3, 28(sp) # 4-byte Folded Spill732; RV32I-NEXT:    sw s4, 24(sp) # 4-byte Folded Spill733; RV32I-NEXT:    lw a2, 0(a1)734; RV32I-NEXT:    lw s0, 4(a1)735; RV32I-NEXT:    lw s1, 8(a1)736; RV32I-NEXT:    lw s2, 12(a1)737; RV32I-NEXT:    mv s3, a0738; RV32I-NEXT:    addi a1, sp, 8739; RV32I-NEXT:    mv a0, a2740; RV32I-NEXT:    call frexpf741; RV32I-NEXT:    mv s4, a0742; RV32I-NEXT:    addi a1, sp, 12743; RV32I-NEXT:    mv a0, s0744; RV32I-NEXT:    call frexpf745; RV32I-NEXT:    mv s0, a0746; RV32I-NEXT:    addi a1, sp, 16747; RV32I-NEXT:    mv a0, s1748; RV32I-NEXT:    call frexpf749; RV32I-NEXT:    mv s1, a0750; RV32I-NEXT:    addi a1, sp, 20751; RV32I-NEXT:    mv a0, s2752; RV32I-NEXT:    call frexpf753; RV32I-NEXT:    lw a1, 8(sp)754; RV32I-NEXT:    lw a2, 12(sp)755; RV32I-NEXT:    lw a3, 16(sp)756; RV32I-NEXT:    lw a4, 20(sp)757; RV32I-NEXT:    sw s4, 0(s3)758; RV32I-NEXT:    sw s0, 4(s3)759; RV32I-NEXT:    sw s1, 8(s3)760; RV32I-NEXT:    sw a0, 12(s3)761; RV32I-NEXT:    sw a1, 16(s3)762; RV32I-NEXT:    sw a2, 20(s3)763; RV32I-NEXT:    sw a3, 24(s3)764; RV32I-NEXT:    sw a4, 28(s3)765; RV32I-NEXT:    lw ra, 44(sp) # 4-byte Folded Reload766; RV32I-NEXT:    lw s0, 40(sp) # 4-byte Folded Reload767; RV32I-NEXT:    lw s1, 36(sp) # 4-byte Folded Reload768; RV32I-NEXT:    lw s2, 32(sp) # 4-byte Folded Reload769; RV32I-NEXT:    lw s3, 28(sp) # 4-byte Folded Reload770; RV32I-NEXT:    lw s4, 24(sp) # 4-byte Folded Reload771; RV32I-NEXT:    addi sp, sp, 48772; RV32I-NEXT:    ret773;774; RV64I-LABEL: test_frexp_v4f32_v4i32:775; RV64I:       # %bb.0:776; RV64I-NEXT:    addi sp, sp, -64777; RV64I-NEXT:    sd ra, 56(sp) # 8-byte Folded Spill778; RV64I-NEXT:    sd s0, 48(sp) # 8-byte Folded Spill779; RV64I-NEXT:    sd s1, 40(sp) # 8-byte Folded Spill780; RV64I-NEXT:    sd s2, 32(sp) # 8-byte Folded Spill781; RV64I-NEXT:    sd s3, 24(sp) # 8-byte Folded Spill782; RV64I-NEXT:    sd s4, 16(sp) # 8-byte Folded Spill783; RV64I-NEXT:    lw a2, 0(a1)784; RV64I-NEXT:    lw s0, 8(a1)785; RV64I-NEXT:    lw s1, 16(a1)786; RV64I-NEXT:    lw s2, 24(a1)787; RV64I-NEXT:    mv s3, a0788; RV64I-NEXT:    mv a1, sp789; RV64I-NEXT:    mv a0, a2790; RV64I-NEXT:    call frexpf791; RV64I-NEXT:    mv s4, a0792; RV64I-NEXT:    addi a1, sp, 4793; RV64I-NEXT:    mv a0, s0794; RV64I-NEXT:    call frexpf795; RV64I-NEXT:    mv s0, a0796; RV64I-NEXT:    addi a1, sp, 8797; RV64I-NEXT:    mv a0, s1798; RV64I-NEXT:    call frexpf799; RV64I-NEXT:    mv s1, a0800; RV64I-NEXT:    addi a1, sp, 12801; RV64I-NEXT:    mv a0, s2802; RV64I-NEXT:    call frexpf803; RV64I-NEXT:    lw a1, 0(sp)804; RV64I-NEXT:    lw a2, 4(sp)805; RV64I-NEXT:    lw a3, 8(sp)806; RV64I-NEXT:    lw a4, 12(sp)807; RV64I-NEXT:    sw s4, 0(s3)808; RV64I-NEXT:    sw s0, 4(s3)809; RV64I-NEXT:    sw s1, 8(s3)810; RV64I-NEXT:    sw a0, 12(s3)811; RV64I-NEXT:    sw a1, 16(s3)812; RV64I-NEXT:    sw a2, 20(s3)813; RV64I-NEXT:    sw a3, 24(s3)814; RV64I-NEXT:    sw a4, 28(s3)815; RV64I-NEXT:    ld ra, 56(sp) # 8-byte Folded Reload816; RV64I-NEXT:    ld s0, 48(sp) # 8-byte Folded Reload817; RV64I-NEXT:    ld s1, 40(sp) # 8-byte Folded Reload818; RV64I-NEXT:    ld s2, 32(sp) # 8-byte Folded Reload819; RV64I-NEXT:    ld s3, 24(sp) # 8-byte Folded Reload820; RV64I-NEXT:    ld s4, 16(sp) # 8-byte Folded Reload821; RV64I-NEXT:    addi sp, sp, 64822; RV64I-NEXT:    ret823  %result = call { <4 x float>, <4 x i32> } @llvm.frexp.v4f32.v4i32(<4 x float> %a)824  ret { <4 x float>, <4 x i32> } %result825}826 827define <4 x float> @test_frexp_v4f32_v4i32_only_use_fract(<4 x float> %a) nounwind {828; RV32IFD-LABEL: test_frexp_v4f32_v4i32_only_use_fract:829; RV32IFD:       # %bb.0:830; RV32IFD-NEXT:    addi sp, sp, -64831; RV32IFD-NEXT:    sw ra, 60(sp) # 4-byte Folded Spill832; RV32IFD-NEXT:    sw s0, 56(sp) # 4-byte Folded Spill833; RV32IFD-NEXT:    fsd fs0, 48(sp) # 8-byte Folded Spill834; RV32IFD-NEXT:    fsd fs1, 40(sp) # 8-byte Folded Spill835; RV32IFD-NEXT:    fsd fs2, 32(sp) # 8-byte Folded Spill836; RV32IFD-NEXT:    fsd fs3, 24(sp) # 8-byte Folded Spill837; RV32IFD-NEXT:    fmv.s fs0, fa3838; RV32IFD-NEXT:    fmv.s fs1, fa2839; RV32IFD-NEXT:    fmv.s fs2, fa1840; RV32IFD-NEXT:    mv s0, a0841; RV32IFD-NEXT:    addi a0, sp, 8842; RV32IFD-NEXT:    call frexpf843; RV32IFD-NEXT:    fmv.s fs3, fa0844; RV32IFD-NEXT:    addi a0, sp, 12845; RV32IFD-NEXT:    fmv.s fa0, fs2846; RV32IFD-NEXT:    call frexpf847; RV32IFD-NEXT:    fmv.s fs2, fa0848; RV32IFD-NEXT:    addi a0, sp, 16849; RV32IFD-NEXT:    fmv.s fa0, fs1850; RV32IFD-NEXT:    call frexpf851; RV32IFD-NEXT:    fmv.s fs1, fa0852; RV32IFD-NEXT:    addi a0, sp, 20853; RV32IFD-NEXT:    fmv.s fa0, fs0854; RV32IFD-NEXT:    call frexpf855; RV32IFD-NEXT:    fsw fs3, 0(s0)856; RV32IFD-NEXT:    fsw fs2, 4(s0)857; RV32IFD-NEXT:    fsw fs1, 8(s0)858; RV32IFD-NEXT:    fsw fa0, 12(s0)859; RV32IFD-NEXT:    lw ra, 60(sp) # 4-byte Folded Reload860; RV32IFD-NEXT:    lw s0, 56(sp) # 4-byte Folded Reload861; RV32IFD-NEXT:    fld fs0, 48(sp) # 8-byte Folded Reload862; RV32IFD-NEXT:    fld fs1, 40(sp) # 8-byte Folded Reload863; RV32IFD-NEXT:    fld fs2, 32(sp) # 8-byte Folded Reload864; RV32IFD-NEXT:    fld fs3, 24(sp) # 8-byte Folded Reload865; RV32IFD-NEXT:    addi sp, sp, 64866; RV32IFD-NEXT:    ret867;868; RV64IFD-LABEL: test_frexp_v4f32_v4i32_only_use_fract:869; RV64IFD:       # %bb.0:870; RV64IFD-NEXT:    addi sp, sp, -80871; RV64IFD-NEXT:    sd ra, 72(sp) # 8-byte Folded Spill872; RV64IFD-NEXT:    sd s0, 64(sp) # 8-byte Folded Spill873; RV64IFD-NEXT:    fsd fs0, 56(sp) # 8-byte Folded Spill874; RV64IFD-NEXT:    fsd fs1, 48(sp) # 8-byte Folded Spill875; RV64IFD-NEXT:    fsd fs2, 40(sp) # 8-byte Folded Spill876; RV64IFD-NEXT:    fsd fs3, 32(sp) # 8-byte Folded Spill877; RV64IFD-NEXT:    fmv.s fs0, fa3878; RV64IFD-NEXT:    fmv.s fs1, fa2879; RV64IFD-NEXT:    fmv.s fs2, fa1880; RV64IFD-NEXT:    mv s0, a0881; RV64IFD-NEXT:    mv a0, sp882; RV64IFD-NEXT:    call frexpf883; RV64IFD-NEXT:    fmv.s fs3, fa0884; RV64IFD-NEXT:    addi a0, sp, 8885; RV64IFD-NEXT:    fmv.s fa0, fs2886; RV64IFD-NEXT:    call frexpf887; RV64IFD-NEXT:    fmv.s fs2, fa0888; RV64IFD-NEXT:    addi a0, sp, 16889; RV64IFD-NEXT:    fmv.s fa0, fs1890; RV64IFD-NEXT:    call frexpf891; RV64IFD-NEXT:    fmv.s fs1, fa0892; RV64IFD-NEXT:    addi a0, sp, 24893; RV64IFD-NEXT:    fmv.s fa0, fs0894; RV64IFD-NEXT:    call frexpf895; RV64IFD-NEXT:    fsw fs3, 0(s0)896; RV64IFD-NEXT:    fsw fs2, 4(s0)897; RV64IFD-NEXT:    fsw fs1, 8(s0)898; RV64IFD-NEXT:    fsw fa0, 12(s0)899; RV64IFD-NEXT:    ld ra, 72(sp) # 8-byte Folded Reload900; RV64IFD-NEXT:    ld s0, 64(sp) # 8-byte Folded Reload901; RV64IFD-NEXT:    fld fs0, 56(sp) # 8-byte Folded Reload902; RV64IFD-NEXT:    fld fs1, 48(sp) # 8-byte Folded Reload903; RV64IFD-NEXT:    fld fs2, 40(sp) # 8-byte Folded Reload904; RV64IFD-NEXT:    fld fs3, 32(sp) # 8-byte Folded Reload905; RV64IFD-NEXT:    addi sp, sp, 80906; RV64IFD-NEXT:    ret907;908; RV32IZFINXZDINX-LABEL: test_frexp_v4f32_v4i32_only_use_fract:909; RV32IZFINXZDINX:       # %bb.0:910; RV32IZFINXZDINX-NEXT:    addi sp, sp, -48911; RV32IZFINXZDINX-NEXT:    sw ra, 44(sp) # 4-byte Folded Spill912; RV32IZFINXZDINX-NEXT:    sw s0, 40(sp) # 4-byte Folded Spill913; RV32IZFINXZDINX-NEXT:    sw s1, 36(sp) # 4-byte Folded Spill914; RV32IZFINXZDINX-NEXT:    sw s2, 32(sp) # 4-byte Folded Spill915; RV32IZFINXZDINX-NEXT:    sw s3, 28(sp) # 4-byte Folded Spill916; RV32IZFINXZDINX-NEXT:    sw s4, 24(sp) # 4-byte Folded Spill917; RV32IZFINXZDINX-NEXT:    mv s0, a4918; RV32IZFINXZDINX-NEXT:    mv s1, a3919; RV32IZFINXZDINX-NEXT:    mv s2, a2920; RV32IZFINXZDINX-NEXT:    mv a2, a1921; RV32IZFINXZDINX-NEXT:    mv s3, a0922; RV32IZFINXZDINX-NEXT:    addi a1, sp, 8923; RV32IZFINXZDINX-NEXT:    mv a0, a2924; RV32IZFINXZDINX-NEXT:    call frexpf925; RV32IZFINXZDINX-NEXT:    mv s4, a0926; RV32IZFINXZDINX-NEXT:    addi a1, sp, 12927; RV32IZFINXZDINX-NEXT:    mv a0, s2928; RV32IZFINXZDINX-NEXT:    call frexpf929; RV32IZFINXZDINX-NEXT:    mv s2, a0930; RV32IZFINXZDINX-NEXT:    addi a1, sp, 16931; RV32IZFINXZDINX-NEXT:    mv a0, s1932; RV32IZFINXZDINX-NEXT:    call frexpf933; RV32IZFINXZDINX-NEXT:    mv s1, a0934; RV32IZFINXZDINX-NEXT:    addi a1, sp, 20935; RV32IZFINXZDINX-NEXT:    mv a0, s0936; RV32IZFINXZDINX-NEXT:    call frexpf937; RV32IZFINXZDINX-NEXT:    sw s4, 0(s3)938; RV32IZFINXZDINX-NEXT:    sw s2, 4(s3)939; RV32IZFINXZDINX-NEXT:    sw s1, 8(s3)940; RV32IZFINXZDINX-NEXT:    sw a0, 12(s3)941; RV32IZFINXZDINX-NEXT:    lw ra, 44(sp) # 4-byte Folded Reload942; RV32IZFINXZDINX-NEXT:    lw s0, 40(sp) # 4-byte Folded Reload943; RV32IZFINXZDINX-NEXT:    lw s1, 36(sp) # 4-byte Folded Reload944; RV32IZFINXZDINX-NEXT:    lw s2, 32(sp) # 4-byte Folded Reload945; RV32IZFINXZDINX-NEXT:    lw s3, 28(sp) # 4-byte Folded Reload946; RV32IZFINXZDINX-NEXT:    lw s4, 24(sp) # 4-byte Folded Reload947; RV32IZFINXZDINX-NEXT:    addi sp, sp, 48948; RV32IZFINXZDINX-NEXT:    ret949;950; RV64IZFINXZDINX-LABEL: test_frexp_v4f32_v4i32_only_use_fract:951; RV64IZFINXZDINX:       # %bb.0:952; RV64IZFINXZDINX-NEXT:    addi sp, sp, -80953; RV64IZFINXZDINX-NEXT:    sd ra, 72(sp) # 8-byte Folded Spill954; RV64IZFINXZDINX-NEXT:    sd s0, 64(sp) # 8-byte Folded Spill955; RV64IZFINXZDINX-NEXT:    sd s1, 56(sp) # 8-byte Folded Spill956; RV64IZFINXZDINX-NEXT:    sd s2, 48(sp) # 8-byte Folded Spill957; RV64IZFINXZDINX-NEXT:    sd s3, 40(sp) # 8-byte Folded Spill958; RV64IZFINXZDINX-NEXT:    sd s4, 32(sp) # 8-byte Folded Spill959; RV64IZFINXZDINX-NEXT:    mv s0, a4960; RV64IZFINXZDINX-NEXT:    mv s1, a3961; RV64IZFINXZDINX-NEXT:    mv s2, a2962; RV64IZFINXZDINX-NEXT:    mv a2, a1963; RV64IZFINXZDINX-NEXT:    mv s3, a0964; RV64IZFINXZDINX-NEXT:    mv a1, sp965; RV64IZFINXZDINX-NEXT:    mv a0, a2966; RV64IZFINXZDINX-NEXT:    call frexpf967; RV64IZFINXZDINX-NEXT:    mv s4, a0968; RV64IZFINXZDINX-NEXT:    addi a1, sp, 8969; RV64IZFINXZDINX-NEXT:    mv a0, s2970; RV64IZFINXZDINX-NEXT:    call frexpf971; RV64IZFINXZDINX-NEXT:    mv s2, a0972; RV64IZFINXZDINX-NEXT:    addi a1, sp, 16973; RV64IZFINXZDINX-NEXT:    mv a0, s1974; RV64IZFINXZDINX-NEXT:    call frexpf975; RV64IZFINXZDINX-NEXT:    mv s1, a0976; RV64IZFINXZDINX-NEXT:    addi a1, sp, 24977; RV64IZFINXZDINX-NEXT:    mv a0, s0978; RV64IZFINXZDINX-NEXT:    call frexpf979; RV64IZFINXZDINX-NEXT:    sw s4, 0(s3)980; RV64IZFINXZDINX-NEXT:    sw s2, 4(s3)981; RV64IZFINXZDINX-NEXT:    sw s1, 8(s3)982; RV64IZFINXZDINX-NEXT:    sw a0, 12(s3)983; RV64IZFINXZDINX-NEXT:    ld ra, 72(sp) # 8-byte Folded Reload984; RV64IZFINXZDINX-NEXT:    ld s0, 64(sp) # 8-byte Folded Reload985; RV64IZFINXZDINX-NEXT:    ld s1, 56(sp) # 8-byte Folded Reload986; RV64IZFINXZDINX-NEXT:    ld s2, 48(sp) # 8-byte Folded Reload987; RV64IZFINXZDINX-NEXT:    ld s3, 40(sp) # 8-byte Folded Reload988; RV64IZFINXZDINX-NEXT:    ld s4, 32(sp) # 8-byte Folded Reload989; RV64IZFINXZDINX-NEXT:    addi sp, sp, 80990; RV64IZFINXZDINX-NEXT:    ret991;992; RV32I-LABEL: test_frexp_v4f32_v4i32_only_use_fract:993; RV32I:       # %bb.0:994; RV32I-NEXT:    addi sp, sp, -48995; RV32I-NEXT:    sw ra, 44(sp) # 4-byte Folded Spill996; RV32I-NEXT:    sw s0, 40(sp) # 4-byte Folded Spill997; RV32I-NEXT:    sw s1, 36(sp) # 4-byte Folded Spill998; RV32I-NEXT:    sw s2, 32(sp) # 4-byte Folded Spill999; RV32I-NEXT:    sw s3, 28(sp) # 4-byte Folded Spill1000; RV32I-NEXT:    sw s4, 24(sp) # 4-byte Folded Spill1001; RV32I-NEXT:    lw a2, 0(a1)1002; RV32I-NEXT:    lw s0, 4(a1)1003; RV32I-NEXT:    lw s1, 8(a1)1004; RV32I-NEXT:    lw s2, 12(a1)1005; RV32I-NEXT:    mv s3, a01006; RV32I-NEXT:    addi a1, sp, 81007; RV32I-NEXT:    mv a0, a21008; RV32I-NEXT:    call frexpf1009; RV32I-NEXT:    mv s4, a01010; RV32I-NEXT:    addi a1, sp, 121011; RV32I-NEXT:    mv a0, s01012; RV32I-NEXT:    call frexpf1013; RV32I-NEXT:    mv s0, a01014; RV32I-NEXT:    addi a1, sp, 161015; RV32I-NEXT:    mv a0, s11016; RV32I-NEXT:    call frexpf1017; RV32I-NEXT:    mv s1, a01018; RV32I-NEXT:    addi a1, sp, 201019; RV32I-NEXT:    mv a0, s21020; RV32I-NEXT:    call frexpf1021; RV32I-NEXT:    sw s4, 0(s3)1022; RV32I-NEXT:    sw s0, 4(s3)1023; RV32I-NEXT:    sw s1, 8(s3)1024; RV32I-NEXT:    sw a0, 12(s3)1025; RV32I-NEXT:    lw ra, 44(sp) # 4-byte Folded Reload1026; RV32I-NEXT:    lw s0, 40(sp) # 4-byte Folded Reload1027; RV32I-NEXT:    lw s1, 36(sp) # 4-byte Folded Reload1028; RV32I-NEXT:    lw s2, 32(sp) # 4-byte Folded Reload1029; RV32I-NEXT:    lw s3, 28(sp) # 4-byte Folded Reload1030; RV32I-NEXT:    lw s4, 24(sp) # 4-byte Folded Reload1031; RV32I-NEXT:    addi sp, sp, 481032; RV32I-NEXT:    ret1033;1034; RV64I-LABEL: test_frexp_v4f32_v4i32_only_use_fract:1035; RV64I:       # %bb.0:1036; RV64I-NEXT:    addi sp, sp, -641037; RV64I-NEXT:    sd ra, 56(sp) # 8-byte Folded Spill1038; RV64I-NEXT:    sd s0, 48(sp) # 8-byte Folded Spill1039; RV64I-NEXT:    sd s1, 40(sp) # 8-byte Folded Spill1040; RV64I-NEXT:    sd s2, 32(sp) # 8-byte Folded Spill1041; RV64I-NEXT:    sd s3, 24(sp) # 8-byte Folded Spill1042; RV64I-NEXT:    sd s4, 16(sp) # 8-byte Folded Spill1043; RV64I-NEXT:    lw a2, 0(a1)1044; RV64I-NEXT:    lw s0, 8(a1)1045; RV64I-NEXT:    lw s1, 16(a1)1046; RV64I-NEXT:    lw s2, 24(a1)1047; RV64I-NEXT:    mv s3, a01048; RV64I-NEXT:    mv a1, sp1049; RV64I-NEXT:    mv a0, a21050; RV64I-NEXT:    call frexpf1051; RV64I-NEXT:    mv s4, a01052; RV64I-NEXT:    addi a1, sp, 41053; RV64I-NEXT:    mv a0, s01054; RV64I-NEXT:    call frexpf1055; RV64I-NEXT:    mv s0, a01056; RV64I-NEXT:    addi a1, sp, 81057; RV64I-NEXT:    mv a0, s11058; RV64I-NEXT:    call frexpf1059; RV64I-NEXT:    mv s1, a01060; RV64I-NEXT:    addi a1, sp, 121061; RV64I-NEXT:    mv a0, s21062; RV64I-NEXT:    call frexpf1063; RV64I-NEXT:    sw s4, 0(s3)1064; RV64I-NEXT:    sw s0, 4(s3)1065; RV64I-NEXT:    sw s1, 8(s3)1066; RV64I-NEXT:    sw a0, 12(s3)1067; RV64I-NEXT:    ld ra, 56(sp) # 8-byte Folded Reload1068; RV64I-NEXT:    ld s0, 48(sp) # 8-byte Folded Reload1069; RV64I-NEXT:    ld s1, 40(sp) # 8-byte Folded Reload1070; RV64I-NEXT:    ld s2, 32(sp) # 8-byte Folded Reload1071; RV64I-NEXT:    ld s3, 24(sp) # 8-byte Folded Reload1072; RV64I-NEXT:    ld s4, 16(sp) # 8-byte Folded Reload1073; RV64I-NEXT:    addi sp, sp, 641074; RV64I-NEXT:    ret1075  %result = call { <4 x float>, <4 x i32> } @llvm.frexp.v4f32.v4i32(<4 x float> %a)1076  %result.0 = extractvalue { <4 x float>, <4 x i32> } %result, 01077  ret <4 x float> %result.01078}1079 1080define <4 x i32> @test_frexp_v4f32_v4i32_only_use_exp(<4 x float> %a) nounwind {1081; RV32IFD-LABEL: test_frexp_v4f32_v4i32_only_use_exp:1082; RV32IFD:       # %bb.0:1083; RV32IFD-NEXT:    addi sp, sp, -321084; RV32IFD-NEXT:    sw ra, 28(sp) # 4-byte Folded Spill1085; RV32IFD-NEXT:    sw s0, 24(sp) # 4-byte Folded Spill1086; RV32IFD-NEXT:    fsd fs0, 16(sp) # 8-byte Folded Spill1087; RV32IFD-NEXT:    fsd fs1, 8(sp) # 8-byte Folded Spill1088; RV32IFD-NEXT:    fsd fs2, 0(sp) # 8-byte Folded Spill1089; RV32IFD-NEXT:    fmv.s fs0, fa21090; RV32IFD-NEXT:    fmv.s fs1, fa11091; RV32IFD-NEXT:    fmv.s fs2, fa01092; RV32IFD-NEXT:    mv s0, a01093; RV32IFD-NEXT:    addi a0, a0, 121094; RV32IFD-NEXT:    fmv.s fa0, fa31095; RV32IFD-NEXT:    call frexpf1096; RV32IFD-NEXT:    addi a0, s0, 81097; RV32IFD-NEXT:    fmv.s fa0, fs01098; RV32IFD-NEXT:    call frexpf1099; RV32IFD-NEXT:    addi a0, s0, 41100; RV32IFD-NEXT:    fmv.s fa0, fs11101; RV32IFD-NEXT:    call frexpf1102; RV32IFD-NEXT:    fmv.s fa0, fs21103; RV32IFD-NEXT:    mv a0, s01104; RV32IFD-NEXT:    call frexpf1105; RV32IFD-NEXT:    lw ra, 28(sp) # 4-byte Folded Reload1106; RV32IFD-NEXT:    lw s0, 24(sp) # 4-byte Folded Reload1107; RV32IFD-NEXT:    fld fs0, 16(sp) # 8-byte Folded Reload1108; RV32IFD-NEXT:    fld fs1, 8(sp) # 8-byte Folded Reload1109; RV32IFD-NEXT:    fld fs2, 0(sp) # 8-byte Folded Reload1110; RV32IFD-NEXT:    addi sp, sp, 321111; RV32IFD-NEXT:    ret1112;1113; RV64IFD-LABEL: test_frexp_v4f32_v4i32_only_use_exp:1114; RV64IFD:       # %bb.0:1115; RV64IFD-NEXT:    addi sp, sp, -801116; RV64IFD-NEXT:    sd ra, 72(sp) # 8-byte Folded Spill1117; RV64IFD-NEXT:    sd s0, 64(sp) # 8-byte Folded Spill1118; RV64IFD-NEXT:    fsd fs0, 56(sp) # 8-byte Folded Spill1119; RV64IFD-NEXT:    fsd fs1, 48(sp) # 8-byte Folded Spill1120; RV64IFD-NEXT:    fsd fs2, 40(sp) # 8-byte Folded Spill1121; RV64IFD-NEXT:    fmv.s fs0, fa31122; RV64IFD-NEXT:    fmv.s fs1, fa21123; RV64IFD-NEXT:    fmv.s fs2, fa11124; RV64IFD-NEXT:    mv s0, a01125; RV64IFD-NEXT:    addi a0, sp, 81126; RV64IFD-NEXT:    call frexpf1127; RV64IFD-NEXT:    addi a0, sp, 161128; RV64IFD-NEXT:    fmv.s fa0, fs21129; RV64IFD-NEXT:    call frexpf1130; RV64IFD-NEXT:    addi a0, sp, 241131; RV64IFD-NEXT:    fmv.s fa0, fs11132; RV64IFD-NEXT:    call frexpf1133; RV64IFD-NEXT:    addi a0, sp, 321134; RV64IFD-NEXT:    fmv.s fa0, fs01135; RV64IFD-NEXT:    call frexpf1136; RV64IFD-NEXT:    ld a0, 8(sp)1137; RV64IFD-NEXT:    ld a1, 16(sp)1138; RV64IFD-NEXT:    ld a2, 24(sp)1139; RV64IFD-NEXT:    ld a3, 32(sp)1140; RV64IFD-NEXT:    sw a0, 0(s0)1141; RV64IFD-NEXT:    sw a1, 4(s0)1142; RV64IFD-NEXT:    sw a2, 8(s0)1143; RV64IFD-NEXT:    sw a3, 12(s0)1144; RV64IFD-NEXT:    ld ra, 72(sp) # 8-byte Folded Reload1145; RV64IFD-NEXT:    ld s0, 64(sp) # 8-byte Folded Reload1146; RV64IFD-NEXT:    fld fs0, 56(sp) # 8-byte Folded Reload1147; RV64IFD-NEXT:    fld fs1, 48(sp) # 8-byte Folded Reload1148; RV64IFD-NEXT:    fld fs2, 40(sp) # 8-byte Folded Reload1149; RV64IFD-NEXT:    addi sp, sp, 801150; RV64IFD-NEXT:    ret1151;1152; RV32IZFINXZDINX-LABEL: test_frexp_v4f32_v4i32_only_use_exp:1153; RV32IZFINXZDINX:       # %bb.0:1154; RV32IZFINXZDINX-NEXT:    addi sp, sp, -321155; RV32IZFINXZDINX-NEXT:    sw ra, 28(sp) # 4-byte Folded Spill1156; RV32IZFINXZDINX-NEXT:    sw s0, 24(sp) # 4-byte Folded Spill1157; RV32IZFINXZDINX-NEXT:    sw s1, 20(sp) # 4-byte Folded Spill1158; RV32IZFINXZDINX-NEXT:    sw s2, 16(sp) # 4-byte Folded Spill1159; RV32IZFINXZDINX-NEXT:    sw s3, 12(sp) # 4-byte Folded Spill1160; RV32IZFINXZDINX-NEXT:    mv s0, a31161; RV32IZFINXZDINX-NEXT:    mv s1, a21162; RV32IZFINXZDINX-NEXT:    mv s2, a11163; RV32IZFINXZDINX-NEXT:    mv s3, a01164; RV32IZFINXZDINX-NEXT:    addi a1, a0, 121165; RV32IZFINXZDINX-NEXT:    mv a0, a41166; RV32IZFINXZDINX-NEXT:    call frexpf1167; RV32IZFINXZDINX-NEXT:    addi a1, s3, 81168; RV32IZFINXZDINX-NEXT:    mv a0, s01169; RV32IZFINXZDINX-NEXT:    call frexpf1170; RV32IZFINXZDINX-NEXT:    addi a1, s3, 41171; RV32IZFINXZDINX-NEXT:    mv a0, s11172; RV32IZFINXZDINX-NEXT:    call frexpf1173; RV32IZFINXZDINX-NEXT:    mv a0, s21174; RV32IZFINXZDINX-NEXT:    mv a1, s31175; RV32IZFINXZDINX-NEXT:    call frexpf1176; RV32IZFINXZDINX-NEXT:    lw ra, 28(sp) # 4-byte Folded Reload1177; RV32IZFINXZDINX-NEXT:    lw s0, 24(sp) # 4-byte Folded Reload1178; RV32IZFINXZDINX-NEXT:    lw s1, 20(sp) # 4-byte Folded Reload1179; RV32IZFINXZDINX-NEXT:    lw s2, 16(sp) # 4-byte Folded Reload1180; RV32IZFINXZDINX-NEXT:    lw s3, 12(sp) # 4-byte Folded Reload1181; RV32IZFINXZDINX-NEXT:    addi sp, sp, 321182; RV32IZFINXZDINX-NEXT:    ret1183;1184; RV64IZFINXZDINX-LABEL: test_frexp_v4f32_v4i32_only_use_exp:1185; RV64IZFINXZDINX:       # %bb.0:1186; RV64IZFINXZDINX-NEXT:    addi sp, sp, -801187; RV64IZFINXZDINX-NEXT:    sd ra, 72(sp) # 8-byte Folded Spill1188; RV64IZFINXZDINX-NEXT:    sd s0, 64(sp) # 8-byte Folded Spill1189; RV64IZFINXZDINX-NEXT:    sd s1, 56(sp) # 8-byte Folded Spill1190; RV64IZFINXZDINX-NEXT:    sd s2, 48(sp) # 8-byte Folded Spill1191; RV64IZFINXZDINX-NEXT:    sd s3, 40(sp) # 8-byte Folded Spill1192; RV64IZFINXZDINX-NEXT:    mv s0, a41193; RV64IZFINXZDINX-NEXT:    mv s1, a31194; RV64IZFINXZDINX-NEXT:    mv s2, a21195; RV64IZFINXZDINX-NEXT:    mv a2, a11196; RV64IZFINXZDINX-NEXT:    mv s3, a01197; RV64IZFINXZDINX-NEXT:    addi a1, sp, 81198; RV64IZFINXZDINX-NEXT:    mv a0, a21199; RV64IZFINXZDINX-NEXT:    call frexpf1200; RV64IZFINXZDINX-NEXT:    addi a1, sp, 161201; RV64IZFINXZDINX-NEXT:    mv a0, s21202; RV64IZFINXZDINX-NEXT:    call frexpf1203; RV64IZFINXZDINX-NEXT:    addi a1, sp, 241204; RV64IZFINXZDINX-NEXT:    mv a0, s11205; RV64IZFINXZDINX-NEXT:    call frexpf1206; RV64IZFINXZDINX-NEXT:    addi a1, sp, 321207; RV64IZFINXZDINX-NEXT:    mv a0, s01208; RV64IZFINXZDINX-NEXT:    call frexpf1209; RV64IZFINXZDINX-NEXT:    ld a0, 8(sp)1210; RV64IZFINXZDINX-NEXT:    ld a1, 16(sp)1211; RV64IZFINXZDINX-NEXT:    ld a2, 24(sp)1212; RV64IZFINXZDINX-NEXT:    ld a3, 32(sp)1213; RV64IZFINXZDINX-NEXT:    sw a0, 0(s3)1214; RV64IZFINXZDINX-NEXT:    sw a1, 4(s3)1215; RV64IZFINXZDINX-NEXT:    sw a2, 8(s3)1216; RV64IZFINXZDINX-NEXT:    sw a3, 12(s3)1217; RV64IZFINXZDINX-NEXT:    ld ra, 72(sp) # 8-byte Folded Reload1218; RV64IZFINXZDINX-NEXT:    ld s0, 64(sp) # 8-byte Folded Reload1219; RV64IZFINXZDINX-NEXT:    ld s1, 56(sp) # 8-byte Folded Reload1220; RV64IZFINXZDINX-NEXT:    ld s2, 48(sp) # 8-byte Folded Reload1221; RV64IZFINXZDINX-NEXT:    ld s3, 40(sp) # 8-byte Folded Reload1222; RV64IZFINXZDINX-NEXT:    addi sp, sp, 801223; RV64IZFINXZDINX-NEXT:    ret1224;1225; RV32I-LABEL: test_frexp_v4f32_v4i32_only_use_exp:1226; RV32I:       # %bb.0:1227; RV32I-NEXT:    addi sp, sp, -481228; RV32I-NEXT:    sw ra, 44(sp) # 4-byte Folded Spill1229; RV32I-NEXT:    sw s0, 40(sp) # 4-byte Folded Spill1230; RV32I-NEXT:    sw s1, 36(sp) # 4-byte Folded Spill1231; RV32I-NEXT:    sw s2, 32(sp) # 4-byte Folded Spill1232; RV32I-NEXT:    sw s3, 28(sp) # 4-byte Folded Spill1233; RV32I-NEXT:    lw a2, 0(a1)1234; RV32I-NEXT:    lw s0, 4(a1)1235; RV32I-NEXT:    lw s1, 8(a1)1236; RV32I-NEXT:    lw s2, 12(a1)1237; RV32I-NEXT:    mv s3, a01238; RV32I-NEXT:    addi a1, sp, 121239; RV32I-NEXT:    mv a0, a21240; RV32I-NEXT:    call frexpf1241; RV32I-NEXT:    addi a1, sp, 161242; RV32I-NEXT:    mv a0, s01243; RV32I-NEXT:    call frexpf1244; RV32I-NEXT:    addi a1, sp, 201245; RV32I-NEXT:    mv a0, s11246; RV32I-NEXT:    call frexpf1247; RV32I-NEXT:    addi a1, sp, 241248; RV32I-NEXT:    mv a0, s21249; RV32I-NEXT:    call frexpf1250; RV32I-NEXT:    lw a0, 12(sp)1251; RV32I-NEXT:    lw a1, 16(sp)1252; RV32I-NEXT:    lw a2, 20(sp)1253; RV32I-NEXT:    lw a3, 24(sp)1254; RV32I-NEXT:    sw a0, 0(s3)1255; RV32I-NEXT:    sw a1, 4(s3)1256; RV32I-NEXT:    sw a2, 8(s3)1257; RV32I-NEXT:    sw a3, 12(s3)1258; RV32I-NEXT:    lw ra, 44(sp) # 4-byte Folded Reload1259; RV32I-NEXT:    lw s0, 40(sp) # 4-byte Folded Reload1260; RV32I-NEXT:    lw s1, 36(sp) # 4-byte Folded Reload1261; RV32I-NEXT:    lw s2, 32(sp) # 4-byte Folded Reload1262; RV32I-NEXT:    lw s3, 28(sp) # 4-byte Folded Reload1263; RV32I-NEXT:    addi sp, sp, 481264; RV32I-NEXT:    ret1265;1266; RV64I-LABEL: test_frexp_v4f32_v4i32_only_use_exp:1267; RV64I:       # %bb.0:1268; RV64I-NEXT:    addi sp, sp, -641269; RV64I-NEXT:    sd ra, 56(sp) # 8-byte Folded Spill1270; RV64I-NEXT:    sd s0, 48(sp) # 8-byte Folded Spill1271; RV64I-NEXT:    sd s1, 40(sp) # 8-byte Folded Spill1272; RV64I-NEXT:    sd s2, 32(sp) # 8-byte Folded Spill1273; RV64I-NEXT:    sd s3, 24(sp) # 8-byte Folded Spill1274; RV64I-NEXT:    lw a2, 0(a1)1275; RV64I-NEXT:    lw s0, 8(a1)1276; RV64I-NEXT:    lw s1, 16(a1)1277; RV64I-NEXT:    lw s2, 24(a1)1278; RV64I-NEXT:    mv s3, a01279; RV64I-NEXT:    addi a1, sp, 81280; RV64I-NEXT:    mv a0, a21281; RV64I-NEXT:    call frexpf1282; RV64I-NEXT:    addi a1, sp, 121283; RV64I-NEXT:    mv a0, s01284; RV64I-NEXT:    call frexpf1285; RV64I-NEXT:    addi a1, sp, 161286; RV64I-NEXT:    mv a0, s11287; RV64I-NEXT:    call frexpf1288; RV64I-NEXT:    addi a1, sp, 201289; RV64I-NEXT:    mv a0, s21290; RV64I-NEXT:    call frexpf1291; RV64I-NEXT:    lw a0, 8(sp)1292; RV64I-NEXT:    lw a1, 12(sp)1293; RV64I-NEXT:    lw a2, 16(sp)1294; RV64I-NEXT:    lw a3, 20(sp)1295; RV64I-NEXT:    sw a0, 0(s3)1296; RV64I-NEXT:    sw a1, 4(s3)1297; RV64I-NEXT:    sw a2, 8(s3)1298; RV64I-NEXT:    sw a3, 12(s3)1299; RV64I-NEXT:    ld ra, 56(sp) # 8-byte Folded Reload1300; RV64I-NEXT:    ld s0, 48(sp) # 8-byte Folded Reload1301; RV64I-NEXT:    ld s1, 40(sp) # 8-byte Folded Reload1302; RV64I-NEXT:    ld s2, 32(sp) # 8-byte Folded Reload1303; RV64I-NEXT:    ld s3, 24(sp) # 8-byte Folded Reload1304; RV64I-NEXT:    addi sp, sp, 641305; RV64I-NEXT:    ret1306  %result = call { <4 x float>, <4 x i32> } @llvm.frexp.v4f32.v4i32(<4 x float> %a)1307  %result.1 = extractvalue { <4 x float>, <4 x i32> } %result, 11308  ret <4 x i32> %result.11309}1310 1311define { double, i32 } @test_frexp_f64_i32(double %a) nounwind {1312; RV32IFD-LABEL: test_frexp_f64_i32:1313; RV32IFD:       # %bb.0:1314; RV32IFD-NEXT:    addi sp, sp, -161315; RV32IFD-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1316; RV32IFD-NEXT:    addi a0, sp, 81317; RV32IFD-NEXT:    call frexp1318; RV32IFD-NEXT:    lw a0, 8(sp)1319; RV32IFD-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1320; RV32IFD-NEXT:    addi sp, sp, 161321; RV32IFD-NEXT:    ret1322;1323; RV64IFD-LABEL: test_frexp_f64_i32:1324; RV64IFD:       # %bb.0:1325; RV64IFD-NEXT:    addi sp, sp, -161326; RV64IFD-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1327; RV64IFD-NEXT:    mv a0, sp1328; RV64IFD-NEXT:    call frexp1329; RV64IFD-NEXT:    ld a0, 0(sp)1330; RV64IFD-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1331; RV64IFD-NEXT:    addi sp, sp, 161332; RV64IFD-NEXT:    ret1333;1334; RV32IZFINXZDINX-LABEL: test_frexp_f64_i32:1335; RV32IZFINXZDINX:       # %bb.0:1336; RV32IZFINXZDINX-NEXT:    addi sp, sp, -161337; RV32IZFINXZDINX-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1338; RV32IZFINXZDINX-NEXT:    addi a2, sp, 81339; RV32IZFINXZDINX-NEXT:    call frexp1340; RV32IZFINXZDINX-NEXT:    lw a2, 8(sp)1341; RV32IZFINXZDINX-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1342; RV32IZFINXZDINX-NEXT:    addi sp, sp, 161343; RV32IZFINXZDINX-NEXT:    ret1344;1345; RV64IZFINXZDINX-LABEL: test_frexp_f64_i32:1346; RV64IZFINXZDINX:       # %bb.0:1347; RV64IZFINXZDINX-NEXT:    addi sp, sp, -161348; RV64IZFINXZDINX-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1349; RV64IZFINXZDINX-NEXT:    mv a1, sp1350; RV64IZFINXZDINX-NEXT:    call frexp1351; RV64IZFINXZDINX-NEXT:    ld a1, 0(sp)1352; RV64IZFINXZDINX-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1353; RV64IZFINXZDINX-NEXT:    addi sp, sp, 161354; RV64IZFINXZDINX-NEXT:    ret1355;1356; RV32I-LABEL: test_frexp_f64_i32:1357; RV32I:       # %bb.0:1358; RV32I-NEXT:    addi sp, sp, -161359; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1360; RV32I-NEXT:    sw s0, 8(sp) # 4-byte Folded Spill1361; RV32I-NEXT:    mv a3, a21362; RV32I-NEXT:    mv s0, a01363; RV32I-NEXT:    addi a2, sp, 41364; RV32I-NEXT:    mv a0, a11365; RV32I-NEXT:    mv a1, a31366; RV32I-NEXT:    call frexp1367; RV32I-NEXT:    lw a2, 4(sp)1368; RV32I-NEXT:    sw a0, 0(s0)1369; RV32I-NEXT:    sw a1, 4(s0)1370; RV32I-NEXT:    sw a2, 8(s0)1371; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1372; RV32I-NEXT:    lw s0, 8(sp) # 4-byte Folded Reload1373; RV32I-NEXT:    addi sp, sp, 161374; RV32I-NEXT:    ret1375;1376; RV64I-LABEL: test_frexp_f64_i32:1377; RV64I:       # %bb.0:1378; RV64I-NEXT:    addi sp, sp, -161379; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1380; RV64I-NEXT:    addi a1, sp, 41381; RV64I-NEXT:    call frexp1382; RV64I-NEXT:    lw a1, 4(sp)1383; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1384; RV64I-NEXT:    addi sp, sp, 161385; RV64I-NEXT:    ret1386  %result = call { double, i32 } @llvm.frexp.f64.i32(double %a)1387  ret { double, i32 } %result1388}1389 1390define double @test_frexp_f64_i32_only_use_fract(double %a) nounwind {1391; RV32IFD-LABEL: test_frexp_f64_i32_only_use_fract:1392; RV32IFD:       # %bb.0:1393; RV32IFD-NEXT:    addi sp, sp, -161394; RV32IFD-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1395; RV32IFD-NEXT:    addi a0, sp, 81396; RV32IFD-NEXT:    call frexp1397; RV32IFD-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1398; RV32IFD-NEXT:    addi sp, sp, 161399; RV32IFD-NEXT:    ret1400;1401; RV64IFD-LABEL: test_frexp_f64_i32_only_use_fract:1402; RV64IFD:       # %bb.0:1403; RV64IFD-NEXT:    addi sp, sp, -161404; RV64IFD-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1405; RV64IFD-NEXT:    mv a0, sp1406; RV64IFD-NEXT:    call frexp1407; RV64IFD-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1408; RV64IFD-NEXT:    addi sp, sp, 161409; RV64IFD-NEXT:    ret1410;1411; RV32IZFINXZDINX-LABEL: test_frexp_f64_i32_only_use_fract:1412; RV32IZFINXZDINX:       # %bb.0:1413; RV32IZFINXZDINX-NEXT:    addi sp, sp, -161414; RV32IZFINXZDINX-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1415; RV32IZFINXZDINX-NEXT:    addi a2, sp, 81416; RV32IZFINXZDINX-NEXT:    call frexp1417; RV32IZFINXZDINX-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1418; RV32IZFINXZDINX-NEXT:    addi sp, sp, 161419; RV32IZFINXZDINX-NEXT:    ret1420;1421; RV64IZFINXZDINX-LABEL: test_frexp_f64_i32_only_use_fract:1422; RV64IZFINXZDINX:       # %bb.0:1423; RV64IZFINXZDINX-NEXT:    addi sp, sp, -161424; RV64IZFINXZDINX-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1425; RV64IZFINXZDINX-NEXT:    mv a1, sp1426; RV64IZFINXZDINX-NEXT:    call frexp1427; RV64IZFINXZDINX-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1428; RV64IZFINXZDINX-NEXT:    addi sp, sp, 161429; RV64IZFINXZDINX-NEXT:    ret1430;1431; RV32I-LABEL: test_frexp_f64_i32_only_use_fract:1432; RV32I:       # %bb.0:1433; RV32I-NEXT:    addi sp, sp, -161434; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1435; RV32I-NEXT:    addi a2, sp, 81436; RV32I-NEXT:    call frexp1437; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1438; RV32I-NEXT:    addi sp, sp, 161439; RV32I-NEXT:    ret1440;1441; RV64I-LABEL: test_frexp_f64_i32_only_use_fract:1442; RV64I:       # %bb.0:1443; RV64I-NEXT:    addi sp, sp, -161444; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1445; RV64I-NEXT:    addi a1, sp, 41446; RV64I-NEXT:    call frexp1447; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1448; RV64I-NEXT:    addi sp, sp, 161449; RV64I-NEXT:    ret1450  %result = call { double, i32 } @llvm.frexp.f64.i32(double %a)1451  %result.0 = extractvalue { double, i32 } %result, 01452  ret double %result.01453}1454 1455define i32 @test_frexp_f64_i32_only_use_exp(double %a) nounwind {1456; RV32IFD-LABEL: test_frexp_f64_i32_only_use_exp:1457; RV32IFD:       # %bb.0:1458; RV32IFD-NEXT:    addi sp, sp, -161459; RV32IFD-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1460; RV32IFD-NEXT:    addi a0, sp, 81461; RV32IFD-NEXT:    call frexp1462; RV32IFD-NEXT:    lw a0, 8(sp)1463; RV32IFD-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1464; RV32IFD-NEXT:    addi sp, sp, 161465; RV32IFD-NEXT:    ret1466;1467; RV64IFD-LABEL: test_frexp_f64_i32_only_use_exp:1468; RV64IFD:       # %bb.0:1469; RV64IFD-NEXT:    addi sp, sp, -161470; RV64IFD-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1471; RV64IFD-NEXT:    mv a0, sp1472; RV64IFD-NEXT:    call frexp1473; RV64IFD-NEXT:    ld a0, 0(sp)1474; RV64IFD-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1475; RV64IFD-NEXT:    addi sp, sp, 161476; RV64IFD-NEXT:    ret1477;1478; RV32IZFINXZDINX-LABEL: test_frexp_f64_i32_only_use_exp:1479; RV32IZFINXZDINX:       # %bb.0:1480; RV32IZFINXZDINX-NEXT:    addi sp, sp, -161481; RV32IZFINXZDINX-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1482; RV32IZFINXZDINX-NEXT:    addi a2, sp, 81483; RV32IZFINXZDINX-NEXT:    call frexp1484; RV32IZFINXZDINX-NEXT:    lw a0, 8(sp)1485; RV32IZFINXZDINX-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1486; RV32IZFINXZDINX-NEXT:    addi sp, sp, 161487; RV32IZFINXZDINX-NEXT:    ret1488;1489; RV64IZFINXZDINX-LABEL: test_frexp_f64_i32_only_use_exp:1490; RV64IZFINXZDINX:       # %bb.0:1491; RV64IZFINXZDINX-NEXT:    addi sp, sp, -161492; RV64IZFINXZDINX-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1493; RV64IZFINXZDINX-NEXT:    mv a1, sp1494; RV64IZFINXZDINX-NEXT:    call frexp1495; RV64IZFINXZDINX-NEXT:    ld a0, 0(sp)1496; RV64IZFINXZDINX-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1497; RV64IZFINXZDINX-NEXT:    addi sp, sp, 161498; RV64IZFINXZDINX-NEXT:    ret1499;1500; RV32I-LABEL: test_frexp_f64_i32_only_use_exp:1501; RV32I:       # %bb.0:1502; RV32I-NEXT:    addi sp, sp, -161503; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1504; RV32I-NEXT:    addi a2, sp, 81505; RV32I-NEXT:    call frexp1506; RV32I-NEXT:    lw a0, 8(sp)1507; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1508; RV32I-NEXT:    addi sp, sp, 161509; RV32I-NEXT:    ret1510;1511; RV64I-LABEL: test_frexp_f64_i32_only_use_exp:1512; RV64I:       # %bb.0:1513; RV64I-NEXT:    addi sp, sp, -161514; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1515; RV64I-NEXT:    addi a1, sp, 41516; RV64I-NEXT:    call frexp1517; RV64I-NEXT:    lw a0, 4(sp)1518; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1519; RV64I-NEXT:    addi sp, sp, 161520; RV64I-NEXT:    ret1521  %result = call { double, i32 } @llvm.frexp.f64.i32(double %a)1522  %result.0 = extractvalue { double, i32 } %result, 11523  ret i32 %result.01524}1525 1526; FIXME: Widen vector result1527; define { <2 x double>, <2 x i32> } @test_frexp_v2f64_v2i32(<2 x double> %a) nounwind {1528;   %result = call { <2 x double>, <2 x i32> } @llvm.frexp.v2f64.v2i32(<2 x double> %a)1529;   ret { <2 x double>, <2 x i32> } %result1530; }1531 1532; define <2 x double> @test_frexp_v2f64_v2i32_only_use_fract(<2 x double> %a) nounwind {1533;   %result = call { <2 x double>, <2 x i32> } @llvm.frexp.v2f64.v2i32(<2 x double> %a)1534;   %result.0 = extractvalue { <2 x double>, <2 x i32> } %result, 01535;   ret <2 x double> %result.01536; }1537 1538; define <2 x i32> @test_frexp_v2f64_v2i32_only_use_exp(<2 x double> %a) nounwind {1539;   %result = call { <2 x double>, <2 x i32> } @llvm.frexp.v2f64.v2i32(<2 x double> %a)1540;   %result.1 = extractvalue { <2 x double>, <2 x i32> } %result, 11541;   ret <2 x i32> %result.11542; }1543 1544define { fp128, i32 } @test_frexp_f128_i32(fp128 %a) nounwind {1545; RV32IFD-LABEL: test_frexp_f128_i32:1546; RV32IFD:       # %bb.0:1547; RV32IFD-NEXT:    addi sp, sp, -481548; RV32IFD-NEXT:    sw ra, 44(sp) # 4-byte Folded Spill1549; RV32IFD-NEXT:    sw s0, 40(sp) # 4-byte Folded Spill1550; RV32IFD-NEXT:    lw a3, 0(a1)1551; RV32IFD-NEXT:    lw a4, 4(a1)1552; RV32IFD-NEXT:    lw a5, 8(a1)1553; RV32IFD-NEXT:    lw a6, 12(a1)1554; RV32IFD-NEXT:    mv s0, a01555; RV32IFD-NEXT:    addi a0, sp, 161556; RV32IFD-NEXT:    mv a1, sp1557; RV32IFD-NEXT:    addi a2, sp, 361558; RV32IFD-NEXT:    sw a3, 0(sp)1559; RV32IFD-NEXT:    sw a4, 4(sp)1560; RV32IFD-NEXT:    sw a5, 8(sp)1561; RV32IFD-NEXT:    sw a6, 12(sp)1562; RV32IFD-NEXT:    call frexpl1563; RV32IFD-NEXT:    lw a0, 36(sp)1564; RV32IFD-NEXT:    lw a1, 16(sp)1565; RV32IFD-NEXT:    lw a2, 20(sp)1566; RV32IFD-NEXT:    lw a3, 24(sp)1567; RV32IFD-NEXT:    lw a4, 28(sp)1568; RV32IFD-NEXT:    sw a1, 0(s0)1569; RV32IFD-NEXT:    sw a2, 4(s0)1570; RV32IFD-NEXT:    sw a3, 8(s0)1571; RV32IFD-NEXT:    sw a4, 12(s0)1572; RV32IFD-NEXT:    sw a0, 16(s0)1573; RV32IFD-NEXT:    lw ra, 44(sp) # 4-byte Folded Reload1574; RV32IFD-NEXT:    lw s0, 40(sp) # 4-byte Folded Reload1575; RV32IFD-NEXT:    addi sp, sp, 481576; RV32IFD-NEXT:    ret1577;1578; RV64IFD-LABEL: test_frexp_f128_i32:1579; RV64IFD:       # %bb.0:1580; RV64IFD-NEXT:    addi sp, sp, -321581; RV64IFD-NEXT:    sd ra, 24(sp) # 8-byte Folded Spill1582; RV64IFD-NEXT:    sd s0, 16(sp) # 8-byte Folded Spill1583; RV64IFD-NEXT:    mv a3, a21584; RV64IFD-NEXT:    mv s0, a01585; RV64IFD-NEXT:    addi a2, sp, 121586; RV64IFD-NEXT:    mv a0, a11587; RV64IFD-NEXT:    mv a1, a31588; RV64IFD-NEXT:    call frexpl1589; RV64IFD-NEXT:    lw a2, 12(sp)1590; RV64IFD-NEXT:    sd a0, 0(s0)1591; RV64IFD-NEXT:    sd a1, 8(s0)1592; RV64IFD-NEXT:    sw a2, 16(s0)1593; RV64IFD-NEXT:    ld ra, 24(sp) # 8-byte Folded Reload1594; RV64IFD-NEXT:    ld s0, 16(sp) # 8-byte Folded Reload1595; RV64IFD-NEXT:    addi sp, sp, 321596; RV64IFD-NEXT:    ret1597;1598; RV32IZFINXZDINX-LABEL: test_frexp_f128_i32:1599; RV32IZFINXZDINX:       # %bb.0:1600; RV32IZFINXZDINX-NEXT:    addi sp, sp, -481601; RV32IZFINXZDINX-NEXT:    sw ra, 44(sp) # 4-byte Folded Spill1602; RV32IZFINXZDINX-NEXT:    sw s0, 40(sp) # 4-byte Folded Spill1603; RV32IZFINXZDINX-NEXT:    lw a3, 0(a1)1604; RV32IZFINXZDINX-NEXT:    lw a4, 4(a1)1605; RV32IZFINXZDINX-NEXT:    lw a5, 8(a1)1606; RV32IZFINXZDINX-NEXT:    lw a6, 12(a1)1607; RV32IZFINXZDINX-NEXT:    mv s0, a01608; RV32IZFINXZDINX-NEXT:    addi a0, sp, 161609; RV32IZFINXZDINX-NEXT:    mv a1, sp1610; RV32IZFINXZDINX-NEXT:    addi a2, sp, 361611; RV32IZFINXZDINX-NEXT:    sw a3, 0(sp)1612; RV32IZFINXZDINX-NEXT:    sw a4, 4(sp)1613; RV32IZFINXZDINX-NEXT:    sw a5, 8(sp)1614; RV32IZFINXZDINX-NEXT:    sw a6, 12(sp)1615; RV32IZFINXZDINX-NEXT:    call frexpl1616; RV32IZFINXZDINX-NEXT:    lw a0, 36(sp)1617; RV32IZFINXZDINX-NEXT:    lw a1, 16(sp)1618; RV32IZFINXZDINX-NEXT:    lw a2, 20(sp)1619; RV32IZFINXZDINX-NEXT:    lw a3, 24(sp)1620; RV32IZFINXZDINX-NEXT:    lw a4, 28(sp)1621; RV32IZFINXZDINX-NEXT:    sw a1, 0(s0)1622; RV32IZFINXZDINX-NEXT:    sw a2, 4(s0)1623; RV32IZFINXZDINX-NEXT:    sw a3, 8(s0)1624; RV32IZFINXZDINX-NEXT:    sw a4, 12(s0)1625; RV32IZFINXZDINX-NEXT:    sw a0, 16(s0)1626; RV32IZFINXZDINX-NEXT:    lw ra, 44(sp) # 4-byte Folded Reload1627; RV32IZFINXZDINX-NEXT:    lw s0, 40(sp) # 4-byte Folded Reload1628; RV32IZFINXZDINX-NEXT:    addi sp, sp, 481629; RV32IZFINXZDINX-NEXT:    ret1630;1631; RV64IZFINXZDINX-LABEL: test_frexp_f128_i32:1632; RV64IZFINXZDINX:       # %bb.0:1633; RV64IZFINXZDINX-NEXT:    addi sp, sp, -321634; RV64IZFINXZDINX-NEXT:    sd ra, 24(sp) # 8-byte Folded Spill1635; RV64IZFINXZDINX-NEXT:    sd s0, 16(sp) # 8-byte Folded Spill1636; RV64IZFINXZDINX-NEXT:    mv a3, a21637; RV64IZFINXZDINX-NEXT:    mv s0, a01638; RV64IZFINXZDINX-NEXT:    addi a2, sp, 121639; RV64IZFINXZDINX-NEXT:    mv a0, a11640; RV64IZFINXZDINX-NEXT:    mv a1, a31641; RV64IZFINXZDINX-NEXT:    call frexpl1642; RV64IZFINXZDINX-NEXT:    lw a2, 12(sp)1643; RV64IZFINXZDINX-NEXT:    sd a0, 0(s0)1644; RV64IZFINXZDINX-NEXT:    sd a1, 8(s0)1645; RV64IZFINXZDINX-NEXT:    sw a2, 16(s0)1646; RV64IZFINXZDINX-NEXT:    ld ra, 24(sp) # 8-byte Folded Reload1647; RV64IZFINXZDINX-NEXT:    ld s0, 16(sp) # 8-byte Folded Reload1648; RV64IZFINXZDINX-NEXT:    addi sp, sp, 321649; RV64IZFINXZDINX-NEXT:    ret1650;1651; RV32I-LABEL: test_frexp_f128_i32:1652; RV32I:       # %bb.0:1653; RV32I-NEXT:    addi sp, sp, -481654; RV32I-NEXT:    sw ra, 44(sp) # 4-byte Folded Spill1655; RV32I-NEXT:    sw s0, 40(sp) # 4-byte Folded Spill1656; RV32I-NEXT:    lw a3, 0(a1)1657; RV32I-NEXT:    lw a4, 4(a1)1658; RV32I-NEXT:    lw a5, 8(a1)1659; RV32I-NEXT:    lw a6, 12(a1)1660; RV32I-NEXT:    mv s0, a01661; RV32I-NEXT:    addi a0, sp, 161662; RV32I-NEXT:    mv a1, sp1663; RV32I-NEXT:    addi a2, sp, 361664; RV32I-NEXT:    sw a3, 0(sp)1665; RV32I-NEXT:    sw a4, 4(sp)1666; RV32I-NEXT:    sw a5, 8(sp)1667; RV32I-NEXT:    sw a6, 12(sp)1668; RV32I-NEXT:    call frexpl1669; RV32I-NEXT:    lw a0, 36(sp)1670; RV32I-NEXT:    lw a1, 16(sp)1671; RV32I-NEXT:    lw a2, 20(sp)1672; RV32I-NEXT:    lw a3, 24(sp)1673; RV32I-NEXT:    lw a4, 28(sp)1674; RV32I-NEXT:    sw a1, 0(s0)1675; RV32I-NEXT:    sw a2, 4(s0)1676; RV32I-NEXT:    sw a3, 8(s0)1677; RV32I-NEXT:    sw a4, 12(s0)1678; RV32I-NEXT:    sw a0, 16(s0)1679; RV32I-NEXT:    lw ra, 44(sp) # 4-byte Folded Reload1680; RV32I-NEXT:    lw s0, 40(sp) # 4-byte Folded Reload1681; RV32I-NEXT:    addi sp, sp, 481682; RV32I-NEXT:    ret1683;1684; RV64I-LABEL: test_frexp_f128_i32:1685; RV64I:       # %bb.0:1686; RV64I-NEXT:    addi sp, sp, -321687; RV64I-NEXT:    sd ra, 24(sp) # 8-byte Folded Spill1688; RV64I-NEXT:    sd s0, 16(sp) # 8-byte Folded Spill1689; RV64I-NEXT:    mv a3, a21690; RV64I-NEXT:    mv s0, a01691; RV64I-NEXT:    addi a2, sp, 121692; RV64I-NEXT:    mv a0, a11693; RV64I-NEXT:    mv a1, a31694; RV64I-NEXT:    call frexpl1695; RV64I-NEXT:    lw a2, 12(sp)1696; RV64I-NEXT:    sd a0, 0(s0)1697; RV64I-NEXT:    sd a1, 8(s0)1698; RV64I-NEXT:    sw a2, 16(s0)1699; RV64I-NEXT:    ld ra, 24(sp) # 8-byte Folded Reload1700; RV64I-NEXT:    ld s0, 16(sp) # 8-byte Folded Reload1701; RV64I-NEXT:    addi sp, sp, 321702; RV64I-NEXT:    ret1703  %result = call { fp128, i32 } @llvm.frexp.f128.i32(fp128 %a)1704  ret { fp128, i32 } %result1705}1706 1707define fp128 @test_frexp_f128_i32_only_use_fract(fp128 %a) nounwind {1708; RV32IFD-LABEL: test_frexp_f128_i32_only_use_fract:1709; RV32IFD:       # %bb.0:1710; RV32IFD-NEXT:    addi sp, sp, -481711; RV32IFD-NEXT:    sw ra, 44(sp) # 4-byte Folded Spill1712; RV32IFD-NEXT:    sw s0, 40(sp) # 4-byte Folded Spill1713; RV32IFD-NEXT:    lw a3, 0(a1)1714; RV32IFD-NEXT:    lw a4, 4(a1)1715; RV32IFD-NEXT:    lw a5, 8(a1)1716; RV32IFD-NEXT:    lw a6, 12(a1)1717; RV32IFD-NEXT:    mv s0, a01718; RV32IFD-NEXT:    addi a0, sp, 161719; RV32IFD-NEXT:    mv a1, sp1720; RV32IFD-NEXT:    addi a2, sp, 361721; RV32IFD-NEXT:    sw a3, 0(sp)1722; RV32IFD-NEXT:    sw a4, 4(sp)1723; RV32IFD-NEXT:    sw a5, 8(sp)1724; RV32IFD-NEXT:    sw a6, 12(sp)1725; RV32IFD-NEXT:    call frexpl1726; RV32IFD-NEXT:    lw a0, 16(sp)1727; RV32IFD-NEXT:    lw a1, 20(sp)1728; RV32IFD-NEXT:    lw a2, 24(sp)1729; RV32IFD-NEXT:    lw a3, 28(sp)1730; RV32IFD-NEXT:    sw a0, 0(s0)1731; RV32IFD-NEXT:    sw a1, 4(s0)1732; RV32IFD-NEXT:    sw a2, 8(s0)1733; RV32IFD-NEXT:    sw a3, 12(s0)1734; RV32IFD-NEXT:    lw ra, 44(sp) # 4-byte Folded Reload1735; RV32IFD-NEXT:    lw s0, 40(sp) # 4-byte Folded Reload1736; RV32IFD-NEXT:    addi sp, sp, 481737; RV32IFD-NEXT:    ret1738;1739; RV64IFD-LABEL: test_frexp_f128_i32_only_use_fract:1740; RV64IFD:       # %bb.0:1741; RV64IFD-NEXT:    addi sp, sp, -161742; RV64IFD-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1743; RV64IFD-NEXT:    addi a2, sp, 41744; RV64IFD-NEXT:    call frexpl1745; RV64IFD-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1746; RV64IFD-NEXT:    addi sp, sp, 161747; RV64IFD-NEXT:    ret1748;1749; RV32IZFINXZDINX-LABEL: test_frexp_f128_i32_only_use_fract:1750; RV32IZFINXZDINX:       # %bb.0:1751; RV32IZFINXZDINX-NEXT:    addi sp, sp, -481752; RV32IZFINXZDINX-NEXT:    sw ra, 44(sp) # 4-byte Folded Spill1753; RV32IZFINXZDINX-NEXT:    sw s0, 40(sp) # 4-byte Folded Spill1754; RV32IZFINXZDINX-NEXT:    lw a3, 0(a1)1755; RV32IZFINXZDINX-NEXT:    lw a4, 4(a1)1756; RV32IZFINXZDINX-NEXT:    lw a5, 8(a1)1757; RV32IZFINXZDINX-NEXT:    lw a6, 12(a1)1758; RV32IZFINXZDINX-NEXT:    mv s0, a01759; RV32IZFINXZDINX-NEXT:    addi a0, sp, 161760; RV32IZFINXZDINX-NEXT:    mv a1, sp1761; RV32IZFINXZDINX-NEXT:    addi a2, sp, 361762; RV32IZFINXZDINX-NEXT:    sw a3, 0(sp)1763; RV32IZFINXZDINX-NEXT:    sw a4, 4(sp)1764; RV32IZFINXZDINX-NEXT:    sw a5, 8(sp)1765; RV32IZFINXZDINX-NEXT:    sw a6, 12(sp)1766; RV32IZFINXZDINX-NEXT:    call frexpl1767; RV32IZFINXZDINX-NEXT:    lw a0, 16(sp)1768; RV32IZFINXZDINX-NEXT:    lw a1, 20(sp)1769; RV32IZFINXZDINX-NEXT:    lw a2, 24(sp)1770; RV32IZFINXZDINX-NEXT:    lw a3, 28(sp)1771; RV32IZFINXZDINX-NEXT:    sw a0, 0(s0)1772; RV32IZFINXZDINX-NEXT:    sw a1, 4(s0)1773; RV32IZFINXZDINX-NEXT:    sw a2, 8(s0)1774; RV32IZFINXZDINX-NEXT:    sw a3, 12(s0)1775; RV32IZFINXZDINX-NEXT:    lw ra, 44(sp) # 4-byte Folded Reload1776; RV32IZFINXZDINX-NEXT:    lw s0, 40(sp) # 4-byte Folded Reload1777; RV32IZFINXZDINX-NEXT:    addi sp, sp, 481778; RV32IZFINXZDINX-NEXT:    ret1779;1780; RV64IZFINXZDINX-LABEL: test_frexp_f128_i32_only_use_fract:1781; RV64IZFINXZDINX:       # %bb.0:1782; RV64IZFINXZDINX-NEXT:    addi sp, sp, -161783; RV64IZFINXZDINX-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1784; RV64IZFINXZDINX-NEXT:    addi a2, sp, 41785; RV64IZFINXZDINX-NEXT:    call frexpl1786; RV64IZFINXZDINX-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1787; RV64IZFINXZDINX-NEXT:    addi sp, sp, 161788; RV64IZFINXZDINX-NEXT:    ret1789;1790; RV32I-LABEL: test_frexp_f128_i32_only_use_fract:1791; RV32I:       # %bb.0:1792; RV32I-NEXT:    addi sp, sp, -481793; RV32I-NEXT:    sw ra, 44(sp) # 4-byte Folded Spill1794; RV32I-NEXT:    sw s0, 40(sp) # 4-byte Folded Spill1795; RV32I-NEXT:    lw a3, 0(a1)1796; RV32I-NEXT:    lw a4, 4(a1)1797; RV32I-NEXT:    lw a5, 8(a1)1798; RV32I-NEXT:    lw a6, 12(a1)1799; RV32I-NEXT:    mv s0, a01800; RV32I-NEXT:    addi a0, sp, 161801; RV32I-NEXT:    mv a1, sp1802; RV32I-NEXT:    addi a2, sp, 361803; RV32I-NEXT:    sw a3, 0(sp)1804; RV32I-NEXT:    sw a4, 4(sp)1805; RV32I-NEXT:    sw a5, 8(sp)1806; RV32I-NEXT:    sw a6, 12(sp)1807; RV32I-NEXT:    call frexpl1808; RV32I-NEXT:    lw a0, 16(sp)1809; RV32I-NEXT:    lw a1, 20(sp)1810; RV32I-NEXT:    lw a2, 24(sp)1811; RV32I-NEXT:    lw a3, 28(sp)1812; RV32I-NEXT:    sw a0, 0(s0)1813; RV32I-NEXT:    sw a1, 4(s0)1814; RV32I-NEXT:    sw a2, 8(s0)1815; RV32I-NEXT:    sw a3, 12(s0)1816; RV32I-NEXT:    lw ra, 44(sp) # 4-byte Folded Reload1817; RV32I-NEXT:    lw s0, 40(sp) # 4-byte Folded Reload1818; RV32I-NEXT:    addi sp, sp, 481819; RV32I-NEXT:    ret1820;1821; RV64I-LABEL: test_frexp_f128_i32_only_use_fract:1822; RV64I:       # %bb.0:1823; RV64I-NEXT:    addi sp, sp, -161824; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1825; RV64I-NEXT:    addi a2, sp, 41826; RV64I-NEXT:    call frexpl1827; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1828; RV64I-NEXT:    addi sp, sp, 161829; RV64I-NEXT:    ret1830  %result = call { fp128, i32 } @llvm.frexp.f128.i32(fp128 %a)1831  %result.0 = extractvalue { fp128, i32 } %result, 01832  ret fp128 %result.01833}1834 1835define i32 @test_frexp_f128_i32_only_use_exp(fp128 %a) nounwind {1836; RV32IFD-LABEL: test_frexp_f128_i32_only_use_exp:1837; RV32IFD:       # %bb.0:1838; RV32IFD-NEXT:    addi sp, sp, -481839; RV32IFD-NEXT:    sw ra, 44(sp) # 4-byte Folded Spill1840; RV32IFD-NEXT:    lw a3, 0(a0)1841; RV32IFD-NEXT:    lw a4, 4(a0)1842; RV32IFD-NEXT:    lw a5, 8(a0)1843; RV32IFD-NEXT:    lw a6, 12(a0)1844; RV32IFD-NEXT:    addi a0, sp, 241845; RV32IFD-NEXT:    addi a1, sp, 81846; RV32IFD-NEXT:    addi a2, sp, 401847; RV32IFD-NEXT:    sw a3, 8(sp)1848; RV32IFD-NEXT:    sw a4, 12(sp)1849; RV32IFD-NEXT:    sw a5, 16(sp)1850; RV32IFD-NEXT:    sw a6, 20(sp)1851; RV32IFD-NEXT:    call frexpl1852; RV32IFD-NEXT:    lw a0, 40(sp)1853; RV32IFD-NEXT:    lw ra, 44(sp) # 4-byte Folded Reload1854; RV32IFD-NEXT:    addi sp, sp, 481855; RV32IFD-NEXT:    ret1856;1857; RV64IFD-LABEL: test_frexp_f128_i32_only_use_exp:1858; RV64IFD:       # %bb.0:1859; RV64IFD-NEXT:    addi sp, sp, -161860; RV64IFD-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1861; RV64IFD-NEXT:    addi a2, sp, 41862; RV64IFD-NEXT:    call frexpl1863; RV64IFD-NEXT:    lw a0, 4(sp)1864; RV64IFD-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1865; RV64IFD-NEXT:    addi sp, sp, 161866; RV64IFD-NEXT:    ret1867;1868; RV32IZFINXZDINX-LABEL: test_frexp_f128_i32_only_use_exp:1869; RV32IZFINXZDINX:       # %bb.0:1870; RV32IZFINXZDINX-NEXT:    addi sp, sp, -481871; RV32IZFINXZDINX-NEXT:    sw ra, 44(sp) # 4-byte Folded Spill1872; RV32IZFINXZDINX-NEXT:    lw a3, 0(a0)1873; RV32IZFINXZDINX-NEXT:    lw a4, 4(a0)1874; RV32IZFINXZDINX-NEXT:    lw a5, 8(a0)1875; RV32IZFINXZDINX-NEXT:    lw a6, 12(a0)1876; RV32IZFINXZDINX-NEXT:    addi a0, sp, 241877; RV32IZFINXZDINX-NEXT:    addi a1, sp, 81878; RV32IZFINXZDINX-NEXT:    addi a2, sp, 401879; RV32IZFINXZDINX-NEXT:    sw a3, 8(sp)1880; RV32IZFINXZDINX-NEXT:    sw a4, 12(sp)1881; RV32IZFINXZDINX-NEXT:    sw a5, 16(sp)1882; RV32IZFINXZDINX-NEXT:    sw a6, 20(sp)1883; RV32IZFINXZDINX-NEXT:    call frexpl1884; RV32IZFINXZDINX-NEXT:    lw a0, 40(sp)1885; RV32IZFINXZDINX-NEXT:    lw ra, 44(sp) # 4-byte Folded Reload1886; RV32IZFINXZDINX-NEXT:    addi sp, sp, 481887; RV32IZFINXZDINX-NEXT:    ret1888;1889; RV64IZFINXZDINX-LABEL: test_frexp_f128_i32_only_use_exp:1890; RV64IZFINXZDINX:       # %bb.0:1891; RV64IZFINXZDINX-NEXT:    addi sp, sp, -161892; RV64IZFINXZDINX-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1893; RV64IZFINXZDINX-NEXT:    addi a2, sp, 41894; RV64IZFINXZDINX-NEXT:    call frexpl1895; RV64IZFINXZDINX-NEXT:    lw a0, 4(sp)1896; RV64IZFINXZDINX-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1897; RV64IZFINXZDINX-NEXT:    addi sp, sp, 161898; RV64IZFINXZDINX-NEXT:    ret1899;1900; RV32I-LABEL: test_frexp_f128_i32_only_use_exp:1901; RV32I:       # %bb.0:1902; RV32I-NEXT:    addi sp, sp, -481903; RV32I-NEXT:    sw ra, 44(sp) # 4-byte Folded Spill1904; RV32I-NEXT:    lw a3, 0(a0)1905; RV32I-NEXT:    lw a4, 4(a0)1906; RV32I-NEXT:    lw a5, 8(a0)1907; RV32I-NEXT:    lw a6, 12(a0)1908; RV32I-NEXT:    addi a0, sp, 241909; RV32I-NEXT:    addi a1, sp, 81910; RV32I-NEXT:    addi a2, sp, 401911; RV32I-NEXT:    sw a3, 8(sp)1912; RV32I-NEXT:    sw a4, 12(sp)1913; RV32I-NEXT:    sw a5, 16(sp)1914; RV32I-NEXT:    sw a6, 20(sp)1915; RV32I-NEXT:    call frexpl1916; RV32I-NEXT:    lw a0, 40(sp)1917; RV32I-NEXT:    lw ra, 44(sp) # 4-byte Folded Reload1918; RV32I-NEXT:    addi sp, sp, 481919; RV32I-NEXT:    ret1920;1921; RV64I-LABEL: test_frexp_f128_i32_only_use_exp:1922; RV64I:       # %bb.0:1923; RV64I-NEXT:    addi sp, sp, -161924; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1925; RV64I-NEXT:    addi a2, sp, 41926; RV64I-NEXT:    call frexpl1927; RV64I-NEXT:    lw a0, 4(sp)1928; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1929; RV64I-NEXT:    addi sp, sp, 161930; RV64I-NEXT:    ret1931  %result = call { fp128, i32 } @llvm.frexp.f128.i32(fp128 %a)1932  %result.0 = extractvalue { fp128, i32 } %result, 11933  ret i32 %result.01934}1935 1936