forked from OSchip/llvm-project
				
			[InstCombine] add tests for copysign; NFC
This commit is contained in:
		
							parent
							
								
									d8a3194987
								
							
						
					
					
						commit
						c7492fbd4e
					
				| 
						 | 
					@ -1,6 +1,7 @@
 | 
				
			||||||
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
 | 
					; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
 | 
				
			||||||
; RUN: opt -S -instcombine < %s | FileCheck %s
 | 
					; RUN: opt -S -instcombine < %s | FileCheck %s
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					declare float @llvm.fabs.f32(float)
 | 
				
			||||||
declare float @llvm.copysign.f32(float, float)
 | 
					declare float @llvm.copysign.f32(float, float)
 | 
				
			||||||
declare <3 x double> @llvm.copysign.v3f64(<3 x double>, <3 x double>)
 | 
					declare <3 x double> @llvm.copysign.v3f64(<3 x double>, <3 x double>)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -41,3 +42,25 @@ define <3 x double> @negative_sign_arg_vec_splat(<3 x double> %x) {
 | 
				
			||||||
  %r = call fast <3 x double> @llvm.copysign.v3f64(<3 x double> %x, <3 x double> <double -42.0, double -42.0, double -42.0>)
 | 
					  %r = call fast <3 x double> @llvm.copysign.v3f64(<3 x double> %x, <3 x double> <double -42.0, double -42.0, double -42.0>)
 | 
				
			||||||
  ret <3 x double> %r
 | 
					  ret <3 x double> %r
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					define float @known_positive_sign_arg(float %x, float %y) {
 | 
				
			||||||
 | 
					; CHECK-LABEL: @known_positive_sign_arg(
 | 
				
			||||||
 | 
					; CHECK-NEXT:    [[FABS:%.*]] = call float @llvm.fabs.f32(float [[Y:%.*]])
 | 
				
			||||||
 | 
					; CHECK-NEXT:    [[R:%.*]] = call ninf float @llvm.copysign.f32(float [[X:%.*]], float [[FABS]])
 | 
				
			||||||
 | 
					; CHECK-NEXT:    ret float [[R]]
 | 
				
			||||||
 | 
					;
 | 
				
			||||||
 | 
					  %fabs = call float @llvm.fabs.f32(float %y)
 | 
				
			||||||
 | 
					  %r = call ninf float @llvm.copysign.f32(float %x, float %fabs)
 | 
				
			||||||
 | 
					  ret float %r
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					define <3 x double> @known_positive_sign_arg_vec(<3 x double> %x, <3 x i32> %y) {
 | 
				
			||||||
 | 
					; CHECK-LABEL: @known_positive_sign_arg_vec(
 | 
				
			||||||
 | 
					; CHECK-NEXT:    [[YF:%.*]] = uitofp <3 x i32> [[Y:%.*]] to <3 x double>
 | 
				
			||||||
 | 
					; CHECK-NEXT:    [[R:%.*]] = call arcp <3 x double> @llvm.copysign.v3f64(<3 x double> [[X:%.*]], <3 x double> [[YF]])
 | 
				
			||||||
 | 
					; CHECK-NEXT:    ret <3 x double> [[R]]
 | 
				
			||||||
 | 
					;
 | 
				
			||||||
 | 
					  %yf = uitofp <3 x i32> %y to <3 x double>
 | 
				
			||||||
 | 
					  %r = call arcp <3 x double> @llvm.copysign.v3f64(<3 x double> %x, <3 x double> %yf)
 | 
				
			||||||
 | 
					  ret <3 x double> %r
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue