Files
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

248 lines
6.8 KiB
LLVM

; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 6
; RUN: llc -mtriple=hexagon < %s | FileCheck %s
define i32 @fptoui.sat.i32.f32(float %x) {
; CHECK-LABEL: fptoui.sat.i32.f32:
; CHECK: .cfi_startproc
; CHECK-NEXT: // %bb.0:
; CHECK-NEXT: {
; CHECK-NEXT: r1 = convert_sf2uw(r0):chop
; CHECK-NEXT: r3:2 = combine(##1333788671,#0)
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: p0 = sfcmp.gt(r2,r0)
; CHECK-NEXT: p1 = sfcmp.uo(r2,r0)
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: p0 = or(p1,p0)
; CHECK-NEXT: p2 = sfcmp.uo(r0,r3)
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: p3 = sfcmp.gt(r0,r3)
; CHECK-NEXT: if (p0) r1 = #0
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: p1 = and(p3,!p2)
; CHECK-NEXT: if (p1.new) r1 = #-1
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: r0 = r1
; CHECK-NEXT: jumpr r31
; CHECK-NEXT: }
%res = call i32 @llvm.fptoui.sat(float %x)
ret i32 %res
}
define i16 @fptoui.sat.i16.f32(float %x) {
; CHECK-LABEL: fptoui.sat.i16.f32:
; CHECK: .cfi_startproc
; CHECK-NEXT: // %bb.0:
; CHECK-NEXT: {
; CHECK-NEXT: r2 = ##1199570688
; CHECK-NEXT: r1 = #0
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: r0 = sfmax(r0,r1)
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: r0 = sfmin(r0,r2)
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: r0 = convert_sf2uw(r0):chop
; CHECK-NEXT: jumpr r31
; CHECK-NEXT: }
%res = call i16 @llvm.fptoui.sat(float %x)
ret i16 %res
}
define i64 @fptoui.sat.i64.f64(double %x) {
; CHECK-LABEL: fptoui.sat.i64.f64:
; CHECK: .cfi_startproc
; CHECK-NEXT: // %bb.0:
; CHECK-NEXT: {
; CHECK-NEXT: r9:8 = convert_df2ud(r1:0):chop
; CHECK-NEXT: r3:2 = combine(#0,#0)
; CHECK-NEXT: r5:4 = CONST64(#4895412794951729151)
; CHECK-NEXT: r6 = #0
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: p0 = dfcmp.gt(r3:2,r1:0)
; CHECK-NEXT: p2 = dfcmp.uo(r3:2,r1:0)
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: p0 = or(p2,p0)
; CHECK-NEXT: p1 = dfcmp.gt(r1:0,r5:4)
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: p2 = dfcmp.uo(r1:0,r5:4)
; CHECK-NEXT: r1 = #-1
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: p1 = and(p1,!p2)
; CHECK-NEXT: r2 = mux(p0,r6,r8)
; CHECK-NEXT: r3 = mux(p0,r6,r9)
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: r0 = mux(p1,r1,r2)
; CHECK-NEXT: jumpr r31
; CHECK-NEXT: if (!p1) r1 = add(r3,#0)
; CHECK-NEXT: }
%res = call i64 @llvm.fptoui.sat(double %x)
ret i64 %res
}
define i32 @fptoui.sat.i32.f64(double %x) {
; CHECK-LABEL: fptoui.sat.i32.f64:
; CHECK: .cfi_startproc
; CHECK-NEXT: // %bb.0:
; CHECK-NEXT: {
; CHECK-NEXT: r3:2 = combine(#0,#0)
; CHECK-NEXT: r5:4 = CONST64(#4751297606873776128)
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: r1:0 = dfmax(r1:0,r3:2)
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: r1:0 = dfmin(r1:0,r5:4)
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: r0 = convert_df2uw(r1:0):chop
; CHECK-NEXT: jumpr r31
; CHECK-NEXT: }
%res = call i32 @llvm.fptoui.sat(double %x)
ret i32 %res
}
define i32 @fptosi.sat.i32.f32(float %x) {
; CHECK-LABEL: fptosi.sat.i32.f32:
; CHECK: .cfi_startproc
; CHECK-NEXT: // %bb.0:
; CHECK-NEXT: {
; CHECK-NEXT: r2 = ##-822083584
; CHECK-NEXT: r3 = ##1325400063
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: r1 = convert_sf2w(r0):chop
; CHECK-NEXT: p1 = sfcmp.gt(r2,r0)
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: p2 = sfcmp.uo(r2,r0)
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: p1 = or(p2,p1)
; CHECK-NEXT: p0 = sfcmp.uo(r0,r3)
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: p2 = sfcmp.gt(r0,r3)
; CHECK-NEXT: p1 = sfcmp.uo(r0,r0)
; CHECK-NEXT: if (p1) r1 = ##-2147483648
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: p0 = and(p2,!p0)
; CHECK-NEXT: if (p0.new) r1 = ##2147483647
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: if (p1) r1 = #0
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: r0 = r1
; CHECK-NEXT: jumpr r31
; CHECK-NEXT: }
%res = call i32 @llvm.fptosi.sat(float %x)
ret i32 %res
}
define i16 @fptosi.sat.i16.f32(float %x) {
; CHECK-LABEL: fptosi.sat.i16.f32:
; CHECK: .cfi_startproc
; CHECK-NEXT: // %bb.0:
; CHECK-NEXT: {
; CHECK-NEXT: r1 = ##-956301312
; CHECK-NEXT: r2 = ##1191181824
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: r1 = sfmax(r0,r1)
; CHECK-NEXT: p0 = sfcmp.uo(r0,r0)
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: r1 = sfmin(r1,r2)
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: r0 = convert_sf2w(r1):chop
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: if (p0) r0 = #0
; CHECK-NEXT: jumpr r31
; CHECK-NEXT: }
%res = call i16 @llvm.fptosi.sat(float %x)
ret i16 %res
}
define i64 @fptosi.sat.i64.f64(double %x) {
; CHECK-LABEL: fptosi.sat.i64.f64:
; CHECK: .cfi_startproc
; CHECK-NEXT: // %bb.0:
; CHECK-NEXT: {
; CHECK-NEXT: p0 = dfcmp.uo(r1:0,r1:0)
; CHECK-NEXT: r6 = #0
; CHECK-NEXT: r3:2 = CONST64(#-4332462841530417152)
; CHECK-NEXT: r5:4 = CONST64(#4890909195324358655)
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: p1 = dfcmp.gt(r3:2,r1:0)
; CHECK-NEXT: p2 = dfcmp.uo(r3:2,r1:0)
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: p1 = or(p2,p1)
; CHECK-NEXT: r3:2 = convert_df2d(r1:0):chop
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: p2 = dfcmp.uo(r1:0,r5:4)
; CHECK-NEXT: p3 = dfcmp.gt(r1:0,r5:4)
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: p2 = and(p3,!p2)
; CHECK-NEXT: r1 = mux(p1,r6,r2)
; CHECK-NEXT: r2 = mux(p1,##-2147483648,r3)
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: if (p2) r1 = #-1
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: r0 = mux(p0,r6,r1)
; CHECK-NEXT: if (p2) r2 = ##2147483647
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: r1 = mux(p0,r6,r2)
; CHECK-NEXT: jumpr r31
; CHECK-NEXT: }
%res = call i64 @llvm.fptosi.sat(double %x)
ret i64 %res
}
define i32 @fptosi.sat.i32.f64(double %x) {
; CHECK-LABEL: fptosi.sat.i32.f64:
; CHECK: .cfi_startproc
; CHECK-NEXT: // %bb.0:
; CHECK-NEXT: {
; CHECK-NEXT: p0 = dfcmp.uo(r1:0,r1:0)
; CHECK-NEXT: r3:2 = CONST64(#-4476578029606273024)
; CHECK-NEXT: r5:4 = CONST64(#4746794007244308480)
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: r3:2 = dfmax(r1:0,r3:2)
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: r3:2 = dfmin(r3:2,r5:4)
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: r0 = convert_df2w(r3:2):chop
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: if (p0) r0 = #0
; CHECK-NEXT: jumpr r31
; CHECK-NEXT: }
%res = call i32 @llvm.fptosi.sat(double %x)
ret i32 %res
}