xref: /llvm-project/llvm/test/CodeGen/ARM/integer_insertelement.ll (revision 7258735fa0b60dd7800f5b9859aceeee16bb4990)
1*7258735fSSaleem Abdulrasool; RUN: llc -mtriple=arm-eabi -mattr=+neon %s -o - | FileCheck %s
234e9931bSJames Molloy
334e9931bSJames Molloy; This test checks that when inserting one (integer) element into a vector,
434e9931bSJames Molloy; the vector is not spuriously copied. "vorr dX, dY, dY" is the way of moving
534e9931bSJames Molloy; one DPR to another that we check for.
634e9931bSJames Molloy
734e9931bSJames Molloy; CHECK: @f
834e9931bSJames Molloy; CHECK-NOT: vorr d
91f06e7f0SJakob Stoklund Olesen; CHECK: vmov.32 d
1034e9931bSJames Molloy; CHECK-NOT: vorr d
1134e9931bSJames Molloy; CHECK: mov pc, lr
1234e9931bSJames Molloydefine <4 x i32> @f(<4 x i32> %in) {
1334e9931bSJames Molloy  %1 = insertelement <4 x i32> %in, i32 255, i32 3
1434e9931bSJames Molloy  ret <4 x i32> %1
1534e9931bSJames Molloy}
1634e9931bSJames Molloy
1734e9931bSJames Molloy; CHECK: @g
1834e9931bSJames Molloy; CHECK-NOT: vorr d
1934e9931bSJames Molloy; CHECK: vmov.16 d
2034e9931bSJames Molloy; CHECK-NOT: vorr d
2134e9931bSJames Molloy; CHECK: mov pc, lr
2234e9931bSJames Molloydefine <8 x i16> @g(<8 x i16> %in) {
2334e9931bSJames Molloy  %1 = insertelement <8 x i16> %in, i16 255, i32 7
2434e9931bSJames Molloy  ret <8 x i16> %1
2534e9931bSJames Molloy}
2634e9931bSJames Molloy
2734e9931bSJames Molloy; CHECK: @h
2834e9931bSJames Molloy; CHECK-NOT: vorr d
2934e9931bSJames Molloy; CHECK: vmov.8 d
3034e9931bSJames Molloy; CHECK-NOT: vorr d
3134e9931bSJames Molloy; CHECK: mov pc, lr
3234e9931bSJames Molloydefine <16 x i8> @h(<16 x i8> %in) {
3334e9931bSJames Molloy  %1 = insertelement <16 x i8> %in, i8 255, i32 15
3434e9931bSJames Molloy  ret <16 x i8> %1
3534e9931bSJames Molloy}
36