summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/InstCombine/load-bitcast-select.ll
diff options
context:
space:
mode:
authorAlexey Bataev <a.bataev@hotmail.com>2017-11-30 14:33:58 +0000
committerAlexey Bataev <a.bataev@hotmail.com>2017-11-30 14:33:58 +0000
commitd60250dd9b915b54bc564a86c35027a70dccf679 (patch)
tree8af9fe1f7421bf98db1870238dee89c689ca41ba /llvm/test/Transforms/InstCombine/load-bitcast-select.ll
parent2e610cd4706ac71f95dffe7beb577aed2fcb1243 (diff)
downloadbcm5719-llvm-d60250dd9b915b54bc564a86c35027a70dccf679.tar.gz
bcm5719-llvm-d60250dd9b915b54bc564a86c35027a70dccf679.zip
[InstCombine] Additional test for PR35354, NFC.
llvm-svn: 319436
Diffstat (limited to 'llvm/test/Transforms/InstCombine/load-bitcast-select.ll')
-rw-r--r--llvm/test/Transforms/InstCombine/load-bitcast-select.ll17
1 files changed, 17 insertions, 0 deletions
diff --git a/llvm/test/Transforms/InstCombine/load-bitcast-select.ll b/llvm/test/Transforms/InstCombine/load-bitcast-select.ll
index 4fc5d8ffa05..7e5652878ac 100644
--- a/llvm/test/Transforms/InstCombine/load-bitcast-select.ll
+++ b/llvm/test/Transforms/InstCombine/load-bitcast-select.ll
@@ -68,3 +68,20 @@ define i32 @store_bitcasted_load(i1 %cond, float* dereferenceable(4) %addr1, flo
%ld = load i32, i32* %bc1
ret i32 %ld
}
+
+define void @bitcasted_store(i1 %cond, float* %loadaddr1, float* %loadaddr2, float* %storeaddr) {
+; CHECK-LABEL: @bitcasted_store(
+; CHECK-NEXT: [[SEL:%.*]] = select i1 [[COND:%.*]], float* [[LOADADDR1:%.*]], float* [[LOADADDR2:%.*]]
+; CHECK-NEXT: [[INT_LOAD_ADDR:%.*]] = bitcast float* [[SEL]] to i32*
+; CHECK-NEXT: [[LD:%.*]] = load i32, i32* [[INT_LOAD_ADDR]], align 4
+; CHECK-NEXT: [[INT_STORE_ADDR:%.*]] = bitcast float* [[STOREADDR:%.*]] to i32*
+; CHECK-NEXT: store i32 [[LD]], i32* [[INT_STORE_ADDR]], align 4
+; CHECK-NEXT: ret void
+;
+ %sel = select i1 %cond, float* %loadaddr1, float* %loadaddr2
+ %int_load_addr = bitcast float* %sel to i32*
+ %ld = load i32, i32* %int_load_addr
+ %int_store_addr = bitcast float* %storeaddr to i32*
+ store i32 %ld, i32* %int_store_addr
+ ret void
+}
OpenPOWER on IntegriCloud