]> granicus.if.org Git - llvm/commitdiff
[InstCombine] Additional test for PR35354, NFC.
authorAlexey Bataev <a.bataev@hotmail.com>
Thu, 30 Nov 2017 14:33:58 +0000 (14:33 +0000)
committerAlexey Bataev <a.bataev@hotmail.com>
Thu, 30 Nov 2017 14:33:58 +0000 (14:33 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@319436 91177308-0d34-0410-b5e6-96231b3b80d8

test/Transforms/InstCombine/load-bitcast-select.ll

index 4fc5d8ffa05d775630fb484cc90418a1758b8f34..7e5652878acafb416d696efb64911e28ab4842d0 100644 (file)
@@ -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
+}