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
186 lines
7.8 KiB
LLVM
186 lines
7.8 KiB
LLVM
; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6
|
|
; RUN: llc -O0 -mtriple=aarch64-apple-ios -global-isel -stop-after=irtranslator -verify-machineinstrs %s -o - | FileCheck %s
|
|
|
|
; Check that we don't invalidate the vreg map.
|
|
; This test is brittle: the invalidation only triggers when we grow the map.
|
|
define i32 @test_bitcast_invalid_vreg() {
|
|
; CHECK-LABEL: name: test_bitcast_invalid_vreg
|
|
; CHECK: bb.1 (%ir-block.0):
|
|
; CHECK-NEXT: [[C:%[0-9]+]]:_(i32) = G_CONSTANT i32 1
|
|
; CHECK-NEXT: [[C1:%[0-9]+]]:_(i32) = G_CONSTANT i32 2
|
|
; CHECK-NEXT: [[C2:%[0-9]+]]:_(i32) = G_CONSTANT i32 3
|
|
; CHECK-NEXT: [[C3:%[0-9]+]]:_(i32) = G_CONSTANT i32 4
|
|
; CHECK-NEXT: [[C4:%[0-9]+]]:_(i32) = G_CONSTANT i32 5
|
|
; CHECK-NEXT: [[C5:%[0-9]+]]:_(i32) = G_CONSTANT i32 6
|
|
; CHECK-NEXT: [[C6:%[0-9]+]]:_(i32) = G_CONSTANT i32 7
|
|
; CHECK-NEXT: [[C7:%[0-9]+]]:_(i32) = G_CONSTANT i32 8
|
|
; CHECK-NEXT: [[C8:%[0-9]+]]:_(i32) = G_CONSTANT i32 9
|
|
; CHECK-NEXT: [[C9:%[0-9]+]]:_(i32) = G_CONSTANT i32 10
|
|
; CHECK-NEXT: [[C10:%[0-9]+]]:_(i32) = G_CONSTANT i32 11
|
|
; CHECK-NEXT: [[C11:%[0-9]+]]:_(i32) = G_CONSTANT i32 12
|
|
; CHECK-NEXT: [[C12:%[0-9]+]]:_(i32) = G_CONSTANT i32 13
|
|
; CHECK-NEXT: [[C13:%[0-9]+]]:_(i32) = G_CONSTANT i32 14
|
|
; CHECK-NEXT: [[C14:%[0-9]+]]:_(i32) = G_CONSTANT i32 15
|
|
; CHECK-NEXT: [[C15:%[0-9]+]]:_(i32) = G_CONSTANT i32 16
|
|
; CHECK-NEXT: [[C16:%[0-9]+]]:_(i32) = G_CONSTANT i32 17
|
|
; CHECK-NEXT: [[C17:%[0-9]+]]:_(i32) = G_CONSTANT i32 18
|
|
; CHECK-NEXT: [[C18:%[0-9]+]]:_(i32) = G_CONSTANT i32 19
|
|
; CHECK-NEXT: [[C19:%[0-9]+]]:_(i32) = G_CONSTANT i32 20
|
|
; CHECK-NEXT: [[C20:%[0-9]+]]:_(i32) = G_CONSTANT i32 21
|
|
; CHECK-NEXT: [[C21:%[0-9]+]]:_(i32) = G_CONSTANT i32 22
|
|
; CHECK-NEXT: [[C22:%[0-9]+]]:_(i32) = G_CONSTANT i32 23
|
|
; CHECK-NEXT: [[C23:%[0-9]+]]:_(i32) = G_CONSTANT i32 24
|
|
; CHECK-NEXT: [[C24:%[0-9]+]]:_(i32) = G_CONSTANT i32 25
|
|
; CHECK-NEXT: [[C25:%[0-9]+]]:_(i32) = G_CONSTANT i32 26
|
|
; CHECK-NEXT: [[C26:%[0-9]+]]:_(i32) = G_CONSTANT i32 27
|
|
; CHECK-NEXT: [[C27:%[0-9]+]]:_(i32) = G_CONSTANT i32 28
|
|
; CHECK-NEXT: [[C28:%[0-9]+]]:_(i32) = G_CONSTANT i32 29
|
|
; CHECK-NEXT: [[C29:%[0-9]+]]:_(i32) = G_CONSTANT i32 30
|
|
; CHECK-NEXT: [[C30:%[0-9]+]]:_(i32) = G_CONSTANT i32 100
|
|
; CHECK-NEXT: [[C31:%[0-9]+]]:_(i32) = G_CONSTANT i32 3
|
|
; CHECK-NEXT: [[C32:%[0-9]+]]:_(i32) = G_CONSTANT i32 7
|
|
; CHECK-NEXT: [[C33:%[0-9]+]]:_(i32) = G_CONSTANT i32 11
|
|
; CHECK-NEXT: [[C34:%[0-9]+]]:_(i32) = G_CONSTANT i32 15
|
|
; CHECK-NEXT: [[C35:%[0-9]+]]:_(i32) = G_CONSTANT i32 19
|
|
; CHECK-NEXT: [[C36:%[0-9]+]]:_(i32) = G_CONSTANT i32 23
|
|
; CHECK-NEXT: [[C37:%[0-9]+]]:_(i32) = G_CONSTANT i32 27
|
|
; CHECK-NEXT: [[C38:%[0-9]+]]:_(i32) = G_CONSTANT i32 31
|
|
; CHECK-NEXT: [[C39:%[0-9]+]]:_(i32) = G_CONSTANT i32 35
|
|
; CHECK-NEXT: [[C40:%[0-9]+]]:_(i32) = G_CONSTANT i32 39
|
|
; CHECK-NEXT: [[C41:%[0-9]+]]:_(i32) = G_CONSTANT i32 43
|
|
; CHECK-NEXT: [[C42:%[0-9]+]]:_(i32) = G_CONSTANT i32 47
|
|
; CHECK-NEXT: [[C43:%[0-9]+]]:_(i32) = G_CONSTANT i32 51
|
|
; CHECK-NEXT: [[C44:%[0-9]+]]:_(i32) = G_CONSTANT i32 55
|
|
; CHECK-NEXT: [[C45:%[0-9]+]]:_(i32) = G_CONSTANT i32 59
|
|
; CHECK-NEXT: [[C46:%[0-9]+]]:_(i32) = G_CONSTANT i32 60
|
|
; CHECK-NEXT: [[CONSTANT_FOLD_BARRIER:%[0-9]+]]:_(i32) = G_CONSTANT_FOLD_BARRIER [[C30]]
|
|
; CHECK-NEXT: $w0 = COPY [[CONSTANT_FOLD_BARRIER]](i32)
|
|
; CHECK-NEXT: RET_ReallyLR implicit $w0
|
|
%tmp0 = add i32 1, 2
|
|
%tmp1 = add i32 3, 4
|
|
%tmp2 = add i32 5, 6
|
|
%tmp3 = add i32 7, 8
|
|
%tmp4 = add i32 9, 10
|
|
%tmp5 = add i32 11, 12
|
|
%tmp6 = add i32 13, 14
|
|
%tmp7 = add i32 15, 16
|
|
%tmp8 = add i32 17, 18
|
|
%tmp9 = add i32 19, 20
|
|
%tmp10 = add i32 21, 22
|
|
%tmp11 = add i32 23, 24
|
|
%tmp12 = add i32 25, 26
|
|
%tmp13 = add i32 27, 28
|
|
%tmp14 = add i32 29, 30
|
|
%tmp15 = add i32 30, 30
|
|
; At this point we mapped 46 values. The 'i32 100' constant will grow the map.
|
|
%res = bitcast i32 100 to i32
|
|
ret i32 %res
|
|
}
|
|
|
|
; Check that bf16 <=> fp16 bitcast are valid
|
|
define bfloat @bitcast_f16_bf16(half %a) {
|
|
; CHECK-LABEL: name: bitcast_f16_bf16
|
|
; CHECK: bb.1 (%ir-block.0):
|
|
; CHECK-NEXT: liveins: $h0
|
|
; CHECK-NEXT: {{ $}}
|
|
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(f16) = COPY $h0
|
|
; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(bf16) = G_BITCAST [[COPY]](f16)
|
|
; CHECK-NEXT: $h0 = COPY [[BITCAST]](bf16)
|
|
; CHECK-NEXT: RET_ReallyLR implicit $h0
|
|
%b = bitcast half %a to bfloat
|
|
ret bfloat %b
|
|
}
|
|
|
|
define half @bitcast_bf16_f16(bfloat %a) {
|
|
; CHECK-LABEL: name: bitcast_bf16_f16
|
|
; CHECK: bb.1 (%ir-block.0):
|
|
; CHECK-NEXT: liveins: $h0
|
|
; CHECK-NEXT: {{ $}}
|
|
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(bf16) = COPY $h0
|
|
; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(f16) = G_BITCAST [[COPY]](bf16)
|
|
; CHECK-NEXT: $h0 = COPY [[BITCAST]](f16)
|
|
; CHECK-NEXT: RET_ReallyLR implicit $h0
|
|
%b = bitcast bfloat %a to half
|
|
ret half %b
|
|
}
|
|
|
|
define bfloat @bitcast_i16_bf16(i16 %a) {
|
|
; CHECK-LABEL: name: bitcast_i16_bf16
|
|
; CHECK: bb.1 (%ir-block.0):
|
|
; CHECK-NEXT: liveins: $w0
|
|
; CHECK-NEXT: {{ $}}
|
|
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(i32) = COPY $w0
|
|
; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(i16) = G_TRUNC [[COPY]](i32)
|
|
; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(bf16) = G_BITCAST [[TRUNC]](i16)
|
|
; CHECK-NEXT: $h0 = COPY [[BITCAST]](bf16)
|
|
; CHECK-NEXT: RET_ReallyLR implicit $h0
|
|
%b = bitcast i16 %a to bfloat
|
|
ret bfloat %b
|
|
}
|
|
|
|
define i16 @bitcast_bf16_i16(bfloat %a) {
|
|
; CHECK-LABEL: name: bitcast_bf16_i16
|
|
; CHECK: bb.1 (%ir-block.0):
|
|
; CHECK-NEXT: liveins: $h0
|
|
; CHECK-NEXT: {{ $}}
|
|
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(bf16) = COPY $h0
|
|
; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(i16) = G_BITCAST [[COPY]](bf16)
|
|
; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(i32) = G_ANYEXT [[BITCAST]](i16)
|
|
; CHECK-NEXT: $w0 = COPY [[ANYEXT]](i32)
|
|
; CHECK-NEXT: RET_ReallyLR implicit $w0
|
|
%b = bitcast bfloat %a to i16
|
|
ret i16 %b
|
|
}
|
|
|
|
define <4 x bfloat> @bitcast_v4f16_v4bf16(<4 x half> %a) {
|
|
; CHECK-LABEL: name: bitcast_v4f16_v4bf16
|
|
; CHECK: bb.1 (%ir-block.0):
|
|
; CHECK-NEXT: liveins: $d0
|
|
; CHECK-NEXT: {{ $}}
|
|
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x f16>) = COPY $d0
|
|
; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<4 x bf16>) = G_BITCAST [[COPY]](<4 x f16>)
|
|
; CHECK-NEXT: $d0 = COPY [[BITCAST]](<4 x bf16>)
|
|
; CHECK-NEXT: RET_ReallyLR implicit $d0
|
|
%b = bitcast <4 x half> %a to <4 x bfloat>
|
|
ret <4 x bfloat> %b
|
|
}
|
|
|
|
define <4 x half> @bitcast_v4bf16_v4f16(<4 x bfloat> %a) {
|
|
; CHECK-LABEL: name: bitcast_v4bf16_v4f16
|
|
; CHECK: bb.1 (%ir-block.0):
|
|
; CHECK-NEXT: liveins: $d0
|
|
; CHECK-NEXT: {{ $}}
|
|
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x bf16>) = COPY $d0
|
|
; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<4 x f16>) = G_BITCAST [[COPY]](<4 x bf16>)
|
|
; CHECK-NEXT: $d0 = COPY [[BITCAST]](<4 x f16>)
|
|
; CHECK-NEXT: RET_ReallyLR implicit $d0
|
|
%b = bitcast <4 x bfloat> %a to <4 x half>
|
|
ret <4 x half> %b
|
|
}
|
|
|
|
define <4 x bfloat> @bitcast_v4i16_v4bf16(<4 x i16> %a) {
|
|
; CHECK-LABEL: name: bitcast_v4i16_v4bf16
|
|
; CHECK: bb.1 (%ir-block.0):
|
|
; CHECK-NEXT: liveins: $d0
|
|
; CHECK-NEXT: {{ $}}
|
|
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x i16>) = COPY $d0
|
|
; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<4 x bf16>) = G_BITCAST [[COPY]](<4 x i16>)
|
|
; CHECK-NEXT: $d0 = COPY [[BITCAST]](<4 x bf16>)
|
|
; CHECK-NEXT: RET_ReallyLR implicit $d0
|
|
%b = bitcast <4 x i16> %a to <4 x bfloat>
|
|
ret <4 x bfloat> %b
|
|
}
|
|
|
|
define <4 x i16> @bitcast_v4bf16_v4i16(<4 x bfloat> %a) {
|
|
; CHECK-LABEL: name: bitcast_v4bf16_v4i16
|
|
; CHECK: bb.1 (%ir-block.0):
|
|
; CHECK-NEXT: liveins: $d0
|
|
; CHECK-NEXT: {{ $}}
|
|
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x bf16>) = COPY $d0
|
|
; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<4 x i16>) = G_BITCAST [[COPY]](<4 x bf16>)
|
|
; CHECK-NEXT: $d0 = COPY [[BITCAST]](<4 x i16>)
|
|
; CHECK-NEXT: RET_ReallyLR implicit $d0
|
|
%b = bitcast <4 x bfloat> %a to <4 x i16>
|
|
ret <4 x i16> %b
|
|
}
|