diff options
Diffstat (limited to 'llvm/test/tools/llvm-objdump/ARM')
7 files changed, 163 insertions, 0 deletions
diff --git a/llvm/test/tools/llvm-objdump/ARM/v6-neg-subfeatures.s b/llvm/test/tools/llvm-objdump/ARM/v6-neg-subfeatures.s new file mode 100644 index 00000000000..1a8d8f28333 --- /dev/null +++ b/llvm/test/tools/llvm-objdump/ARM/v6-neg-subfeatures.s @@ -0,0 +1,10 @@ +@ RUN: llvm-mc < %s -triple armv6 -mattr=+vfp2 -filetype=obj | llvm-objdump -triple=arm -d - | FileCheck %s + +.eabi_attribute Tag_FP_arch, 1 // VFP2 + +vfp2: + vadd.f32 s0, s1, s2 + +@CHECK-LABEL: vfp2 +@CHECK-NOT: 81 0a 30 ee vadd.f32 s0, s1, s2 +@CHECK: unknown diff --git a/llvm/test/tools/llvm-objdump/ARM/v6-subfeatures.s b/llvm/test/tools/llvm-objdump/ARM/v6-subfeatures.s new file mode 100644 index 00000000000..e8e806740d1 --- /dev/null +++ b/llvm/test/tools/llvm-objdump/ARM/v6-subfeatures.s @@ -0,0 +1,9 @@ +@ RUN: llvm-mc < %s -triple armv6 -mattr=+vfp2 -filetype=obj | llvm-objdump -triple=arm -d - | FileCheck %s + +.eabi_attribute Tag_FP_arch, 2 // VFP2 + +vfp2: + vadd.f32 s0, s1, s2 + +@CHECK-LABEL: vfp2 +@CHECK: 81 0a 30 ee vadd.f32 s0, s1, s2 diff --git a/llvm/test/tools/llvm-objdump/ARM/v7a-neg-subfeature.s b/llvm/test/tools/llvm-objdump/ARM/v7a-neg-subfeature.s new file mode 100644 index 00000000000..8083e5b0eee --- /dev/null +++ b/llvm/test/tools/llvm-objdump/ARM/v7a-neg-subfeature.s @@ -0,0 +1,44 @@ +@ RUN: llvm-mc < %s -triple armv7a -mattr=+vfp3,+neon,+fp16,+hwdiv-arm,+hwdiv -filetype=obj | llvm-objdump -triple=arm -d - | FileCheck %s +@ RUN: llvm-mc < %s -triple armv7a -mattr=+vfp3,+neon,+fp16,+hwdiv-arm,+hwdiv -filetype=obj | llvm-objdump -triple=thumb -d - | FileCheck %s --check-prefix=CHECK-THUMB + +.eabi_attribute Tag_FP_arch, 0 // disallow vfp + +vfp2: + vmla.f32 s0, s1, s2 + +@CHECK-LABEL: vfp2 +@CHECK-NOT: 81 0a 00 ee vmla.f32 s0, s1, s2 +@CHECK: unknown + +vfp3: + vmov.f32 s0, #0.5 + +@CHECK-LABEL: vfp3 +@CHECK-NOT: 00 0a b6 ee vmov.f32 s0, #5.000000e-01 + +neon: + vmla.f32 d0, d1, d2 + +@CHECK-LABEL: neon +@CHECK-NOT: 12 0d 01 f2 vmla.f32 d0, d1, d2 +@CHECK: unknown + +fp16: + vcvt.f32.f16 q0, d2 + +@CHECK-LABEL: fp16 +@CHECK-NOT: 02 07 b6 f3 vcvt.f32.f16 q0, d2 + +div_arm: + udiv r0, r1, r2 + +@CHECK-LABEL: div_arm +@CHECK-NOT: 11 f2 30 e7 udiv r0, r1, r2 +@CHECK: unknown + +.thumb +div_thumb: + udiv r0, r1, r2 + +@CHECK-LABEL: div_thumb +@CHECK-THUMB-NOT: b1 fb f2 f0 udiv r0, r1, r2 diff --git a/llvm/test/tools/llvm-objdump/ARM/v7a-subfeature.s b/llvm/test/tools/llvm-objdump/ARM/v7a-subfeature.s new file mode 100644 index 00000000000..f43554579a3 --- /dev/null +++ b/llvm/test/tools/llvm-objdump/ARM/v7a-subfeature.s @@ -0,0 +1,36 @@ +@ RUN: llvm-mc < %s -triple armv7a -mattr=+vfp3,+neon,+fp16,+hwdiv-arm -filetype=obj | llvm-objdump -triple=arm -d - | FileCheck %s + +.eabi_attribute Tag_FP_arch, 3 // VFP3 +.eabi_attribute Tag_Advanced_SIMD_arch, 2 // SIMDv1 with fp16 +.eabi_attribute Tag_DIV_use, 2 // permitted + +vfp2: + vmla.f32 s0, s1, s2 + +@CHECK-LABEL: vfp2 +@CHECK: 81 0a 00 ee vmla.f32 s0, s1, s2 + +vfp3: + vmov.f32 s0, #0.5 + +@CHECK-LABEL: vfp3 +@CHECK: 00 0a b6 ee vmov.f32 s0, #5.000000e-01 + +neon: + vmla.f32 d0, d1, d2 + +@CHECK-LABEL: neon +@CHECK: 12 0d 01 f2 vmla.f32 d0, d1, d2 + +fp16: + vcvt.f32.f16 q0, d2 + +@CHECK-LABEL: fp16 +@CHECK: 02 07 b6 f3 vcvt.f32.f16 q0, d2 + +div: + udiv r0, r1, r2 + +@CHECK-LABEL: div +@CHECK: 11 f2 30 e7 udiv r0, r1, r2 + diff --git a/llvm/test/tools/llvm-objdump/ARM/v7m-neg-subfeatures.s b/llvm/test/tools/llvm-objdump/ARM/v7m-neg-subfeatures.s new file mode 100644 index 00000000000..b3a79c7d5c2 --- /dev/null +++ b/llvm/test/tools/llvm-objdump/ARM/v7m-neg-subfeatures.s @@ -0,0 +1,18 @@ +@ RUN: llvm-mc < %s -triple armv7m -mattr=+vfp4 -filetype=obj | llvm-objdump -triple=thumb -d - | FileCheck %s + +.eabi_attribute Tag_CPU_arch, 10 // v7 +.eabi_attribute Tag_FP_arch, 0 // VFP4 + +.thumb +vfp2: + vmla.f32 s0, s1, s2 + +@CHECK-LABEL: vfp2 +@CHECK-NOT: 00 ee 81 0a vmla.f32 s0, s1, s2 + +.thumb +vfp4: + vmov.f32 s0, #0.5 + +@CHECK-LABEL:vfp4 +@CHECK-NOT: b6 ee 00 0a vmov.f32 s0, #5.000000e-01 diff --git a/llvm/test/tools/llvm-objdump/ARM/v7m-subfeatures.s b/llvm/test/tools/llvm-objdump/ARM/v7m-subfeatures.s new file mode 100644 index 00000000000..c7a40af8ae9 --- /dev/null +++ b/llvm/test/tools/llvm-objdump/ARM/v7m-subfeatures.s @@ -0,0 +1,26 @@ +@ RUN: llvm-mc < %s -triple armv7m -mattr=+vfp4 -filetype=obj | llvm-objdump -triple=thumb -d - | FileCheck %s + +.eabi_attribute Tag_CPU_arch, 10 // v7 +.eabi_attribute Tag_CPU_arch_profile, 0x4D // 'M' profile +.eabi_attribute Tag_FP_arch, 5 // VFP4 + +.thumb +vfp2: + vmla.f32 s0, s1, s2 + +@CHECK-LABEL: vfp2 +@CHECK: 00 ee 81 0a vmla.f32 s0, s1, s2 + +.thumb +vfp4: + vmov.f32 s0, #0.5 + +@CHECK-LABEL: vfp4 +@CHECK: b6 ee 00 0a vmov.f32 s0, #5.000000e-01 + +.thumb +div: + udiv r0, r1, r2 + +@CHECK-LABEL: div +@CHECK: b1 fb f2 f0 udiv r0, r1, r2 diff --git a/llvm/test/tools/llvm-objdump/ARM/v7r-subfeatures.s b/llvm/test/tools/llvm-objdump/ARM/v7r-subfeatures.s new file mode 100644 index 00000000000..bbe40a19387 --- /dev/null +++ b/llvm/test/tools/llvm-objdump/ARM/v7r-subfeatures.s @@ -0,0 +1,20 @@ +@ RUN: llvm-mc < %s -triple armv7r -mattr=+hwdiv-arm -filetype=obj | llvm-objdump -triple=thumb -d - | FileCheck %s +@ RUN: llvm-mc < %s -triple armv7r -mattr=+hwdiv-arm -filetype=obj | llvm-objdump -triple=arm -d - | FileCheck %s --check-prefix=CHECK-ARM + +.eabi_attribute Tag_CPU_arch, 10 // v7 +.eabi_attribute Tag_CPU_arch_profile, 0x52 // 'R' profile + +.arm +div_arm: + udiv r0, r1, r2 + +@CHECK-LABEL: div_arm +@CHECK-NOT: udiv r0, r1, r2 +@CHECK-ARM-NOT: udiv r0, r1, r2 + +.thumb +div_thumb: + udiv r0, r1, r2 + +@CHECK-LABEL: div_thumb +@CHECK: b1 fb f2 f0 udiv r0, r1, r2 |