blob: ddbe49afb988cb86348da8b50194306889889087 [file] [edit]
; RUN: split-file %s %t
; RUN: not llvm-as -disable-output < %t/bad-elem-type.ll 2>&1 | FileCheck %s --check-prefix=BAD-ELEM
; RUN: not llvm-as -disable-output < %t/bad-idx-size.ll 2>&1 | FileCheck %s --check-prefix=BAD-IDX
; RUN: not llvm-as -disable-output < %t/bad-num-tgt.ll 2>&1 | FileCheck %s --check-prefix=BAD-NUM-TGT
; RUN: not llvm-as -disable-output < %t/bad-mdata-size.ll 2>&1 | FileCheck %s --check-prefix=BAD-MDATA
; RUN: not llvm-as -disable-output < %t/bad-cdata-size.ll 2>&1 | FileCheck %s --check-prefix=BAD-CDATA
; RUN: not llvm-as -disable-output < %t/bad-data-size.ll 2>&1 | FileCheck %s --check-prefix=BAD-DATA
; RUN: not llvm-as -disable-output < %t/bad-ratio.ll 2>&1 | FileCheck %s --check-prefix=BAD-RATIO
; RUN: not llvm-as -disable-output < %t/bad-result-type.ll 2>&1 | FileCheck %s --check-prefix=BAD-RESULT-TY
; RUN: not llvm-as -disable-output < %t/bad-data-type.ll 2>&1 | FileCheck %s --check-prefix=BAD-DATA-TY
; RUN: not llvm-as -disable-output < %t/bad-mdata-v1.ll 2>&1 | FileCheck %s --check-prefix=BAD-MDATA-V1
;--- bad-elem-type.ll
define { i32, <2 x i32> } @bad_spcompress_elem_type(i32 %spdesc,
<2 x i32> %data) {
; BAD-ELEM: invalid llvm.nvvm.spcompress operand or result type
%res = call { i32, <2 x i32> } @llvm.nvvm.spcompress.i32.v2i32.v2i32(<2 x i32> %data, i32 %spdesc, i32 2, i32 4)
ret { i32, <2 x i32> } %res
}
;--- bad-idx-size.ll
define { i32, <4 x i8> } @bad_spcompress_idx_size(i32 %spdesc,
<8 x i8> %data) {
; BAD-IDX: immarg value 3 for arg 2 out of range set
%res = call { i32, <4 x i8> } @llvm.nvvm.spcompress.i32.v4i8.v8i8(<8 x i8> %data, i32 %spdesc, i32 3, i32 4)
ret { i32, <4 x i8> } %res
}
;--- bad-num-tgt.ll
define { i32, <4 x i8> } @bad_spcompress_num_tgt(i32 %spdesc,
<8 x i8> %data) {
; BAD-NUM-TGT: immarg value 8 for arg 3 out of range set
%res = call { i32, <4 x i8> } @llvm.nvvm.spcompress.i32.v4i8.v8i8(<8 x i8> %data, i32 %spdesc, i32 2, i32 8)
ret { i32, <4 x i8> } %res
}
;--- bad-mdata-size.ll
define i32 @bad_spcompress_metadata_register_count(i32 %spdesc,
<32 x i8> %data) {
; BAD-MDATA: invalid llvm.nvvm.spcompress layout
%res = call { i32, <16 x i8> } @llvm.nvvm.spcompress.i32.v16i8.v32i8(<32 x i8> %data, i32 %spdesc, i32 4, i32 4)
%mdata = extractvalue { i32, <16 x i8> } %res, 0
ret i32 %mdata
}
;--- bad-cdata-size.ll
define <8 x i8> @bad_spcompress_compressed_data_register_count(
i32 %spdesc, <32 x i8> %data) {
; BAD-CDATA: invalid llvm.nvvm.spcompress layout
%res = call { <2 x i32>, <8 x i8> } @llvm.nvvm.spcompress.v2i32.v8i8.v32i8(<32 x i8> %data, i32 %spdesc, i32 4, i32 4)
%cdata = extractvalue { <2 x i32>, <8 x i8> } %res, 1
ret <8 x i8> %cdata
}
;--- bad-data-size.ll
define <16 x i8> @bad_spcompress_data_register_count(i32 %spdesc,
<24 x i8> %data) {
; BAD-DATA: invalid llvm.nvvm.spcompress layout
%res = call { <2 x i32>, <16 x i8> } @llvm.nvvm.spcompress.v2i32.v16i8.v24i8(<24 x i8> %data, i32 %spdesc, i32 4, i32 4)
%cdata = extractvalue { <2 x i32>, <16 x i8> } %res, 1
ret <16 x i8> %cdata
}
;--- bad-ratio.ll
define { i32, <3 x i8> } @bad_spcompress_ratio(i32 %spdesc,
<8 x i8> %data) {
; BAD-RATIO: invalid llvm.nvvm.spcompress layout
%res = call { i32, <3 x i8> } @llvm.nvvm.spcompress.i32.v3i8.v8i8(<8 x i8> %data, i32 %spdesc, i32 2, i32 4)
ret { i32, <3 x i8> } %res
}
;--- bad-result-type.ll
define i64 @bad_spcompress_result_type(i32 %spdesc, <8 x i8> %data) {
; BAD-RESULT-TY: invalid llvm.nvvm.spcompress operand or result type
%res = call { i64, <4 x i8> } @llvm.nvvm.spcompress.i64.v4i8.v8i8(<8 x i8> %data, i32 %spdesc, i32 2, i32 4)
%mdata = extractvalue { i64, <4 x i8> } %res, 0
ret i64 %mdata
}
;--- bad-data-type.ll
define { i32, <2 x i16> } @bad_spcompress_data_type(i32 %spdesc,
<8 x i8> %data) {
; BAD-DATA-TY: invalid llvm.nvvm.spcompress operand or result type
%res = call { i32, <2 x i16> } @llvm.nvvm.spcompress.i32.v2i16.v8i8(<8 x i8> %data, i32 %spdesc, i32 2, i32 4)
ret { i32, <2 x i16> } %res
}
;--- bad-mdata-v1.ll
define <1 x i32> @bad_spcompress_metadata_v1i32(i32 %spdesc, <8 x i8> %data) {
; BAD-MDATA-V1: invalid llvm.nvvm.spcompress operand or result type
%res = call { <1 x i32>, <4 x i8> } @llvm.nvvm.spcompress.v1i32.v4i8.v8i8(<8 x i8> %data, i32 %spdesc, i32 2, i32 4)
%mdata = extractvalue { <1 x i32>, <4 x i8> } %res, 0
ret <1 x i32> %mdata
}