xref: /llvm-project/llvm/test/CodeGen/DirectX/conflicting-bitcast-insert.ll (revision ab7518050183162f09724ef8682a580cc68709bc)
1f5d054cdSChris Bieneman; RUN: llc --filetype=asm %s -o - | FileCheck %s
2208d0f04SXiang Litarget triple = "dxil-unknown-shadermodel6.7-library"
3f5d054cdSChris Bieneman
4*ab751805SGreg Rothdefine i64 @test(ptr %p) #0 {
5f5d054cdSChris Bieneman  store i32 0, ptr %p
6f5d054cdSChris Bieneman  %v = load i64, ptr %p
7f5d054cdSChris Bieneman  ret i64 %v
8f5d054cdSChris Bieneman}
9f5d054cdSChris Bieneman
10*ab751805SGreg Roth; CHECK: define i64 @test(ptr %p) #0 {
11f5d054cdSChris Bieneman; CHECK-NEXT: %1 = bitcast ptr %p to ptr
12f5d054cdSChris Bieneman; CHECK-NEXT: store i32 0, ptr %1, align 4
13f5d054cdSChris Bieneman; CHECK-NEXT: %2 = bitcast ptr %p to ptr
14f5d054cdSChris Bieneman; CHECK-NEXT: %3 = load i64, ptr %2, align 8
15f5d054cdSChris Bieneman
16*ab751805SGreg Rothdefine i64 @testGEP(ptr %p) #0 {
17f5d054cdSChris Bieneman  %ptr = getelementptr i32, ptr %p, i32 4
18f5d054cdSChris Bieneman  %val = load i64, ptr %p
19f5d054cdSChris Bieneman  ret i64 %val
20f5d054cdSChris Bieneman}
21f5d054cdSChris Bieneman
22*ab751805SGreg Rothattributes #0 = { convergent norecurse nounwind "hlsl.export"}
23*ab751805SGreg Roth
24*ab751805SGreg Roth; CHECK: define i64 @testGEP(ptr %p) #0 {
25f5d054cdSChris Bieneman; CHECK-NEXT:   %1 = bitcast ptr %p to ptr
26f5d054cdSChris Bieneman; CHECK-NEXT:   %ptr = getelementptr i32, ptr %1, i32 4
27f5d054cdSChris Bieneman; CHECK-NEXT:   %2 = bitcast ptr %p to ptr
28f5d054cdSChris Bieneman; CHECK-NEXT:   %3 = load i64, ptr %2, align 8
29