brintos

brintos / llvm-project-archived public Read only

0
0
Text · 13.9 KiB · 94ed32a Raw
256 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -S -mtriple=x86_64-- --expand-fp < %s | FileCheck %s3; RUN: opt -S -mtriple=x86_64-- -passes=expand-fp < %s | FileCheck %s4 5define i129 @halftoui129(half %a) {6; CHECK-LABEL: @halftoui129(7; CHECK-NEXT:    [[TMP1:%.*]] = fptoui half [[A:%.*]] to i328; CHECK-NEXT:    [[TMP2:%.*]] = zext i32 [[TMP1]] to i1299; CHECK-NEXT:    ret i129 [[TMP2]]10;11  %conv = fptoui half %a to i12912  ret i129 %conv13}14 15define i129 @floattoui129(float %a) {16; CHECK-LABEL: @floattoui129(17; CHECK-NEXT:  fp-to-i-entry:18; CHECK-NEXT:    [[TMP0:%.*]] = bitcast float [[A:%.*]] to i3219; CHECK-NEXT:    [[TMP1:%.*]] = zext i32 [[TMP0]] to i12920; CHECK-NEXT:    [[TMP2:%.*]] = icmp sgt i32 [[TMP0]], -121; CHECK-NEXT:    [[TMP3:%.*]] = select i1 [[TMP2]], i129 1, i129 -122; CHECK-NEXT:    [[TMP4:%.*]] = lshr i129 [[TMP1]], 2323; CHECK-NEXT:    [[TMP5:%.*]] = and i129 [[TMP4]], 25524; CHECK-NEXT:    [[TMP6:%.*]] = and i129 [[TMP1]], 838860725; CHECK-NEXT:    [[TMP7:%.*]] = or i129 [[TMP6]], 838860826; CHECK-NEXT:    [[TMP8:%.*]] = icmp ult i129 [[TMP5]], 12727; CHECK-NEXT:    br i1 [[TMP8]], label [[FP_TO_I_CLEANUP:%.*]], label [[FP_TO_I_IF_END:%.*]]28; CHECK:       fp-to-i-if-end:29; CHECK-NEXT:    [[TMP9:%.*]] = add i129 [[TMP5]], -25630; CHECK-NEXT:    [[TMP10:%.*]] = icmp ult i129 [[TMP9]], -12931; CHECK-NEXT:    br i1 [[TMP10]], label [[FP_TO_I_IF_THEN5:%.*]], label [[FP_TO_I_IF_END9:%.*]]32; CHECK:       fp-to-i-if-then5:33; CHECK-NEXT:    [[TMP11:%.*]] = select i1 [[TMP2]], i129 340282366920938463463374607431768211455, i129 -34028236692093846346337460743176821145634; CHECK-NEXT:    br label [[FP_TO_I_CLEANUP]]35; CHECK:       fp-to-i-if-end9:36; CHECK-NEXT:    [[TMP12:%.*]] = icmp ult i129 [[TMP5]], 15037; CHECK-NEXT:    br i1 [[TMP12]], label [[FP_TO_I_IF_THEN12:%.*]], label [[FP_TO_I_IF_ELSE:%.*]]38; CHECK:       fp-to-i-if-then12:39; CHECK-NEXT:    [[TMP13:%.*]] = sub i129 150, [[TMP5]]40; CHECK-NEXT:    [[TMP14:%.*]] = lshr i129 [[TMP7]], [[TMP13]]41; CHECK-NEXT:    [[TMP15:%.*]] = mul i129 [[TMP14]], [[TMP3]]42; CHECK-NEXT:    br label [[FP_TO_I_CLEANUP]]43; CHECK:       fp-to-i-if-else:44; CHECK-NEXT:    [[TMP16:%.*]] = add i129 [[TMP5]], -15045; CHECK-NEXT:    [[TMP17:%.*]] = shl i129 [[TMP7]], [[TMP16]]46; CHECK-NEXT:    [[TMP18:%.*]] = mul i129 [[TMP17]], [[TMP3]]47; CHECK-NEXT:    br label [[FP_TO_I_CLEANUP]]48; CHECK:       fp-to-i-cleanup:49; CHECK-NEXT:    [[TMP19:%.*]] = phi i129 [ [[TMP11]], [[FP_TO_I_IF_THEN5]] ], [ [[TMP15]], [[FP_TO_I_IF_THEN12]] ], [ [[TMP18]], [[FP_TO_I_IF_ELSE]] ], [ 0, [[FP_TO_I_ENTRY:%.*]] ]50; CHECK-NEXT:    ret i129 [[TMP19]]51;52  %conv = fptoui float %a to i12953  ret i129 %conv54}55 56define i129 @doubletoui129(double %a) {57; CHECK-LABEL: @doubletoui129(58; CHECK-NEXT:  fp-to-i-entry:59; CHECK-NEXT:    [[TMP0:%.*]] = bitcast double [[A:%.*]] to i6460; CHECK-NEXT:    [[TMP1:%.*]] = zext i64 [[TMP0]] to i12961; CHECK-NEXT:    [[TMP2:%.*]] = icmp sgt i64 [[TMP0]], -162; CHECK-NEXT:    [[TMP3:%.*]] = select i1 [[TMP2]], i129 1, i129 -163; CHECK-NEXT:    [[TMP4:%.*]] = lshr i129 [[TMP1]], 5264; CHECK-NEXT:    [[TMP5:%.*]] = and i129 [[TMP4]], 204765; CHECK-NEXT:    [[TMP6:%.*]] = and i129 [[TMP1]], 450359962737049566; CHECK-NEXT:    [[TMP7:%.*]] = or i129 [[TMP6]], 450359962737049667; CHECK-NEXT:    [[TMP8:%.*]] = icmp ult i129 [[TMP5]], 102368; CHECK-NEXT:    br i1 [[TMP8]], label [[FP_TO_I_CLEANUP:%.*]], label [[FP_TO_I_IF_END:%.*]]69; CHECK:       fp-to-i-if-end:70; CHECK-NEXT:    [[TMP9:%.*]] = add i129 [[TMP5]], -115271; CHECK-NEXT:    [[TMP10:%.*]] = icmp ult i129 [[TMP9]], -12972; CHECK-NEXT:    br i1 [[TMP10]], label [[FP_TO_I_IF_THEN5:%.*]], label [[FP_TO_I_IF_END9:%.*]]73; CHECK:       fp-to-i-if-then5:74; CHECK-NEXT:    [[TMP11:%.*]] = select i1 [[TMP2]], i129 340282366920938463463374607431768211455, i129 -34028236692093846346337460743176821145675; CHECK-NEXT:    br label [[FP_TO_I_CLEANUP]]76; CHECK:       fp-to-i-if-end9:77; CHECK-NEXT:    [[TMP12:%.*]] = icmp ult i129 [[TMP5]], 107578; CHECK-NEXT:    br i1 [[TMP12]], label [[FP_TO_I_IF_THEN12:%.*]], label [[FP_TO_I_IF_ELSE:%.*]]79; CHECK:       fp-to-i-if-then12:80; CHECK-NEXT:    [[TMP13:%.*]] = sub i129 1075, [[TMP5]]81; CHECK-NEXT:    [[TMP14:%.*]] = lshr i129 [[TMP7]], [[TMP13]]82; CHECK-NEXT:    [[TMP15:%.*]] = mul i129 [[TMP14]], [[TMP3]]83; CHECK-NEXT:    br label [[FP_TO_I_CLEANUP]]84; CHECK:       fp-to-i-if-else:85; CHECK-NEXT:    [[TMP16:%.*]] = add i129 [[TMP5]], -107586; CHECK-NEXT:    [[TMP17:%.*]] = shl i129 [[TMP7]], [[TMP16]]87; CHECK-NEXT:    [[TMP18:%.*]] = mul i129 [[TMP17]], [[TMP3]]88; CHECK-NEXT:    br label [[FP_TO_I_CLEANUP]]89; CHECK:       fp-to-i-cleanup:90; CHECK-NEXT:    [[TMP19:%.*]] = phi i129 [ [[TMP11]], [[FP_TO_I_IF_THEN5]] ], [ [[TMP15]], [[FP_TO_I_IF_THEN12]] ], [ [[TMP18]], [[FP_TO_I_IF_ELSE]] ], [ 0, [[FP_TO_I_ENTRY:%.*]] ]91; CHECK-NEXT:    ret i129 [[TMP19]]92;93  %conv = fptoui double %a to i12994  ret i129 %conv95}96 97define i129 @x86_fp80toui129(x86_fp80 %a) {98; CHECK-LABEL: @x86_fp80toui129(99; CHECK-NEXT:  fp-to-i-entry:100; CHECK-NEXT:    [[TMP0:%.*]] = fpext x86_fp80 [[A:%.*]] to fp128101; CHECK-NEXT:    [[TMP1:%.*]] = bitcast fp128 [[TMP0]] to i128102; CHECK-NEXT:    [[TMP2:%.*]] = zext i128 [[TMP1]] to i129103; CHECK-NEXT:    [[TMP3:%.*]] = icmp sgt i128 [[TMP1]], -1104; CHECK-NEXT:    [[TMP4:%.*]] = select i1 [[TMP3]], i129 1, i129 -1105; CHECK-NEXT:    [[TMP5:%.*]] = lshr i129 [[TMP2]], 112106; CHECK-NEXT:    [[TMP6:%.*]] = and i129 [[TMP5]], 32767107; CHECK-NEXT:    [[TMP7:%.*]] = and i129 [[TMP2]], 5192296858534827628530496329220095108; CHECK-NEXT:    [[TMP8:%.*]] = or i129 [[TMP7]], 5192296858534827628530496329220096109; CHECK-NEXT:    [[TMP9:%.*]] = icmp ult i129 [[TMP6]], 16383110; CHECK-NEXT:    br i1 [[TMP9]], label [[FP_TO_I_CLEANUP:%.*]], label [[FP_TO_I_IF_END:%.*]]111; CHECK:       fp-to-i-if-end:112; CHECK-NEXT:    [[TMP10:%.*]] = add i129 [[TMP6]], -16512113; CHECK-NEXT:    [[TMP11:%.*]] = icmp ult i129 [[TMP10]], -129114; CHECK-NEXT:    br i1 [[TMP11]], label [[FP_TO_I_IF_THEN5:%.*]], label [[FP_TO_I_IF_END9:%.*]]115; CHECK:       fp-to-i-if-then5:116; CHECK-NEXT:    [[TMP12:%.*]] = select i1 [[TMP3]], i129 340282366920938463463374607431768211455, i129 -340282366920938463463374607431768211456117; CHECK-NEXT:    br label [[FP_TO_I_CLEANUP]]118; CHECK:       fp-to-i-if-end9:119; CHECK-NEXT:    [[TMP13:%.*]] = icmp ult i129 [[TMP6]], 16495120; CHECK-NEXT:    br i1 [[TMP13]], label [[FP_TO_I_IF_THEN12:%.*]], label [[FP_TO_I_IF_ELSE:%.*]]121; CHECK:       fp-to-i-if-then12:122; CHECK-NEXT:    [[TMP14:%.*]] = sub i129 16495, [[TMP6]]123; CHECK-NEXT:    [[TMP15:%.*]] = lshr i129 [[TMP8]], [[TMP14]]124; CHECK-NEXT:    [[TMP16:%.*]] = mul i129 [[TMP15]], [[TMP4]]125; CHECK-NEXT:    br label [[FP_TO_I_CLEANUP]]126; CHECK:       fp-to-i-if-else:127; CHECK-NEXT:    [[TMP17:%.*]] = add i129 [[TMP6]], -16495128; CHECK-NEXT:    [[TMP18:%.*]] = shl i129 [[TMP8]], [[TMP17]]129; CHECK-NEXT:    [[TMP19:%.*]] = mul i129 [[TMP18]], [[TMP4]]130; CHECK-NEXT:    br label [[FP_TO_I_CLEANUP]]131; CHECK:       fp-to-i-cleanup:132; CHECK-NEXT:    [[TMP20:%.*]] = phi i129 [ [[TMP12]], [[FP_TO_I_IF_THEN5]] ], [ [[TMP16]], [[FP_TO_I_IF_THEN12]] ], [ [[TMP19]], [[FP_TO_I_IF_ELSE]] ], [ 0, [[FP_TO_I_ENTRY:%.*]] ]133; CHECK-NEXT:    ret i129 [[TMP20]]134;135  %conv = fptoui x86_fp80 %a to i129136  ret i129 %conv137}138 139define i129 @fp128toui129(fp128 %a) {140; CHECK-LABEL: @fp128toui129(141; CHECK-NEXT:  fp-to-i-entry:142; CHECK-NEXT:    [[TMP0:%.*]] = bitcast fp128 [[A:%.*]] to i128143; CHECK-NEXT:    [[TMP1:%.*]] = zext i128 [[TMP0]] to i129144; CHECK-NEXT:    [[TMP2:%.*]] = icmp sgt i128 [[TMP0]], -1145; CHECK-NEXT:    [[TMP3:%.*]] = select i1 [[TMP2]], i129 1, i129 -1146; CHECK-NEXT:    [[TMP4:%.*]] = lshr i129 [[TMP1]], 112147; CHECK-NEXT:    [[TMP5:%.*]] = and i129 [[TMP4]], 32767148; CHECK-NEXT:    [[TMP6:%.*]] = and i129 [[TMP1]], 5192296858534827628530496329220095149; CHECK-NEXT:    [[TMP7:%.*]] = or i129 [[TMP6]], 5192296858534827628530496329220096150; CHECK-NEXT:    [[TMP8:%.*]] = icmp ult i129 [[TMP5]], 16383151; CHECK-NEXT:    br i1 [[TMP8]], label [[FP_TO_I_CLEANUP:%.*]], label [[FP_TO_I_IF_END:%.*]]152; CHECK:       fp-to-i-if-end:153; CHECK-NEXT:    [[TMP9:%.*]] = add i129 [[TMP5]], -16512154; CHECK-NEXT:    [[TMP10:%.*]] = icmp ult i129 [[TMP9]], -129155; CHECK-NEXT:    br i1 [[TMP10]], label [[FP_TO_I_IF_THEN5:%.*]], label [[FP_TO_I_IF_END9:%.*]]156; CHECK:       fp-to-i-if-then5:157; CHECK-NEXT:    [[TMP11:%.*]] = select i1 [[TMP2]], i129 340282366920938463463374607431768211455, i129 -340282366920938463463374607431768211456158; CHECK-NEXT:    br label [[FP_TO_I_CLEANUP]]159; CHECK:       fp-to-i-if-end9:160; CHECK-NEXT:    [[TMP12:%.*]] = icmp ult i129 [[TMP5]], 16495161; CHECK-NEXT:    br i1 [[TMP12]], label [[FP_TO_I_IF_THEN12:%.*]], label [[FP_TO_I_IF_ELSE:%.*]]162; CHECK:       fp-to-i-if-then12:163; CHECK-NEXT:    [[TMP13:%.*]] = sub i129 16495, [[TMP5]]164; CHECK-NEXT:    [[TMP14:%.*]] = lshr i129 [[TMP7]], [[TMP13]]165; CHECK-NEXT:    [[TMP15:%.*]] = mul i129 [[TMP14]], [[TMP3]]166; CHECK-NEXT:    br label [[FP_TO_I_CLEANUP]]167; CHECK:       fp-to-i-if-else:168; CHECK-NEXT:    [[TMP16:%.*]] = add i129 [[TMP5]], -16495169; CHECK-NEXT:    [[TMP17:%.*]] = shl i129 [[TMP7]], [[TMP16]]170; CHECK-NEXT:    [[TMP18:%.*]] = mul i129 [[TMP17]], [[TMP3]]171; CHECK-NEXT:    br label [[FP_TO_I_CLEANUP]]172; CHECK:       fp-to-i-cleanup:173; CHECK-NEXT:    [[TMP19:%.*]] = phi i129 [ [[TMP11]], [[FP_TO_I_IF_THEN5]] ], [ [[TMP15]], [[FP_TO_I_IF_THEN12]] ], [ [[TMP18]], [[FP_TO_I_IF_ELSE]] ], [ 0, [[FP_TO_I_ENTRY:%.*]] ]174; CHECK-NEXT:    ret i129 [[TMP19]]175;176  %conv = fptoui fp128 %a to i129177  ret i129 %conv178}179 180define <2 x i129> @floattoui129v2(<2 x float> %a) {181; CHECK-LABEL: @floattoui129v2(182; CHECK-NEXT:  fp-to-i-entryfp-to-i-entry:183; CHECK-NEXT:    [[TMP0:%.*]] = extractelement <2 x float> [[A:%.*]], i64 0184; CHECK-NEXT:    [[TMP1:%.*]] = bitcast float [[TMP0]] to i32185; CHECK-NEXT:    [[TMP2:%.*]] = zext i32 [[TMP1]] to i129186; CHECK-NEXT:    [[TMP3:%.*]] = icmp sgt i32 [[TMP1]], -1187; CHECK-NEXT:    [[TMP4:%.*]] = select i1 [[TMP3]], i129 1, i129 -1188; CHECK-NEXT:    [[TMP5:%.*]] = lshr i129 [[TMP2]], 23189; CHECK-NEXT:    [[TMP6:%.*]] = and i129 [[TMP5]], 255190; CHECK-NEXT:    [[TMP7:%.*]] = and i129 [[TMP2]], 8388607191; CHECK-NEXT:    [[TMP8:%.*]] = or i129 [[TMP7]], 8388608192; CHECK-NEXT:    [[TMP9:%.*]] = icmp ult i129 [[TMP6]], 127193; CHECK-NEXT:    br i1 [[TMP9]], label [[FP_TO_I_CLEANUP1:%.*]], label [[FP_TO_I_IF_END2:%.*]]194; CHECK:       fp-to-i-if-end2:195; CHECK-NEXT:    [[TMP10:%.*]] = add i129 [[TMP6]], -256196; CHECK-NEXT:    [[TMP11:%.*]] = icmp ult i129 [[TMP10]], -129197; CHECK-NEXT:    br i1 [[TMP11]], label [[FP_TO_I_IF_THEN53:%.*]], label [[FP_TO_I_IF_END94:%.*]]198; CHECK:       fp-to-i-if-then53:199; CHECK-NEXT:    [[TMP12:%.*]] = select i1 [[TMP3]], i129 340282366920938463463374607431768211455, i129 -340282366920938463463374607431768211456200; CHECK-NEXT:    br label [[FP_TO_I_CLEANUP1]]201; CHECK:       fp-to-i-if-end94:202; CHECK-NEXT:    [[TMP13:%.*]] = icmp ult i129 [[TMP6]], 150203; CHECK-NEXT:    br i1 [[TMP13]], label [[FP_TO_I_IF_THEN125:%.*]], label [[FP_TO_I_IF_ELSE6:%.*]]204; CHECK:       fp-to-i-if-then125:205; CHECK-NEXT:    [[TMP14:%.*]] = sub i129 150, [[TMP6]]206; CHECK-NEXT:    [[TMP15:%.*]] = lshr i129 [[TMP8]], [[TMP14]]207; CHECK-NEXT:    [[TMP16:%.*]] = mul i129 [[TMP15]], [[TMP4]]208; CHECK-NEXT:    br label [[FP_TO_I_CLEANUP1]]209; CHECK:       fp-to-i-if-else6:210; CHECK-NEXT:    [[TMP17:%.*]] = add i129 [[TMP6]], -150211; CHECK-NEXT:    [[TMP18:%.*]] = shl i129 [[TMP8]], [[TMP17]]212; CHECK-NEXT:    [[TMP19:%.*]] = mul i129 [[TMP18]], [[TMP4]]213; CHECK-NEXT:    br label [[FP_TO_I_CLEANUP1]]214; CHECK:       fp-to-i-cleanup1:215; CHECK-NEXT:    [[TMP20:%.*]] = phi i129 [ [[TMP12]], [[FP_TO_I_IF_THEN53]] ], [ [[TMP16]], [[FP_TO_I_IF_THEN125]] ], [ [[TMP19]], [[FP_TO_I_IF_ELSE6]] ], [ 0, [[FP_TO_I_ENTRYFP_TO_I_ENTRY:%.*]] ]216; CHECK-NEXT:    [[TMP21:%.*]] = insertelement <2 x i129> poison, i129 [[TMP20]], i64 0217; CHECK-NEXT:    [[TMP22:%.*]] = extractelement <2 x float> [[A]], i64 1218; CHECK-NEXT:    [[TMP23:%.*]] = bitcast float [[TMP22]] to i32219; CHECK-NEXT:    [[TMP24:%.*]] = zext i32 [[TMP23]] to i129220; CHECK-NEXT:    [[TMP25:%.*]] = icmp sgt i32 [[TMP23]], -1221; CHECK-NEXT:    [[TMP26:%.*]] = select i1 [[TMP25]], i129 1, i129 -1222; CHECK-NEXT:    [[TMP27:%.*]] = lshr i129 [[TMP24]], 23223; CHECK-NEXT:    [[TMP28:%.*]] = and i129 [[TMP27]], 255224; CHECK-NEXT:    [[TMP29:%.*]] = and i129 [[TMP24]], 8388607225; CHECK-NEXT:    [[TMP30:%.*]] = or i129 [[TMP29]], 8388608226; CHECK-NEXT:    [[TMP31:%.*]] = icmp ult i129 [[TMP28]], 127227; CHECK-NEXT:    br i1 [[TMP31]], label [[FP_TO_I_CLEANUP:%.*]], label [[FP_TO_I_IF_END:%.*]]228; CHECK:       fp-to-i-if-end:229; CHECK-NEXT:    [[TMP32:%.*]] = add i129 [[TMP28]], -256230; CHECK-NEXT:    [[TMP33:%.*]] = icmp ult i129 [[TMP32]], -129231; CHECK-NEXT:    br i1 [[TMP33]], label [[FP_TO_I_IF_THEN5:%.*]], label [[FP_TO_I_IF_END9:%.*]]232; CHECK:       fp-to-i-if-then5:233; CHECK-NEXT:    [[TMP34:%.*]] = select i1 [[TMP25]], i129 340282366920938463463374607431768211455, i129 -340282366920938463463374607431768211456234; CHECK-NEXT:    br label [[FP_TO_I_CLEANUP]]235; CHECK:       fp-to-i-if-end9:236; CHECK-NEXT:    [[TMP35:%.*]] = icmp ult i129 [[TMP28]], 150237; CHECK-NEXT:    br i1 [[TMP35]], label [[FP_TO_I_IF_THEN12:%.*]], label [[FP_TO_I_IF_ELSE:%.*]]238; CHECK:       fp-to-i-if-then12:239; CHECK-NEXT:    [[TMP36:%.*]] = sub i129 150, [[TMP28]]240; CHECK-NEXT:    [[TMP37:%.*]] = lshr i129 [[TMP30]], [[TMP36]]241; CHECK-NEXT:    [[TMP38:%.*]] = mul i129 [[TMP37]], [[TMP26]]242; CHECK-NEXT:    br label [[FP_TO_I_CLEANUP]]243; CHECK:       fp-to-i-if-else:244; CHECK-NEXT:    [[TMP39:%.*]] = add i129 [[TMP28]], -150245; CHECK-NEXT:    [[TMP40:%.*]] = shl i129 [[TMP30]], [[TMP39]]246; CHECK-NEXT:    [[TMP41:%.*]] = mul i129 [[TMP40]], [[TMP26]]247; CHECK-NEXT:    br label [[FP_TO_I_CLEANUP]]248; CHECK:       fp-to-i-cleanup:249; CHECK-NEXT:    [[TMP42:%.*]] = phi i129 [ [[TMP34]], [[FP_TO_I_IF_THEN5]] ], [ [[TMP38]], [[FP_TO_I_IF_THEN12]] ], [ [[TMP41]], [[FP_TO_I_IF_ELSE]] ], [ 0, [[FP_TO_I_CLEANUP1]] ]250; CHECK-NEXT:    [[TMP43:%.*]] = insertelement <2 x i129> [[TMP21]], i129 [[TMP42]], i64 1251; CHECK-NEXT:    ret <2 x i129> [[TMP43]]252;253  %conv = fptoui <2 x float> %a to <2 x i129>254  ret <2 x i129> %conv255}256