mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-21 18:29:46 +00:00
Convert more Neon tests to use FileCheck.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78433 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
5f51cd0579
commit
e9ce5d5ef9
@ -1,7 +1,8 @@
|
||||
; RUN: llvm-as < %s | llc -march=arm -mattr=+neon > %t
|
||||
; RUN: grep {vacgt\\.f32} %t | count 2
|
||||
; RUN: llvm-as < %s | llc -march=arm -mattr=+neon | FileCheck %s
|
||||
|
||||
define <2 x i32> @vacgtf32(<2 x float>* %A, <2 x float>* %B) nounwind {
|
||||
;CHECK: vacgtf32:
|
||||
;CHECK: vacgt.f32
|
||||
%tmp1 = load <2 x float>* %A
|
||||
%tmp2 = load <2 x float>* %B
|
||||
%tmp3 = call <2 x i32> @llvm.arm.neon.vacgtd(<2 x float> %tmp1, <2 x float> %tmp2)
|
||||
@ -9,6 +10,8 @@ define <2 x i32> @vacgtf32(<2 x float>* %A, <2 x float>* %B) nounwind {
|
||||
}
|
||||
|
||||
define <4 x i32> @vacgtQf32(<4 x float>* %A, <4 x float>* %B) nounwind {
|
||||
;CHECK: vacgtQf32:
|
||||
;CHECK: vacgt.f32
|
||||
%tmp1 = load <4 x float>* %A
|
||||
%tmp2 = load <4 x float>* %B
|
||||
%tmp3 = call <4 x i32> @llvm.arm.neon.vacgtq(<4 x float> %tmp1, <4 x float> %tmp2)
|
||||
|
@ -1,11 +1,8 @@
|
||||
; RUN: llvm-as < %s | llc -march=arm -mattr=+neon > %t
|
||||
; RUN: grep {vadd\\.i8} %t | count 2
|
||||
; RUN: grep {vadd\\.i16} %t | count 2
|
||||
; RUN: grep {vadd\\.i32} %t | count 2
|
||||
; RUN: grep {vadd\\.i64} %t | count 2
|
||||
; RUN: grep {vadd\\.f32} %t | count 2
|
||||
; RUN: llvm-as < %s | llc -march=arm -mattr=+neon | FileCheck %s
|
||||
|
||||
define <8 x i8> @vaddi8(<8 x i8>* %A, <8 x i8>* %B) nounwind {
|
||||
;CHECK: vaddi8:
|
||||
;CHECK: vadd.i8
|
||||
%tmp1 = load <8 x i8>* %A
|
||||
%tmp2 = load <8 x i8>* %B
|
||||
%tmp3 = add <8 x i8> %tmp1, %tmp2
|
||||
@ -13,6 +10,8 @@ define <8 x i8> @vaddi8(<8 x i8>* %A, <8 x i8>* %B) nounwind {
|
||||
}
|
||||
|
||||
define <4 x i16> @vaddi16(<4 x i16>* %A, <4 x i16>* %B) nounwind {
|
||||
;CHECK: vaddi16:
|
||||
;CHECK: vadd.i16
|
||||
%tmp1 = load <4 x i16>* %A
|
||||
%tmp2 = load <4 x i16>* %B
|
||||
%tmp3 = add <4 x i16> %tmp1, %tmp2
|
||||
@ -20,6 +19,8 @@ define <4 x i16> @vaddi16(<4 x i16>* %A, <4 x i16>* %B) nounwind {
|
||||
}
|
||||
|
||||
define <2 x i32> @vaddi32(<2 x i32>* %A, <2 x i32>* %B) nounwind {
|
||||
;CHECK: vaddi32:
|
||||
;CHECK: vadd.i32
|
||||
%tmp1 = load <2 x i32>* %A
|
||||
%tmp2 = load <2 x i32>* %B
|
||||
%tmp3 = add <2 x i32> %tmp1, %tmp2
|
||||
@ -27,6 +28,8 @@ define <2 x i32> @vaddi32(<2 x i32>* %A, <2 x i32>* %B) nounwind {
|
||||
}
|
||||
|
||||
define <1 x i64> @vaddi64(<1 x i64>* %A, <1 x i64>* %B) nounwind {
|
||||
;CHECK: vaddi64:
|
||||
;CHECK: vadd.i64
|
||||
%tmp1 = load <1 x i64>* %A
|
||||
%tmp2 = load <1 x i64>* %B
|
||||
%tmp3 = add <1 x i64> %tmp1, %tmp2
|
||||
@ -34,6 +37,8 @@ define <1 x i64> @vaddi64(<1 x i64>* %A, <1 x i64>* %B) nounwind {
|
||||
}
|
||||
|
||||
define <2 x float> @vaddf32(<2 x float>* %A, <2 x float>* %B) nounwind {
|
||||
;CHECK: vaddf32:
|
||||
;CHECK: vadd.f32
|
||||
%tmp1 = load <2 x float>* %A
|
||||
%tmp2 = load <2 x float>* %B
|
||||
%tmp3 = add <2 x float> %tmp1, %tmp2
|
||||
@ -41,6 +46,8 @@ define <2 x float> @vaddf32(<2 x float>* %A, <2 x float>* %B) nounwind {
|
||||
}
|
||||
|
||||
define <16 x i8> @vaddQi8(<16 x i8>* %A, <16 x i8>* %B) nounwind {
|
||||
;CHECK: vaddQi8:
|
||||
;CHECK: vadd.i8
|
||||
%tmp1 = load <16 x i8>* %A
|
||||
%tmp2 = load <16 x i8>* %B
|
||||
%tmp3 = add <16 x i8> %tmp1, %tmp2
|
||||
@ -48,6 +55,8 @@ define <16 x i8> @vaddQi8(<16 x i8>* %A, <16 x i8>* %B) nounwind {
|
||||
}
|
||||
|
||||
define <8 x i16> @vaddQi16(<8 x i16>* %A, <8 x i16>* %B) nounwind {
|
||||
;CHECK: vaddQi16:
|
||||
;CHECK: vadd.i16
|
||||
%tmp1 = load <8 x i16>* %A
|
||||
%tmp2 = load <8 x i16>* %B
|
||||
%tmp3 = add <8 x i16> %tmp1, %tmp2
|
||||
@ -55,6 +64,8 @@ define <8 x i16> @vaddQi16(<8 x i16>* %A, <8 x i16>* %B) nounwind {
|
||||
}
|
||||
|
||||
define <4 x i32> @vaddQi32(<4 x i32>* %A, <4 x i32>* %B) nounwind {
|
||||
;CHECK: vaddQi32:
|
||||
;CHECK: vadd.i32
|
||||
%tmp1 = load <4 x i32>* %A
|
||||
%tmp2 = load <4 x i32>* %B
|
||||
%tmp3 = add <4 x i32> %tmp1, %tmp2
|
||||
@ -62,6 +73,8 @@ define <4 x i32> @vaddQi32(<4 x i32>* %A, <4 x i32>* %B) nounwind {
|
||||
}
|
||||
|
||||
define <2 x i64> @vaddQi64(<2 x i64>* %A, <2 x i64>* %B) nounwind {
|
||||
;CHECK: vaddQi64:
|
||||
;CHECK: vadd.i64
|
||||
%tmp1 = load <2 x i64>* %A
|
||||
%tmp2 = load <2 x i64>* %B
|
||||
%tmp3 = add <2 x i64> %tmp1, %tmp2
|
||||
@ -69,6 +82,8 @@ define <2 x i64> @vaddQi64(<2 x i64>* %A, <2 x i64>* %B) nounwind {
|
||||
}
|
||||
|
||||
define <4 x float> @vaddQf32(<4 x float>* %A, <4 x float>* %B) nounwind {
|
||||
;CHECK: vaddQf32:
|
||||
;CHECK: vadd.f32
|
||||
%tmp1 = load <4 x float>* %A
|
||||
%tmp2 = load <4 x float>* %B
|
||||
%tmp3 = add <4 x float> %tmp1, %tmp2
|
||||
|
@ -1,9 +1,8 @@
|
||||
; RUN: llvm-as < %s | llc -march=arm -mattr=+neon > %t
|
||||
; RUN: grep {vaddhn\\.i16} %t | count 1
|
||||
; RUN: grep {vaddhn\\.i32} %t | count 1
|
||||
; RUN: grep {vaddhn\\.i64} %t | count 1
|
||||
; RUN: llvm-as < %s | llc -march=arm -mattr=+neon | FileCheck %s
|
||||
|
||||
define <8 x i8> @vaddhni16(<8 x i16>* %A, <8 x i16>* %B) nounwind {
|
||||
;CHECK: vaddhni16:
|
||||
;CHECK: vaddhn.i16
|
||||
%tmp1 = load <8 x i16>* %A
|
||||
%tmp2 = load <8 x i16>* %B
|
||||
%tmp3 = call <8 x i8> @llvm.arm.neon.vaddhn.v8i8(<8 x i16> %tmp1, <8 x i16> %tmp2)
|
||||
@ -11,6 +10,8 @@ define <8 x i8> @vaddhni16(<8 x i16>* %A, <8 x i16>* %B) nounwind {
|
||||
}
|
||||
|
||||
define <4 x i16> @vaddhni32(<4 x i32>* %A, <4 x i32>* %B) nounwind {
|
||||
;CHECK: vaddhni32:
|
||||
;CHECK: vaddhn.i32
|
||||
%tmp1 = load <4 x i32>* %A
|
||||
%tmp2 = load <4 x i32>* %B
|
||||
%tmp3 = call <4 x i16> @llvm.arm.neon.vaddhn.v4i16(<4 x i32> %tmp1, <4 x i32> %tmp2)
|
||||
@ -18,6 +19,8 @@ define <4 x i16> @vaddhni32(<4 x i32>* %A, <4 x i32>* %B) nounwind {
|
||||
}
|
||||
|
||||
define <2 x i32> @vaddhni64(<2 x i64>* %A, <2 x i64>* %B) nounwind {
|
||||
;CHECK: vaddhni64:
|
||||
;CHECK: vaddhn.i64
|
||||
%tmp1 = load <2 x i64>* %A
|
||||
%tmp2 = load <2 x i64>* %B
|
||||
%tmp3 = call <2 x i32> @llvm.arm.neon.vaddhn.v2i32(<2 x i64> %tmp1, <2 x i64> %tmp2)
|
||||
|
@ -1,12 +1,8 @@
|
||||
; RUN: llvm-as < %s | llc -march=arm -mattr=+neon > %t
|
||||
; RUN: grep {vaddl\\.s8} %t | count 1
|
||||
; RUN: grep {vaddl\\.s16} %t | count 1
|
||||
; RUN: grep {vaddl\\.s32} %t | count 1
|
||||
; RUN: grep {vaddl\\.u8} %t | count 1
|
||||
; RUN: grep {vaddl\\.u16} %t | count 1
|
||||
; RUN: grep {vaddl\\.u32} %t | count 1
|
||||
; RUN: llvm-as < %s | llc -march=arm -mattr=+neon | FileCheck %s
|
||||
|
||||
define <8 x i16> @vaddls8(<8 x i8>* %A, <8 x i8>* %B) nounwind {
|
||||
;CHECK: vaddls8:
|
||||
;CHECK: vaddl.s8
|
||||
%tmp1 = load <8 x i8>* %A
|
||||
%tmp2 = load <8 x i8>* %B
|
||||
%tmp3 = call <8 x i16> @llvm.arm.neon.vaddls.v8i16(<8 x i8> %tmp1, <8 x i8> %tmp2)
|
||||
@ -14,6 +10,8 @@ define <8 x i16> @vaddls8(<8 x i8>* %A, <8 x i8>* %B) nounwind {
|
||||
}
|
||||
|
||||
define <4 x i32> @vaddls16(<4 x i16>* %A, <4 x i16>* %B) nounwind {
|
||||
;CHECK: vaddls16:
|
||||
;CHECK: vaddl.s16
|
||||
%tmp1 = load <4 x i16>* %A
|
||||
%tmp2 = load <4 x i16>* %B
|
||||
%tmp3 = call <4 x i32> @llvm.arm.neon.vaddls.v4i32(<4 x i16> %tmp1, <4 x i16> %tmp2)
|
||||
@ -21,6 +19,8 @@ define <4 x i32> @vaddls16(<4 x i16>* %A, <4 x i16>* %B) nounwind {
|
||||
}
|
||||
|
||||
define <2 x i64> @vaddls32(<2 x i32>* %A, <2 x i32>* %B) nounwind {
|
||||
;CHECK: vaddls32:
|
||||
;CHECK: vaddl.s32
|
||||
%tmp1 = load <2 x i32>* %A
|
||||
%tmp2 = load <2 x i32>* %B
|
||||
%tmp3 = call <2 x i64> @llvm.arm.neon.vaddls.v2i64(<2 x i32> %tmp1, <2 x i32> %tmp2)
|
||||
@ -28,6 +28,8 @@ define <2 x i64> @vaddls32(<2 x i32>* %A, <2 x i32>* %B) nounwind {
|
||||
}
|
||||
|
||||
define <8 x i16> @vaddlu8(<8 x i8>* %A, <8 x i8>* %B) nounwind {
|
||||
;CHECK: vaddlu8:
|
||||
;CHECK: vaddl.u8
|
||||
%tmp1 = load <8 x i8>* %A
|
||||
%tmp2 = load <8 x i8>* %B
|
||||
%tmp3 = call <8 x i16> @llvm.arm.neon.vaddlu.v8i16(<8 x i8> %tmp1, <8 x i8> %tmp2)
|
||||
@ -35,6 +37,8 @@ define <8 x i16> @vaddlu8(<8 x i8>* %A, <8 x i8>* %B) nounwind {
|
||||
}
|
||||
|
||||
define <4 x i32> @vaddlu16(<4 x i16>* %A, <4 x i16>* %B) nounwind {
|
||||
;CHECK: vaddlu16:
|
||||
;CHECK: vaddl.u16
|
||||
%tmp1 = load <4 x i16>* %A
|
||||
%tmp2 = load <4 x i16>* %B
|
||||
%tmp3 = call <4 x i32> @llvm.arm.neon.vaddlu.v4i32(<4 x i16> %tmp1, <4 x i16> %tmp2)
|
||||
@ -42,6 +46,8 @@ define <4 x i32> @vaddlu16(<4 x i16>* %A, <4 x i16>* %B) nounwind {
|
||||
}
|
||||
|
||||
define <2 x i64> @vaddlu32(<2 x i32>* %A, <2 x i32>* %B) nounwind {
|
||||
;CHECK: vaddlu32:
|
||||
;CHECK: vaddl.u32
|
||||
%tmp1 = load <2 x i32>* %A
|
||||
%tmp2 = load <2 x i32>* %B
|
||||
%tmp3 = call <2 x i64> @llvm.arm.neon.vaddlu.v2i64(<2 x i32> %tmp1, <2 x i32> %tmp2)
|
||||
|
@ -1,12 +1,8 @@
|
||||
; RUN: llvm-as < %s | llc -march=arm -mattr=+neon > %t
|
||||
; RUN: grep {vaddw\\.s8} %t | count 1
|
||||
; RUN: grep {vaddw\\.s16} %t | count 1
|
||||
; RUN: grep {vaddw\\.s32} %t | count 1
|
||||
; RUN: grep {vaddw\\.u8} %t | count 1
|
||||
; RUN: grep {vaddw\\.u16} %t | count 1
|
||||
; RUN: grep {vaddw\\.u32} %t | count 1
|
||||
; RUN: llvm-as < %s | llc -march=arm -mattr=+neon | FileCheck %s
|
||||
|
||||
define <8 x i16> @vaddws8(<8 x i16>* %A, <8 x i8>* %B) nounwind {
|
||||
;CHECK: vaddws8:
|
||||
;CHECK: vaddw.s8
|
||||
%tmp1 = load <8 x i16>* %A
|
||||
%tmp2 = load <8 x i8>* %B
|
||||
%tmp3 = call <8 x i16> @llvm.arm.neon.vaddws.v8i16(<8 x i16> %tmp1, <8 x i8> %tmp2)
|
||||
@ -14,6 +10,8 @@ define <8 x i16> @vaddws8(<8 x i16>* %A, <8 x i8>* %B) nounwind {
|
||||
}
|
||||
|
||||
define <4 x i32> @vaddws16(<4 x i32>* %A, <4 x i16>* %B) nounwind {
|
||||
;CHECK: vaddws16:
|
||||
;CHECK: vaddw.s16
|
||||
%tmp1 = load <4 x i32>* %A
|
||||
%tmp2 = load <4 x i16>* %B
|
||||
%tmp3 = call <4 x i32> @llvm.arm.neon.vaddws.v4i32(<4 x i32> %tmp1, <4 x i16> %tmp2)
|
||||
@ -21,6 +19,8 @@ define <4 x i32> @vaddws16(<4 x i32>* %A, <4 x i16>* %B) nounwind {
|
||||
}
|
||||
|
||||
define <2 x i64> @vaddws32(<2 x i64>* %A, <2 x i32>* %B) nounwind {
|
||||
;CHECK: vaddws32:
|
||||
;CHECK: vaddw.s32
|
||||
%tmp1 = load <2 x i64>* %A
|
||||
%tmp2 = load <2 x i32>* %B
|
||||
%tmp3 = call <2 x i64> @llvm.arm.neon.vaddws.v2i64(<2 x i64> %tmp1, <2 x i32> %tmp2)
|
||||
@ -28,6 +28,8 @@ define <2 x i64> @vaddws32(<2 x i64>* %A, <2 x i32>* %B) nounwind {
|
||||
}
|
||||
|
||||
define <8 x i16> @vaddwu8(<8 x i16>* %A, <8 x i8>* %B) nounwind {
|
||||
;CHECK: vaddwu8:
|
||||
;CHECK: vaddw.u8
|
||||
%tmp1 = load <8 x i16>* %A
|
||||
%tmp2 = load <8 x i8>* %B
|
||||
%tmp3 = call <8 x i16> @llvm.arm.neon.vaddwu.v8i16(<8 x i16> %tmp1, <8 x i8> %tmp2)
|
||||
@ -35,6 +37,8 @@ define <8 x i16> @vaddwu8(<8 x i16>* %A, <8 x i8>* %B) nounwind {
|
||||
}
|
||||
|
||||
define <4 x i32> @vaddwu16(<4 x i32>* %A, <4 x i16>* %B) nounwind {
|
||||
;CHECK: vaddwu16:
|
||||
;CHECK: vaddw.u16
|
||||
%tmp1 = load <4 x i32>* %A
|
||||
%tmp2 = load <4 x i16>* %B
|
||||
%tmp3 = call <4 x i32> @llvm.arm.neon.vaddwu.v4i32(<4 x i32> %tmp1, <4 x i16> %tmp2)
|
||||
@ -42,6 +46,8 @@ define <4 x i32> @vaddwu16(<4 x i32>* %A, <4 x i16>* %B) nounwind {
|
||||
}
|
||||
|
||||
define <2 x i64> @vaddwu32(<2 x i64>* %A, <2 x i32>* %B) nounwind {
|
||||
;CHECK: vaddwu32:
|
||||
;CHECK: vaddw.u32
|
||||
%tmp1 = load <2 x i64>* %A
|
||||
%tmp2 = load <2 x i32>* %B
|
||||
%tmp3 = call <2 x i64> @llvm.arm.neon.vaddwu.v2i64(<2 x i64> %tmp1, <2 x i32> %tmp2)
|
||||
|
@ -1,8 +1,8 @@
|
||||
; RUN: llvm-as < %s | llc -march=arm -mattr=+neon > %t
|
||||
; RUN: grep vand %t | count 8
|
||||
; Note: function names do not include "vand" to allow simple grep for opcodes
|
||||
; RUN: llvm-as < %s | llc -march=arm -mattr=+neon | FileCheck %s
|
||||
|
||||
define <8 x i8> @v_andi8(<8 x i8>* %A, <8 x i8>* %B) nounwind {
|
||||
;CHECK: v_andi8:
|
||||
;CHECK: vand
|
||||
%tmp1 = load <8 x i8>* %A
|
||||
%tmp2 = load <8 x i8>* %B
|
||||
%tmp3 = and <8 x i8> %tmp1, %tmp2
|
||||
@ -10,6 +10,8 @@ define <8 x i8> @v_andi8(<8 x i8>* %A, <8 x i8>* %B) nounwind {
|
||||
}
|
||||
|
||||
define <4 x i16> @v_andi16(<4 x i16>* %A, <4 x i16>* %B) nounwind {
|
||||
;CHECK: v_andi16:
|
||||
;CHECK: vand
|
||||
%tmp1 = load <4 x i16>* %A
|
||||
%tmp2 = load <4 x i16>* %B
|
||||
%tmp3 = and <4 x i16> %tmp1, %tmp2
|
||||
@ -17,6 +19,8 @@ define <4 x i16> @v_andi16(<4 x i16>* %A, <4 x i16>* %B) nounwind {
|
||||
}
|
||||
|
||||
define <2 x i32> @v_andi32(<2 x i32>* %A, <2 x i32>* %B) nounwind {
|
||||
;CHECK: v_andi32:
|
||||
;CHECK: vand
|
||||
%tmp1 = load <2 x i32>* %A
|
||||
%tmp2 = load <2 x i32>* %B
|
||||
%tmp3 = and <2 x i32> %tmp1, %tmp2
|
||||
@ -24,6 +28,8 @@ define <2 x i32> @v_andi32(<2 x i32>* %A, <2 x i32>* %B) nounwind {
|
||||
}
|
||||
|
||||
define <1 x i64> @v_andi64(<1 x i64>* %A, <1 x i64>* %B) nounwind {
|
||||
;CHECK: v_andi64:
|
||||
;CHECK: vand
|
||||
%tmp1 = load <1 x i64>* %A
|
||||
%tmp2 = load <1 x i64>* %B
|
||||
%tmp3 = and <1 x i64> %tmp1, %tmp2
|
||||
@ -31,6 +37,8 @@ define <1 x i64> @v_andi64(<1 x i64>* %A, <1 x i64>* %B) nounwind {
|
||||
}
|
||||
|
||||
define <16 x i8> @v_andQi8(<16 x i8>* %A, <16 x i8>* %B) nounwind {
|
||||
;CHECK: v_andQi8:
|
||||
;CHECK: vand
|
||||
%tmp1 = load <16 x i8>* %A
|
||||
%tmp2 = load <16 x i8>* %B
|
||||
%tmp3 = and <16 x i8> %tmp1, %tmp2
|
||||
@ -38,6 +46,8 @@ define <16 x i8> @v_andQi8(<16 x i8>* %A, <16 x i8>* %B) nounwind {
|
||||
}
|
||||
|
||||
define <8 x i16> @v_andQi16(<8 x i16>* %A, <8 x i16>* %B) nounwind {
|
||||
;CHECK: v_andQi16:
|
||||
;CHECK: vand
|
||||
%tmp1 = load <8 x i16>* %A
|
||||
%tmp2 = load <8 x i16>* %B
|
||||
%tmp3 = and <8 x i16> %tmp1, %tmp2
|
||||
@ -45,6 +55,8 @@ define <8 x i16> @v_andQi16(<8 x i16>* %A, <8 x i16>* %B) nounwind {
|
||||
}
|
||||
|
||||
define <4 x i32> @v_andQi32(<4 x i32>* %A, <4 x i32>* %B) nounwind {
|
||||
;CHECK: v_andQi32:
|
||||
;CHECK: vand
|
||||
%tmp1 = load <4 x i32>* %A
|
||||
%tmp2 = load <4 x i32>* %B
|
||||
%tmp3 = and <4 x i32> %tmp1, %tmp2
|
||||
@ -52,6 +64,8 @@ define <4 x i32> @v_andQi32(<4 x i32>* %A, <4 x i32>* %B) nounwind {
|
||||
}
|
||||
|
||||
define <2 x i64> @v_andQi64(<2 x i64>* %A, <2 x i64>* %B) nounwind {
|
||||
;CHECK: v_andQi64:
|
||||
;CHECK: vand
|
||||
%tmp1 = load <2 x i64>* %A
|
||||
%tmp2 = load <2 x i64>* %B
|
||||
%tmp3 = and <2 x i64> %tmp1, %tmp2
|
||||
|
@ -1,8 +1,8 @@
|
||||
; RUN: llvm-as < %s | llc -march=arm -mattr=+neon > %t
|
||||
; RUN: grep vbic %t | count 8
|
||||
; Note: function names do not include "vbic" to allow simple grep for opcodes
|
||||
; RUN: llvm-as < %s | llc -march=arm -mattr=+neon | FileCheck %s
|
||||
|
||||
define <8 x i8> @v_bici8(<8 x i8>* %A, <8 x i8>* %B) nounwind {
|
||||
;CHECK: v_bici8:
|
||||
;CHECK: vbic
|
||||
%tmp1 = load <8 x i8>* %A
|
||||
%tmp2 = load <8 x i8>* %B
|
||||
%tmp3 = xor <8 x i8> %tmp2, < i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1 >
|
||||
@ -11,6 +11,8 @@ define <8 x i8> @v_bici8(<8 x i8>* %A, <8 x i8>* %B) nounwind {
|
||||
}
|
||||
|
||||
define <4 x i16> @v_bici16(<4 x i16>* %A, <4 x i16>* %B) nounwind {
|
||||
;CHECK: v_bici16:
|
||||
;CHECK: vbic
|
||||
%tmp1 = load <4 x i16>* %A
|
||||
%tmp2 = load <4 x i16>* %B
|
||||
%tmp3 = xor <4 x i16> %tmp2, < i16 -1, i16 -1, i16 -1, i16 -1 >
|
||||
@ -19,6 +21,8 @@ define <4 x i16> @v_bici16(<4 x i16>* %A, <4 x i16>* %B) nounwind {
|
||||
}
|
||||
|
||||
define <2 x i32> @v_bici32(<2 x i32>* %A, <2 x i32>* %B) nounwind {
|
||||
;CHECK: v_bici32:
|
||||
;CHECK: vbic
|
||||
%tmp1 = load <2 x i32>* %A
|
||||
%tmp2 = load <2 x i32>* %B
|
||||
%tmp3 = xor <2 x i32> %tmp2, < i32 -1, i32 -1 >
|
||||
@ -27,6 +31,8 @@ define <2 x i32> @v_bici32(<2 x i32>* %A, <2 x i32>* %B) nounwind {
|
||||
}
|
||||
|
||||
define <1 x i64> @v_bici64(<1 x i64>* %A, <1 x i64>* %B) nounwind {
|
||||
;CHECK: v_bici64:
|
||||
;CHECK: vbic
|
||||
%tmp1 = load <1 x i64>* %A
|
||||
%tmp2 = load <1 x i64>* %B
|
||||
%tmp3 = xor <1 x i64> %tmp2, < i64 -1 >
|
||||
@ -35,6 +41,8 @@ define <1 x i64> @v_bici64(<1 x i64>* %A, <1 x i64>* %B) nounwind {
|
||||
}
|
||||
|
||||
define <16 x i8> @v_bicQi8(<16 x i8>* %A, <16 x i8>* %B) nounwind {
|
||||
;CHECK: v_bicQi8:
|
||||
;CHECK: vbic
|
||||
%tmp1 = load <16 x i8>* %A
|
||||
%tmp2 = load <16 x i8>* %B
|
||||
%tmp3 = xor <16 x i8> %tmp2, < i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1 >
|
||||
@ -43,6 +51,8 @@ define <16 x i8> @v_bicQi8(<16 x i8>* %A, <16 x i8>* %B) nounwind {
|
||||
}
|
||||
|
||||
define <8 x i16> @v_bicQi16(<8 x i16>* %A, <8 x i16>* %B) nounwind {
|
||||
;CHECK: v_bicQi16:
|
||||
;CHECK: vbic
|
||||
%tmp1 = load <8 x i16>* %A
|
||||
%tmp2 = load <8 x i16>* %B
|
||||
%tmp3 = xor <8 x i16> %tmp2, < i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1 >
|
||||
@ -51,6 +61,8 @@ define <8 x i16> @v_bicQi16(<8 x i16>* %A, <8 x i16>* %B) nounwind {
|
||||
}
|
||||
|
||||
define <4 x i32> @v_bicQi32(<4 x i32>* %A, <4 x i32>* %B) nounwind {
|
||||
;CHECK: v_bicQi32:
|
||||
;CHECK: vbic
|
||||
%tmp1 = load <4 x i32>* %A
|
||||
%tmp2 = load <4 x i32>* %B
|
||||
%tmp3 = xor <4 x i32> %tmp2, < i32 -1, i32 -1, i32 -1, i32 -1 >
|
||||
@ -59,6 +71,8 @@ define <4 x i32> @v_bicQi32(<4 x i32>* %A, <4 x i32>* %B) nounwind {
|
||||
}
|
||||
|
||||
define <2 x i64> @v_bicQi64(<2 x i64>* %A, <2 x i64>* %B) nounwind {
|
||||
;CHECK: v_bicQi64:
|
||||
;CHECK: vbic
|
||||
%tmp1 = load <2 x i64>* %A
|
||||
%tmp2 = load <2 x i64>* %B
|
||||
%tmp3 = xor <2 x i64> %tmp2, < i64 -1, i64 -1 >
|
||||
|
@ -1,8 +1,8 @@
|
||||
; RUN: llvm-as < %s | llc -march=arm -mattr=+neon > %t
|
||||
; RUN: grep vbsl %t | count 8
|
||||
; Note: function names do not include "vbsl" to allow simple grep for opcodes
|
||||
; RUN: llvm-as < %s | llc -march=arm -mattr=+neon | FileCheck %s
|
||||
|
||||
define <8 x i8> @v_bsli8(<8 x i8>* %A, <8 x i8>* %B, <8 x i8>* %C) nounwind {
|
||||
;CHECK: v_bsli8:
|
||||
;CHECK: vbsl
|
||||
%tmp1 = load <8 x i8>* %A
|
||||
%tmp2 = load <8 x i8>* %B
|
||||
%tmp3 = load <8 x i8>* %C
|
||||
@ -14,6 +14,8 @@ define <8 x i8> @v_bsli8(<8 x i8>* %A, <8 x i8>* %B, <8 x i8>* %C) nounwind {
|
||||
}
|
||||
|
||||
define <4 x i16> @v_bsli16(<4 x i16>* %A, <4 x i16>* %B, <4 x i16>* %C) nounwind {
|
||||
;CHECK: v_bsli16:
|
||||
;CHECK: vbsl
|
||||
%tmp1 = load <4 x i16>* %A
|
||||
%tmp2 = load <4 x i16>* %B
|
||||
%tmp3 = load <4 x i16>* %C
|
||||
@ -25,6 +27,8 @@ define <4 x i16> @v_bsli16(<4 x i16>* %A, <4 x i16>* %B, <4 x i16>* %C) nounwind
|
||||
}
|
||||
|
||||
define <2 x i32> @v_bsli32(<2 x i32>* %A, <2 x i32>* %B, <2 x i32>* %C) nounwind {
|
||||
;CHECK: v_bsli32:
|
||||
;CHECK: vbsl
|
||||
%tmp1 = load <2 x i32>* %A
|
||||
%tmp2 = load <2 x i32>* %B
|
||||
%tmp3 = load <2 x i32>* %C
|
||||
@ -36,6 +40,8 @@ define <2 x i32> @v_bsli32(<2 x i32>* %A, <2 x i32>* %B, <2 x i32>* %C) nounwind
|
||||
}
|
||||
|
||||
define <1 x i64> @v_bsli64(<1 x i64>* %A, <1 x i64>* %B, <1 x i64>* %C) nounwind {
|
||||
;CHECK: v_bsli64:
|
||||
;CHECK: vbsl
|
||||
%tmp1 = load <1 x i64>* %A
|
||||
%tmp2 = load <1 x i64>* %B
|
||||
%tmp3 = load <1 x i64>* %C
|
||||
@ -47,6 +53,8 @@ define <1 x i64> @v_bsli64(<1 x i64>* %A, <1 x i64>* %B, <1 x i64>* %C) nounwind
|
||||
}
|
||||
|
||||
define <16 x i8> @v_bslQi8(<16 x i8>* %A, <16 x i8>* %B, <16 x i8>* %C) nounwind {
|
||||
;CHECK: v_bslQi8:
|
||||
;CHECK: vbsl
|
||||
%tmp1 = load <16 x i8>* %A
|
||||
%tmp2 = load <16 x i8>* %B
|
||||
%tmp3 = load <16 x i8>* %C
|
||||
@ -58,6 +66,8 @@ define <16 x i8> @v_bslQi8(<16 x i8>* %A, <16 x i8>* %B, <16 x i8>* %C) nounwind
|
||||
}
|
||||
|
||||
define <8 x i16> @v_bslQi16(<8 x i16>* %A, <8 x i16>* %B, <8 x i16>* %C) nounwind {
|
||||
;CHECK: v_bslQi16:
|
||||
;CHECK: vbsl
|
||||
%tmp1 = load <8 x i16>* %A
|
||||
%tmp2 = load <8 x i16>* %B
|
||||
%tmp3 = load <8 x i16>* %C
|
||||
@ -69,6 +79,8 @@ define <8 x i16> @v_bslQi16(<8 x i16>* %A, <8 x i16>* %B, <8 x i16>* %C) nounwin
|
||||
}
|
||||
|
||||
define <4 x i32> @v_bslQi32(<4 x i32>* %A, <4 x i32>* %B, <4 x i32>* %C) nounwind {
|
||||
;CHECK: v_bslQi32:
|
||||
;CHECK: vbsl
|
||||
%tmp1 = load <4 x i32>* %A
|
||||
%tmp2 = load <4 x i32>* %B
|
||||
%tmp3 = load <4 x i32>* %C
|
||||
@ -80,6 +92,8 @@ define <4 x i32> @v_bslQi32(<4 x i32>* %A, <4 x i32>* %B, <4 x i32>* %C) nounwin
|
||||
}
|
||||
|
||||
define <2 x i64> @v_bslQi64(<2 x i64>* %A, <2 x i64>* %B, <2 x i64>* %C) nounwind {
|
||||
;CHECK: v_bslQi64:
|
||||
;CHECK: vbsl
|
||||
%tmp1 = load <2 x i64>* %A
|
||||
%tmp2 = load <2 x i64>* %B
|
||||
%tmp3 = load <2 x i64>* %C
|
||||
|
@ -1,10 +1,8 @@
|
||||
; RUN: llvm-as < %s | llc -march=arm -mattr=+neon > %t
|
||||
; RUN: grep {vceq\\.i8} %t | count 2
|
||||
; RUN: grep {vceq\\.i16} %t | count 2
|
||||
; RUN: grep {vceq\\.i32} %t | count 2
|
||||
; RUN: grep {vceq\\.f32} %t | count 2
|
||||
; RUN: llvm-as < %s | llc -march=arm -mattr=+neon | FileCheck %s
|
||||
|
||||
define <8 x i8> @vceqi8(<8 x i8>* %A, <8 x i8>* %B) nounwind {
|
||||
;CHECK: vceqi8:
|
||||
;CHECK: vceq.i8
|
||||
%tmp1 = load <8 x i8>* %A
|
||||
%tmp2 = load <8 x i8>* %B
|
||||
%tmp3 = icmp eq <8 x i8> %tmp1, %tmp2
|
||||
@ -13,6 +11,8 @@ define <8 x i8> @vceqi8(<8 x i8>* %A, <8 x i8>* %B) nounwind {
|
||||
}
|
||||
|
||||
define <4 x i16> @vceqi16(<4 x i16>* %A, <4 x i16>* %B) nounwind {
|
||||
;CHECK: vceqi16:
|
||||
;CHECK: vceq.i16
|
||||
%tmp1 = load <4 x i16>* %A
|
||||
%tmp2 = load <4 x i16>* %B
|
||||
%tmp3 = icmp eq <4 x i16> %tmp1, %tmp2
|
||||
@ -21,6 +21,8 @@ define <4 x i16> @vceqi16(<4 x i16>* %A, <4 x i16>* %B) nounwind {
|
||||
}
|
||||
|
||||
define <2 x i32> @vceqi32(<2 x i32>* %A, <2 x i32>* %B) nounwind {
|
||||
;CHECK: vceqi32:
|
||||
;CHECK: vceq.i32
|
||||
%tmp1 = load <2 x i32>* %A
|
||||
%tmp2 = load <2 x i32>* %B
|
||||
%tmp3 = icmp eq <2 x i32> %tmp1, %tmp2
|
||||
@ -29,6 +31,8 @@ define <2 x i32> @vceqi32(<2 x i32>* %A, <2 x i32>* %B) nounwind {
|
||||
}
|
||||
|
||||
define <2 x i32> @vceqf32(<2 x float>* %A, <2 x float>* %B) nounwind {
|
||||
;CHECK: vceqf32:
|
||||
;CHECK: vceq.f32
|
||||
%tmp1 = load <2 x float>* %A
|
||||
%tmp2 = load <2 x float>* %B
|
||||
%tmp3 = fcmp oeq <2 x float> %tmp1, %tmp2
|
||||
@ -37,6 +41,8 @@ define <2 x i32> @vceqf32(<2 x float>* %A, <2 x float>* %B) nounwind {
|
||||
}
|
||||
|
||||
define <16 x i8> @vceqQi8(<16 x i8>* %A, <16 x i8>* %B) nounwind {
|
||||
;CHECK: vceqQi8:
|
||||
;CHECK: vceq.i8
|
||||
%tmp1 = load <16 x i8>* %A
|
||||
%tmp2 = load <16 x i8>* %B
|
||||
%tmp3 = icmp eq <16 x i8> %tmp1, %tmp2
|
||||
@ -45,6 +51,8 @@ define <16 x i8> @vceqQi8(<16 x i8>* %A, <16 x i8>* %B) nounwind {
|
||||
}
|
||||
|
||||
define <8 x i16> @vceqQi16(<8 x i16>* %A, <8 x i16>* %B) nounwind {
|
||||
;CHECK: vceqQi16:
|
||||
;CHECK: vceq.i16
|
||||
%tmp1 = load <8 x i16>* %A
|
||||
%tmp2 = load <8 x i16>* %B
|
||||
%tmp3 = icmp eq <8 x i16> %tmp1, %tmp2
|
||||
@ -53,6 +61,8 @@ define <8 x i16> @vceqQi16(<8 x i16>* %A, <8 x i16>* %B) nounwind {
|
||||
}
|
||||
|
||||
define <4 x i32> @vceqQi32(<4 x i32>* %A, <4 x i32>* %B) nounwind {
|
||||
;CHECK: vceqQi32:
|
||||
;CHECK: vceq.i32
|
||||
%tmp1 = load <4 x i32>* %A
|
||||
%tmp2 = load <4 x i32>* %B
|
||||
%tmp3 = icmp eq <4 x i32> %tmp1, %tmp2
|
||||
@ -61,6 +71,8 @@ define <4 x i32> @vceqQi32(<4 x i32>* %A, <4 x i32>* %B) nounwind {
|
||||
}
|
||||
|
||||
define <4 x i32> @vceqQf32(<4 x float>* %A, <4 x float>* %B) nounwind {
|
||||
;CHECK: vceqQf32:
|
||||
;CHECK: vceq.f32
|
||||
%tmp1 = load <4 x float>* %A
|
||||
%tmp2 = load <4 x float>* %B
|
||||
%tmp3 = fcmp oeq <4 x float> %tmp1, %tmp2
|
||||
|
Loading…
Reference in New Issue
Block a user