mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-09 13:33:17 +00:00
only run for x86 with fastisel. I've found it being very effective in eliminating some obvious dead code as result of formal parameter lowering especially when tail call optimization eliminated the need for some of the loads from fixed frame objects. It also shrinks a number of the tests. A couple of tests no longer make sense and are now eliminated. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95493 91177308-0d34-0410-b5e6-96231b3b80d8
94 lines
4.6 KiB
LLVM
94 lines
4.6 KiB
LLVM
; RUN: llc < %s -march=x86-64 | grep mov | count 5
|
|
|
|
%struct.COMPOSITE = type { i8, i16, i16 }
|
|
%struct.FILE = type { i8*, i32, i32, i16, i16, %struct.__sbuf, i32, i8*, i32 (i8*)*, i32 (i8*, i8*, i32)*, i64 (i8*, i64, i32)*, i32 (i8*, i8*, i32)*, %struct.__sbuf, %struct.__sFILEX*, i32, [3 x i8], [1 x i8], %struct.__sbuf, i32, i64 }
|
|
%struct.FILE_POS = type { i8, i8, i16, i32 }
|
|
%struct.FIRST_UNION = type { %struct.FILE_POS }
|
|
%struct.FONT_INFO = type { %struct.metrics*, i8*, i16*, %struct.COMPOSITE*, i32, %struct.rec*, %struct.rec*, i16, i16, i16*, i8*, i8*, i16* }
|
|
%struct.FOURTH_UNION = type { %struct.STYLE }
|
|
%struct.GAP = type { i8, i8, i16 }
|
|
%struct.LIST = type { %struct.rec*, %struct.rec* }
|
|
%struct.SECOND_UNION = type { { i16, i8, i8 } }
|
|
%struct.STYLE = type { { %struct.GAP }, { %struct.GAP }, i16, i16, i32 }
|
|
%struct.THIRD_UNION = type { %struct.FILE*, [8 x i8] }
|
|
%struct.__sFILEX = type opaque
|
|
%struct.__sbuf = type { i8*, i32 }
|
|
%struct.head_type = type { [2 x %struct.LIST], %struct.FIRST_UNION, %struct.SECOND_UNION, %struct.THIRD_UNION, %struct.FOURTH_UNION, %struct.rec*, { %struct.rec* }, %struct.rec*, %struct.rec*, %struct.rec*, %struct.rec*, %struct.rec*, %struct.rec*, %struct.rec*, %struct.rec*, i32 }
|
|
%struct.metrics = type { i16, i16, i16, i16, i16 }
|
|
%struct.rec = type { %struct.head_type }
|
|
|
|
define void @FontChange(i1 %foo) nounwind {
|
|
entry:
|
|
br i1 %foo, label %bb298, label %bb49
|
|
bb49: ; preds = %entry
|
|
ret void
|
|
bb298: ; preds = %entry
|
|
br i1 %foo, label %bb304, label %bb366
|
|
bb304: ; preds = %bb298
|
|
br i1 %foo, label %bb330, label %bb428
|
|
bb330: ; preds = %bb366, %bb304
|
|
br label %bb366
|
|
bb366: ; preds = %bb330, %bb298
|
|
br i1 %foo, label %bb330, label %bb428
|
|
bb428: ; preds = %bb366, %bb304
|
|
br i1 %foo, label %bb650, label %bb433
|
|
bb433: ; preds = %bb428
|
|
ret void
|
|
bb650: ; preds = %bb650, %bb428
|
|
%tmp658 = load i8* null, align 8 ; <i8> [#uses=1]
|
|
%tmp659 = icmp eq i8 %tmp658, 0 ; <i1> [#uses=1]
|
|
br i1 %tmp659, label %bb650, label %bb662
|
|
bb662: ; preds = %bb650
|
|
%tmp685 = icmp eq %struct.rec* null, null ; <i1> [#uses=1]
|
|
br i1 %tmp685, label %bb761, label %bb688
|
|
bb688: ; preds = %bb662
|
|
ret void
|
|
bb761: ; preds = %bb662
|
|
%tmp487248736542 = load i32* null, align 4 ; <i32> [#uses=2]
|
|
%tmp487648776541 = and i32 %tmp487248736542, 57344 ; <i32> [#uses=1]
|
|
%tmp4881 = icmp eq i32 %tmp487648776541, 8192 ; <i1> [#uses=1]
|
|
br i1 %tmp4881, label %bb4884, label %bb4897
|
|
bb4884: ; preds = %bb761
|
|
%tmp488948906540 = and i32 %tmp487248736542, 7168 ; <i32> [#uses=1]
|
|
%tmp4894 = icmp eq i32 %tmp488948906540, 1024 ; <i1> [#uses=1]
|
|
br i1 %tmp4894, label %bb4932, label %bb4897
|
|
bb4897: ; preds = %bb4884, %bb761
|
|
ret void
|
|
bb4932: ; preds = %bb4884
|
|
%tmp4933 = load i32* null, align 4 ; <i32> [#uses=1]
|
|
br i1 %foo, label %bb5054, label %bb4940
|
|
bb4940: ; preds = %bb4932
|
|
%tmp4943 = load i32* null, align 4 ; <i32> [#uses=2]
|
|
switch i32 %tmp4933, label %bb5054 [
|
|
i32 159, label %bb4970
|
|
i32 160, label %bb5002
|
|
]
|
|
bb4970: ; preds = %bb4940
|
|
%tmp49746536 = trunc i32 %tmp4943 to i16 ; <i16> [#uses=1]
|
|
%tmp49764977 = and i16 %tmp49746536, 4095 ; <i16> [#uses=1]
|
|
%mask498049814982 = zext i16 %tmp49764977 to i64 ; <i64> [#uses=1]
|
|
%tmp4984 = getelementptr %struct.FONT_INFO* null, i64 %mask498049814982, i32 5 ; <%struct.rec**> [#uses=1]
|
|
%tmp4985 = load %struct.rec** %tmp4984, align 8 ; <%struct.rec*> [#uses=1]
|
|
%tmp4988 = getelementptr %struct.rec* %tmp4985, i64 0, i32 0, i32 3 ; <%struct.THIRD_UNION*> [#uses=1]
|
|
%tmp4991 = bitcast %struct.THIRD_UNION* %tmp4988 to i32* ; <i32*> [#uses=1]
|
|
%tmp4992 = load i32* %tmp4991, align 8 ; <i32> [#uses=1]
|
|
%tmp49924993 = trunc i32 %tmp4992 to i16 ; <i16> [#uses=1]
|
|
%tmp4996 = add i16 %tmp49924993, 0 ; <i16> [#uses=1]
|
|
br label %bb5054
|
|
bb5002: ; preds = %bb4940
|
|
%tmp50066537 = trunc i32 %tmp4943 to i16 ; <i16> [#uses=1]
|
|
%tmp50085009 = and i16 %tmp50066537, 4095 ; <i16> [#uses=1]
|
|
%mask501250135014 = zext i16 %tmp50085009 to i64 ; <i64> [#uses=1]
|
|
%tmp5016 = getelementptr %struct.FONT_INFO* null, i64 %mask501250135014, i32 5 ; <%struct.rec**> [#uses=1]
|
|
%tmp5017 = load %struct.rec** %tmp5016, align 8 ; <%struct.rec*> [#uses=1]
|
|
%tmp5020 = getelementptr %struct.rec* %tmp5017, i64 0, i32 0, i32 3 ; <%struct.THIRD_UNION*> [#uses=1]
|
|
%tmp5023 = bitcast %struct.THIRD_UNION* %tmp5020 to i32* ; <i32*> [#uses=1]
|
|
%tmp5024 = load i32* %tmp5023, align 8 ; <i32> [#uses=1]
|
|
%tmp50245025 = trunc i32 %tmp5024 to i16 ; <i16> [#uses=1]
|
|
%tmp5028 = sub i16 %tmp50245025, 0 ; <i16> [#uses=1]
|
|
br label %bb5054
|
|
bb5054: ; preds = %bb5002, %bb4970, %bb4940, %bb4932
|
|
%flen.0.reg2mem.0 = phi i16 [ %tmp4996, %bb4970 ], [ %tmp5028, %bb5002 ], [ 0, %bb4932 ], [ undef, %bb4940 ] ; <i16> [#uses=0]
|
|
ret void
|
|
}
|