mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-02-01 05:01:59 +01:00
a24a01e0c1
A set of function attributes is required in any function that uses constrained floating point intrinsics. None of our tests use these attributes. This patch fixes this. These tests have been tested against the IR verifier changes in D68233. Reviewed by: andrew.w.kaylor, cameron.mcinally, uweigand Approved by: andrew.w.kaylor Differential Revision: https://reviews.llvm.org/D67925 llvm-svn: 373761
31 lines
1.2 KiB
LLVM
31 lines
1.2 KiB
LLVM
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
|
; Test that the memcpy library call simplifier works correctly.
|
|
;
|
|
; RUN: opt < %s -instcombine -S | FileCheck %s
|
|
|
|
target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128"
|
|
|
|
declare i8* @memcpy(i8*, i8*, i32)
|
|
|
|
; Check memcpy(mem1, mem2, size) -> llvm.memcpy(mem1, mem2, size, 1).
|
|
|
|
define i8* @test_simplify1(i8* %mem1, i8* %mem2, i32 %size) {
|
|
; CHECK-LABEL: @test_simplify1(
|
|
; CHECK-NEXT: call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 [[MEM1:%.*]], i8* align 1 [[MEM2:%.*]], i32 [[SIZE:%.*]], i1 false)
|
|
; CHECK-NEXT: ret i8* [[MEM1]]
|
|
;
|
|
%ret = call i8* @memcpy(i8* %mem1, i8* %mem2, i32 %size)
|
|
ret i8* %ret
|
|
}
|
|
|
|
; Verify that the strictfp attr doesn't block this optimization.
|
|
|
|
define i8* @test_simplify2(i8* %mem1, i8* %mem2, i32 %size) strictfp {
|
|
; CHECK-LABEL: @test_simplify2(
|
|
; CHECK-NEXT: call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 [[MEM1:%.*]], i8* align 1 [[MEM2:%.*]], i32 [[SIZE:%.*]], i1 false)
|
|
; CHECK-NEXT: ret i8* [[MEM1]]
|
|
;
|
|
%ret = call i8* @memcpy(i8* %mem1, i8* %mem2, i32 %size) strictfp
|
|
ret i8* %ret
|
|
}
|