기본적으로, 내가 3 명령을 가지고 있다고 가정하십시오 : load $src
, store $dest
및 modify
.LLVM : 몇 가지 명령어/내장 함수를 여러 개의 연결된 명령어로 변환하는 방법은 무엇입니까?
는 그리고 난 그냥 직접 액세스 할 수없는 특수 레지스터를 수정
load $x
modify
store $x
로드 및 저장처럼 뭔가 거라고 고유/명령 foo $x
을 추가 할 수 있습니다. 내가 직면 한 문제는 어떤 이유로 여러 명령어를 출력하는 테이블 gen의 Pattern<...>
이 컴파일되지 않으며 명령어가 서로 다른 결과를 직접 사용하지 않기 때문에 Pat<...>
이 수행하지 않기 때문입니다 (즉, 특수 레지스터 매개 변수는 암시 적입니다), 그래서 나는 그들로부터 단일 노드의 dag 패턴을 생성 할 수 없다.
어떻게 해결할 수 있습니까? 나는 의사의 지시에 돌고 여러 지침을 낮추는 생각,하지만 난 컴파일러가
load $x
modify
modify
store $x
그런 식으로 foo $x
연속 두 가지를 최적화 할 수있을 것입니다 확실하지 않다.