mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-01-24 18:20:38 +00:00
PTX: support for bitwise operations on predicates
- selection of bitwise preds (AND, OR, XOR) - new bitwise.ll test Patch by Dan Bailey llvm-svn: 130353
This commit is contained in:
parent
638f0eb116
commit
18e6ac83ea
@ -258,6 +258,14 @@ multiclass INT3<string opcstr, SDNode opnode> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
multiclass PTX_LOGIC<string opcstr, SDNode opnode> {
|
multiclass PTX_LOGIC<string opcstr, SDNode opnode> {
|
||||||
|
def ripreds : InstPTX<(outs Preds:$d),
|
||||||
|
(ins Preds:$a, i1imm:$b),
|
||||||
|
!strconcat(opcstr, ".pred\t$d, $a, $b"),
|
||||||
|
[(set Preds:$d, (opnode Preds:$a, imm:$b))]>;
|
||||||
|
def rrpreds : InstPTX<(outs Preds:$d),
|
||||||
|
(ins Preds:$a, Preds:$b),
|
||||||
|
!strconcat(opcstr, ".pred\t$d, $a, $b"),
|
||||||
|
[(set Preds:$d, (opnode Preds:$a, Preds:$b))]>;
|
||||||
def rr16 : InstPTX<(outs RRegu16:$d),
|
def rr16 : InstPTX<(outs RRegu16:$d),
|
||||||
(ins RRegu16:$a, RRegu16:$b),
|
(ins RRegu16:$a, RRegu16:$b),
|
||||||
!strconcat(opcstr, ".b16\t$d, $a, $b"),
|
!strconcat(opcstr, ".b16\t$d, $a, $b"),
|
||||||
|
24
llvm/test/CodeGen/PTX/bitwise.ll
Normal file
24
llvm/test/CodeGen/PTX/bitwise.ll
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
; RUN: llc < %s -march=ptx32 | FileCheck %s
|
||||||
|
|
||||||
|
; preds
|
||||||
|
|
||||||
|
define ptx_device i32 @t1_and_preds(i1 %x, i1 %y) {
|
||||||
|
; CHECK: and.pred p0, p1, p2
|
||||||
|
%c = and i1 %x, %y
|
||||||
|
%d = zext i1 %c to i32
|
||||||
|
ret i32 %d
|
||||||
|
}
|
||||||
|
|
||||||
|
define ptx_device i32 @t1_or_preds(i1 %x, i1 %y) {
|
||||||
|
; CHECK: or.pred p0, p1, p2
|
||||||
|
%a = or i1 %x, %y
|
||||||
|
%b = zext i1 %a to i32
|
||||||
|
ret i32 %b
|
||||||
|
}
|
||||||
|
|
||||||
|
define ptx_device i32 @t1_xor_preds(i1 %x, i1 %y) {
|
||||||
|
; CHECK: xor.pred p0, p1, p2
|
||||||
|
%a = xor i1 %x, %y
|
||||||
|
%b = zext i1 %a to i32
|
||||||
|
ret i32 %b
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user