mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-26 04:32:44 +01:00
e50338f5d0
Add andm, orm, xorm, eqvm, nndm, negm, pcvm, lzvm, and tovm intrinsic instructions, a few pseudo instructions to expand logical intrinsic using VM512, a mechnism to expand such pseudo instructions, and regression tests. Also, assign vector mask types and vector mask register classes correctly. This is required to use VM512 registers as function arguments. Reviewed By: simoll Differential Revision: https://reviews.llvm.org/D93093
34 lines
1.0 KiB
LLVM
34 lines
1.0 KiB
LLVM
; RUN: llc < %s -mtriple=ve -mattr=+vpu | FileCheck %s
|
|
|
|
;;; Test negate and vm intrinsic instructions
|
|
;;;
|
|
;;; Note:
|
|
;;; We test NNDM*mm and NNDM*yy instructions.
|
|
|
|
; Function Attrs: nounwind readnone
|
|
define fastcc <256 x i1> @nndm_mmm(<256 x i1> %0, <256 x i1> %1) {
|
|
; CHECK-LABEL: nndm_mmm:
|
|
; CHECK: # %bb.0:
|
|
; CHECK-NEXT: nndm %vm1, %vm1, %vm2
|
|
; CHECK-NEXT: b.l.t (, %s10)
|
|
%3 = tail call <256 x i1> @llvm.ve.vl.nndm.mmm(<256 x i1> %0, <256 x i1> %1)
|
|
ret <256 x i1> %3
|
|
}
|
|
|
|
; Function Attrs: nounwind readnone
|
|
declare <256 x i1> @llvm.ve.vl.nndm.mmm(<256 x i1>, <256 x i1>)
|
|
|
|
; Function Attrs: nounwind readnone
|
|
define fastcc <512 x i1> @nndm_MMM(<512 x i1> %0, <512 x i1> %1) {
|
|
; CHECK-LABEL: nndm_MMM:
|
|
; CHECK: # %bb.0:
|
|
; CHECK-NEXT: nndm %vm2, %vm2, %vm4
|
|
; CHECK-NEXT: nndm %vm3, %vm3, %vm5
|
|
; CHECK-NEXT: b.l.t (, %s10)
|
|
%3 = tail call <512 x i1> @llvm.ve.vl.nndm.MMM(<512 x i1> %0, <512 x i1> %1)
|
|
ret <512 x i1> %3
|
|
}
|
|
|
|
; Function Attrs: nounwind readnone
|
|
declare <512 x i1> @llvm.ve.vl.nndm.MMM(<512 x i1>, <512 x i1>)
|