; RUN: clspv-opt --passes=long-vector-lowering,instcombine %s -o %t
; RUN: FileCheck %s < %t
; RUN: FileCheck --check-prefix=NEGATIVE %s < %t

target datalayout = "e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024"
target triple = "spir-unknown-unknown"

; NEGATIVE-NOT: <8 x float>
; NEGATIVE-NOT: <16 x float>

@global_a = external addrspace(2) constant <8 x float>, align 32
; CHECK: external addrspace(2) constant [8 x float], align 32

@global_b = addrspace(3) global <16 x i16> zeroinitializer, align 16
; CHECK: addrspace(3) global [16 x i16]
; CHECK-SAME: zeroinitializer, align 16

define spir_func <8 x float> @test_a() {
entry:
  %x = load <8 x float>, <8 x float> addrspace(2)* @global_a, align 32
  ret <8 x float> %x
}

define spir_func <16 x i16> @test_b() {
entry:
  %x = load <16 x i16>, <16 x i16> addrspace(3)* @global_b, align 16
  ret <16 x i16> %x
}

; CHECK-LABEL: @test_b
; CHECK: load i16
; CHECK: load i16
; CHECK: load i16
; CHECK: load i16
; CHECK: load i16
; CHECK: load i16
; CHECK: load i16
; CHECK: load i16
; CHECK: load i16
; CHECK: load i16
; CHECK: load i16
; CHECK: load i16
; CHECK: load i16
; CHECK: load i16
; CHECK: load i16
; CHECK: load i16

; CHECK-LABEL: @test_a
; CHECK: load float
; CHECK: load float
; CHECK: load float
; CHECK: load float
; CHECK: load float
; CHECK: load float
; CHECK: load float
; CHECK: load float
