1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169
|
; RUN: llvm-as < %s -o %t.bc
; RUN: llvm-spirv %t.bc --spirv-ext=+SPV_KHR_cooperative_matrix -o %t.spv
; TODO: Validation is disabled till the moment the tools in CI are updated (passes locally)
; R/UN: spirv-val %t.spv
; RUN: llvm-spirv %t.spv -to-text -o %t.spt
; RUN: FileCheck < %t.spt %s --check-prefix=CHECK-SPIRV
; RUN: llvm-spirv -r --spirv-target-env=SPV-IR %t.spv -o %t.rev.bc
; RUN: llvm-dis %t.rev.bc
; RUN: FileCheck < %t.rev.ll %s --check-prefix=CHECK-LLVM
; CHECK-SPIRV: TypeInt [[#TypeInt32:]] 32 0
; CHECK-SPIRV: TypeInt [[#TypeInt16:]] 16 0
; CHECK-SPIRV: TypeInt [[#TypeInt8:]] 8 0
; CHECK-SPIRV: TypeFloat [[#TypeFloat:]] 32
; CHECK-SPIRV: TypeCooperativeMatrixKHR [[#MatrixTypeFloat:]] [[#TypeFloat]]
; CHECK-SPIRV: TypeCooperativeMatrixKHR [[#MatrixTypeInt32:]] [[#TypeInt32]]
; CHECK-SPIRV: TypeCooperativeMatrixKHR [[#MatrixTypeInt16:]] [[#TypeInt16]]
; CHECK-SPIRV: TypeFloat [[#TypeFloat16:]] 16
; CHECK-SPIRV: TypeCooperativeMatrixKHR [[#MatrixTypeFloat16:]] [[#TypeFloat16]]
; CHECK-SPIRV: TypeCooperativeMatrixKHR [[#MatrixTypeInt8:]] [[#TypeInt8]]
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "spir64-unknown-unknown"
%spirv.CooperativeMatrixKHR._char_3_12_12_3 = type { [12 x [12 x i8]]* }
%spirv.CooperativeMatrixKHR._short_3_12_12_3 = type { [12 x [12 x i16]]* }
%spirv.CooperativeMatrixKHR._int_3_12_12_3 = type { [12 x [12 x i32]]* }
%spirv.CooperativeMatrixKHR._float_3_12_12_3 = type { [12 x [12 x float]]* }
%spirv.CooperativeMatrixKHR._half_3_12_12_3 = type { [12 x [12 x half]]* }
; CHECK-SPIRV: CompositeConstruct [[#MatrixTypeFloat]] [[#MatrixIn:]] [[#]] {{$}}
; CHECK-SPIRV: ConvertFToU [[#MatrixTypeInt32]] [[#]] [[#MatrixIn]]
; CHECK-LLVM: %[[#Matrix:]] = call spir_func %spirv.CooperativeMatrixKHR._float_3_12_12_3 addrspace(1)* @_Z26__spirv_CompositeConstructf(float 0.000000e+00)
; CHECK-LLVM: call spir_func %spirv.CooperativeMatrixKHR._int_3_12_12_3 addrspace(1)* @_Z76__spirv_ConvertFToU_RPU3AS143__spirv_CooperativeMatrixKHR__int_3_12_12_3_rtpPU3AS145__spirv_CooperativeMatrixKHR__float_3_12_12_3(%spirv.CooperativeMatrixKHR._float_3_12_12_3 addrspace(1)* %[[#Matrix]])
define void @convert_f_to_u() {
entry:
%0 = tail call spir_func noundef %spirv.CooperativeMatrixKHR._float_3_12_12_3 addrspace(1)* @_Z26__spirv_CompositeConstructFloat(float 0.000000e+00)
%call = call spir_func %spirv.CooperativeMatrixKHR._int_3_12_12_3 addrspace(1)* @_Z76__spirv_ConvertFToU_RPU3AS143__spirv_CooperativeMatrixKHR__int_3_12_12_3_rtpPU3AS145__spirv_CooperativeMatrixKHR__float_3_12_12_3(%spirv.CooperativeMatrixKHR._float_3_12_12_3 addrspace(1)* %0)
ret void
}
; CHECK-SPIRV: CompositeConstruct [[#MatrixTypeFloat]] [[#MatrixIn:]] [[#]] {{$}}
; CHECK-SPIRV: ConvertFToU [[#MatrixTypeInt32]] [[#]] [[#MatrixIn]]
; CHECK-LLVM: %[[#Matrix:]] = call spir_func %spirv.CooperativeMatrixKHR._float_3_12_12_3 addrspace(1)* @_Z26__spirv_CompositeConstructf(float 0.000000e+00)
; CHECK-LLVM: call spir_func %spirv.CooperativeMatrixKHR._int_3_12_12_3 addrspace(1)* @_Z72__spirv_ConvertFToU_RPU3AS143__spirv_CooperativeMatrixKHR__int_3_12_12_3PU3AS145__spirv_CooperativeMatrixKHR__float_3_12_12_3(%spirv.CooperativeMatrixKHR._float_3_12_12_3 addrspace(1)* %0)
define void @convert_f_to_u_no_fproundingmode() {
entry:
%0 = tail call spir_func noundef %spirv.CooperativeMatrixKHR._float_3_12_12_3 addrspace(1)* @_Z26__spirv_CompositeConstructFloat(float 0.000000e+00)
%call = call spir_func %spirv.CooperativeMatrixKHR._int_3_12_12_3 addrspace(1)* @_Z73__spirv_ConvertFToU_RPU3AS144__spirv_CooperativeMatrixKHR__uint_3_12_12_2PU3AS145__spirv_CooperativeMatrixKHR__float_3_12_12_2(%spirv.CooperativeMatrixKHR._float_3_12_12_3 addrspace(1)* %0)
ret void
}
; CHECK-SPIRV: CompositeConstruct [[#MatrixTypeFloat]] [[#MatrixIn:]] [[#]] {{$}}
; CHECK-SPIRV: ConvertFToS [[#MatrixTypeInt32]] [[#]] [[#MatrixIn]]
; CHECK-LLVM: %[[#Matrix:]] = call spir_func %spirv.CooperativeMatrixKHR._float_3_12_12_3 addrspace(1)* @_Z26__spirv_CompositeConstructf(float 0.000000e+00)
; CHECK-LLVM: call spir_func %spirv.CooperativeMatrixKHR._int_3_12_12_3 addrspace(1)* @_Z76__spirv_ConvertFToS_RPU3AS143__spirv_CooperativeMatrixKHR__int_3_12_12_3_rtpPU3AS145__spirv_CooperativeMatrixKHR__float_3_12_12_3(%spirv.CooperativeMatrixKHR._float_3_12_12_3 addrspace(1)* %[[#Matrix]])
define void @convert_f_to_s() {
entry:
%0 = tail call spir_func noundef %spirv.CooperativeMatrixKHR._float_3_12_12_3 addrspace(1)* @_Z26__spirv_CompositeConstructFloat(float 0.000000e+00)
%call = call spir_func %spirv.CooperativeMatrixKHR._int_3_12_12_3 addrspace(1)* @_Z76__spirv_ConvertFToS_RPU3AS143__spirv_CooperativeMatrixKHR__int_3_12_12_3_rtpPU3AS145__spirv_CooperativeMatrixKHR__float_3_12_12_3(%spirv.CooperativeMatrixKHR._float_3_12_12_3 addrspace(1)* %0)
ret void
}
; CHECK-SPIRV: CompositeConstruct [[#MatrixTypeInt16]] [[#MatrixIn:]] [[#]] {{$}}
; CHECK-SPIRV: ConvertSToF [[#MatrixTypeFloat16]] [[#]] [[#MatrixIn]]
; CHECK-LLVM: %[[#Matrix:]] = call spir_func %spirv.CooperativeMatrixKHR._short_3_12_12_3 addrspace(1)* @_Z26__spirv_CompositeConstructs(i16 0)
; CHECK-LLVM: call spir_func %spirv.CooperativeMatrixKHR._half_3_12_12_3 addrspace(1)* @_Z77__spirv_ConvertSToF_RPU3AS144__spirv_CooperativeMatrixKHR__half_3_12_12_3_rtpPU3AS145__spirv_CooperativeMatrixKHR__short_3_12_12_3(%spirv.CooperativeMatrixKHR._short_3_12_12_3 addrspace(1)* %[[#Matrix]])
define void @convert_s_to_f() {
entry:
%0 = tail call spir_func noundef %spirv.CooperativeMatrixKHR._short_3_12_12_3 addrspace(1)* @_Z26__spirv_CompositeConstructInt16(i16 0)
%call = call spir_func %spirv.CooperativeMatrixKHR._half_3_12_12_3 addrspace(1)* @_Z77__spirv_ConvertSToF_RPU3AS144__spirv_CooperativeMatrixKHR__half_3_12_12_3_rtpPU3AS145__spirv_CooperativeMatrixKHR__short_3_12_12_3(%spirv.CooperativeMatrixKHR._short_3_12_12_3 addrspace(1)* %0)
ret void
}
; CHECK-SPIRV: CompositeConstruct [[#MatrixTypeInt16]] [[#MatrixIn:]] [[#]] {{$}}
; CHECK-SPIRV: ConvertUToF [[#MatrixTypeFloat16]] [[#]] [[#MatrixIn]]
; CHECK-LLVM: %[[#Matrix:]] = call spir_func %spirv.CooperativeMatrixKHR._short_3_12_12_3 addrspace(1)* @_Z26__spirv_CompositeConstructs(i16 0)
; CHECK-LLVM: call spir_func %spirv.CooperativeMatrixKHR._half_3_12_12_3 addrspace(1)* @_Z77__spirv_ConvertUToF_RPU3AS144__spirv_CooperativeMatrixKHR__half_3_12_12_3_rtpPU3AS145__spirv_CooperativeMatrixKHR__short_3_12_12_3(%spirv.CooperativeMatrixKHR._short_3_12_12_3 addrspace(1)* %[[#Matrix]])
define void @convert_u_to_f() {
entry:
%0 = tail call spir_func noundef %spirv.CooperativeMatrixKHR._short_3_12_12_3 addrspace(1)* @_Z26__spirv_CompositeConstructInt16(i16 0)
%call = call spir_func %spirv.CooperativeMatrixKHR._half_3_12_12_3 addrspace(1)* @_Z77__spirv_ConvertUToF_RPU3AS144__spirv_CooperativeMatrixKHR__half_3_12_12_3_rtpPU3AS145__spirv_CooperativeMatrixKHR__short_3_12_12_3(%spirv.CooperativeMatrixKHR._short_3_12_12_3 addrspace(1)* %0)
ret void
}
; CHECK-SPIRV: CompositeConstruct [[#MatrixTypeInt32]] [[#MatrixIn:]] [[#]] {{$}}
; CHECK-SPIRV: UConvert [[#MatrixTypeInt8]] [[#]] [[#MatrixIn]]
; CHECK-LLVM: %[[#Matrix:]] = call spir_func %spirv.CooperativeMatrixKHR._int_3_12_12_3 addrspace(1)* @_Z26__spirv_CompositeConstructi(i32 0)
; CHECK-LLVM: call spir_func %spirv.CooperativeMatrixKHR._char_3_12_12_3 addrspace(1)* @_Z74__spirv_UConvert_RPU3AS144__spirv_CooperativeMatrixKHR__char_3_12_12_3_satPU3AS143__spirv_CooperativeMatrixKHR__int_3_12_12_3(%spirv.CooperativeMatrixKHR._int_3_12_12_3 addrspace(1)* %[[#Matrix]])
define void @u_convert() {
entry:
%0 = tail call spir_func noundef %spirv.CooperativeMatrixKHR._int_3_12_12_3 addrspace(1)* @_Z26__spirv_CompositeConstructInt32(i32 0)
%call = call spir_func %spirv.CooperativeMatrixKHR._char_3_12_12_3 addrspace(1)* @_Z74__spirv_UConvert_RPU3AS144__spirv_CooperativeMatrixKHR__char_3_12_12_3_satPU3AS143__spirv_CooperativeMatrixKHR__int_3_12_12_3(%spirv.CooperativeMatrixKHR._int_3_12_12_3 addrspace(1)* %0)
ret void
}
; CHECK-SPIRV: CompositeConstruct [[#MatrixTypeInt8]] [[#MatrixIn:]] [[#]] {{$}}
; CHECK-SPIRV: SConvert [[#MatrixTypeInt32]] [[#]] [[#MatrixIn]]
; CHECK-LLVM: %[[#Matrix:]] = call spir_func %spirv.CooperativeMatrixKHR._char_3_12_12_3 addrspace(1)* @_Z26__spirv_CompositeConstructc(i8 0)
; CHECK-LLVM: call spir_func %spirv.CooperativeMatrixKHR._int_3_12_12_3 addrspace(1)* @_Z73__spirv_SConvert_RPU3AS143__spirv_CooperativeMatrixKHR__int_3_12_12_3_satPU3AS144__spirv_CooperativeMatrixKHR__char_3_12_12_3(%spirv.CooperativeMatrixKHR._char_3_12_12_3 addrspace(1)* %[[#Matrix]])
define void @s_convert() {
entry:
%0 = tail call spir_func noundef %spirv.CooperativeMatrixKHR._char_3_12_12_3 addrspace(1)* @_Z26__spirv_CompositeConstructInt8(i8 0)
%call = call spir_func %spirv.CooperativeMatrixKHR._int_3_12_12_3 addrspace(1)* @_Z73__spirv_SConvert_RPU3AS143__spirv_CooperativeMatrixKHR__int_3_12_12_3_satPU3AS144__spirv_CooperativeMatrixKHR__char_3_12_12_3(%spirv.CooperativeMatrixKHR._char_3_12_12_3 addrspace(1)* %0)
ret void
}
; CHECK-SPIRV: CompositeConstruct [[#MatrixTypeFloat16]] [[#MatrixIn:]] [[#]] {{$}}
; CHECK-SPIRV: FConvert [[#MatrixTypeFloat]] [[#]] [[#MatrixIn]]
; CHECK-LLVM: %[[#Matrix:]] = call spir_func %spirv.CooperativeMatrixKHR._half_3_12_12_3 addrspace(1)* @_Z26__spirv_CompositeConstructDh(half 0xH0000)
; CHECK-LLVM: call spir_func %spirv.CooperativeMatrixKHR._float_3_12_12_3 addrspace(1)* @_Z75__spirv_FConvert_RPU3AS145__spirv_CooperativeMatrixKHR__float_3_12_12_3_satPU3AS144__spirv_CooperativeMatrixKHR__half_3_12_12_3(%spirv.CooperativeMatrixKHR._half_3_12_12_3 addrspace(1)* %[[#Matrix]])
define void @f_convert() {
entry:
%0 = tail call spir_func noundef %spirv.CooperativeMatrixKHR._half_3_12_12_3 addrspace(1)* @_Z26__spirv_CompositeConstructHalf(half 0xH0000)
%call = call spir_func %spirv.CooperativeMatrixKHR._float_3_12_12_3 addrspace(1)* @_Z75__spirv_FConvert_RPU3AS145__spirv_CooperativeMatrixKHR__float_3_12_12_3_satPU3AS144__spirv_CooperativeMatrixKHR__half_3_12_12_3(%spirv.CooperativeMatrixKHR._half_3_12_12_3 addrspace(1)* %0)
ret void
}
declare spir_func noundef %spirv.CooperativeMatrixKHR._float_3_12_12_3 addrspace(1)* @_Z26__spirv_CompositeConstructFloat(float noundef)
declare spir_func noundef %spirv.CooperativeMatrixKHR._half_3_12_12_3 addrspace(1)* @_Z26__spirv_CompositeConstructHalf(half noundef)
declare spir_func noundef %spirv.CooperativeMatrixKHR._int_3_12_12_3 addrspace(1)* @_Z26__spirv_CompositeConstructInt32(i32 noundef)
declare spir_func noundef %spirv.CooperativeMatrixKHR._short_3_12_12_3 addrspace(1)* @_Z26__spirv_CompositeConstructInt16(i16 noundef)
declare spir_func noundef %spirv.CooperativeMatrixKHR._char_3_12_12_3 addrspace(1)* @_Z26__spirv_CompositeConstructInt8(i8 noundef)
declare spir_func noundef %spirv.CooperativeMatrixKHR._int_3_12_12_3 addrspace(1)* @_Z76__spirv_ConvertFToU_RPU3AS143__spirv_CooperativeMatrixKHR__int_3_12_12_3_rtpPU3AS145__spirv_CooperativeMatrixKHR__float_3_12_12_3(%spirv.CooperativeMatrixKHR._float_3_12_12_3 addrspace(1)* noundef)
declare spir_func noundef %spirv.CooperativeMatrixKHR._int_3_12_12_3 addrspace(1)* @_Z73__spirv_ConvertFToU_RPU3AS144__spirv_CooperativeMatrixKHR__uint_3_12_12_2PU3AS145__spirv_CooperativeMatrixKHR__float_3_12_12_2(%spirv.CooperativeMatrixKHR._float_3_12_12_3 addrspace(1)* noundef)
declare spir_func noundef %spirv.CooperativeMatrixKHR._int_3_12_12_3 addrspace(1)* @_Z76__spirv_ConvertFToS_RPU3AS143__spirv_CooperativeMatrixKHR__int_3_12_12_3_rtpPU3AS145__spirv_CooperativeMatrixKHR__float_3_12_12_3(%spirv.CooperativeMatrixKHR._float_3_12_12_3 addrspace(1)* noundef)
declare spir_func noundef %spirv.CooperativeMatrixKHR._half_3_12_12_3 addrspace(1)* @_Z77__spirv_ConvertSToF_RPU3AS144__spirv_CooperativeMatrixKHR__half_3_12_12_3_rtpPU3AS145__spirv_CooperativeMatrixKHR__short_3_12_12_3(%spirv.CooperativeMatrixKHR._short_3_12_12_3 addrspace(1)* noundef)
declare spir_func noundef %spirv.CooperativeMatrixKHR._half_3_12_12_3 addrspace(1)* @_Z77__spirv_ConvertUToF_RPU3AS144__spirv_CooperativeMatrixKHR__half_3_12_12_3_rtpPU3AS145__spirv_CooperativeMatrixKHR__short_3_12_12_3(%spirv.CooperativeMatrixKHR._short_3_12_12_3 addrspace(1)* noundef)
declare spir_func noundef %spirv.CooperativeMatrixKHR._char_3_12_12_3 addrspace(1)* @_Z74__spirv_UConvert_RPU3AS144__spirv_CooperativeMatrixKHR__char_3_12_12_3_satPU3AS143__spirv_CooperativeMatrixKHR__int_3_12_12_3(%spirv.CooperativeMatrixKHR._int_3_12_12_3 addrspace(1)* noundef)
declare spir_func noundef %spirv.CooperativeMatrixKHR._int_3_12_12_3 addrspace(1)* @_Z73__spirv_SConvert_RPU3AS143__spirv_CooperativeMatrixKHR__int_3_12_12_3_satPU3AS144__spirv_CooperativeMatrixKHR__char_3_12_12_3(%spirv.CooperativeMatrixKHR._char_3_12_12_3 addrspace(1)* noundef)
declare spir_func noundef %spirv.CooperativeMatrixKHR._float_3_12_12_3 addrspace(1)* @_Z75__spirv_FConvert_RPU3AS145__spirv_CooperativeMatrixKHR__float_3_12_12_3_satPU3AS144__spirv_CooperativeMatrixKHR__half_3_12_12_3(%spirv.CooperativeMatrixKHR._half_3_12_12_3 addrspace(1)* noundef)
!llvm.module.flags = !{!0, !1, !3, !4}
!llvm.ident = !{!5}
!0 = !{i32 7, !"Dwarf Version", i32 4}
!1 = !{i32 1, !"wchar_size", i32 4}
!3 = !{i32 7, !"PIE Level", i32 2}
!4 = !{i32 7, !"uwtable", i32 2}
!5 = !{!"clang version 16.0.0 (https://github.com/llvm/llvm-project.git 08d094a0e457360ad8b94b017d2dc277e697ca76)"}
|