@@ -115,3 +115,43 @@ func.func @scaled_ext_packed816_bf6(%v: vector<16xf6E3M2FN>, %scale: vector<4xf8
115115 return %ret0 , %ret1 , %ret2: vector <16 xf16 >, vector <16 xbf16 >, vector <16 xf32 >
116116}
117117
118+ // -----
119+
120+ func.func @amdgpu.scaled_ext_packed816_invalid_block_size_and_first_scale_byte_16 (%v: vector <8 xf4 E2 M1 FN>, %scale: vector <4 xf8 E8 M0 FNU>) {
121+ // expected-error@+1 {{'amdgpu.scaled_ext_packed816' op blockSize of 16 can only have firstScaleByte be 0 or 1 for f4 and f6}}
122+ %ret0 = amdgpu.scaled_ext_packed816 %v scale (%scale ) blockSize (16 ) firstScaleLane (0 ) firstScaleByte (2 ) : vector <8 xf4 E2 M1 FN>, vector <4 xf8 E8 M0 FNU> -> vector <8 xf16 >
123+ func.return
124+ }
125+
126+ // -----
127+
128+ func.func @amdgpu.scaled_ext_packed816_invalid_block_size_and_first_scale_byte_32 (%v: vector <8 xf4 E2 M1 FN>, %scale: vector <4 xf8 E8 M0 FNU>) {
129+ // expected-error@+1 {{'amdgpu.scaled_ext_packed816' op blockSize of 32 can only have firstScaleByte be 0 or 2 for f4 and f6.}}
130+ %ret0 = amdgpu.scaled_ext_packed816 %v scale (%scale ) blockSize (32 ) firstScaleLane (0 ) firstScaleByte (1 ) : vector <8 xf4 E2 M1 FN>, vector <4 xf8 E8 M0 FNU> -> vector <8 xf16 >
131+ func.return
132+ }
133+
134+ // -----
135+
136+ func.func @amdgpu.scaled_ext_packed816_invalid_attributes_for_f8 (%v: vector <8 xf8 E5 M2 >, %scale: vector <4 xf8 E8 M0 FNU>) {
137+ // expected-error@+1 {{'amdgpu.scaled_ext_packed816' op blockSize of 16 can only have firstScaleByte be 0 or 2 for f8.}}
138+ %ret0 = amdgpu.scaled_ext_packed816 %v scale (%scale ) blockSize (16 ) firstScaleLane (0 ) firstScaleByte (1 ) : vector <8 xf8 E5 M2 >, vector <4 xf8 E8 M0 FNU> -> vector <8 xf16 >
139+ func.return
140+ }
141+
142+ // -----
143+
144+ func.func @amdgpu.scaled_ext_packed816_invalid_input_output_sizes (%v: vector <8 xf8 E5 M2 >, %scale: vector <4 xf8 E8 M0 FNU>) {
145+ // expected-error@+1 {{'amdgpu.scaled_ext_packed816' op failed to verify that all of {source, res} have same shape}}
146+ %ret0 = amdgpu.scaled_ext_packed816 %v scale (%scale ) blockSize (16 ) firstScaleLane (0 ) firstScaleByte (0 ) : vector <8 xf8 E5 M2 >, vector <4 xf8 E8 M0 FNU> -> vector <16 xf16 >
147+ func.return
148+ }
149+
150+ // -----
151+
152+ func.func @amdgpu.scaled_ext_packed816_invalid_src_elem_type (%v: vector <16 xf16 >, %scale: vector <4 xf8 E8 M0 FNU>) -> (vector <16 xf16 >) {
153+ // expected-error@+1 {{'amdgpu.scaled_ext_packed816' op operand #0 must be}}
154+ %ret0 = amdgpu.scaled_ext_packed816 %v scale (%scale ) blockSize (32 ) firstScaleLane (0 ) firstScaleByte (0 ) : vector <16 xf16 >, vector <4 xf8 E8 M0 FNU> -> vector <16 xf16 >
155+ return %ret0: vector <16 xf16 >
156+ }
157+
0 commit comments