
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
22 lines
574 B
LLVM
22 lines
574 B
LLVM
; RUN: llc < %s -mtriple=ve -mattr=+vpu | FileCheck %s
|
|
|
|
;;; Test leading zero of vm intrinsic instructions
|
|
;;;
|
|
;;; Note:
|
|
;;; We test LZVM*ml instruction.
|
|
|
|
; Function Attrs: nounwind readnone
|
|
define fastcc i64 @lzvm_sml(<256 x i1> %0) {
|
|
; CHECK-LABEL: lzvm_sml:
|
|
; CHECK: # %bb.0:
|
|
; CHECK-NEXT: lea %s0, 256
|
|
; CHECK-NEXT: lvl %s0
|
|
; CHECK-NEXT: lzvm %s0, %vm1
|
|
; CHECK-NEXT: b.l.t (, %s10)
|
|
%2 = tail call i64 @llvm.ve.vl.lzvm.sml(<256 x i1> %0, i32 256)
|
|
ret i64 %2
|
|
}
|
|
|
|
; Function Attrs: nounwind readnone
|
|
declare i64 @llvm.ve.vl.lzvm.sml(<256 x i1>, i32)
|