mirror of
https://github.com/RPCSX/llvm.git
synced 2025-01-18 02:16:43 +00:00
38caf19333
Currently we have a number of tests that fail with -verify-machineinstrs. To detect this cases earlier we add the option to the testcases with the exception of tests that will currently fail with this option. PR 27456 keeps track of this failures. No code review, as discussed with Hal Finkel. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277624 91177308-0d34-0410-b5e6-96231b3b80d8
84 lines
2.5 KiB
LLVM
84 lines
2.5 KiB
LLVM
; RUN: llc -verify-machineinstrs -O2 -mcpu=pwr8 -mtriple=powerpc64le-unknown-unknown < %s | FileCheck %s
|
|
|
|
; Function Attrs: norecurse nounwind
|
|
define void @test1(float* noalias nocapture %a, i32* noalias nocapture readonly %b, i32* nocapture readnone %c, i32 signext %n) #0 {
|
|
|
|
; CHECK-LABEL: test1
|
|
|
|
entry:
|
|
%idxprom = sext i32 %n to i64
|
|
%arrayidx = getelementptr inbounds i32, i32* %b, i64 %idxprom
|
|
%0 = load i32, i32* %arrayidx, align 4, !tbaa !1
|
|
%conv = sitofp i32 %0 to float
|
|
%mul = fmul float %conv, 0x4002916880000000
|
|
%arrayidx2 = getelementptr inbounds float, float* %a, i64 %idxprom
|
|
store float %mul, float* %arrayidx2, align 4, !tbaa !5
|
|
ret void
|
|
|
|
; CHECK-NOT: mtvsrwa
|
|
; CHECK-NOT: mtfprwa
|
|
; CHECK: lxsiwax [[REG:[0-9]+]], {{.*}}
|
|
; CHECK-NOT: mtvsrwa
|
|
; CHECK-NOT: mtfprwa
|
|
; CHECK: xscvsxdsp {{.*}}, [[REG]]
|
|
; CHECK-NOT: mtvsrwa
|
|
; CHECK-NOT: mtfprwa
|
|
; CHECK: blr
|
|
|
|
}
|
|
|
|
; Function Attrs: norecurse nounwind readonly
|
|
define float @test2(i32* nocapture readonly %b) #0 {
|
|
|
|
; CHECK-LABEL: test2
|
|
|
|
entry:
|
|
%0 = load i32, i32* %b, align 4, !tbaa !1
|
|
%conv = sitofp i32 %0 to float
|
|
%mul = fmul float %conv, 0x40030A3D80000000
|
|
ret float %mul
|
|
|
|
; CHECK-NOT: mtvsrwa
|
|
; CHECK-NOT: mtfprwa
|
|
; CHECK: lxsiwax [[REG:[0-9]+]], {{.*}}
|
|
; CHECK-NOT: mtvsrwa
|
|
; CHECK-NOT: mtfprwa
|
|
; CHECK: xscvsxdsp {{.*}}, [[REG]]
|
|
; CHECK-NOT: mtvsrwa
|
|
; CHECK-NOT: mtfprwa
|
|
; CHECK: blr
|
|
|
|
}
|
|
|
|
; Function Attrs: norecurse nounwind
|
|
define void @test3(float* noalias nocapture %a, i32* noalias nocapture readonly %b, i32* noalias nocapture %c, i32 signext %n) #0 {
|
|
|
|
; CHECK-LABEL: test3
|
|
|
|
entry:
|
|
%idxprom = sext i32 %n to i64
|
|
%arrayidx = getelementptr inbounds i32, i32* %b, i64 %idxprom
|
|
%0 = load i32, i32* %arrayidx, align 4, !tbaa !1
|
|
%conv = sitofp i32 %0 to float
|
|
%mul = fmul float %conv, 0x4002916880000000
|
|
%arrayidx2 = getelementptr inbounds float, float* %a, i64 %idxprom
|
|
store float %mul, float* %arrayidx2, align 4, !tbaa !5
|
|
%arrayidx6 = getelementptr inbounds i32, i32* %c, i64 %idxprom
|
|
%1 = load i32, i32* %arrayidx6, align 4, !tbaa !1
|
|
%add = add nsw i32 %1, %0
|
|
store i32 %add, i32* %arrayidx6, align 4, !tbaa !1
|
|
ret void
|
|
|
|
; CHECK: mtvsrwa
|
|
; CHECK: blr
|
|
|
|
}
|
|
|
|
!0 = !{!"clang version 3.9.0 (http://llvm.org/git/clang.git b88a395e7ba26c0fb96cd99a2a004d76f4f41d0c) (http://llvm.org/git/llvm.git 1ac3fbac0f5b037c17c0b0f9d271c32c4d7ca1b5)"}
|
|
!1 = !{!2, !2, i64 0}
|
|
!2 = !{!"int", !3, i64 0}
|
|
!3 = !{!"omnipotent char", !4, i64 0}
|
|
!4 = !{!"Simple C++ TBAA"}
|
|
!5 = !{!6, !6, i64 0}
|
|
!6 = !{!"float", !3, i64 0}
|