brintos

brintos / llvm-project-archived public Read only

0
0
Text · 10.6 KiB · a982f9a Raw
268 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -mtriple=s390x-linux < %s | FileCheck %s -check-prefix=SOFT-FLOAT3 4define half @fmuladd_intrinsic_f16(half %a, half %b, half %c) #0 {5; SOFT-FLOAT-LABEL: fmuladd_intrinsic_f16:6; SOFT-FLOAT:       # %bb.0:7; SOFT-FLOAT-NEXT:    stmg %r12, %r15, 96(%r15)8; SOFT-FLOAT-NEXT:    .cfi_offset %r12, -649; SOFT-FLOAT-NEXT:    .cfi_offset %r13, -5610; SOFT-FLOAT-NEXT:    .cfi_offset %r14, -4811; SOFT-FLOAT-NEXT:    .cfi_offset %r15, -4012; SOFT-FLOAT-NEXT:    aghi %r15, -16013; SOFT-FLOAT-NEXT:    .cfi_def_cfa_offset 32014; SOFT-FLOAT-NEXT:    # kill: def $r4l killed $r4l def $r4d15; SOFT-FLOAT-NEXT:    llghr %r0, %r416; SOFT-FLOAT-NEXT:    lr %r13, %r317; SOFT-FLOAT-NEXT:    lr %r12, %r218; SOFT-FLOAT-NEXT:    lgr %r2, %r019; SOFT-FLOAT-NEXT:    brasl %r14, __extendhfsf2@PLT20; SOFT-FLOAT-NEXT:    llghr %r0, %r1221; SOFT-FLOAT-NEXT:    lgr %r12, %r222; SOFT-FLOAT-NEXT:    lgr %r2, %r023; SOFT-FLOAT-NEXT:    brasl %r14, __extendhfsf2@PLT24; SOFT-FLOAT-NEXT:    llghr %r0, %r1325; SOFT-FLOAT-NEXT:    lgr %r13, %r226; SOFT-FLOAT-NEXT:    lgr %r2, %r027; SOFT-FLOAT-NEXT:    brasl %r14, __extendhfsf2@PLT28; SOFT-FLOAT-NEXT:    lgr %r3, %r229; SOFT-FLOAT-NEXT:    lgr %r2, %r1330; SOFT-FLOAT-NEXT:    brasl %r14, __mulsf3@PLT31; SOFT-FLOAT-NEXT:    lgr %r3, %r1232; SOFT-FLOAT-NEXT:    brasl %r14, __addsf3@PLT33; SOFT-FLOAT-NEXT:    brasl %r14, __truncsfhf2@PLT34; SOFT-FLOAT-NEXT:    # kill: def $r2l killed $r2l killed $r2d35; SOFT-FLOAT-NEXT:    lmg %r12, %r15, 256(%r15)36; SOFT-FLOAT-NEXT:    br %r1437  %result = call half @llvm.fmuladd.f16(half %a, half %b, half %c)38  ret half %result39}40 41define float @fmuladd_intrinsic_f32(float %a, float %b, float %c) #0 {42; SOFT-FLOAT-LABEL: fmuladd_intrinsic_f32:43; SOFT-FLOAT:       # %bb.0:44; SOFT-FLOAT-NEXT:    stmg %r13, %r15, 104(%r15)45; SOFT-FLOAT-NEXT:    .cfi_offset %r13, -5646; SOFT-FLOAT-NEXT:    .cfi_offset %r14, -4847; SOFT-FLOAT-NEXT:    .cfi_offset %r15, -4048; SOFT-FLOAT-NEXT:    aghi %r15, -16049; SOFT-FLOAT-NEXT:    .cfi_def_cfa_offset 32050; SOFT-FLOAT-NEXT:    llgfr %r2, %r251; SOFT-FLOAT-NEXT:    llgfr %r3, %r352; SOFT-FLOAT-NEXT:    lr %r13, %r453; SOFT-FLOAT-NEXT:    brasl %r14, __mulsf3@PLT54; SOFT-FLOAT-NEXT:    llgfr %r3, %r1355; SOFT-FLOAT-NEXT:    brasl %r14, __addsf3@PLT56; SOFT-FLOAT-NEXT:    # kill: def $r2l killed $r2l killed $r2d57; SOFT-FLOAT-NEXT:    lmg %r13, %r15, 264(%r15)58; SOFT-FLOAT-NEXT:    br %r1459  %result = call float @llvm.fmuladd.f32(float %a, float %b, float %c)60  ret float %result61}62 63define double @fmuladd_intrinsic_f64(double %a, double %b, double %c) #0 {64; SOFT-FLOAT-LABEL: fmuladd_intrinsic_f64:65; SOFT-FLOAT:       # %bb.0:66; SOFT-FLOAT-NEXT:    stmg %r13, %r15, 104(%r15)67; SOFT-FLOAT-NEXT:    .cfi_offset %r13, -5668; SOFT-FLOAT-NEXT:    .cfi_offset %r14, -4869; SOFT-FLOAT-NEXT:    .cfi_offset %r15, -4070; SOFT-FLOAT-NEXT:    aghi %r15, -16071; SOFT-FLOAT-NEXT:    .cfi_def_cfa_offset 32072; SOFT-FLOAT-NEXT:    lgr %r13, %r473; SOFT-FLOAT-NEXT:    brasl %r14, __muldf3@PLT74; SOFT-FLOAT-NEXT:    lgr %r3, %r1375; SOFT-FLOAT-NEXT:    brasl %r14, __adddf3@PLT76; SOFT-FLOAT-NEXT:    lmg %r13, %r15, 264(%r15)77; SOFT-FLOAT-NEXT:    br %r1478  %result = call double @llvm.fmuladd.f64(double %a, double %b, double %c)79  ret double %result80}81 82define float @fmuladd_contract_f32(float %a, float %b, float %c) #0 {83; SOFT-FLOAT-LABEL: fmuladd_contract_f32:84; SOFT-FLOAT:       # %bb.0:85; SOFT-FLOAT-NEXT:    stmg %r13, %r15, 104(%r15)86; SOFT-FLOAT-NEXT:    .cfi_offset %r13, -5687; SOFT-FLOAT-NEXT:    .cfi_offset %r14, -4888; SOFT-FLOAT-NEXT:    .cfi_offset %r15, -4089; SOFT-FLOAT-NEXT:    aghi %r15, -16090; SOFT-FLOAT-NEXT:    .cfi_def_cfa_offset 32091; SOFT-FLOAT-NEXT:    llgfr %r2, %r292; SOFT-FLOAT-NEXT:    llgfr %r3, %r393; SOFT-FLOAT-NEXT:    lr %r13, %r494; SOFT-FLOAT-NEXT:    brasl %r14, __mulsf3@PLT95; SOFT-FLOAT-NEXT:    llgfr %r3, %r1396; SOFT-FLOAT-NEXT:    brasl %r14, __addsf3@PLT97; SOFT-FLOAT-NEXT:    # kill: def $r2l killed $r2l killed $r2d98; SOFT-FLOAT-NEXT:    lmg %r13, %r15, 264(%r15)99; SOFT-FLOAT-NEXT:    br %r14100  %product = fmul contract float %a, %b101  %result = fadd contract float %product, %c102  ret float %result103}104 105define double @fmuladd_contract_f64(double %a, double %b, double %c) #0 {106; SOFT-FLOAT-LABEL: fmuladd_contract_f64:107; SOFT-FLOAT:       # %bb.0:108; SOFT-FLOAT-NEXT:    stmg %r13, %r15, 104(%r15)109; SOFT-FLOAT-NEXT:    .cfi_offset %r13, -56110; SOFT-FLOAT-NEXT:    .cfi_offset %r14, -48111; SOFT-FLOAT-NEXT:    .cfi_offset %r15, -40112; SOFT-FLOAT-NEXT:    aghi %r15, -160113; SOFT-FLOAT-NEXT:    .cfi_def_cfa_offset 320114; SOFT-FLOAT-NEXT:    lgr %r13, %r4115; SOFT-FLOAT-NEXT:    brasl %r14, __muldf3@PLT116; SOFT-FLOAT-NEXT:    lgr %r3, %r13117; SOFT-FLOAT-NEXT:    brasl %r14, __adddf3@PLT118; SOFT-FLOAT-NEXT:    lmg %r13, %r15, 264(%r15)119; SOFT-FLOAT-NEXT:    br %r14120  %product = fmul contract double %a, %b121  %result = fadd contract double %product, %c122  ret double %result123}124 125define <4 x float> @fmuladd_contract_v4f32(<4 x float> %a, <4 x float> %b, <4 x float> %c) #0 {126; SOFT-FLOAT-LABEL: fmuladd_contract_v4f32:127; SOFT-FLOAT:       # %bb.0:128; SOFT-FLOAT-NEXT:    stmg %r7, %r15, 56(%r15)129; SOFT-FLOAT-NEXT:    .cfi_offset %r7, -104130; SOFT-FLOAT-NEXT:    .cfi_offset %r8, -96131; SOFT-FLOAT-NEXT:    .cfi_offset %r9, -88132; SOFT-FLOAT-NEXT:    .cfi_offset %r10, -80133; SOFT-FLOAT-NEXT:    .cfi_offset %r11, -72134; SOFT-FLOAT-NEXT:    .cfi_offset %r12, -64135; SOFT-FLOAT-NEXT:    .cfi_offset %r13, -56136; SOFT-FLOAT-NEXT:    .cfi_offset %r14, -48137; SOFT-FLOAT-NEXT:    .cfi_offset %r15, -40138; SOFT-FLOAT-NEXT:    aghi %r15, -176139; SOFT-FLOAT-NEXT:    .cfi_def_cfa_offset 336140; SOFT-FLOAT-NEXT:    llgf %r0, 388(%r15)141; SOFT-FLOAT-NEXT:    stg %r0, 168(%r15) # 8-byte Spill142; SOFT-FLOAT-NEXT:    llgf %r0, 380(%r15)143; SOFT-FLOAT-NEXT:    stg %r0, 160(%r15) # 8-byte Spill144; SOFT-FLOAT-NEXT:    llgf %r11, 372(%r15)145; SOFT-FLOAT-NEXT:    llgf %r10, 364(%r15)146; SOFT-FLOAT-NEXT:    llgf %r8, 340(%r15)147; SOFT-FLOAT-NEXT:    llgf %r0, 356(%r15)148; SOFT-FLOAT-NEXT:    llgf %r7, 348(%r15)149; SOFT-FLOAT-NEXT:    llgfr %r1, %r5150; SOFT-FLOAT-NEXT:    lr %r9, %r4151; SOFT-FLOAT-NEXT:    lr %r13, %r3152; SOFT-FLOAT-NEXT:    lr %r12, %r2153; SOFT-FLOAT-NEXT:    lgr %r2, %r1154; SOFT-FLOAT-NEXT:    lgr %r3, %r0155; SOFT-FLOAT-NEXT:    brasl %r14, __mulsf3@PLT156; SOFT-FLOAT-NEXT:    llgfr %r0, %r9157; SOFT-FLOAT-NEXT:    lgr %r9, %r2158; SOFT-FLOAT-NEXT:    lgr %r2, %r0159; SOFT-FLOAT-NEXT:    lgr %r3, %r7160; SOFT-FLOAT-NEXT:    brasl %r14, __mulsf3@PLT161; SOFT-FLOAT-NEXT:    llgfr %r0, %r13162; SOFT-FLOAT-NEXT:    lgr %r13, %r2163; SOFT-FLOAT-NEXT:    lgr %r2, %r0164; SOFT-FLOAT-NEXT:    lgr %r3, %r8165; SOFT-FLOAT-NEXT:    brasl %r14, __mulsf3@PLT166; SOFT-FLOAT-NEXT:    llgfr %r0, %r12167; SOFT-FLOAT-NEXT:    llgfr %r3, %r6168; SOFT-FLOAT-NEXT:    lgr %r12, %r2169; SOFT-FLOAT-NEXT:    lgr %r2, %r0170; SOFT-FLOAT-NEXT:    brasl %r14, __mulsf3@PLT171; SOFT-FLOAT-NEXT:    lgr %r3, %r10172; SOFT-FLOAT-NEXT:    brasl %r14, __addsf3@PLT173; SOFT-FLOAT-NEXT:    lgr %r10, %r2174; SOFT-FLOAT-NEXT:    lgr %r2, %r12175; SOFT-FLOAT-NEXT:    lgr %r3, %r11176; SOFT-FLOAT-NEXT:    brasl %r14, __addsf3@PLT177; SOFT-FLOAT-NEXT:    lgr %r12, %r2178; SOFT-FLOAT-NEXT:    lgr %r2, %r13179; SOFT-FLOAT-NEXT:    lg %r3, 160(%r15) # 8-byte Reload180; SOFT-FLOAT-NEXT:    brasl %r14, __addsf3@PLT181; SOFT-FLOAT-NEXT:    lgr %r13, %r2182; SOFT-FLOAT-NEXT:    lgr %r2, %r9183; SOFT-FLOAT-NEXT:    lg %r3, 168(%r15) # 8-byte Reload184; SOFT-FLOAT-NEXT:    brasl %r14, __addsf3@PLT185; SOFT-FLOAT-NEXT:    lgr %r5, %r2186; SOFT-FLOAT-NEXT:    lr %r2, %r10187; SOFT-FLOAT-NEXT:    lr %r3, %r12188; SOFT-FLOAT-NEXT:    lr %r4, %r13189; SOFT-FLOAT-NEXT:    # kill: def $r5l killed $r5l killed $r5d190; SOFT-FLOAT-NEXT:    lmg %r7, %r15, 232(%r15)191; SOFT-FLOAT-NEXT:    br %r14192  %product = fmul contract <4 x float> %a, %b193  %result = fadd contract <4 x float> %product, %c194  ret <4 x float> %result195}196 197define <4 x double> @fmuladd_contract_v4f64(<4 x double> %a, <4 x double> %b, <4 x double> %c) #0 {198; SOFT-FLOAT-LABEL: fmuladd_contract_v4f64:199; SOFT-FLOAT:       # %bb.0:200; SOFT-FLOAT-NEXT:    stmg %r6, %r15, 48(%r15)201; SOFT-FLOAT-NEXT:    .cfi_offset %r6, -112202; SOFT-FLOAT-NEXT:    .cfi_offset %r7, -104203; SOFT-FLOAT-NEXT:    .cfi_offset %r8, -96204; SOFT-FLOAT-NEXT:    .cfi_offset %r9, -88205; SOFT-FLOAT-NEXT:    .cfi_offset %r10, -80206; SOFT-FLOAT-NEXT:    .cfi_offset %r11, -72207; SOFT-FLOAT-NEXT:    .cfi_offset %r12, -64208; SOFT-FLOAT-NEXT:    .cfi_offset %r13, -56209; SOFT-FLOAT-NEXT:    .cfi_offset %r14, -48210; SOFT-FLOAT-NEXT:    .cfi_offset %r15, -40211; SOFT-FLOAT-NEXT:    aghi %r15, -184212; SOFT-FLOAT-NEXT:    .cfi_def_cfa_offset 344213; SOFT-FLOAT-NEXT:    mvc 176(8,%r15), 24(%r4) # 8-byte Folded Spill214; SOFT-FLOAT-NEXT:    mvc 168(8,%r15), 16(%r4) # 8-byte Folded Spill215; SOFT-FLOAT-NEXT:    mvc 160(8,%r15), 8(%r4) # 8-byte Folded Spill216; SOFT-FLOAT-NEXT:    lg %r10, 0(%r4)217; SOFT-FLOAT-NEXT:    lg %r9, 0(%r2)218; SOFT-FLOAT-NEXT:    lg %r8, 0(%r3)219; SOFT-FLOAT-NEXT:    lg %r7, 8(%r2)220; SOFT-FLOAT-NEXT:    lg %r6, 8(%r3)221; SOFT-FLOAT-NEXT:    lg %r13, 16(%r2)222; SOFT-FLOAT-NEXT:    lg %r2, 24(%r2)223; SOFT-FLOAT-NEXT:    lg %r0, 24(%r3)224; SOFT-FLOAT-NEXT:    lg %r12, 16(%r3)225; SOFT-FLOAT-NEXT:    lgr %r3, %r0226; SOFT-FLOAT-NEXT:    brasl %r14, __muldf3@PLT227; SOFT-FLOAT-NEXT:    lgr %r11, %r2228; SOFT-FLOAT-NEXT:    lgr %r2, %r13229; SOFT-FLOAT-NEXT:    lgr %r3, %r12230; SOFT-FLOAT-NEXT:    brasl %r14, __muldf3@PLT231; SOFT-FLOAT-NEXT:    lgr %r13, %r2232; SOFT-FLOAT-NEXT:    lgr %r2, %r7233; SOFT-FLOAT-NEXT:    lgr %r3, %r6234; SOFT-FLOAT-NEXT:    brasl %r14, __muldf3@PLT235; SOFT-FLOAT-NEXT:    lgr %r12, %r2236; SOFT-FLOAT-NEXT:    lgr %r2, %r9237; SOFT-FLOAT-NEXT:    lgr %r3, %r8238; SOFT-FLOAT-NEXT:    brasl %r14, __muldf3@PLT239; SOFT-FLOAT-NEXT:    lgr %r3, %r10240; SOFT-FLOAT-NEXT:    brasl %r14, __adddf3@PLT241; SOFT-FLOAT-NEXT:    lgr %r10, %r2242; SOFT-FLOAT-NEXT:    lgr %r2, %r12243; SOFT-FLOAT-NEXT:    lg %r3, 160(%r15) # 8-byte Reload244; SOFT-FLOAT-NEXT:    brasl %r14, __adddf3@PLT245; SOFT-FLOAT-NEXT:    lgr %r12, %r2246; SOFT-FLOAT-NEXT:    lgr %r2, %r13247; SOFT-FLOAT-NEXT:    lg %r3, 168(%r15) # 8-byte Reload248; SOFT-FLOAT-NEXT:    brasl %r14, __adddf3@PLT249; SOFT-FLOAT-NEXT:    lgr %r13, %r2250; SOFT-FLOAT-NEXT:    lgr %r2, %r11251; SOFT-FLOAT-NEXT:    lg %r3, 176(%r15) # 8-byte Reload252; SOFT-FLOAT-NEXT:    brasl %r14, __adddf3@PLT253; SOFT-FLOAT-NEXT:    lgr %r5, %r2254; SOFT-FLOAT-NEXT:    lgr %r2, %r10255; SOFT-FLOAT-NEXT:    lgr %r3, %r12256; SOFT-FLOAT-NEXT:    lgr %r4, %r13257; SOFT-FLOAT-NEXT:    lmg %r6, %r15, 232(%r15)258; SOFT-FLOAT-NEXT:    br %r14259  %product = fmul contract <4 x double> %a, %b260  %result = fadd contract <4 x double> %product, %c261  ret <4 x double> %result262}263 264attributes #0 = { "use-soft-float"="true" }265 266declare float @llvm.fmuladd.f32(float %a, float %b, float %c)267declare double @llvm.fmuladd.f64(double %a, double %b, double %c)268