brintos

brintos / llvm-project-archived public Read only

0
0
Text · 26.5 KiB · ca198cd Raw
562 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 22; RUN: opt -aa-pipeline=basic-aa -passes=attributor -attributor-manifest-internal -S < %s | FileCheck %s --check-prefixes=CHECK3; RUN: opt -aa-pipeline=basic-aa -passes=attributor-light -attributor-manifest-internal -S < %s | FileCheck %s --check-prefixes=LIGHT4 5declare float @llvm.round.f32(float)6declare ppc_fp128 @llvm.round.ppcf128(ppc_fp128)7 8define float @ret_round(float %arg0) {9; CHECK-LABEL: define nofpclass(sub) float @ret_round10; CHECK-SAME: (float [[ARG0:%.*]]) #[[ATTR1:[0-9]+]] {11; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(sub) float @llvm.round.f32(float [[ARG0]]) #[[ATTR2:[0-9]+]]12; CHECK-NEXT:    ret float [[CALL]]13;14; LIGHT-LABEL: define float @ret_round15; LIGHT-SAME: (float [[ARG0:%.*]]) #[[ATTR1:[0-9]+]] {16; LIGHT-NEXT:    [[CALL:%.*]] = call float @llvm.round.f32(float [[ARG0]]) #[[ATTR2:[0-9]+]]17; LIGHT-NEXT:    ret float [[CALL]]18;19  %call = call float @llvm.round.f32(float %arg0)20  ret float %call21}22 23define float @ret_round_noinf(float nofpclass(inf) %arg0) {24; CHECK-LABEL: define nofpclass(inf sub) float @ret_round_noinf25; CHECK-SAME: (float nofpclass(inf) [[ARG0:%.*]]) #[[ATTR1]] {26; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(inf sub) float @llvm.round.f32(float nofpclass(inf) [[ARG0]]) #[[ATTR2]]27; CHECK-NEXT:    ret float [[CALL]]28;29; LIGHT-LABEL: define float @ret_round_noinf30; LIGHT-SAME: (float nofpclass(inf) [[ARG0:%.*]]) #[[ATTR1]] {31; LIGHT-NEXT:    [[CALL:%.*]] = call float @llvm.round.f32(float nofpclass(inf) [[ARG0]]) #[[ATTR2]]32; LIGHT-NEXT:    ret float [[CALL]]33;34  %call = call float @llvm.round.f32(float %arg0)35  ret float %call36}37 38define float @ret_round_nopinf(float nofpclass(pinf) %arg0) {39; CHECK-LABEL: define nofpclass(pinf sub) float @ret_round_nopinf40; CHECK-SAME: (float nofpclass(pinf) [[ARG0:%.*]]) #[[ATTR1]] {41; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(pinf sub) float @llvm.round.f32(float nofpclass(pinf) [[ARG0]]) #[[ATTR2]]42; CHECK-NEXT:    ret float [[CALL]]43;44; LIGHT-LABEL: define float @ret_round_nopinf45; LIGHT-SAME: (float nofpclass(pinf) [[ARG0:%.*]]) #[[ATTR1]] {46; LIGHT-NEXT:    [[CALL:%.*]] = call float @llvm.round.f32(float nofpclass(pinf) [[ARG0]]) #[[ATTR2]]47; LIGHT-NEXT:    ret float [[CALL]]48;49  %call = call float @llvm.round.f32(float %arg0)50  ret float %call51}52 53define float @ret_round_noninf(float nofpclass(ninf) %arg0) {54; CHECK-LABEL: define nofpclass(ninf sub) float @ret_round_noninf55; CHECK-SAME: (float nofpclass(ninf) [[ARG0:%.*]]) #[[ATTR1]] {56; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(ninf sub) float @llvm.round.f32(float nofpclass(ninf) [[ARG0]]) #[[ATTR2]]57; CHECK-NEXT:    ret float [[CALL]]58;59; LIGHT-LABEL: define float @ret_round_noninf60; LIGHT-SAME: (float nofpclass(ninf) [[ARG0:%.*]]) #[[ATTR1]] {61; LIGHT-NEXT:    [[CALL:%.*]] = call float @llvm.round.f32(float nofpclass(ninf) [[ARG0]]) #[[ATTR2]]62; LIGHT-NEXT:    ret float [[CALL]]63;64  %call = call float @llvm.round.f32(float %arg0)65  ret float %call66}67 68define float @ret_round_nonan(float nofpclass(nan) %arg0) {69; CHECK-LABEL: define nofpclass(nan sub) float @ret_round_nonan70; CHECK-SAME: (float nofpclass(nan) [[ARG0:%.*]]) #[[ATTR1]] {71; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(nan sub) float @llvm.round.f32(float nofpclass(nan) [[ARG0]]) #[[ATTR2]]72; CHECK-NEXT:    ret float [[CALL]]73;74; LIGHT-LABEL: define float @ret_round_nonan75; LIGHT-SAME: (float nofpclass(nan) [[ARG0:%.*]]) #[[ATTR1]] {76; LIGHT-NEXT:    [[CALL:%.*]] = call float @llvm.round.f32(float nofpclass(nan) [[ARG0]]) #[[ATTR2]]77; LIGHT-NEXT:    ret float [[CALL]]78;79  %call = call float @llvm.round.f32(float %arg0)80  ret float %call81}82 83define float @ret_round_noqnan(float nofpclass(qnan) %arg0) {84; CHECK-LABEL: define nofpclass(sub) float @ret_round_noqnan85; CHECK-SAME: (float nofpclass(qnan) [[ARG0:%.*]]) #[[ATTR1]] {86; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(sub) float @llvm.round.f32(float nofpclass(qnan) [[ARG0]]) #[[ATTR2]]87; CHECK-NEXT:    ret float [[CALL]]88;89; LIGHT-LABEL: define float @ret_round_noqnan90; LIGHT-SAME: (float nofpclass(qnan) [[ARG0:%.*]]) #[[ATTR1]] {91; LIGHT-NEXT:    [[CALL:%.*]] = call float @llvm.round.f32(float nofpclass(qnan) [[ARG0]]) #[[ATTR2]]92; LIGHT-NEXT:    ret float [[CALL]]93;94  %call = call float @llvm.round.f32(float %arg0)95  ret float %call96}97 98define float @ret_round_nosnan(float nofpclass(snan) %arg0) {99; CHECK-LABEL: define nofpclass(snan sub) float @ret_round_nosnan100; CHECK-SAME: (float nofpclass(snan) [[ARG0:%.*]]) #[[ATTR1]] {101; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(snan sub) float @llvm.round.f32(float nofpclass(snan) [[ARG0]]) #[[ATTR2]]102; CHECK-NEXT:    ret float [[CALL]]103;104; LIGHT-LABEL: define float @ret_round_nosnan105; LIGHT-SAME: (float nofpclass(snan) [[ARG0:%.*]]) #[[ATTR1]] {106; LIGHT-NEXT:    [[CALL:%.*]] = call float @llvm.round.f32(float nofpclass(snan) [[ARG0]]) #[[ATTR2]]107; LIGHT-NEXT:    ret float [[CALL]]108;109  %call = call float @llvm.round.f32(float %arg0)110  ret float %call111}112 113define float @ret_round_nozero(float nofpclass(zero) %arg0) {114; CHECK-LABEL: define nofpclass(sub) float @ret_round_nozero115; CHECK-SAME: (float nofpclass(zero) [[ARG0:%.*]]) #[[ATTR1]] {116; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(sub) float @llvm.round.f32(float nofpclass(zero) [[ARG0]]) #[[ATTR2]]117; CHECK-NEXT:    ret float [[CALL]]118;119; LIGHT-LABEL: define float @ret_round_nozero120; LIGHT-SAME: (float nofpclass(zero) [[ARG0:%.*]]) #[[ATTR1]] {121; LIGHT-NEXT:    [[CALL:%.*]] = call float @llvm.round.f32(float nofpclass(zero) [[ARG0]]) #[[ATTR2]]122; LIGHT-NEXT:    ret float [[CALL]]123;124  %call = call float @llvm.round.f32(float %arg0)125  ret float %call126}127 128define float @ret_round_nopzero(float nofpclass(pzero) %arg0) {129; CHECK-LABEL: define nofpclass(sub) float @ret_round_nopzero130; CHECK-SAME: (float nofpclass(pzero) [[ARG0:%.*]]) #[[ATTR1]] {131; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(sub) float @llvm.round.f32(float nofpclass(pzero) [[ARG0]]) #[[ATTR2]]132; CHECK-NEXT:    ret float [[CALL]]133;134; LIGHT-LABEL: define float @ret_round_nopzero135; LIGHT-SAME: (float nofpclass(pzero) [[ARG0:%.*]]) #[[ATTR1]] {136; LIGHT-NEXT:    [[CALL:%.*]] = call float @llvm.round.f32(float nofpclass(pzero) [[ARG0]]) #[[ATTR2]]137; LIGHT-NEXT:    ret float [[CALL]]138;139  %call = call float @llvm.round.f32(float %arg0)140  ret float %call141}142 143define float @ret_round_nonzero(float nofpclass(nzero) %arg0) {144; CHECK-LABEL: define nofpclass(sub) float @ret_round_nonzero145; CHECK-SAME: (float nofpclass(nzero) [[ARG0:%.*]]) #[[ATTR1]] {146; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(sub) float @llvm.round.f32(float nofpclass(nzero) [[ARG0]]) #[[ATTR2]]147; CHECK-NEXT:    ret float [[CALL]]148;149; LIGHT-LABEL: define float @ret_round_nonzero150; LIGHT-SAME: (float nofpclass(nzero) [[ARG0:%.*]]) #[[ATTR1]] {151; LIGHT-NEXT:    [[CALL:%.*]] = call float @llvm.round.f32(float nofpclass(nzero) [[ARG0]]) #[[ATTR2]]152; LIGHT-NEXT:    ret float [[CALL]]153;154  %call = call float @llvm.round.f32(float %arg0)155  ret float %call156}157 158define float @ret_round_nonorm(float nofpclass(norm) %arg0) {159; CHECK-LABEL: define nofpclass(sub) float @ret_round_nonorm160; CHECK-SAME: (float nofpclass(norm) [[ARG0:%.*]]) #[[ATTR1]] {161; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(sub) float @llvm.round.f32(float nofpclass(norm) [[ARG0]]) #[[ATTR2]]162; CHECK-NEXT:    ret float [[CALL]]163;164; LIGHT-LABEL: define float @ret_round_nonorm165; LIGHT-SAME: (float nofpclass(norm) [[ARG0:%.*]]) #[[ATTR1]] {166; LIGHT-NEXT:    [[CALL:%.*]] = call float @llvm.round.f32(float nofpclass(norm) [[ARG0]]) #[[ATTR2]]167; LIGHT-NEXT:    ret float [[CALL]]168;169  %call = call float @llvm.round.f32(float %arg0)170  ret float %call171}172 173define float @ret_round_nonnorm(float nofpclass(nnorm) %arg0) {174; CHECK-LABEL: define nofpclass(sub) float @ret_round_nonnorm175; CHECK-SAME: (float nofpclass(nnorm) [[ARG0:%.*]]) #[[ATTR1]] {176; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(sub) float @llvm.round.f32(float nofpclass(nnorm) [[ARG0]]) #[[ATTR2]]177; CHECK-NEXT:    ret float [[CALL]]178;179; LIGHT-LABEL: define float @ret_round_nonnorm180; LIGHT-SAME: (float nofpclass(nnorm) [[ARG0:%.*]]) #[[ATTR1]] {181; LIGHT-NEXT:    [[CALL:%.*]] = call float @llvm.round.f32(float nofpclass(nnorm) [[ARG0]]) #[[ATTR2]]182; LIGHT-NEXT:    ret float [[CALL]]183;184  %call = call float @llvm.round.f32(float %arg0)185  ret float %call186}187 188define float @ret_round_nopnorm(float nofpclass(pnorm) %arg0) {189; CHECK-LABEL: define nofpclass(sub) float @ret_round_nopnorm190; CHECK-SAME: (float nofpclass(pnorm) [[ARG0:%.*]]) #[[ATTR1]] {191; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(sub) float @llvm.round.f32(float nofpclass(pnorm) [[ARG0]]) #[[ATTR2]]192; CHECK-NEXT:    ret float [[CALL]]193;194; LIGHT-LABEL: define float @ret_round_nopnorm195; LIGHT-SAME: (float nofpclass(pnorm) [[ARG0:%.*]]) #[[ATTR1]] {196; LIGHT-NEXT:    [[CALL:%.*]] = call float @llvm.round.f32(float nofpclass(pnorm) [[ARG0]]) #[[ATTR2]]197; LIGHT-NEXT:    ret float [[CALL]]198;199  %call = call float @llvm.round.f32(float %arg0)200  ret float %call201}202 203define float @ret_round_nonsub(float nofpclass(nsub) %arg0) {204; CHECK-LABEL: define nofpclass(sub) float @ret_round_nonsub205; CHECK-SAME: (float nofpclass(nsub) [[ARG0:%.*]]) #[[ATTR1]] {206; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(sub) float @llvm.round.f32(float nofpclass(nsub) [[ARG0]]) #[[ATTR2]]207; CHECK-NEXT:    ret float [[CALL]]208;209; LIGHT-LABEL: define float @ret_round_nonsub210; LIGHT-SAME: (float nofpclass(nsub) [[ARG0:%.*]]) #[[ATTR1]] {211; LIGHT-NEXT:    [[CALL:%.*]] = call float @llvm.round.f32(float nofpclass(nsub) [[ARG0]]) #[[ATTR2]]212; LIGHT-NEXT:    ret float [[CALL]]213;214  %call = call float @llvm.round.f32(float %arg0)215  ret float %call216}217 218define float @ret_round_nopsub(float nofpclass(psub) %arg0) {219; CHECK-LABEL: define nofpclass(sub) float @ret_round_nopsub220; CHECK-SAME: (float nofpclass(psub) [[ARG0:%.*]]) #[[ATTR1]] {221; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(sub) float @llvm.round.f32(float nofpclass(psub) [[ARG0]]) #[[ATTR2]]222; CHECK-NEXT:    ret float [[CALL]]223;224; LIGHT-LABEL: define float @ret_round_nopsub225; LIGHT-SAME: (float nofpclass(psub) [[ARG0:%.*]]) #[[ATTR1]] {226; LIGHT-NEXT:    [[CALL:%.*]] = call float @llvm.round.f32(float nofpclass(psub) [[ARG0]]) #[[ATTR2]]227; LIGHT-NEXT:    ret float [[CALL]]228;229  %call = call float @llvm.round.f32(float %arg0)230  ret float %call231}232 233define float @ret_round_nonorm_nosub(float nofpclass(norm sub) %arg0) {234; CHECK-LABEL: define nofpclass(sub) float @ret_round_nonorm_nosub235; CHECK-SAME: (float nofpclass(sub norm) [[ARG0:%.*]]) #[[ATTR1]] {236; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(sub) float @llvm.round.f32(float nofpclass(sub norm) [[ARG0]]) #[[ATTR2]]237; CHECK-NEXT:    ret float [[CALL]]238;239; LIGHT-LABEL: define float @ret_round_nonorm_nosub240; LIGHT-SAME: (float nofpclass(sub norm) [[ARG0:%.*]]) #[[ATTR1]] {241; LIGHT-NEXT:    [[CALL:%.*]] = call float @llvm.round.f32(float nofpclass(sub norm) [[ARG0]]) #[[ATTR2]]242; LIGHT-NEXT:    ret float [[CALL]]243;244  %call = call float @llvm.round.f32(float %arg0)245  ret float %call246}247 248define float @ret_round_nopnorm_nopsub(float nofpclass(pnorm psub) %arg0) {249; CHECK-LABEL: define nofpclass(sub) float @ret_round_nopnorm_nopsub250; CHECK-SAME: (float nofpclass(psub pnorm) [[ARG0:%.*]]) #[[ATTR1]] {251; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(sub) float @llvm.round.f32(float nofpclass(psub pnorm) [[ARG0]]) #[[ATTR2]]252; CHECK-NEXT:    ret float [[CALL]]253;254; LIGHT-LABEL: define float @ret_round_nopnorm_nopsub255; LIGHT-SAME: (float nofpclass(psub pnorm) [[ARG0:%.*]]) #[[ATTR1]] {256; LIGHT-NEXT:    [[CALL:%.*]] = call float @llvm.round.f32(float nofpclass(psub pnorm) [[ARG0]]) #[[ATTR2]]257; LIGHT-NEXT:    ret float [[CALL]]258;259  %call = call float @llvm.round.f32(float %arg0)260  ret float %call261}262 263define float @ret_round_nonnorm_nonsub(float nofpclass(nnorm nsub) %arg0) {264; CHECK-LABEL: define nofpclass(sub) float @ret_round_nonnorm_nonsub265; CHECK-SAME: (float nofpclass(nsub nnorm) [[ARG0:%.*]]) #[[ATTR1]] {266; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(sub) float @llvm.round.f32(float nofpclass(nsub nnorm) [[ARG0]]) #[[ATTR2]]267; CHECK-NEXT:    ret float [[CALL]]268;269; LIGHT-LABEL: define float @ret_round_nonnorm_nonsub270; LIGHT-SAME: (float nofpclass(nsub nnorm) [[ARG0:%.*]]) #[[ATTR1]] {271; LIGHT-NEXT:    [[CALL:%.*]] = call float @llvm.round.f32(float nofpclass(nsub nnorm) [[ARG0]]) #[[ATTR2]]272; LIGHT-NEXT:    ret float [[CALL]]273;274  %call = call float @llvm.round.f32(float %arg0)275  ret float %call276}277 278define float @ret_round_nopnorm_nonsub(float nofpclass(pnorm nsub) %arg0) {279; CHECK-LABEL: define nofpclass(sub) float @ret_round_nopnorm_nonsub280; CHECK-SAME: (float nofpclass(nsub pnorm) [[ARG0:%.*]]) #[[ATTR1]] {281; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(sub) float @llvm.round.f32(float nofpclass(nsub pnorm) [[ARG0]]) #[[ATTR2]]282; CHECK-NEXT:    ret float [[CALL]]283;284; LIGHT-LABEL: define float @ret_round_nopnorm_nonsub285; LIGHT-SAME: (float nofpclass(nsub pnorm) [[ARG0:%.*]]) #[[ATTR1]] {286; LIGHT-NEXT:    [[CALL:%.*]] = call float @llvm.round.f32(float nofpclass(nsub pnorm) [[ARG0]]) #[[ATTR2]]287; LIGHT-NEXT:    ret float [[CALL]]288;289  %call = call float @llvm.round.f32(float %arg0)290  ret float %call291}292 293define ppc_fp128 @ret_round_ppcf128(ppc_fp128 %arg0) {294; CHECK-LABEL: define nofpclass(sub) ppc_fp128 @ret_round_ppcf128295; CHECK-SAME: (ppc_fp128 [[ARG0:%.*]]) #[[ATTR1]] {296; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(sub) ppc_fp128 @llvm.round.ppcf128(ppc_fp128 [[ARG0]]) #[[ATTR2]]297; CHECK-NEXT:    ret ppc_fp128 [[CALL]]298;299; LIGHT-LABEL: define ppc_fp128 @ret_round_ppcf128300; LIGHT-SAME: (ppc_fp128 [[ARG0:%.*]]) #[[ATTR1]] {301; LIGHT-NEXT:    [[CALL:%.*]] = call ppc_fp128 @llvm.round.ppcf128(ppc_fp128 [[ARG0]]) #[[ATTR2]]302; LIGHT-NEXT:    ret ppc_fp128 [[CALL]]303;304  %call = call ppc_fp128 @llvm.round.ppcf128(ppc_fp128 %arg0)305  ret ppc_fp128 %call306}307 308define ppc_fp128 @ret_round_noinf_ppcf128(ppc_fp128 nofpclass(inf) %arg0) {309; CHECK-LABEL: define nofpclass(sub) ppc_fp128 @ret_round_noinf_ppcf128310; CHECK-SAME: (ppc_fp128 nofpclass(inf) [[ARG0:%.*]]) #[[ATTR1]] {311; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(sub) ppc_fp128 @llvm.round.ppcf128(ppc_fp128 nofpclass(inf) [[ARG0]]) #[[ATTR2]]312; CHECK-NEXT:    ret ppc_fp128 [[CALL]]313;314; LIGHT-LABEL: define ppc_fp128 @ret_round_noinf_ppcf128315; LIGHT-SAME: (ppc_fp128 nofpclass(inf) [[ARG0:%.*]]) #[[ATTR1]] {316; LIGHT-NEXT:    [[CALL:%.*]] = call ppc_fp128 @llvm.round.ppcf128(ppc_fp128 nofpclass(inf) [[ARG0]]) #[[ATTR2]]317; LIGHT-NEXT:    ret ppc_fp128 [[CALL]]318;319  %call = call ppc_fp128 @llvm.round.ppcf128(ppc_fp128 %arg0)320  ret ppc_fp128 %call321}322 323define ppc_fp128 @ret_round_nopinf_ppcf128(ppc_fp128 nofpclass(pinf) %arg0) {324; CHECK-LABEL: define nofpclass(sub) ppc_fp128 @ret_round_nopinf_ppcf128325; CHECK-SAME: (ppc_fp128 nofpclass(pinf) [[ARG0:%.*]]) #[[ATTR1]] {326; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(sub) ppc_fp128 @llvm.round.ppcf128(ppc_fp128 nofpclass(pinf) [[ARG0]]) #[[ATTR2]]327; CHECK-NEXT:    ret ppc_fp128 [[CALL]]328;329; LIGHT-LABEL: define ppc_fp128 @ret_round_nopinf_ppcf128330; LIGHT-SAME: (ppc_fp128 nofpclass(pinf) [[ARG0:%.*]]) #[[ATTR1]] {331; LIGHT-NEXT:    [[CALL:%.*]] = call ppc_fp128 @llvm.round.ppcf128(ppc_fp128 nofpclass(pinf) [[ARG0]]) #[[ATTR2]]332; LIGHT-NEXT:    ret ppc_fp128 [[CALL]]333;334  %call = call ppc_fp128 @llvm.round.ppcf128(ppc_fp128 %arg0)335  ret ppc_fp128 %call336}337 338define ppc_fp128 @ret_round_noninf_ppcf128(ppc_fp128 nofpclass(ninf) %arg0) {339; CHECK-LABEL: define nofpclass(sub) ppc_fp128 @ret_round_noninf_ppcf128340; CHECK-SAME: (ppc_fp128 nofpclass(ninf) [[ARG0:%.*]]) #[[ATTR1]] {341; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(sub) ppc_fp128 @llvm.round.ppcf128(ppc_fp128 nofpclass(ninf) [[ARG0]]) #[[ATTR2]]342; CHECK-NEXT:    ret ppc_fp128 [[CALL]]343;344; LIGHT-LABEL: define ppc_fp128 @ret_round_noninf_ppcf128345; LIGHT-SAME: (ppc_fp128 nofpclass(ninf) [[ARG0:%.*]]) #[[ATTR1]] {346; LIGHT-NEXT:    [[CALL:%.*]] = call ppc_fp128 @llvm.round.ppcf128(ppc_fp128 nofpclass(ninf) [[ARG0]]) #[[ATTR2]]347; LIGHT-NEXT:    ret ppc_fp128 [[CALL]]348;349  %call = call ppc_fp128 @llvm.round.ppcf128(ppc_fp128 %arg0)350  ret ppc_fp128 %call351}352 353define ppc_fp128 @ret_round_nonan_ppcf128(ppc_fp128 nofpclass(nan) %arg0) {354; CHECK-LABEL: define nofpclass(nan sub) ppc_fp128 @ret_round_nonan_ppcf128355; CHECK-SAME: (ppc_fp128 nofpclass(nan) [[ARG0:%.*]]) #[[ATTR1]] {356; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(nan sub) ppc_fp128 @llvm.round.ppcf128(ppc_fp128 nofpclass(nan) [[ARG0]]) #[[ATTR2]]357; CHECK-NEXT:    ret ppc_fp128 [[CALL]]358;359; LIGHT-LABEL: define ppc_fp128 @ret_round_nonan_ppcf128360; LIGHT-SAME: (ppc_fp128 nofpclass(nan) [[ARG0:%.*]]) #[[ATTR1]] {361; LIGHT-NEXT:    [[CALL:%.*]] = call ppc_fp128 @llvm.round.ppcf128(ppc_fp128 nofpclass(nan) [[ARG0]]) #[[ATTR2]]362; LIGHT-NEXT:    ret ppc_fp128 [[CALL]]363;364  %call = call ppc_fp128 @llvm.round.ppcf128(ppc_fp128 %arg0)365  ret ppc_fp128 %call366}367 368define float @ret_round_noneg(float nofpclass(ninf nsub nnorm) %arg0) {369; CHECK-LABEL: define nofpclass(ninf sub) float @ret_round_noneg370; CHECK-SAME: (float nofpclass(ninf nsub nnorm) [[ARG0:%.*]]) #[[ATTR1]] {371; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(ninf sub) float @llvm.round.f32(float nofpclass(ninf nsub nnorm) [[ARG0]]) #[[ATTR2]]372; CHECK-NEXT:    ret float [[CALL]]373;374; LIGHT-LABEL: define float @ret_round_noneg375; LIGHT-SAME: (float nofpclass(ninf nsub nnorm) [[ARG0:%.*]]) #[[ATTR1]] {376; LIGHT-NEXT:    [[CALL:%.*]] = call float @llvm.round.f32(float nofpclass(ninf nsub nnorm) [[ARG0]]) #[[ATTR2]]377; LIGHT-NEXT:    ret float [[CALL]]378;379  %call = call float @llvm.round.f32(float %arg0)380  ret float %call381}382 383define float @ret_round_noneg_nonegzero(float nofpclass(ninf nsub nnorm nzero) %arg0) {384; CHECK-LABEL: define nofpclass(ninf nzero sub nnorm) float @ret_round_noneg_nonegzero385; CHECK-SAME: (float nofpclass(ninf nzero nsub nnorm) [[ARG0:%.*]]) #[[ATTR1]] {386; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(ninf nzero sub nnorm) float @llvm.round.f32(float nofpclass(ninf nzero nsub nnorm) [[ARG0]]) #[[ATTR2]]387; CHECK-NEXT:    ret float [[CALL]]388;389; LIGHT-LABEL: define float @ret_round_noneg_nonegzero390; LIGHT-SAME: (float nofpclass(ninf nzero nsub nnorm) [[ARG0:%.*]]) #[[ATTR1]] {391; LIGHT-NEXT:    [[CALL:%.*]] = call float @llvm.round.f32(float nofpclass(ninf nzero nsub nnorm) [[ARG0]]) #[[ATTR2]]392; LIGHT-NEXT:    ret float [[CALL]]393;394  %call = call float @llvm.round.f32(float %arg0)395  ret float %call396}397 398define float @ret_round_noneg_nonegzero_nonan(float nofpclass(ninf nsub nnorm nzero nan) %arg0) {399; CHECK-LABEL: define nofpclass(nan ninf nzero sub nnorm) float @ret_round_noneg_nonegzero_nonan400; CHECK-SAME: (float nofpclass(nan ninf nzero nsub nnorm) [[ARG0:%.*]]) #[[ATTR1]] {401; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(nan ninf nzero sub nnorm) float @llvm.round.f32(float nofpclass(nan ninf nzero nsub nnorm) [[ARG0]]) #[[ATTR2]]402; CHECK-NEXT:    ret float [[CALL]]403;404; LIGHT-LABEL: define float @ret_round_noneg_nonegzero_nonan405; LIGHT-SAME: (float nofpclass(nan ninf nzero nsub nnorm) [[ARG0:%.*]]) #[[ATTR1]] {406; LIGHT-NEXT:    [[CALL:%.*]] = call float @llvm.round.f32(float nofpclass(nan ninf nzero nsub nnorm) [[ARG0]]) #[[ATTR2]]407; LIGHT-NEXT:    ret float [[CALL]]408;409  %call = call float @llvm.round.f32(float %arg0)410  ret float %call411}412 413define float @ret_round_noneg_nozero(float nofpclass(ninf nsub nnorm zero) %arg0) {414; CHECK-LABEL: define nofpclass(ninf nzero sub nnorm) float @ret_round_noneg_nozero415; CHECK-SAME: (float nofpclass(ninf zero nsub nnorm) [[ARG0:%.*]]) #[[ATTR1]] {416; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(ninf nzero sub nnorm) float @llvm.round.f32(float nofpclass(ninf zero nsub nnorm) [[ARG0]]) #[[ATTR2]]417; CHECK-NEXT:    ret float [[CALL]]418;419; LIGHT-LABEL: define float @ret_round_noneg_nozero420; LIGHT-SAME: (float nofpclass(ninf zero nsub nnorm) [[ARG0:%.*]]) #[[ATTR1]] {421; LIGHT-NEXT:    [[CALL:%.*]] = call float @llvm.round.f32(float nofpclass(ninf zero nsub nnorm) [[ARG0]]) #[[ATTR2]]422; LIGHT-NEXT:    ret float [[CALL]]423;424  %call = call float @llvm.round.f32(float %arg0)425  ret float %call426}427 428define float @ret_round_noneg_nozero_nonan(float nofpclass(ninf nsub nnorm zero nan) %arg0) {429; CHECK-LABEL: define nofpclass(nan ninf nzero sub nnorm) float @ret_round_noneg_nozero_nonan430; CHECK-SAME: (float nofpclass(nan ninf zero nsub nnorm) [[ARG0:%.*]]) #[[ATTR1]] {431; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(nan ninf nzero sub nnorm) float @llvm.round.f32(float nofpclass(nan ninf zero nsub nnorm) [[ARG0]]) #[[ATTR2]]432; CHECK-NEXT:    ret float [[CALL]]433;434; LIGHT-LABEL: define float @ret_round_noneg_nozero_nonan435; LIGHT-SAME: (float nofpclass(nan ninf zero nsub nnorm) [[ARG0:%.*]]) #[[ATTR1]] {436; LIGHT-NEXT:    [[CALL:%.*]] = call float @llvm.round.f32(float nofpclass(nan ninf zero nsub nnorm) [[ARG0]]) #[[ATTR2]]437; LIGHT-NEXT:    ret float [[CALL]]438;439  %call = call float @llvm.round.f32(float %arg0)440  ret float %call441}442 443define float @ret_round_nopos(float nofpclass(pinf psub pnorm) %arg0) {444; CHECK-LABEL: define nofpclass(pinf sub) float @ret_round_nopos445; CHECK-SAME: (float nofpclass(pinf psub pnorm) [[ARG0:%.*]]) #[[ATTR1]] {446; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(pinf sub) float @llvm.round.f32(float nofpclass(pinf psub pnorm) [[ARG0]]) #[[ATTR2]]447; CHECK-NEXT:    ret float [[CALL]]448;449; LIGHT-LABEL: define float @ret_round_nopos450; LIGHT-SAME: (float nofpclass(pinf psub pnorm) [[ARG0:%.*]]) #[[ATTR1]] {451; LIGHT-NEXT:    [[CALL:%.*]] = call float @llvm.round.f32(float nofpclass(pinf psub pnorm) [[ARG0]]) #[[ATTR2]]452; LIGHT-NEXT:    ret float [[CALL]]453;454  %call = call float @llvm.round.f32(float %arg0)455  ret float %call456}457 458define float @ret_round_nopos_nopzero(float nofpclass(pinf psub pnorm pzero) %arg0) {459; CHECK-LABEL: define nofpclass(pinf pzero sub pnorm) float @ret_round_nopos_nopzero460; CHECK-SAME: (float nofpclass(pinf pzero psub pnorm) [[ARG0:%.*]]) #[[ATTR1]] {461; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(pinf pzero sub pnorm) float @llvm.round.f32(float nofpclass(pinf pzero psub pnorm) [[ARG0]]) #[[ATTR2]]462; CHECK-NEXT:    ret float [[CALL]]463;464; LIGHT-LABEL: define float @ret_round_nopos_nopzero465; LIGHT-SAME: (float nofpclass(pinf pzero psub pnorm) [[ARG0:%.*]]) #[[ATTR1]] {466; LIGHT-NEXT:    [[CALL:%.*]] = call float @llvm.round.f32(float nofpclass(pinf pzero psub pnorm) [[ARG0]]) #[[ATTR2]]467; LIGHT-NEXT:    ret float [[CALL]]468;469  %call = call float @llvm.round.f32(float %arg0)470  ret float %call471}472 473define float @ret_round_nopos_nopzero_nonan(float nofpclass(pinf psub pnorm pzero nan) %arg0) {474; CHECK-LABEL: define nofpclass(nan pinf pzero sub pnorm) float @ret_round_nopos_nopzero_nonan475; CHECK-SAME: (float nofpclass(nan pinf pzero psub pnorm) [[ARG0:%.*]]) #[[ATTR1]] {476; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(nan pinf pzero sub pnorm) float @llvm.round.f32(float nofpclass(nan pinf pzero psub pnorm) [[ARG0]]) #[[ATTR2]]477; CHECK-NEXT:    ret float [[CALL]]478;479; LIGHT-LABEL: define float @ret_round_nopos_nopzero_nonan480; LIGHT-SAME: (float nofpclass(nan pinf pzero psub pnorm) [[ARG0:%.*]]) #[[ATTR1]] {481; LIGHT-NEXT:    [[CALL:%.*]] = call float @llvm.round.f32(float nofpclass(nan pinf pzero psub pnorm) [[ARG0]]) #[[ATTR2]]482; LIGHT-NEXT:    ret float [[CALL]]483;484  %call = call float @llvm.round.f32(float %arg0)485  ret float %call486}487 488define float @ret_round_nopos_nozero(float nofpclass(pinf psub pnorm zero) %arg0) {489; CHECK-LABEL: define nofpclass(pinf pzero sub pnorm) float @ret_round_nopos_nozero490; CHECK-SAME: (float nofpclass(pinf zero psub pnorm) [[ARG0:%.*]]) #[[ATTR1]] {491; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(pinf pzero sub pnorm) float @llvm.round.f32(float nofpclass(pinf zero psub pnorm) [[ARG0]]) #[[ATTR2]]492; CHECK-NEXT:    ret float [[CALL]]493;494; LIGHT-LABEL: define float @ret_round_nopos_nozero495; LIGHT-SAME: (float nofpclass(pinf zero psub pnorm) [[ARG0:%.*]]) #[[ATTR1]] {496; LIGHT-NEXT:    [[CALL:%.*]] = call float @llvm.round.f32(float nofpclass(pinf zero psub pnorm) [[ARG0]]) #[[ATTR2]]497; LIGHT-NEXT:    ret float [[CALL]]498;499  %call = call float @llvm.round.f32(float %arg0)500  ret float %call501}502 503define float @ret_round_nopos_nozero_nonan(float nofpclass(pinf psub pnorm zero nan) %arg0) {504; CHECK-LABEL: define nofpclass(nan pinf pzero sub pnorm) float @ret_round_nopos_nozero_nonan505; CHECK-SAME: (float nofpclass(nan pinf zero psub pnorm) [[ARG0:%.*]]) #[[ATTR1]] {506; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(nan pinf pzero sub pnorm) float @llvm.round.f32(float nofpclass(nan pinf zero psub pnorm) [[ARG0]]) #[[ATTR2]]507; CHECK-NEXT:    ret float [[CALL]]508;509; LIGHT-LABEL: define float @ret_round_nopos_nozero_nonan510; LIGHT-SAME: (float nofpclass(nan pinf zero psub pnorm) [[ARG0:%.*]]) #[[ATTR1]] {511; LIGHT-NEXT:    [[CALL:%.*]] = call float @llvm.round.f32(float nofpclass(nan pinf zero psub pnorm) [[ARG0]]) #[[ATTR2]]512; LIGHT-NEXT:    ret float [[CALL]]513;514  %call = call float @llvm.round.f32(float %arg0)515  ret float %call516}517 518define float @ret_round_nopzero_nopnorm(float nofpclass(pzero pnorm) %arg0) {519; CHECK-LABEL: define nofpclass(sub) float @ret_round_nopzero_nopnorm520; CHECK-SAME: (float nofpclass(pzero pnorm) [[ARG0:%.*]]) #[[ATTR1]] {521; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(sub) float @llvm.round.f32(float nofpclass(pzero pnorm) [[ARG0]]) #[[ATTR2]]522; CHECK-NEXT:    ret float [[CALL]]523;524; LIGHT-LABEL: define float @ret_round_nopzero_nopnorm525; LIGHT-SAME: (float nofpclass(pzero pnorm) [[ARG0:%.*]]) #[[ATTR1]] {526; LIGHT-NEXT:    [[CALL:%.*]] = call float @llvm.round.f32(float nofpclass(pzero pnorm) [[ARG0]]) #[[ATTR2]]527; LIGHT-NEXT:    ret float [[CALL]]528;529  %call = call float @llvm.round.f32(float %arg0)530  ret float %call531}532 533define float @ret_round_nonzero_nonnorm(float nofpclass(nzero nnorm) %arg0) {534; CHECK-LABEL: define nofpclass(sub) float @ret_round_nonzero_nonnorm535; CHECK-SAME: (float nofpclass(nzero nnorm) [[ARG0:%.*]]) #[[ATTR1]] {536; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(sub) float @llvm.round.f32(float nofpclass(nzero nnorm) [[ARG0]]) #[[ATTR2]]537; CHECK-NEXT:    ret float [[CALL]]538;539; LIGHT-LABEL: define float @ret_round_nonzero_nonnorm540; LIGHT-SAME: (float nofpclass(nzero nnorm) [[ARG0:%.*]]) #[[ATTR1]] {541; LIGHT-NEXT:    [[CALL:%.*]] = call float @llvm.round.f32(float nofpclass(nzero nnorm) [[ARG0]]) #[[ATTR2]]542; LIGHT-NEXT:    ret float [[CALL]]543;544  %call = call float @llvm.round.f32(float %arg0)545  ret float %call546}547 548define float @ret_round_nozero_nonorm(float nofpclass(zero norm) %arg0) {549; CHECK-LABEL: define nofpclass(sub) float @ret_round_nozero_nonorm550; CHECK-SAME: (float nofpclass(zero norm) [[ARG0:%.*]]) #[[ATTR1]] {551; CHECK-NEXT:    [[CALL:%.*]] = call nofpclass(sub) float @llvm.round.f32(float nofpclass(zero norm) [[ARG0]]) #[[ATTR2]]552; CHECK-NEXT:    ret float [[CALL]]553;554; LIGHT-LABEL: define float @ret_round_nozero_nonorm555; LIGHT-SAME: (float nofpclass(zero norm) [[ARG0:%.*]]) #[[ATTR1]] {556; LIGHT-NEXT:    [[CALL:%.*]] = call float @llvm.round.f32(float nofpclass(zero norm) [[ARG0]]) #[[ATTR2]]557; LIGHT-NEXT:    ret float [[CALL]]558;559  %call = call float @llvm.round.f32(float %arg0)560  ret float %call561}562