mirror of
https://github.com/RPCS3/llvm.git
synced 2025-04-14 20:10:58 +00:00

Switch to MC for instruction printing. This encompasses several changes which are all interconnected: - Use the MC framework for printing almost all instructions. - AsmStrings are now live. - This introduces an indirection between LLVM vregs and WebAssembly registers, and a new pass, WebAssemblyRegNumbering, for computing a basic the mapping. This addresses some basic issues with argument registers and unused registers. - The way ARGUMENT instructions are handled no longer generates redundant get_local+set_local for every argument. This also changes the assembly syntax somewhat; most notably, MC's printing does not use sigils on label names, so those are no longer present, and push/pop now have a sigil to keep them unambiguous. The usage of set_local/get_local/$push/$pop will continue to evolve significantly. This patch is just one step of a larger change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@252910 91177308-0d34-0410-b5e6-96231b3b80d8
33 lines
1.1 KiB
LLVM
33 lines
1.1 KiB
LLVM
; RUN: llc < %s -asm-verbose=false | FileCheck %s
|
|
|
|
target datalayout = "e-p:32:32-i64:64-n32:64-S128"
|
|
target triple = "wasm32-unknown-unknown"
|
|
|
|
; CHECK-LABEL: .text
|
|
; CHECK-LABEL: f:
|
|
define void @f(i32 %a, float %b, i128 %c, i1 %d) {
|
|
tail call i32 @printi(i32 %a)
|
|
tail call float @printf(float %b)
|
|
tail call void @printv()
|
|
tail call void @split_arg(i128 %c)
|
|
tail call void @expanded_arg(i1 %d)
|
|
tail call i1 @lowered_result()
|
|
ret void
|
|
}
|
|
|
|
; CHECK-LABEL: .imports
|
|
; CHECK-NEXT: .import printi "" printi (param i32) (result i32){{$}}
|
|
; CHECK-NEXT: .import printf "" printf (param f32) (result f32){{$}}
|
|
; CHECK-NEXT: .import printv "" printv{{$}}
|
|
; CHECK-NEXT: .import add2 "" add2 (param i32 i32) (result i32){{$}}
|
|
; CHECK-NEXT: .import split_arg "" split_arg (param i64 i64){{$}}
|
|
; CHECK-NEXT: .import expanded_arg "" expanded_arg (param i32){{$}}
|
|
; CHECK-NEXT: .import lowered_result "" lowered_result (result i32){{$}}
|
|
declare i32 @printi(i32)
|
|
declare float @printf(float)
|
|
declare void @printv()
|
|
declare i32 @add2(i32, i32)
|
|
declare void @split_arg(i128)
|
|
declare void @expanded_arg(i1)
|
|
declare i1 @lowered_result()
|