[RISCV][VLOPT] Add vector narrowing integer right shift instructions to isSupportedIn...
[llvm-project.git] / llvm / test / CodeGen / AArch64 / fabd-no-neon.ll
blob4966ef75b67675e88a59c6142b7b6130b277d267
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; Disabling NEON used to incorrectly emit FABD instructions which resulted in
3 ; an assertion in verifyInstructionPredicates() while emitting the output.
4 ; RUN: llc -mtriple=aarch64 -mattr=+fullfp16,+neon < %s | FileCheck %s --check-prefix NEON-ENABLED
5 ; RUN: llc -mtriple=aarch64 -mattr=+fullfp16,-neon < %s | FileCheck %s --check-prefix NEON-DISABLED
6 ; Note: We need to use -filetype=obj to trigger verifyInstructionPredicates()
7 ; checks since it is not called when emitting assembly output.
8 ; RUN: llc -mtriple=aarch64 -mattr=+fullfp16,-neon -o /dev/null %s -filetype=obj
10 declare half @llvm.fabs.f16(half)
11 declare float @llvm.fabs.f32(float)
12 declare double @llvm.fabs.f64(double)
14 define half @fabd16(half %f1, half %f2) {
15 ; NEON-ENABLED-LABEL: fabd16:
16 ; NEON-ENABLED:       // %bb.0:
17 ; NEON-ENABLED-NEXT:    fabd h0, h0, h1
18 ; NEON-ENABLED-NEXT:    ret
20 ; NEON-DISABLED-LABEL: fabd16:
21 ; NEON-DISABLED:       // %bb.0:
22 ; NEON-DISABLED-NEXT:    fsub h0, h0, h1
23 ; NEON-DISABLED-NEXT:    fabs h0, h0
24 ; NEON-DISABLED-NEXT:    ret
25   %sub = fsub half %f1, %f2
26   %abs = tail call half @llvm.fabs.f16(half %sub)
27   ret half %abs
30 define float @fabd32(float %f1, float %f2) {
31 ; NEON-ENABLED-LABEL: fabd32:
32 ; NEON-ENABLED:       // %bb.0:
33 ; NEON-ENABLED-NEXT:    fabd s0, s0, s1
34 ; NEON-ENABLED-NEXT:    ret
36 ; NEON-DISABLED-LABEL: fabd32:
37 ; NEON-DISABLED:       // %bb.0:
38 ; NEON-DISABLED-NEXT:    fsub s0, s0, s1
39 ; NEON-DISABLED-NEXT:    fabs s0, s0
40 ; NEON-DISABLED-NEXT:    ret
41   %sub = fsub float %f1, %f2
42   %abs = tail call float @llvm.fabs.f32(float %sub)
43   ret float %abs
46 define double @fabd64(double %f1, double %f2) {
47 ; NEON-ENABLED-LABEL: fabd64:
48 ; NEON-ENABLED:       // %bb.0:
49 ; NEON-ENABLED-NEXT:    fabd d0, d0, d1
50 ; NEON-ENABLED-NEXT:    ret
52 ; NEON-DISABLED-LABEL: fabd64:
53 ; NEON-DISABLED:       // %bb.0:
54 ; NEON-DISABLED-NEXT:    fsub d0, d0, d1
55 ; NEON-DISABLED-NEXT:    fabs d0, d0
56 ; NEON-DISABLED-NEXT:    ret
57   %sub = fsub double %f1, %f2
58   %abs = tail call double @llvm.fabs.f64(double %sub)
59   ret double %abs