Files
TheRock/compiler/amd-llvm/llvm/test/MC/Hexagon/instructions/alu32_pred.s
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

223 lines
4.9 KiB
ArmAsm

# RUN: llvm-mc -triple hexagon -filetype=obj -o - %s | llvm-objdump -d - | FileCheck %s
# Hexagon Programmer's Reference Manual 11.1.3 ALU32/PRED
# Conditional add
# CHECK: f1 c3 75 74
if (p3) r17 = add(r21, #31)
# CHECK: 03 40 45 85
# CHECK-NEXT: f1 e3 75 74
{ p3 = r5
if (p3.new) r17 = add(r21, #31) }
# CHECK: f1 c3 f5 74
if (!p3) r17 = add(r21, #31)
# CHECK: 03 40 45 85
# CHECK-NEXT: f1 e3 f5 74
{ p3 = r5
if (!p3.new) r17 = add(r21, #31) }
# CHECK: 71 df 15 fb
if (p3) r17 = add(r21, r31)
# CHECK: 03 40 45 85
# CHECK-NEXT: 71 ff 15 fb
{ p3 = r5
if (p3.new) r17 = add(r21, r31) }
# CHECK: f1 df 15 fb
if (!p3) r17 = add(r21, r31)
# CHECK: 03 40 45 85
# CHECK-NEXT: f1 ff 15 fb
{ p3 = r5
if (!p3.new) r17 = add(r21, r31) }
# Conditional shift halfword
# CHECK: 11 e3 15 70
if (p3) r17 = aslh(r21)
# CHECK: 03 40 45 85
# CHECK-NEXT: 11 e7 15 70
{ p3 = r5
if (p3.new) r17 = aslh(r21) }
# CHECK: 11 eb 15 70
if (!p3) r17 = aslh(r21)
# CHECK: 03 40 45 85
# CHECK-NEXT: 11 ef 15 70
{ p3 = r5
if (!p3.new) r17 = aslh(r21) }
# CHECK: 11 e3 35 70
if (p3) r17 = asrh(r21)
# CHECK: 03 40 45 85
# CHECK-NEXT: 11 e7 35 70
{ p3 = r5
if (p3.new) r17 = asrh(r21) }
# CHECK: 11 eb 35 70
if (!p3) r17 = asrh(r21)
# CHECK: 03 40 45 85
# CHECK-NEXT: 11 ef 35 70
{ p3 = r5
if (!p3.new) r17 = asrh(r21) }
# Conditional combine
# CHECK: 70 df 15 fd
if (p3) r17:16 = combine(r21, r31)
# CHECK: f0 df 15 fd
if (!p3) r17:16 = combine(r21, r31)
# CHECK: 03 40 45 85
# CHECK-NEXT: 70 ff 15 fd
{ p3 = r5
if (p3.new) r17:16 = combine(r21, r31) }
# CHECK: 03 40 45 85
# CHECK-NEXT: f0 ff 15 fd
{ p3 = r5
if (!p3.new) r17:16 = combine(r21, r31) }
# Conditional logical operations
# CHECK: 71 df 15 f9
if (p3) r17 = and(r21, r31)
# CHECK: f1 df 15 f9
if (!p3) r17 = and(r21, r31)
# CHECK: 03 40 45 85
# CHECK-NEXT: 71 ff 15 f9
{ p3 = r5
if (p3.new) r17 = and(r21, r31) }
# CHECK: 03 40 45 85
# CHECK-NEXT: f1 ff 15 f9
{ p3 = r5
if (!p3.new) r17 = and(r21, r31) }
# CHECK: 71 df 35 f9
if (p3) r17 = or(r21, r31)
# CHECK: f1 df 35 f9
if (!p3) r17 = or(r21, r31)
# CHECK: 03 40 45 85
# CHECK-NEXT: 71 ff 35 f9
{ p3 = r5
if (p3.new) r17 = or(r21, r31) }
# CHECK: 03 40 45 85
# CHECK-NEXT: f1 ff 35 f9
{ p3 = r5
if (!p3.new) r17 = or(r21, r31) }
# CHECK: 71 df 75 f9
if (p3) r17 = xor(r21, r31)
# CHECK: f1 df 75 f9
if (!p3) r17 = xor(r21, r31)
# CHECK: 03 40 45 85
# CHECK-NEXT: 71 ff 75 f9
{ p3 = r5
if (p3.new) r17 = xor(r21, r31) }
# CHECK: 03 40 45 85
# CHECK-NEXT: f1 ff 75 f9
{ p3 = r5
if (!p3.new) r17 = xor(r21, r31) }
# Conditional subtract
# CHECK: 71 df 35 fb
if (p3) r17 = sub(r31, r21)
# CHECK: f1 df 35 fb
if (!p3) r17 = sub(r31, r21)
# CHECK: 03 40 45 85
# CHECK-NEXT: 71 ff 35 fb
{ p3 = r5
if (p3.new) r17 = sub(r31, r21) }
# CHECK: 03 40 45 85
# CHECK-NEXT: f1 ff 35 fb
{ p3 = r5
if (!p3.new) r17 = sub(r31, r21) }
# Conditional sign extend
# CHECK: 11 e3 b5 70
if (p3) r17 = sxtb(r21)
# CHECK: 11 eb b5 70
if (!p3) r17 = sxtb(r21)
# CHECK: 03 40 45 85
# CHECK-NEXT: 11 e7 b5 70
{ p3 = r5
if (p3.new) r17 = sxtb(r21) }
# CHECK: 03 40 45 85
# CHECK-NEXT: 11 ef b5 70
{ p3 = r5
if (!p3.new) r17 = sxtb(r21) }
# CHECK: 11 e3 f5 70
if (p3) r17 = sxth(r21)
# CHECK: 11 eb f5 70
if (!p3) r17 = sxth(r21)
# CHECK: 03 40 45 85
# CHECK-NEXT: 11 e7 f5 70
{ p3 = r5
if (p3.new) r17 = sxth(r21) }
# CHECK: 03 40 45 85
# CHECK-NEXT: 11 ef f5 70
{ p3 = r5
if (!p3.new) r17 = sxth(r21) }
# Conditional transfer
# CHECK: b1 c2 60 7e
if (p3) r17 = #21
# CHECK: b1 c2 e0 7e
if (!p3) r17 = #21
# CHECK: 03 40 45 85
# CHECK-NEXT: b1 e2 60 7e
{ p3 = r5
if (p3.new) r17 = #21 }
# CHECK: 03 40 45 85
# CHECK-NEXT: b1 e2 e0 7e
{ p3 = r5
if (!p3.new) r17 = #21 }
# Conditional zero extend
# CHECK: 11 e3 95 70
if (p3) r17 = zxtb(r21)
# CHECK: 11 eb 95 70
if (!p3) r17 = zxtb(r21)
# CHECK: 03 40 45 85
# CHECK-NEXT: 11 e7 95 70
{ p3 = r5
if (p3.new) r17 = zxtb(r21) }
# CHECK: 03 40 45 85
# CHECK-NEXT: 11 ef 95 70
{ p3 = r5
if (!p3.new) r17 = zxtb(r21) }
# CHECK: 11 e3 d5 70
if (p3) r17 = zxth(r21)
# CHECK: 11 eb d5 70
if (!p3) r17 = zxth(r21)
# CHECK: 03 40 45 85
# CHECK-NEXT: 11 e7 d5 70
{ p3 = r5
if (p3.new) r17 = zxth(r21) }
# CHECK: 03 40 45 85
# CHECK-NEXT: 11 ef d5 70
{ p3 = r5
if (!p3.new) r17 = zxth(r21) }
# Compare
# CHECK: e3 c3 15 75
p3 = cmp.eq(r21, #31)
# CHECK: f3 c3 15 75
p3 = !cmp.eq(r21, #31)
# CHECK: e3 c3 55 75
p3 = cmp.gt(r21, #31)
# CHECK: f3 c3 55 75
p3 = !cmp.gt(r21, #31)
# CHECK: e3 c3 95 75
p3 = cmp.gtu(r21, #31)
# CHECK: f3 c3 95 75
p3 = !cmp.gtu(r21, #31)
# CHECK: 03 df 15 f2
p3 = cmp.eq(r21, r31)
# CHECK: 13 df 15 f2
p3 = !cmp.eq(r21, r31)
# CHECK: 03 df 55 f2
p3 = cmp.gt(r21, r31)
# CHECK: 13 df 55 f2
p3 = !cmp.gt(r21, r31)
# CHECK: 03 df 75 f2
p3 = cmp.gtu(r21, r31)
# CHECK: 13 df 75 f2
p3 = !cmp.gtu(r21, r31)
# Compare to general register
# CHECK: f1 e3 55 73
r17 = cmp.eq(r21, #31)
# CHECK: f1 e3 75 73
r17 = !cmp.eq(r21, #31)
# CHECK: 11 df 55 f3
r17 = cmp.eq(r21, r31)
# CHECK: 11 df 75 f3
r17 = !cmp.eq(r21, r31)