You've already forked linux-packaging-mono
							
							
		
			
	
	
		
			40 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			LLVM
		
	
	
	
	
	
		
		
			
		
	
	
			40 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			LLVM
		
	
	
	
	
	
|   | ; RUN: opt < %s -instcombine -S | FileCheck %s
 | ||
|  | 
 | ||
|  | define i64 @cmpxchg_0(i64* %ptr, i64 %compare, i64 %new_value) { | ||
|  | ; CHECK-LABEL: @cmpxchg_0(
 | ||
|  | ; CHECK-NEXT:    %tmp0 = cmpxchg i64* %ptr, i64 %compare, i64 %new_value seq_cst seq_cst
 | ||
|  | ; CHECK-NEXT:    %tmp2 = extractvalue { i64, i1 } %tmp0, 0
 | ||
|  | ; CHECK-NEXT:    ret i64 %tmp2
 | ||
|  | ;
 | ||
|  |   %tmp0 = cmpxchg i64* %ptr, i64 %compare, i64 %new_value seq_cst seq_cst | ||
|  |   %tmp1 = extractvalue { i64, i1 } %tmp0, 1 | ||
|  |   %tmp2 = extractvalue { i64, i1 } %tmp0, 0 | ||
|  |   %tmp3 = select i1 %tmp1, i64 %compare, i64 %tmp2 | ||
|  |   ret i64 %tmp3 | ||
|  | } | ||
|  | 
 | ||
|  | define i64 @cmpxchg_1(i64* %ptr, i64 %compare, i64 %new_value) { | ||
|  | ; CHECK-LABEL: @cmpxchg_1(
 | ||
|  | ; CHECK-NEXT:    %tmp0 = cmpxchg i64* %ptr, i64 %compare, i64 %new_value seq_cst seq_cst
 | ||
|  | ; CHECK-NEXT:    ret i64 %compare
 | ||
|  | ;
 | ||
|  |   %tmp0 = cmpxchg i64* %ptr, i64 %compare, i64 %new_value seq_cst seq_cst | ||
|  |   %tmp1 = extractvalue { i64, i1 } %tmp0, 1 | ||
|  |   %tmp2 = extractvalue { i64, i1 } %tmp0, 0 | ||
|  |   %tmp3 = select i1 %tmp1, i64 %tmp2, i64 %compare | ||
|  |   ret i64 %tmp3 | ||
|  | } | ||
|  | 
 | ||
|  | define i64 @cmpxchg_2(i64* %ptr, i64 %compare, i64 %new_value) { | ||
|  | ; CHECK-LABEL: @cmpxchg_2(
 | ||
|  | ; CHECK-NEXT:    %tmp0 = cmpxchg i64* %ptr, i64 %compare, i64 %new_value acq_rel monotonic
 | ||
|  | ; CHECK-NEXT:    ret i64 %compare
 | ||
|  | ;
 | ||
|  |   %tmp0 = cmpxchg i64* %ptr, i64 %compare, i64 %new_value acq_rel monotonic | ||
|  |   %tmp1 = extractvalue { i64, i1 } %tmp0, 1 | ||
|  |   %tmp2 = extractvalue { i64, i1 } %tmp0, 0 | ||
|  |   %tmp3 = select i1 %tmp1, i64 %compare, i64 %tmp2 | ||
|  |   %tmp4 = select i1 %tmp1, i64 %tmp3, i64 %compare | ||
|  |   ret i64 %tmp4 | ||
|  | } |