Open sbkim28 opened 5 months ago
안녕하세요, 백엔드에서 오류가 발생하는 것을 확인하여 이를 제보하고자 합니다.
다음은 제가 임의로 작성한 코드입니다.
define dso_local i32 @main() #0 { entry: %call = call i64 (...) @read() %v1 = call <4 x i64> @vicmp_eq_i64x4(<4 x i64> undef, <4 x i64> undef) %v2 = call <4 x i64> @vicmp_eq_i64x4(<4 x i64> undef, <4 x i64> undef) %v3 = call <4 x i64> @vicmp_eq_i64x4(<4 x i64> undef, <4 x i64> undef) %v4 = call <4 x i64> @vicmp_eq_i64x4(<4 x i64> undef, <4 x i64> undef) %v5 = call <4 x i64> @vicmp_eq_i64x4(<4 x i64> undef, <4 x i64> undef) %v6 = call <4 x i64> @vicmp_eq_i64x4(<4 x i64> undef, <4 x i64> undef) %v7 = call <4 x i64> @vicmp_eq_i64x4(<4 x i64> undef, <4 x i64> undef) %e1 = extractelement <4 x i64> %v1, i32 0 %e2 = extractelement <4 x i64> %v2, i32 0 %e3 = extractelement <4 x i64> %v3, i32 0 %e4 = extractelement <4 x i64> %v4, i32 0 %e5 = extractelement <4 x i64> %v5, i32 0 %e6 = extractelement <4 x i64> %v6, i32 0 %e7 = extractelement <4 x i64> %v7, i32 0 call void @write(i64 noundef %e1) call void @write(i64 noundef %e2) call void @write(i64 noundef %e3) call void @write(i64 noundef %e4) call void @write(i64 noundef %e5) call void @write(i64 noundef %e6) call void @write(i64 noundef %e7) ret i32 0 }
해당 코드를 컴파일하면 백엔드에서 exception이 발생하는데, 그 내용은 다음과 같습니다.
unable to parse v7 as VectorRegister [ %v7 = call <4 x i64> @vicmp_eq_i64x4(<4 x i64> undef, <4 x i64> undef)]
문제가 되는 부분은 emitter.cpp에서 line 398입니다.
emitter.cpp
const std::map<std::string, VectorRegister, std::less<>> vector_reg_table = { {"v1"s, VectorRegister::V1}, {"v2"s, VectorRegister::V2}, {"v3"s, VectorRegister::V3}, {"v4"s, VectorRegister::V4}, {"v5"s, VectorRegister::V5}, {"v6"s, VectorRegister::V6}, {"ve"s, VectorRegister::V7}, {"v8"s, VectorRegister::V8}, {"v9"s, VectorRegister::V9}, {"v10"s, VectorRegister::V10}, {"v11"s, VectorRegister::V11}, {"v12"s, VectorRegister::V12}, {"v13"s, VectorRegister::V13}, {"v14"s, VectorRegister::V14}, {"v15"s, VectorRegister::V15}, {"v16"s, VectorRegister::V16}, };
v7 대신 ve가 사용되어서 레지스터 할당 과정에서 문제가 생기는 것 같습니다. 해당 문제를 확인해주셨으면 합니다.
v7
ve
감사합니다.
제보 감사합니다. 백엔드 패치로 수정 예정입니다.
안녕하세요, 백엔드에서 오류가 발생하는 것을 확인하여 이를 제보하고자 합니다.
다음은 제가 임의로 작성한 코드입니다.
해당 코드를 컴파일하면 백엔드에서 exception이 발생하는데, 그 내용은 다음과 같습니다.
문제가 되는 부분은
emitter.cpp
에서 line 398입니다.v7
대신ve
가 사용되어서 레지스터 할당 과정에서 문제가 생기는 것 같습니다. 해당 문제를 확인해주셨으면 합니다.감사합니다.