Open grace0068 opened 5 months ago
추가적으로 다음 코드에서도 다른 종류의 에러가 발생함을 확인하였습니다.
define <4 x i64> @test_vector_add_sub() {
entry:
%a = call <4 x i64> @vbcast_i64x4(i64 2)
%eq = call <4 x i64> @vpicmp_eq_i64x4(<4 x i64> %a, <4 x i64> %a)
%add1 = add <4 x i64> %a, %eq
ret <4 x i64> %add1
}
declare <4 x i64> @vpicmp_eq_i64x4(<4 x i64>, <4 x i64>)
declare <4 x i64> @vbcast_i64x4(i64)
swpp-compiler crashed: exception thrown from backend
unable to parse as ScalarRegister
(unable to parse v2 as ArgumentRegister)
[ ret <4 x i64> %add1]
이번 에러는 return 값이 vector일 때 발생하는 에러인 것 같습니다. 비슷한 결의 에러로 생각되어 같이 올립니다.
@grace0068 답변이 늦어져서 죄송합니다.
(제공되는 intrinsic을 제외한) 일반적인 함수는 arg1~arg16 레지스터에 호출 당시 인자들이 들어가야 하기 때문에 vector를 인자로 받는 함수를 사용할 수 없습니다. 이는 버그가 아니며, 수정 예정이 없습니다.
마찬가지로 ret 도 operand로 scalar register만을 받을 수 있기 때문에 vector를 반환하는 함수를 사용할 수 없습니다. 이 또한 수정 예정이 없습니다.
안녕하세요, 백엔드 에러를 찾아 제보하고자 합니다.
위 코드를 실행하면 백엔드에서 다음과 같은 exception이 발생합니다.
148 의 에러와 비슷한 종류로 생각되어
emitter.cpp
의 line 398을 수정하였으나 해결되지 않았습니다.함수 인자로 vector가 주어질 때 발생하는 에러로 추정됩니다.
확인 부탁드립니다 .감사합니다.