llvm/llvm/test/CodeGen/DirectX/typed_ptr.ll

; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 3
; RUN: opt -S -dxil-prepare < %s | FileCheck %s
target triple = "dxil-unknown-shadermodel6.0-compute"

@gs = external addrspace(3) global [20 x [6 x float]], align 4

; Make sure not crash when has typed ptr.
define i64 @test(i64* %p) {
; CHECK-LABEL: define i64 @test(
; CHECK-SAME: ptr [[P:%.*]]) {
; CHECK-NEXT:    [[V:%.*]] = load i64, ptr [[P]], align 8
; CHECK-NEXT:    ret i64 [[V]]
;
  %v = load i64, i64* %p
  ret i64 %v
}

; Make sure no bitcast generated.
define void @test_gep() {
; CHECK-LABEL: define void @test_gep() {
; CHECK-NEXT:    [[BASE:%.*]] = getelementptr inbounds [20 x [6 x float]], ptr addrspace(3) @gs, i64 0, i64 3
; CHECK-NEXT:    [[ADDR:%.*]] = getelementptr inbounds [6 x float], ptr addrspace(3) [[BASE]], i64 0, i64 2
; CHECK-NEXT:    store float 1.000000e+00, ptr addrspace(3) [[ADDR]], align 4
; CHECK-NEXT:    ret void
;
  %base = getelementptr inbounds [20 x [6 x float]], ptr addrspace(3) @gs, i64 0, i64 3
  %addr = getelementptr inbounds [6 x float], ptr addrspace(3) %base, i64 0, i64 2
  store float 1.000000e+00, ptr addrspace(3) %addr, align 4
  ret void
}