xref: /aosp_15_r20/external/llvm/test/CodeGen/ARM/vfp-reg-stride.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc -mcpu=swift -mtriple=thumbv7s-apple-ios -o - %s | FileCheck %s --check-prefix=CHECK-STRIDE4
2*9880d681SAndroid Build Coastguard Worker; RUN: llc -mcpu=swift -mtriple=thumbv7k-apple-watchos -o - %s | FileCheck %s --check-prefix=CHECK-STRIDE4-WATCH
3*9880d681SAndroid Build Coastguard Worker; RUN: llc -mcpu=cortex-a57 -mtriple=thumbv7-linux-gnueabihf -o - %s | FileCheck %s --check-prefix=CHECK-GENERIC
4*9880d681SAndroid Build Coastguard Worker
5*9880d681SAndroid Build Coastguard Workerdefine void @test_reg_stride(double %a, double %b) {
6*9880d681SAndroid Build Coastguard Worker; CHECK-STRIDE4-LABEL: test_reg_stride:
7*9880d681SAndroid Build Coastguard Worker; CHECK-STRIDE4-DAG: vmov d16, r
8*9880d681SAndroid Build Coastguard Worker; CHECK-STRIDE4-DAG: vmov d18, r
9*9880d681SAndroid Build Coastguard Worker
10*9880d681SAndroid Build Coastguard Worker; CHECK-STRIDE4-WATCH-LABEL: test_reg_stride:
11*9880d681SAndroid Build Coastguard Worker; CHECK-STRIDE4-WATCH-DAG: vmov.f64 d16, d
12*9880d681SAndroid Build Coastguard Worker; CHECK-STRIDE4-WATCH-DAG: vmov.f64 d18, d
13*9880d681SAndroid Build Coastguard Worker
14*9880d681SAndroid Build Coastguard Worker; CHECK-GENERIC-LABEL: test_reg_stride:
15*9880d681SAndroid Build Coastguard Worker; CHECK-GENERIC-DAG: vmov.f64 d16, {{d[01]}}
16*9880d681SAndroid Build Coastguard Worker; CHECK-GENERIC-DAG: vmov.f64 d17, {{d[01]}}
17*9880d681SAndroid Build Coastguard Worker
18*9880d681SAndroid Build Coastguard Worker  call void asm "", "~{r0},~{r1},~{d0},~{d1}"()
19*9880d681SAndroid Build Coastguard Worker  call arm_aapcs_vfpcc void @eat_doubles(double %a, double %b)
20*9880d681SAndroid Build Coastguard Worker  ret void
21*9880d681SAndroid Build Coastguard Worker}
22*9880d681SAndroid Build Coastguard Worker
23*9880d681SAndroid Build Coastguard Workerdefine void @test_stride_minsize(float %a, float %b) minsize {
24*9880d681SAndroid Build Coastguard Worker; CHECK-STRIDE4-LABEL: test_stride_minsize:
25*9880d681SAndroid Build Coastguard Worker; CHECK-STRIDE4: vmov d2, {{r[01]}}
26*9880d681SAndroid Build Coastguard Worker; CHECK-STRIDE4: vmov d3, {{r[01]}}
27*9880d681SAndroid Build Coastguard Worker
28*9880d681SAndroid Build Coastguard Worker; CHECK-STRIDE4-WATCH-LABEL: test_stride_minsize:
29*9880d681SAndroid Build Coastguard Worker; CHECK-STRIDE4-WATCH-DAG: vmov.f32 s4, {{s[01]}}
30*9880d681SAndroid Build Coastguard Worker; CHECK-STRIDE4-WATCH-DAG: vmov.f32 s8, {{s[01]}}
31*9880d681SAndroid Build Coastguard Worker
32*9880d681SAndroid Build Coastguard Worker; CHECK-GENERIC-LABEL: test_stride_minsize:
33*9880d681SAndroid Build Coastguard Worker; CHECK-GENERIC-DAG: vmov.f32 s4, {{s[01]}}
34*9880d681SAndroid Build Coastguard Worker; CHECK-GENERIC-DAG: vmov.f32 s6, {{s[01]}}
35*9880d681SAndroid Build Coastguard Worker  call void asm "", "~{r0},~{r1},~{s0},~{s1},~{d0},~{d1}"()
36*9880d681SAndroid Build Coastguard Worker  call arm_aapcs_vfpcc void @eat_floats(float %a, float %b)
37*9880d681SAndroid Build Coastguard Worker  ret void
38*9880d681SAndroid Build Coastguard Worker}
39*9880d681SAndroid Build Coastguard Worker
40*9880d681SAndroid Build Coastguard Worker
41*9880d681SAndroid Build Coastguard Workerdeclare arm_aapcs_vfpcc void @eat_doubles(double, double)
42*9880d681SAndroid Build Coastguard Workerdeclare arm_aapcs_vfpcc void @eat_floats(float, float)
43