summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms
diff options
context:
space:
mode:
authorDinar Temirbulatov <dtemirbulatov@gmail.com>2019-06-13 00:19:50 +0000
committerDinar Temirbulatov <dtemirbulatov@gmail.com>2019-06-13 00:19:50 +0000
commitb2f45ba1e8ace7fc5d5298c55fc84573823270d6 (patch)
tree132d06e66d41042ece7c9a9664a6f6f503a1787a /llvm/test/Transforms
parent0bded8442feff417f56dbfdf93129a8c0724b1ee (diff)
downloadbcm5719-llvm-b2f45ba1e8ace7fc5d5298c55fc84573823270d6.tar.gz
bcm5719-llvm-b2f45ba1e8ace7fc5d5298c55fc84573823270d6.zip
[SLP] Update propagate_ir_flags.ll test to check that we do retain the common subset, NFC.
llvm-svn: 363218
Diffstat (limited to 'llvm/test/Transforms')
-rw-r--r--llvm/test/Transforms/SLPVectorizer/X86/propagate_ir_flags.ll36
1 files changed, 36 insertions, 0 deletions
diff --git a/llvm/test/Transforms/SLPVectorizer/X86/propagate_ir_flags.ll b/llvm/test/Transforms/SLPVectorizer/X86/propagate_ir_flags.ll
index 380f58fe5dc..cacc1dcb256 100644
--- a/llvm/test/Transforms/SLPVectorizer/X86/propagate_ir_flags.ll
+++ b/llvm/test/Transforms/SLPVectorizer/X86/propagate_ir_flags.ll
@@ -224,6 +224,42 @@ define void @not_nuw(i32* %x) {
ret void
}
+define void @not_nsw_but_nuw(i32* %x) {
+; CHECK-LABEL: @not_nsw_but_nuw(
+; CHECK-NEXT: [[IDX1:%.*]] = getelementptr inbounds i32, i32* [[X:%.*]], i64 0
+; CHECK-NEXT: [[IDX2:%.*]] = getelementptr inbounds i32, i32* [[X]], i64 1
+; CHECK-NEXT: [[IDX3:%.*]] = getelementptr inbounds i32, i32* [[X]], i64 2
+; CHECK-NEXT: [[IDX4:%.*]] = getelementptr inbounds i32, i32* [[X]], i64 3
+; CHECK-NEXT: [[TMP1:%.*]] = bitcast i32* [[IDX1]] to <4 x i32>*
+; CHECK-NEXT: [[TMP2:%.*]] = load <4 x i32>, <4 x i32>* [[TMP1]], align 4
+; CHECK-NEXT: [[TMP3:%.*]] = add nuw <4 x i32> [[TMP2]], <i32 1, i32 1, i32 1, i32 1>
+; CHECK-NEXT: [[TMP4:%.*]] = bitcast i32* [[IDX1]] to <4 x i32>*
+; CHECK-NEXT: store <4 x i32> [[TMP3]], <4 x i32>* [[TMP4]], align 4
+; CHECK-NEXT: ret void
+;
+ %idx1 = getelementptr inbounds i32, i32* %x, i64 0
+ %idx2 = getelementptr inbounds i32, i32* %x, i64 1
+ %idx3 = getelementptr inbounds i32, i32* %x, i64 2
+ %idx4 = getelementptr inbounds i32, i32* %x, i64 3
+
+ %load1 = load i32, i32* %idx1, align 4
+ %load2 = load i32, i32* %idx2, align 4
+ %load3 = load i32, i32* %idx3, align 4
+ %load4 = load i32, i32* %idx4, align 4
+
+ %op1 = add nuw i32 %load1, 1
+ %op2 = add nuw nsw i32 %load2, 1
+ %op3 = add nuw nsw i32 %load3, 1
+ %op4 = add nuw i32 %load4, 1
+
+ store i32 %op1, i32* %idx1, align 4
+ store i32 %op2, i32* %idx2, align 4
+ store i32 %op3, i32* %idx3, align 4
+ store i32 %op4, i32* %idx4, align 4
+
+ ret void
+}
+
define void @nnan(float* %x) {
; CHECK-LABEL: @nnan(
; CHECK-NEXT: [[IDX1:%.*]] = getelementptr inbounds float, float* [[X:%.*]], i64 0
OpenPOWER on IntegriCloud