Files
TheRock/compiler/amd-llvm/llvm/test/Transforms/ExpandIRInsts/X86/expand-large-fp-convert-fptosi129.ll
T
derek.holloway 7502bf64a4
CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00

239 lines
13 KiB
LLVM

; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --check-globals
; RUN: opt -S -mtriple=x86_64-- --expand-ir-insts < %s | FileCheck %s
; RUN: opt -S -mtriple=x86_64-- -passes='require<libcall-lowering-info>,expand-ir-insts' < %s | FileCheck %s
define i129 @halftosi129(half %a) !prof !0 {
; CHECK-LABEL: @halftosi129(
; CHECK-NEXT: [[TMP1:%.*]] = fptosi half [[A:%.*]] to i32
; CHECK-NEXT: [[TMP2:%.*]] = sext i32 [[TMP1]] to i129
; CHECK-NEXT: ret i129 [[TMP2]]
;
%conv = fptosi half %a to i129
ret i129 %conv
}
define i129 @floattosi129(float %a) !prof !0 {
; CHECK-LABEL: @floattosi129(
; CHECK-NEXT: fp-to-i-entry:
; CHECK-NEXT: [[A:%.*]] = freeze float [[A1:%.*]]
; CHECK-NEXT: [[TMP0:%.*]] = bitcast float [[A]] to i32
; CHECK-NEXT: [[TMP2:%.*]] = icmp sgt i32 [[TMP0]], -1
; CHECK-NEXT: [[SIGN:%.*]] = select i1 [[TMP2]], i129 1, i129 -1, !prof [[PROF1:![0-9]+]]
; CHECK-NEXT: [[TMP5:%.*]] = lshr i32 [[TMP0]], 23
; CHECK-NEXT: [[BIASED_EXP:%.*]] = and i32 [[TMP5]], 255
; CHECK-NEXT: [[TMP3:%.*]] = and i32 [[TMP0]], 8388607
; CHECK-NEXT: [[SIGNIFICAND1:%.*]] = or i32 [[TMP3]], 8388608
; CHECK-NEXT: [[EXP_IS_NEGATIVE:%.*]] = icmp ult i32 [[BIASED_EXP]], 127
; CHECK-NEXT: br i1 [[EXP_IS_NEGATIVE]], label [[FP_TO_I_CLEANUP:%.*]], label [[FP_TO_I_IF_CHECK_EXP_SIZE:%.*]], !prof [[PROF2:![0-9]+]]
; CHECK: fp-to-i-if-check.exp.size:
; CHECK-NEXT: [[EXP_SMALLER_MANTISSA_WIDTH:%.*]] = icmp ult i32 [[BIASED_EXP]], 150
; CHECK-NEXT: br i1 [[EXP_SMALLER_MANTISSA_WIDTH]], label [[FP_TO_I_IF_EXP_SMALL:%.*]], label [[FP_TO_I_IF_EXP_LARGE:%.*]], !prof [[PROF2]]
; CHECK: fp-to-i-if-exp.small:
; CHECK-NEXT: [[TMP14:%.*]] = sub i32 150, [[BIASED_EXP]]
; CHECK-NEXT: [[TMP7:%.*]] = lshr i32 [[SIGNIFICAND1]], [[TMP14]]
; CHECK-NEXT: [[TMP8:%.*]] = zext i32 [[TMP7]] to i129
; CHECK-NEXT: [[TMP9:%.*]] = mul i129 [[TMP8]], [[SIGN]]
; CHECK-NEXT: br label [[FP_TO_I_CLEANUP]]
; CHECK: fp-to-i-if-exp.large:
; CHECK-NEXT: [[TMP15:%.*]] = add i32 [[BIASED_EXP]], -150
; CHECK-NEXT: [[SIGNIFICAND:%.*]] = zext i32 [[SIGNIFICAND1]] to i129
; CHECK-NEXT: [[TMP10:%.*]] = zext i32 [[TMP15]] to i129
; CHECK-NEXT: [[TMP11:%.*]] = shl i129 [[SIGNIFICAND]], [[TMP10]]
; CHECK-NEXT: [[TMP12:%.*]] = mul i129 [[TMP11]], [[SIGN]]
; CHECK-NEXT: br label [[FP_TO_I_CLEANUP]]
; CHECK: fp-to-i-cleanup:
; CHECK-NEXT: [[TMP13:%.*]] = phi i129 [ [[TMP9]], [[FP_TO_I_IF_EXP_SMALL]] ], [ [[TMP12]], [[FP_TO_I_IF_EXP_LARGE]] ], [ 0, [[FP_TO_I_ENTRY:%.*]] ]
; CHECK-NEXT: ret i129 [[TMP13]]
;
%conv = fptosi float %a to i129
ret i129 %conv
}
define i129 @doubletosi129(double %a) {
; CHECK-LABEL: @doubletosi129(
; CHECK-NEXT: fp-to-i-entry:
; CHECK-NEXT: [[A:%.*]] = freeze double [[A1:%.*]]
; CHECK-NEXT: [[TMP0:%.*]] = bitcast double [[A]] to i64
; CHECK-NEXT: [[TMP2:%.*]] = icmp sgt i64 [[TMP0]], -1
; CHECK-NEXT: [[SIGN:%.*]] = select i1 [[TMP2]], i129 1, i129 -1
; CHECK-NEXT: [[TMP5:%.*]] = lshr i64 [[TMP0]], 52
; CHECK-NEXT: [[BIASED_EXP:%.*]] = and i64 [[TMP5]], 2047
; CHECK-NEXT: [[TMP3:%.*]] = and i64 [[TMP0]], 4503599627370495
; CHECK-NEXT: [[SIGNIFICAND1:%.*]] = or i64 [[TMP3]], 4503599627370496
; CHECK-NEXT: [[EXP_IS_NEGATIVE:%.*]] = icmp ult i64 [[BIASED_EXP]], 1023
; CHECK-NEXT: br i1 [[EXP_IS_NEGATIVE]], label [[FP_TO_I_CLEANUP:%.*]], label [[FP_TO_I_IF_CHECK_EXP_SIZE:%.*]]
; CHECK: fp-to-i-if-check.exp.size:
; CHECK-NEXT: [[EXP_SMALLER_MANTISSA_WIDTH:%.*]] = icmp ult i64 [[BIASED_EXP]], 1075
; CHECK-NEXT: br i1 [[EXP_SMALLER_MANTISSA_WIDTH]], label [[FP_TO_I_IF_EXP_SMALL:%.*]], label [[FP_TO_I_IF_EXP_LARGE:%.*]]
; CHECK: fp-to-i-if-exp.small:
; CHECK-NEXT: [[TMP14:%.*]] = sub i64 1075, [[BIASED_EXP]]
; CHECK-NEXT: [[TMP7:%.*]] = lshr i64 [[SIGNIFICAND1]], [[TMP14]]
; CHECK-NEXT: [[TMP8:%.*]] = zext i64 [[TMP7]] to i129
; CHECK-NEXT: [[TMP9:%.*]] = mul i129 [[TMP8]], [[SIGN]]
; CHECK-NEXT: br label [[FP_TO_I_CLEANUP]]
; CHECK: fp-to-i-if-exp.large:
; CHECK-NEXT: [[TMP15:%.*]] = add i64 [[BIASED_EXP]], -1075
; CHECK-NEXT: [[SIGNIFICAND:%.*]] = zext i64 [[SIGNIFICAND1]] to i129
; CHECK-NEXT: [[TMP10:%.*]] = zext i64 [[TMP15]] to i129
; CHECK-NEXT: [[TMP11:%.*]] = shl i129 [[SIGNIFICAND]], [[TMP10]]
; CHECK-NEXT: [[TMP12:%.*]] = mul i129 [[TMP11]], [[SIGN]]
; CHECK-NEXT: br label [[FP_TO_I_CLEANUP]]
; CHECK: fp-to-i-cleanup:
; CHECK-NEXT: [[TMP13:%.*]] = phi i129 [ [[TMP9]], [[FP_TO_I_IF_EXP_SMALL]] ], [ [[TMP12]], [[FP_TO_I_IF_EXP_LARGE]] ], [ 0, [[FP_TO_I_ENTRY:%.*]] ]
; CHECK-NEXT: ret i129 [[TMP13]]
;
%conv = fptosi double %a to i129
ret i129 %conv
}
define i129 @x86_fp80tosi129(x86_fp80 %a) {
; CHECK-LABEL: @x86_fp80tosi129(
; CHECK-NEXT: fp-to-i-entry:
; CHECK-NEXT: [[A:%.*]] = freeze x86_fp80 [[A1:%.*]]
; CHECK-NEXT: [[TMP0:%.*]] = fpext x86_fp80 [[A]] to fp128
; CHECK-NEXT: [[TMP1:%.*]] = bitcast fp128 [[TMP0]] to i128
; CHECK-NEXT: [[TMP3:%.*]] = icmp sgt i128 [[TMP1]], -1
; CHECK-NEXT: [[SIGN:%.*]] = select i1 [[TMP3]], i129 1, i129 -1
; CHECK-NEXT: [[TMP6:%.*]] = lshr i128 [[TMP1]], 112
; CHECK-NEXT: [[BIASED_EXP:%.*]] = and i128 [[TMP6]], 32767
; CHECK-NEXT: [[TMP4:%.*]] = and i128 [[TMP1]], 5192296858534827628530496329220095
; CHECK-NEXT: [[SIGNIFICAND1:%.*]] = or i128 [[TMP4]], 5192296858534827628530496329220096
; CHECK-NEXT: [[EXP_IS_NEGATIVE:%.*]] = icmp ult i128 [[BIASED_EXP]], 16383
; CHECK-NEXT: br i1 [[EXP_IS_NEGATIVE]], label [[FP_TO_I_CLEANUP:%.*]], label [[FP_TO_I_IF_CHECK_EXP_SIZE:%.*]]
; CHECK: fp-to-i-if-check.exp.size:
; CHECK-NEXT: [[EXP_SMALLER_MANTISSA_WIDTH:%.*]] = icmp ult i128 [[BIASED_EXP]], 16495
; CHECK-NEXT: br i1 [[EXP_SMALLER_MANTISSA_WIDTH]], label [[FP_TO_I_IF_EXP_SMALL:%.*]], label [[FP_TO_I_IF_EXP_LARGE:%.*]]
; CHECK: fp-to-i-if-exp.small:
; CHECK-NEXT: [[TMP15:%.*]] = sub i128 16495, [[BIASED_EXP]]
; CHECK-NEXT: [[TMP8:%.*]] = lshr i128 [[SIGNIFICAND1]], [[TMP15]]
; CHECK-NEXT: [[TMP9:%.*]] = zext i128 [[TMP8]] to i129
; CHECK-NEXT: [[TMP10:%.*]] = mul i129 [[TMP9]], [[SIGN]]
; CHECK-NEXT: br label [[FP_TO_I_CLEANUP]]
; CHECK: fp-to-i-if-exp.large:
; CHECK-NEXT: [[TMP16:%.*]] = add i128 [[BIASED_EXP]], -16495
; CHECK-NEXT: [[SIGNIFICAND:%.*]] = zext i128 [[SIGNIFICAND1]] to i129
; CHECK-NEXT: [[TMP11:%.*]] = zext i128 [[TMP16]] to i129
; CHECK-NEXT: [[TMP12:%.*]] = shl i129 [[SIGNIFICAND]], [[TMP11]]
; CHECK-NEXT: [[TMP13:%.*]] = mul i129 [[TMP12]], [[SIGN]]
; CHECK-NEXT: br label [[FP_TO_I_CLEANUP]]
; CHECK: fp-to-i-cleanup:
; CHECK-NEXT: [[TMP14:%.*]] = phi i129 [ [[TMP10]], [[FP_TO_I_IF_EXP_SMALL]] ], [ [[TMP13]], [[FP_TO_I_IF_EXP_LARGE]] ], [ 0, [[FP_TO_I_ENTRY:%.*]] ]
; CHECK-NEXT: ret i129 [[TMP14]]
;
%conv = fptosi x86_fp80 %a to i129
ret i129 %conv
}
define i129 @fp128tosi129(fp128 %a) {
; CHECK-LABEL: @fp128tosi129(
; CHECK-NEXT: fp-to-i-entry:
; CHECK-NEXT: [[A:%.*]] = freeze fp128 [[A1:%.*]]
; CHECK-NEXT: [[TMP0:%.*]] = bitcast fp128 [[A]] to i128
; CHECK-NEXT: [[TMP2:%.*]] = icmp sgt i128 [[TMP0]], -1
; CHECK-NEXT: [[SIGN:%.*]] = select i1 [[TMP2]], i129 1, i129 -1
; CHECK-NEXT: [[TMP5:%.*]] = lshr i128 [[TMP0]], 112
; CHECK-NEXT: [[BIASED_EXP:%.*]] = and i128 [[TMP5]], 32767
; CHECK-NEXT: [[TMP3:%.*]] = and i128 [[TMP0]], 5192296858534827628530496329220095
; CHECK-NEXT: [[SIGNIFICAND1:%.*]] = or i128 [[TMP3]], 5192296858534827628530496329220096
; CHECK-NEXT: [[EXP_IS_NEGATIVE:%.*]] = icmp ult i128 [[BIASED_EXP]], 16383
; CHECK-NEXT: br i1 [[EXP_IS_NEGATIVE]], label [[FP_TO_I_CLEANUP:%.*]], label [[FP_TO_I_IF_CHECK_EXP_SIZE:%.*]]
; CHECK: fp-to-i-if-check.exp.size:
; CHECK-NEXT: [[EXP_SMALLER_MANTISSA_WIDTH:%.*]] = icmp ult i128 [[BIASED_EXP]], 16495
; CHECK-NEXT: br i1 [[EXP_SMALLER_MANTISSA_WIDTH]], label [[FP_TO_I_IF_EXP_SMALL:%.*]], label [[FP_TO_I_IF_EXP_LARGE:%.*]]
; CHECK: fp-to-i-if-exp.small:
; CHECK-NEXT: [[TMP14:%.*]] = sub i128 16495, [[BIASED_EXP]]
; CHECK-NEXT: [[TMP7:%.*]] = lshr i128 [[SIGNIFICAND1]], [[TMP14]]
; CHECK-NEXT: [[TMP8:%.*]] = zext i128 [[TMP7]] to i129
; CHECK-NEXT: [[TMP9:%.*]] = mul i129 [[TMP8]], [[SIGN]]
; CHECK-NEXT: br label [[FP_TO_I_CLEANUP]]
; CHECK: fp-to-i-if-exp.large:
; CHECK-NEXT: [[TMP15:%.*]] = add i128 [[BIASED_EXP]], -16495
; CHECK-NEXT: [[SIGNIFICAND:%.*]] = zext i128 [[SIGNIFICAND1]] to i129
; CHECK-NEXT: [[TMP10:%.*]] = zext i128 [[TMP15]] to i129
; CHECK-NEXT: [[TMP11:%.*]] = shl i129 [[SIGNIFICAND]], [[TMP10]]
; CHECK-NEXT: [[TMP12:%.*]] = mul i129 [[TMP11]], [[SIGN]]
; CHECK-NEXT: br label [[FP_TO_I_CLEANUP]]
; CHECK: fp-to-i-cleanup:
; CHECK-NEXT: [[TMP13:%.*]] = phi i129 [ [[TMP9]], [[FP_TO_I_IF_EXP_SMALL]] ], [ [[TMP12]], [[FP_TO_I_IF_EXP_LARGE]] ], [ 0, [[FP_TO_I_ENTRY:%.*]] ]
; CHECK-NEXT: ret i129 [[TMP13]]
;
%conv = fptosi fp128 %a to i129
ret i129 %conv
}
define <2 x i129> @floattosi129v2(<2 x float> %a) {
; CHECK-LABEL: @floattosi129v2(
; CHECK-NEXT: fp-to-i-entryfp-to-i-entry:
; CHECK-NEXT: [[TMP0:%.*]] = extractelement <2 x float> [[A:%.*]], i64 0
; CHECK-NEXT: [[TMP2:%.*]] = freeze float [[TMP0]]
; CHECK-NEXT: [[TMP1:%.*]] = bitcast float [[TMP2]] to i32
; CHECK-NEXT: [[TMP3:%.*]] = icmp sgt i32 [[TMP1]], -1
; CHECK-NEXT: [[SIGN7:%.*]] = select i1 [[TMP3]], i129 1, i129 -1
; CHECK-NEXT: [[TMP6:%.*]] = lshr i32 [[TMP1]], 23
; CHECK-NEXT: [[BIASED_EXP8:%.*]] = and i32 [[TMP6]], 255
; CHECK-NEXT: [[TMP4:%.*]] = and i32 [[TMP1]], 8388607
; CHECK-NEXT: [[SIGNIFICAND10:%.*]] = or i32 [[TMP4]], 8388608
; CHECK-NEXT: [[EXP_IS_NEGATIVE10:%.*]] = icmp ult i32 [[BIASED_EXP8]], 127
; CHECK-NEXT: br i1 [[EXP_IS_NEGATIVE10]], label [[FP_TO_I_CLEANUP1:%.*]], label [[FP_TO_I_IF_CHECK_EXP_SIZE2:%.*]]
; CHECK: fp-to-i-if-check.exp.size2:
; CHECK-NEXT: [[EXP_SMALLER_MANTISSA_WIDTH12:%.*]] = icmp ult i32 [[BIASED_EXP8]], 150
; CHECK-NEXT: br i1 [[EXP_SMALLER_MANTISSA_WIDTH12]], label [[FP_TO_I_IF_EXP_SMALL5:%.*]], label [[FP_TO_I_IF_EXP_LARGE6:%.*]]
; CHECK: fp-to-i-if-exp.small3:
; CHECK-NEXT: [[TMP18:%.*]] = sub i32 150, [[BIASED_EXP8]]
; CHECK-NEXT: [[TMP8:%.*]] = lshr i32 [[SIGNIFICAND10]], [[TMP18]]
; CHECK-NEXT: [[TMP9:%.*]] = zext i32 [[TMP8]] to i129
; CHECK-NEXT: [[TMP10:%.*]] = mul i129 [[TMP9]], [[SIGN7]]
; CHECK-NEXT: br label [[FP_TO_I_CLEANUP1]]
; CHECK: fp-to-i-if-exp.large4:
; CHECK-NEXT: [[TMP20:%.*]] = add i32 [[BIASED_EXP8]], -150
; CHECK-NEXT: [[SIGNIFICAND9:%.*]] = zext i32 [[SIGNIFICAND10]] to i129
; CHECK-NEXT: [[TMP11:%.*]] = zext i32 [[TMP20]] to i129
; CHECK-NEXT: [[TMP12:%.*]] = shl i129 [[SIGNIFICAND9]], [[TMP11]]
; CHECK-NEXT: [[TMP13:%.*]] = mul i129 [[TMP12]], [[SIGN7]]
; CHECK-NEXT: br label [[FP_TO_I_CLEANUP1]]
; CHECK: fp-to-i-cleanup1:
; CHECK-NEXT: [[TMP14:%.*]] = phi i129 [ [[TMP10]], [[FP_TO_I_IF_EXP_SMALL5]] ], [ [[TMP13]], [[FP_TO_I_IF_EXP_LARGE6]] ], [ 0, [[FP_TO_I_ENTRYFP_TO_I_ENTRY:%.*]] ]
; CHECK-NEXT: [[TMP15:%.*]] = insertelement <2 x i129> poison, i129 [[TMP14]], i64 0
; CHECK-NEXT: [[TMP16:%.*]] = extractelement <2 x float> [[A]], i64 1
; CHECK-NEXT: [[TMP35:%.*]] = freeze float [[TMP16]]
; CHECK-NEXT: [[TMP17:%.*]] = bitcast float [[TMP35]] to i32
; CHECK-NEXT: [[TMP19:%.*]] = icmp sgt i32 [[TMP17]], -1
; CHECK-NEXT: [[SIGN:%.*]] = select i1 [[TMP19]], i129 1, i129 -1
; CHECK-NEXT: [[TMP21:%.*]] = lshr i32 [[TMP17]], 23
; CHECK-NEXT: [[BIASED_EXP:%.*]] = and i32 [[TMP21]], 255
; CHECK-NEXT: [[TMP22:%.*]] = and i32 [[TMP17]], 8388607
; CHECK-NEXT: [[SIGNIFICAND1:%.*]] = or i32 [[TMP22]], 8388608
; CHECK-NEXT: [[EXP_IS_NEGATIVE:%.*]] = icmp ult i32 [[BIASED_EXP]], 127
; CHECK-NEXT: br i1 [[EXP_IS_NEGATIVE]], label [[FP_TO_I_CLEANUP:%.*]], label [[FP_TO_I_IF_CHECK_EXP_SIZE:%.*]]
; CHECK: fp-to-i-if-check.exp.size:
; CHECK-NEXT: [[EXP_SMALLER_MANTISSA_WIDTH:%.*]] = icmp ult i32 [[BIASED_EXP]], 150
; CHECK-NEXT: br i1 [[EXP_SMALLER_MANTISSA_WIDTH]], label [[FP_TO_I_IF_EXP_SMALL:%.*]], label [[FP_TO_I_IF_EXP_LARGE:%.*]]
; CHECK: fp-to-i-if-exp.small:
; CHECK-NEXT: [[TMP32:%.*]] = sub i32 150, [[BIASED_EXP]]
; CHECK-NEXT: [[TMP33:%.*]] = lshr i32 [[SIGNIFICAND1]], [[TMP32]]
; CHECK-NEXT: [[TMP25:%.*]] = zext i32 [[TMP33]] to i129
; CHECK-NEXT: [[TMP26:%.*]] = mul i129 [[TMP25]], [[SIGN]]
; CHECK-NEXT: br label [[FP_TO_I_CLEANUP]]
; CHECK: fp-to-i-if-exp.large:
; CHECK-NEXT: [[TMP34:%.*]] = add i32 [[BIASED_EXP]], -150
; CHECK-NEXT: [[SIGNIFICAND:%.*]] = zext i32 [[SIGNIFICAND1]] to i129
; CHECK-NEXT: [[TMP27:%.*]] = zext i32 [[TMP34]] to i129
; CHECK-NEXT: [[TMP28:%.*]] = shl i129 [[SIGNIFICAND]], [[TMP27]]
; CHECK-NEXT: [[TMP29:%.*]] = mul i129 [[TMP28]], [[SIGN]]
; CHECK-NEXT: br label [[FP_TO_I_CLEANUP]]
; CHECK: fp-to-i-cleanup:
; CHECK-NEXT: [[TMP30:%.*]] = phi i129 [ [[TMP26]], [[FP_TO_I_IF_EXP_SMALL]] ], [ [[TMP29]], [[FP_TO_I_IF_EXP_LARGE]] ], [ 0, [[FP_TO_I_CLEANUP1]] ]
; CHECK-NEXT: [[TMP31:%.*]] = insertelement <2 x i129> [[TMP15]], i129 [[TMP30]], i64 1
; CHECK-NEXT: ret <2 x i129> [[TMP31]]
;
%conv = fptosi <2 x float> %a to <2 x i129>
ret <2 x i129> %conv
}
!0 = !{!"function_entry_count", i64 1000}
;.
; CHECK: [[META0:![0-9]+]] = !{!"function_entry_count", i64 1000}
; CHECK: [[PROF1]] = !{!"unknown", !"sign"}
; CHECK: [[PROF2]] = !{!"unknown", !"expand-ir-insts"}
;.