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> {
 | 
			
		||||
  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),
 | 
			
		||||
                     (ins RRegu16:$a, RRegu16:$b),
 | 
			
		||||
                     !strconcat(opcstr, ".b16\t$d, $a, $b"),
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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…
	
		Reference in New Issue