| ; 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 | |
| } |