mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-02-13 08:54:59 +00:00
[InstCombine] regenerate test checks; NFC
llvm-svn: 364437
This commit is contained in:
parent
cbae954577
commit
6b85a0ac5c
@ -1,11 +1,12 @@
|
||||
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
||||
; RUN: opt -instcombine -S < %s | FileCheck %s
|
||||
|
||||
; CHECK-LABEL: good1
|
||||
; CHECK: %[[INS:.*]] = insertelement <4 x float> undef, float %arg, i32 0
|
||||
; CHECK-NEXT: %[[BCAST:.*]] = shufflevector <4 x float> %[[INS]], <4 x float> undef, <4 x i32> zeroinitializer
|
||||
; CHECK-NEXT: ret <4 x float> %[[BCAST]]
|
||||
define <4 x float> @good1(float %arg) {
|
||||
; CHECK-LABEL: @good1(
|
||||
; CHECK-NEXT: [[TMP:%.*]] = insertelement <4 x float> undef, float [[ARG:%.*]], i32 0
|
||||
; CHECK-NEXT: [[TMP6:%.*]] = shufflevector <4 x float> [[TMP]], <4 x float> undef, <4 x i32> zeroinitializer
|
||||
; CHECK-NEXT: ret <4 x float> [[TMP6]]
|
||||
;
|
||||
%tmp = insertelement <4 x float> undef, float %arg, i32 0
|
||||
%tmp4 = insertelement <4 x float> %tmp, float %arg, i32 1
|
||||
%tmp5 = insertelement <4 x float> %tmp4, float %arg, i32 2
|
||||
@ -13,11 +14,12 @@ define <4 x float> @good1(float %arg) {
|
||||
ret <4 x float> %tmp6
|
||||
}
|
||||
|
||||
; CHECK-LABEL: good2
|
||||
; CHECK: %[[INS:.*]] = insertelement <4 x float> undef, float %arg, i32 0
|
||||
; CHECK-NEXT: %[[BCAST:.*]] = shufflevector <4 x float> %[[INS]], <4 x float> undef, <4 x i32> zeroinitializer
|
||||
; CHECK-NEXT: ret <4 x float> %[[BCAST]]
|
||||
define <4 x float> @good2(float %arg) {
|
||||
; CHECK-LABEL: @good2(
|
||||
; CHECK-NEXT: [[TMP1:%.*]] = insertelement <4 x float> undef, float [[ARG:%.*]], i32 0
|
||||
; CHECK-NEXT: [[TMP6:%.*]] = shufflevector <4 x float> [[TMP1]], <4 x float> undef, <4 x i32> zeroinitializer
|
||||
; CHECK-NEXT: ret <4 x float> [[TMP6]]
|
||||
;
|
||||
%tmp = insertelement <4 x float> undef, float %arg, i32 1
|
||||
%tmp4 = insertelement <4 x float> %tmp, float %arg, i32 2
|
||||
%tmp5 = insertelement <4 x float> %tmp4, float %arg, i32 0
|
||||
@ -25,11 +27,12 @@ define <4 x float> @good2(float %arg) {
|
||||
ret <4 x float> %tmp6
|
||||
}
|
||||
|
||||
; CHECK-LABEL: good3
|
||||
; CHECK: %[[INS:.*]] = insertelement <4 x float> undef, float %arg, i32 0
|
||||
; CHECK-NEXT: %[[BCAST:.*]] = shufflevector <4 x float> %[[INS]], <4 x float> undef, <4 x i32> zeroinitializer
|
||||
; CHECK-NEXT: ret <4 x float> %[[BCAST]]
|
||||
define <4 x float> @good3(float %arg) {
|
||||
; CHECK-LABEL: @good3(
|
||||
; CHECK-NEXT: [[TMP:%.*]] = insertelement <4 x float> undef, float [[ARG:%.*]], i32 0
|
||||
; CHECK-NEXT: [[TMP6:%.*]] = shufflevector <4 x float> [[TMP]], <4 x float> undef, <4 x i32> zeroinitializer
|
||||
; CHECK-NEXT: ret <4 x float> [[TMP6]]
|
||||
;
|
||||
%tmp = insertelement <4 x float> zeroinitializer, float %arg, i32 0
|
||||
%tmp4 = insertelement <4 x float> %tmp, float %arg, i32 1
|
||||
%tmp5 = insertelement <4 x float> %tmp4, float %arg, i32 2
|
||||
@ -37,12 +40,13 @@ define <4 x float> @good3(float %arg) {
|
||||
ret <4 x float> %tmp6
|
||||
}
|
||||
|
||||
; CHECK-LABEL: good4
|
||||
; CHECK: %[[INS:.*]] = insertelement <4 x float> undef, float %arg, i32 0
|
||||
; CHECK-NEXT: %[[ADD:.*]] = fadd <4 x float> %[[INS]], %[[INS]]
|
||||
; CHECK-NEXT: %[[BCAST:.*]] = shufflevector <4 x float> %[[ADD]], <4 x float> undef, <4 x i32> zeroinitializer
|
||||
; CHECK-NEXT: ret <4 x float> %[[BCAST]]
|
||||
define <4 x float> @good4(float %arg) {
|
||||
; CHECK-LABEL: @good4(
|
||||
; CHECK-NEXT: [[TMP:%.*]] = insertelement <4 x float> undef, float [[ARG:%.*]], i32 0
|
||||
; CHECK-NEXT: [[TMP1:%.*]] = fadd <4 x float> [[TMP]], [[TMP]]
|
||||
; CHECK-NEXT: [[TMP7:%.*]] = shufflevector <4 x float> [[TMP1]], <4 x float> undef, <4 x i32> zeroinitializer
|
||||
; CHECK-NEXT: ret <4 x float> [[TMP7]]
|
||||
;
|
||||
%tmp = insertelement <4 x float> zeroinitializer, float %arg, i32 0
|
||||
%tmp4 = insertelement <4 x float> %tmp, float %arg, i32 1
|
||||
%tmp5 = insertelement <4 x float> %tmp4, float %arg, i32 2
|
||||
@ -51,13 +55,14 @@ define <4 x float> @good4(float %arg) {
|
||||
ret <4 x float> %tmp7
|
||||
}
|
||||
|
||||
; CHECK-LABEL: @good5(
|
||||
; CHECK-NEXT: %ins1 = insertelement <4 x float> undef, float %v, i32 0
|
||||
; CHECK-NEXT: %a1 = fadd <4 x float> %ins1, %ins1
|
||||
; CHECK-NEXT: %ins4 = shufflevector <4 x float> %ins1, <4 x float> undef, <4 x i32> zeroinitializer
|
||||
; CHECK-NEXT: %res = fadd <4 x float> %a1, %ins4
|
||||
; CHECK-NEXT: ret <4 x float> %res
|
||||
define <4 x float> @good5(float %v) {
|
||||
; CHECK-LABEL: @good5(
|
||||
; CHECK-NEXT: [[INS1:%.*]] = insertelement <4 x float> undef, float [[V:%.*]], i32 0
|
||||
; CHECK-NEXT: [[A1:%.*]] = fadd <4 x float> [[INS1]], [[INS1]]
|
||||
; CHECK-NEXT: [[INS4:%.*]] = shufflevector <4 x float> [[INS1]], <4 x float> undef, <4 x i32> zeroinitializer
|
||||
; CHECK-NEXT: [[RES:%.*]] = fadd <4 x float> [[A1]], [[INS4]]
|
||||
; CHECK-NEXT: ret <4 x float> [[RES]]
|
||||
;
|
||||
%ins1 = insertelement <4 x float> undef, float %v, i32 0
|
||||
%a1 = fadd <4 x float> %ins1, %ins1
|
||||
%ins2 = insertelement<4 x float> %ins1, float %v, i32 1
|
||||
@ -67,9 +72,13 @@ define <4 x float> @good5(float %v) {
|
||||
ret <4 x float> %res
|
||||
}
|
||||
|
||||
; CHECK-LABEL: bad1
|
||||
; CHECK-NOT: shufflevector
|
||||
define <4 x float> @bad1(float %arg) {
|
||||
; CHECK-LABEL: @bad1(
|
||||
; CHECK-NEXT: [[TMP4:%.*]] = insertelement <4 x float> undef, float [[ARG:%.*]], i32 1
|
||||
; CHECK-NEXT: [[TMP5:%.*]] = insertelement <4 x float> [[TMP4]], float [[ARG]], i32 2
|
||||
; CHECK-NEXT: [[TMP6:%.*]] = insertelement <4 x float> [[TMP5]], float [[ARG]], i32 3
|
||||
; CHECK-NEXT: ret <4 x float> [[TMP6]]
|
||||
;
|
||||
%tmp = insertelement <4 x float> undef, float %arg, i32 1
|
||||
%tmp4 = insertelement <4 x float> %tmp, float %arg, i32 1
|
||||
%tmp5 = insertelement <4 x float> %tmp4, float %arg, i32 2
|
||||
@ -77,18 +86,27 @@ define <4 x float> @bad1(float %arg) {
|
||||
ret <4 x float> %tmp6
|
||||
}
|
||||
|
||||
; CHECK-LABEL: bad2
|
||||
; CHECK-NOT: shufflevector
|
||||
define <4 x float> @bad2(float %arg) {
|
||||
; CHECK-LABEL: @bad2(
|
||||
; CHECK-NEXT: [[TMP:%.*]] = insertelement <4 x float> undef, float [[ARG:%.*]], i32 0
|
||||
; CHECK-NEXT: [[TMP5:%.*]] = insertelement <4 x float> [[TMP]], float [[ARG]], i32 2
|
||||
; CHECK-NEXT: [[TMP6:%.*]] = insertelement <4 x float> [[TMP5]], float [[ARG]], i32 3
|
||||
; CHECK-NEXT: ret <4 x float> [[TMP6]]
|
||||
;
|
||||
%tmp = insertelement <4 x float> undef, float %arg, i32 0
|
||||
%tmp5 = insertelement <4 x float> %tmp, float %arg, i32 2
|
||||
%tmp6 = insertelement <4 x float> %tmp5, float %arg, i32 3
|
||||
ret <4 x float> %tmp6
|
||||
}
|
||||
|
||||
; CHECK-LABEL: bad3
|
||||
; CHECK-NOT: shufflevector
|
||||
define <4 x float> @bad3(float %arg, float %arg2) {
|
||||
; CHECK-LABEL: @bad3(
|
||||
; CHECK-NEXT: [[TMP:%.*]] = insertelement <4 x float> undef, float [[ARG:%.*]], i32 0
|
||||
; CHECK-NEXT: [[TMP4:%.*]] = insertelement <4 x float> [[TMP]], float [[ARG2:%.*]], i32 1
|
||||
; CHECK-NEXT: [[TMP5:%.*]] = insertelement <4 x float> [[TMP4]], float [[ARG]], i32 2
|
||||
; CHECK-NEXT: [[TMP6:%.*]] = insertelement <4 x float> [[TMP5]], float [[ARG]], i32 3
|
||||
; CHECK-NEXT: ret <4 x float> [[TMP6]]
|
||||
;
|
||||
%tmp = insertelement <4 x float> undef, float %arg, i32 0
|
||||
%tmp4 = insertelement <4 x float> %tmp, float %arg2, i32 1
|
||||
%tmp5 = insertelement <4 x float> %tmp4, float %arg, i32 2
|
||||
@ -96,16 +114,24 @@ define <4 x float> @bad3(float %arg, float %arg2) {
|
||||
ret <4 x float> %tmp6
|
||||
}
|
||||
|
||||
; CHECK-LABEL: bad4
|
||||
; CHECK-NOT: shufflevector
|
||||
define <1 x float> @bad4(float %arg) {
|
||||
; CHECK-LABEL: @bad4(
|
||||
; CHECK-NEXT: [[TMP:%.*]] = insertelement <1 x float> undef, float [[ARG:%.*]], i32 0
|
||||
; CHECK-NEXT: ret <1 x float> [[TMP]]
|
||||
;
|
||||
%tmp = insertelement <1 x float> undef, float %arg, i32 0
|
||||
ret <1 x float> %tmp
|
||||
}
|
||||
|
||||
; CHECK-LABEL: bad5
|
||||
; CHECK-NOT: shufflevector
|
||||
define <4 x float> @bad5(float %arg) {
|
||||
; CHECK-LABEL: @bad5(
|
||||
; CHECK-NEXT: [[TMP:%.*]] = insertelement <4 x float> undef, float [[ARG:%.*]], i32 0
|
||||
; CHECK-NEXT: [[TMP4:%.*]] = insertelement <4 x float> [[TMP]], float [[ARG]], i32 1
|
||||
; CHECK-NEXT: [[TMP5:%.*]] = insertelement <4 x float> [[TMP4]], float [[ARG]], i32 2
|
||||
; CHECK-NEXT: [[TMP6:%.*]] = insertelement <4 x float> [[TMP5]], float [[ARG]], i32 3
|
||||
; CHECK-NEXT: [[TMP7:%.*]] = fadd <4 x float> [[TMP6]], [[TMP4]]
|
||||
; CHECK-NEXT: ret <4 x float> [[TMP7]]
|
||||
;
|
||||
%tmp = insertelement <4 x float> undef, float %arg, i32 0
|
||||
%tmp4 = insertelement <4 x float> %tmp, float %arg, i32 1
|
||||
%tmp5 = insertelement <4 x float> %tmp4, float %arg, i32 2
|
||||
@ -114,9 +140,14 @@ define <4 x float> @bad5(float %arg) {
|
||||
ret <4 x float> %tmp7
|
||||
}
|
||||
|
||||
; CHECK-LABEL: bad6
|
||||
; CHECK-NOT: shufflevector
|
||||
define <4 x float> @bad6(float %arg, i32 %k) {
|
||||
; CHECK-LABEL: @bad6(
|
||||
; CHECK-NEXT: [[TMP:%.*]] = insertelement <4 x float> undef, float [[ARG:%.*]], i32 0
|
||||
; CHECK-NEXT: [[TMP4:%.*]] = insertelement <4 x float> [[TMP]], float [[ARG]], i32 1
|
||||
; CHECK-NEXT: [[TMP5:%.*]] = insertelement <4 x float> [[TMP4]], float [[ARG]], i32 [[K:%.*]]
|
||||
; CHECK-NEXT: [[TMP6:%.*]] = insertelement <4 x float> [[TMP5]], float [[ARG]], i32 3
|
||||
; CHECK-NEXT: ret <4 x float> [[TMP6]]
|
||||
;
|
||||
%tmp = insertelement <4 x float> undef, float %arg, i32 0
|
||||
%tmp4 = insertelement <4 x float> %tmp, float %arg, i32 1
|
||||
%tmp5 = insertelement <4 x float> %tmp4, float %arg, i32 %k
|
||||
@ -124,9 +155,16 @@ define <4 x float> @bad6(float %arg, i32 %k) {
|
||||
ret <4 x float> %tmp6
|
||||
}
|
||||
|
||||
; CHECK-LABEL: @bad7(
|
||||
; CHECK-NOT: shufflevector
|
||||
define <4 x float> @bad7(float %v) {
|
||||
; CHECK-LABEL: @bad7(
|
||||
; CHECK-NEXT: [[INS1:%.*]] = insertelement <4 x float> undef, float [[V:%.*]], i32 1
|
||||
; CHECK-NEXT: [[A1:%.*]] = fadd <4 x float> [[INS1]], [[INS1]]
|
||||
; CHECK-NEXT: [[INS2:%.*]] = insertelement <4 x float> [[INS1]], float [[V]], i32 2
|
||||
; CHECK-NEXT: [[INS3:%.*]] = insertelement <4 x float> [[INS2]], float [[V]], i32 3
|
||||
; CHECK-NEXT: [[INS4:%.*]] = insertelement <4 x float> [[INS3]], float [[V]], i32 0
|
||||
; CHECK-NEXT: [[RES:%.*]] = fadd <4 x float> [[A1]], [[INS4]]
|
||||
; CHECK-NEXT: ret <4 x float> [[RES]]
|
||||
;
|
||||
%ins1 = insertelement <4 x float> undef, float %v, i32 1
|
||||
%a1 = fadd <4 x float> %ins1, %ins1
|
||||
%ins2 = insertelement<4 x float> %ins1, float %v, i32 2
|
||||
|
Loading…
x
Reference in New Issue
Block a user