xref: /llvm-project/llvm/test/CodeGen/AArch64/fast-isel-vector-arithmetic.ll (revision 945a660cbc928a451b2a3114104c2b55e63c7bac)
159e631c7SJuergen Ributzka; RUN: llc -mtriple=aarch64-apple-darwin                                                   -verify-machineinstrs < %s | FileCheck %s
2*945a660cSMehdi Amini; RUN: llc -mtriple=aarch64-apple-darwin -fast-isel -fast-isel-abort=2 -verify-machineinstrs < %s | FileCheck %s
359e631c7SJuergen Ributzka
459e631c7SJuergen Ributzka; Vector Integer Add
559e631c7SJuergen Ributzkadefine <8 x i8> @add_v8i8_rr(<8 x i8> %a, <8 x i8> %b) {
659e631c7SJuergen Ributzka; CHECK: add_v8i8_rr
759e631c7SJuergen Ributzka; CHECK: add.8b v0, v0, v1
859e631c7SJuergen Ributzka  %1 = add <8 x i8> %a, %b
959e631c7SJuergen Ributzka  ret <8 x i8> %1
1059e631c7SJuergen Ributzka}
1159e631c7SJuergen Ributzka
1259e631c7SJuergen Ributzkadefine <16 x i8> @add_v16i8_rr(<16 x i8> %a, <16 x i8> %b) {
1359e631c7SJuergen Ributzka; CHECK: add_v16i8_rr
1459e631c7SJuergen Ributzka; CHECK: add.16b v0, v0, v1
1559e631c7SJuergen Ributzka  %1 = add <16 x i8> %a, %b
1659e631c7SJuergen Ributzka  ret <16 x i8> %1
1759e631c7SJuergen Ributzka}
1859e631c7SJuergen Ributzka
1959e631c7SJuergen Ributzkadefine <4 x i16> @add_v4i16_rr(<4 x i16> %a, <4 x i16> %b) {
2059e631c7SJuergen Ributzka; CHECK: add_v4i16_rr
2159e631c7SJuergen Ributzka; CHECK: add.4h v0, v0, v1
2259e631c7SJuergen Ributzka  %1 = add <4 x i16> %a, %b
2359e631c7SJuergen Ributzka  ret <4 x i16> %1
2459e631c7SJuergen Ributzka}
2559e631c7SJuergen Ributzka
2659e631c7SJuergen Ributzkadefine <8 x i16> @add_v8i16_rr(<8 x i16> %a, <8 x i16> %b) {
2759e631c7SJuergen Ributzka; CHECK: add_v8i16_rr
2859e631c7SJuergen Ributzka; CHECK: add.8h v0, v0, v1
2959e631c7SJuergen Ributzka  %1 = add <8 x i16> %a, %b
3059e631c7SJuergen Ributzka  ret <8 x i16> %1
3159e631c7SJuergen Ributzka}
3259e631c7SJuergen Ributzka
3359e631c7SJuergen Ributzkadefine <2 x i32> @add_v2i32_rr(<2 x i32> %a, <2 x i32> %b) {
3459e631c7SJuergen Ributzka; CHECK: add_v2i32_rr
3559e631c7SJuergen Ributzka; CHECK: add.2s v0, v0, v1
3659e631c7SJuergen Ributzka  %1 = add <2 x i32> %a, %b
3759e631c7SJuergen Ributzka  ret <2 x i32> %1
3859e631c7SJuergen Ributzka}
3959e631c7SJuergen Ributzka
4059e631c7SJuergen Ributzkadefine <4 x i32> @add_v4i32_rr(<4 x i32> %a, <4 x i32> %b) {
4159e631c7SJuergen Ributzka; CHECK: add_v4i32_rr
4259e631c7SJuergen Ributzka; CHECK: add.4s v0, v0, v1
4359e631c7SJuergen Ributzka  %1 = add <4 x i32> %a, %b
4459e631c7SJuergen Ributzka  ret <4 x i32> %1
4559e631c7SJuergen Ributzka}
4659e631c7SJuergen Ributzka
4759e631c7SJuergen Ributzkadefine <2 x i64> @add_v2i64_rr(<2 x i64> %a, <2 x i64> %b) {
4859e631c7SJuergen Ributzka; CHECK: add_v2i64_rr
4959e631c7SJuergen Ributzka; CHECK: add.2d v0, v0, v1
5059e631c7SJuergen Ributzka  %1 = add <2 x i64> %a, %b
5159e631c7SJuergen Ributzka  ret <2 x i64> %1
5259e631c7SJuergen Ributzka}
5359e631c7SJuergen Ributzka
5459e631c7SJuergen Ributzka; Vector Floating-point Add
5559e631c7SJuergen Ributzkadefine <2 x float> @add_v2f32_rr(<2 x float> %a, <2 x float> %b) {
5659e631c7SJuergen Ributzka; CHECK: add_v2f32_rr
5759e631c7SJuergen Ributzka; CHECK: fadd.2s v0, v0, v1
5859e631c7SJuergen Ributzka  %1 = fadd <2 x float> %a, %b
5959e631c7SJuergen Ributzka  ret <2 x float> %1
6059e631c7SJuergen Ributzka}
6159e631c7SJuergen Ributzka
6259e631c7SJuergen Ributzkadefine <4 x float> @add_v4f32_rr(<4 x float> %a, <4 x float> %b) {
6359e631c7SJuergen Ributzka; CHECK: add_v4f32_rr
6459e631c7SJuergen Ributzka; CHECK: fadd.4s v0, v0, v1
6559e631c7SJuergen Ributzka  %1 = fadd <4 x float> %a, %b
6659e631c7SJuergen Ributzka  ret <4 x float> %1
6759e631c7SJuergen Ributzka}
6859e631c7SJuergen Ributzka
6959e631c7SJuergen Ributzkadefine <2 x double> @add_v2f64_rr(<2 x double> %a, <2 x double> %b) {
7059e631c7SJuergen Ributzka; CHECK: add_v2f64_rr
7159e631c7SJuergen Ributzka; CHECK: fadd.2d v0, v0, v1
7259e631c7SJuergen Ributzka  %1 = fadd <2 x double> %a, %b
7359e631c7SJuergen Ributzka  ret <2 x double> %1
7459e631c7SJuergen Ributzka}
75