mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-14 11:32:34 +00:00
Cleanup a bunch of tests. In particular do not allow target directives in
the .ll file or it forces the V9 backend. This is the CodeGen/Generic dir, so there is no use in doing that. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19355 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
7cc4777a26
commit
9cd87dbccb
@ -1,61 +1,6 @@
|
|||||||
; RUN: llvm-as -f %s -o - | llc
|
; RUN: llvm-as -f %s -o - | llc
|
||||||
|
|
||||||
;; Date: May 28, 2003.
|
void %QRiterate(int %p.1, double %tmp.212) {
|
||||||
;; From: test/Programs/MultiSource/McCat-05-eks/QRfact.c
|
|
||||||
;; Function: Matrix QRiterate(Matrix A, Matrix U)
|
|
||||||
;;
|
|
||||||
;; Error: llc produces an invalid register <NULL VALUE> for the
|
|
||||||
;; phi argument %tmp.213 produced by fcmpd:
|
|
||||||
;;
|
|
||||||
;; LLC Output:
|
|
||||||
;;
|
|
||||||
;; !****** Outputing Function: QRiterate_1 ******
|
|
||||||
;;
|
|
||||||
;; .section ".text"
|
|
||||||
;; .align 4
|
|
||||||
;; .global QRiterate_1
|
|
||||||
;; .type QRiterate_1, 2
|
|
||||||
;; QRiterate_1:
|
|
||||||
;; .L_QRiterate_1_LL_0:
|
|
||||||
;; save %o6, -192, %o6
|
|
||||||
;; brgz %i0, .L_QRiterate_1_LL_1
|
|
||||||
;; add %g0, %g0, %o0
|
|
||||||
;; ba .L_QRiterate_1_LL_2
|
|
||||||
;; nop
|
|
||||||
;;
|
|
||||||
;; .L_QRiterate_1_LL_1:
|
|
||||||
;; sethi %lm(LLVMGlobal__2), %o1
|
|
||||||
;; sethi %hh(LLVMGlobal__2), %o0
|
|
||||||
;; or %o0, %hm(LLVMGlobal__2), %o0
|
|
||||||
;; sllx %o0, 32, %o0
|
|
||||||
;; or %o1, %o0, %o1
|
|
||||||
;; or %o1, %lo(LLVMGlobal__2), %o1
|
|
||||||
;; ldd [%o1+0], %f32
|
|
||||||
;; fcmpd %fcc0, %f2, %f32
|
|
||||||
;; ba .L_QRiterate_1_LL_2
|
|
||||||
;; add <NULL VALUE>, %g0, %o0
|
|
||||||
;;
|
|
||||||
;; .L_QRiterate_1_LL_2:
|
|
||||||
;; brnz %o0, .L_QRiterate_1_LL_1
|
|
||||||
;; nop
|
|
||||||
;; ba .L_QRiterate_1_LL_3
|
|
||||||
;; nop
|
|
||||||
;;
|
|
||||||
;; .L_QRiterate_1_LL_3:
|
|
||||||
;; jmpl %i7+8, %g0
|
|
||||||
;; restore %g0, 0, %g0
|
|
||||||
;;
|
|
||||||
;; .EndOf_QRiterate_1:
|
|
||||||
;; .size QRiterate_1, .EndOf_QRiterate_1-QRiterate_1
|
|
||||||
;;
|
|
||||||
|
|
||||||
|
|
||||||
target endian = big
|
|
||||||
target pointersize = 64
|
|
||||||
|
|
||||||
implementation ; Functions:
|
|
||||||
|
|
||||||
internal void %QRiterate(int %p.1, double %tmp.212) {
|
|
||||||
entry: ; No predecessors!
|
entry: ; No predecessors!
|
||||||
%tmp.184 = setgt int %p.1, 0 ; <bool> [#uses=1]
|
%tmp.184 = setgt int %p.1, 0 ; <bool> [#uses=1]
|
||||||
br bool %tmp.184, label %shortcirc_next.1, label %shortcirc_done.1
|
br bool %tmp.184, label %shortcirc_next.1, label %shortcirc_done.1
|
||||||
|
@ -1,59 +1,7 @@
|
|||||||
; RUN: llvm-as -f %s -o - | llc
|
; RUN: llvm-as -f %s -o - | llc
|
||||||
|
|
||||||
;; Date: May 27, 2003.
|
|
||||||
;; From: Variant of 2003-05-27-usefsubasbool.ll
|
|
||||||
;;
|
|
||||||
;; Error: llc fails to save a boolean value in a register (and later uses an
|
|
||||||
;; invalid register <NULL VALUE> in a BRNZ) for a boolean value
|
|
||||||
;; used only by branches but in a different basic block.
|
|
||||||
;;
|
|
||||||
;; Cause: In SparcInstrSelection.cpp, for SetCC, when a result of setCC
|
|
||||||
;; is used only for branches, it is not saved into an int. register.
|
|
||||||
;; But if the boolean is used in a branch in a different basic block,
|
|
||||||
;; that branch uses a BRNZ inst. instead of a branch-on-CC.
|
|
||||||
;;
|
|
||||||
;; LLC Output before fix:
|
|
||||||
;; !****** Outputing Function: QRiterate_1 ******
|
|
||||||
;;
|
|
||||||
;; .section ".text"
|
|
||||||
;; .align 4
|
|
||||||
;; .global QRiterate_1
|
|
||||||
;; .type QRiterate_1, 2
|
|
||||||
;; QRiterate_1:
|
|
||||||
;; .L_QRiterate_1_LL_0:
|
|
||||||
;; save %o6, -192, %o6
|
|
||||||
;; sethi %lm(LLVMGlobal__2), %o2
|
|
||||||
;; sethi %hh(LLVMGlobal__2), %o1
|
|
||||||
;; or %o1, %hm(LLVMGlobal__2), %o1
|
|
||||||
;; sllx %o1, 32, %o1
|
|
||||||
;; or %o2, %o1, %o2
|
|
||||||
;; or %o2, %lo(LLVMGlobal__2), %o2
|
|
||||||
;; ldd [%o2+0], %f32
|
|
||||||
;; fcmpd %fcc0, %f0, %f32
|
|
||||||
;; ba .L_QRiterate_1_LL_1
|
|
||||||
;; nop
|
|
||||||
;;
|
|
||||||
;; .L_QRiterate_1_LL_1:
|
|
||||||
;; brnz <NULL_VALUE>, .L_QRiterate_1_LL_1
|
|
||||||
;; nop
|
|
||||||
;; ba .L_QRiterate_1_LL_2
|
|
||||||
;; nop
|
|
||||||
;;
|
|
||||||
;; .L_QRiterate_1_LL_2:
|
|
||||||
;; jmpl %i7+8, %g0
|
|
||||||
;; restore %g0, 0, %g0
|
|
||||||
;;
|
|
||||||
;; .EndOf_QRiterate_1:
|
|
||||||
;; .size QRiterate_1, .EndOf_QRiterate_1-QRiterate_1
|
|
||||||
;;
|
|
||||||
|
|
||||||
target endian = big
|
void %QRiterate(double %tmp.212) {
|
||||||
target pointersize = 64
|
|
||||||
|
|
||||||
implementation ; Functions:
|
|
||||||
|
|
||||||
internal void %QRiterate(double %tmp.212) {
|
|
||||||
entry: ; No predecessors!
|
|
||||||
%tmp.213 = setne double %tmp.212, 0.000000e+00
|
%tmp.213 = setne double %tmp.212, 0.000000e+00
|
||||||
br label %shortcirc_next.1
|
br label %shortcirc_next.1
|
||||||
|
|
||||||
|
@ -1,58 +1,6 @@
|
|||||||
; RUN: llvm-as -f %s -o - | llc
|
; RUN: llvm-as -f %s -o - | llc
|
||||||
|
|
||||||
;; Date: May 27, 2003.
|
void %QRiterate(double %tmp.212) {
|
||||||
;; From: test/Programs/MultiSource/McCat-05-eks/QRfact.c
|
|
||||||
;; Function: Matrix QRiterate(Matrix A, Matrix U)
|
|
||||||
;;
|
|
||||||
;; Error: llc produces an invalid register <NULL VALUE> for the
|
|
||||||
;; a boolean value computed using setne with a double.
|
|
||||||
;;
|
|
||||||
;; Cause: In SparcInstrSelection.cpp, for SetCC, when a result of setne
|
|
||||||
;; is used for a branch, it can generate a "branch-on-integer-register"
|
|
||||||
;; for integer registers. In that case, it never saves the value of
|
|
||||||
;; the boolean result. It was attempting to do the same thing for an
|
|
||||||
;; FP compare!
|
|
||||||
;;
|
|
||||||
;; LLC Output:
|
|
||||||
;; !****** Outputing Function: QRiterate_1 ******
|
|
||||||
;;
|
|
||||||
;; .section ".text"
|
|
||||||
;; .align 4
|
|
||||||
;; .global QRiterate_1
|
|
||||||
;; .type QRiterate_1, 2
|
|
||||||
;; QRiterate_1:
|
|
||||||
;; .L_QRiterate_1_LL_0:
|
|
||||||
;; save %o6, -192, %o6
|
|
||||||
;; sethi %hh(LLVMGlobal__2), %o1
|
|
||||||
;; sethi %lm(LLVMGlobal__2), %o0
|
|
||||||
;; or %o1, %hm(LLVMGlobal__2), %o1
|
|
||||||
;; sllx %o1, 32, %o1
|
|
||||||
;; or %o0, %o1, %o0
|
|
||||||
;; or %o0, %lo(LLVMGlobal__2), %o0
|
|
||||||
;; ldd [%o0+0], %f32
|
|
||||||
;; ba .L_QRiterate_1_LL_1
|
|
||||||
;; fcmpd %fcc0, %f0, %f32
|
|
||||||
;;
|
|
||||||
;; .L_QRiterate_1_LL_1:
|
|
||||||
;; brnz <NULL VALUE>, .L_QRiterate_1_LL_1
|
|
||||||
;; nop
|
|
||||||
;; ba .L_QRiterate_1_LL_2
|
|
||||||
;; nop
|
|
||||||
;;
|
|
||||||
;; .L_QRiterate_1_LL_2:
|
|
||||||
;; jmpl %i7+8, %g0
|
|
||||||
;; restore %g0, 0, %g0
|
|
||||||
;;
|
|
||||||
;; .EndOf_QRiterate_1:
|
|
||||||
;; .size QRiterate_1, .EndOf_QRiterate_1-QRiterate_1
|
|
||||||
;;
|
|
||||||
|
|
||||||
target endian = big
|
|
||||||
target pointersize = 64
|
|
||||||
|
|
||||||
implementation ; Functions:
|
|
||||||
|
|
||||||
internal void %QRiterate(double %tmp.212) {
|
|
||||||
entry: ; No predecessors!
|
entry: ; No predecessors!
|
||||||
br label %shortcirc_next.1
|
br label %shortcirc_next.1
|
||||||
|
|
||||||
|
@ -19,8 +19,6 @@
|
|||||||
;; and/or to stack locations as needed.
|
;; and/or to stack locations as needed.
|
||||||
;;
|
;;
|
||||||
|
|
||||||
target endian = little
|
|
||||||
target pointersize = 32
|
|
||||||
%struct..s_annealing_sched = type { uint, float, float, float, float }
|
%struct..s_annealing_sched = type { uint, float, float, float, float }
|
||||||
%struct..s_chan = type { uint, float, float, float, float }
|
%struct..s_chan = type { uint, float, float, float, float }
|
||||||
%struct..s_det_routing_arch = type { uint, float, float, float, uint, int, short, short, short, float, float }
|
%struct..s_det_routing_arch = type { uint, float, float, float, uint, int, short, short, short, float, float }
|
||||||
|
@ -8,33 +8,7 @@
|
|||||||
;; the Phi instead of in predecessor blocks. This later
|
;; the Phi instead of in predecessor blocks. This later
|
||||||
;; causes llc to produces an invalid register <NULL VALUE>
|
;; causes llc to produces an invalid register <NULL VALUE>
|
||||||
;; for the phi arguments.
|
;; for the phi arguments.
|
||||||
;;
|
|
||||||
;; PreSelection Output:
|
|
||||||
;; *** LLVM code after pre-selection for function handlerfn:
|
|
||||||
;;
|
|
||||||
;;
|
|
||||||
;; %struct..task* %handlerfn(%struct..packet*) {
|
|
||||||
;; ; <label>:0 ; No predecessors!
|
|
||||||
;; setne %struct..packet* %0, null ; <bool>:0 [#uses=1]
|
|
||||||
;; br bool %0, label %1, label %2
|
|
||||||
;;
|
|
||||||
;; ; <label>:1 ; preds = %0
|
|
||||||
;; br label %2
|
|
||||||
;;
|
|
||||||
;; ; <label>:2 ; preds = %0, %1
|
|
||||||
;; %addrOfGlobal = getelementptr int* %v2, long 0 ; <int*> [#uses=1]
|
|
||||||
;; %addrOfGlobal1 = getelementptr int* %v1, long 0 ; <int*> [#uses=1]
|
|
||||||
;; phi int* [ %addrOfGlobal, %1 ], [ %addrOfGlobal1, %0 ] ; <int*>:0 [#uses=1]
|
|
||||||
;; cast int* %0 to %struct..packet* ; <%struct..packet*>:1 [#uses=1]
|
|
||||||
;; call void %append( %struct..packet* %0, %struct..packet* %1 )
|
|
||||||
;; ret %struct..task* null
|
|
||||||
;; }
|
|
||||||
;; llc: ../../../include/llvm/CodeGen/MachineInstr.h:294: int MachineOperand::getAllocatedRegNum() const: Assertion `hasAllocatedReg()' failed.
|
|
||||||
;;
|
|
||||||
|
|
||||||
|
|
||||||
target endian = little
|
|
||||||
target pointersize = 32
|
|
||||||
%struct..packet = type { %struct..packet*, int, int, int, [4 x sbyte] }
|
%struct..packet = type { %struct..packet*, int, int, int, [4 x sbyte] }
|
||||||
%struct..task = type { %struct..task*, int, int, %struct..packet*, int, %struct..task* (%struct..packet*)*, int, int }
|
%struct..task = type { %struct..task*, int, int, %struct..packet*, int, %struct..task* (%struct..packet*)*, int, int }
|
||||||
%v1 = external global int
|
%v1 = external global int
|
||||||
|
@ -11,36 +11,9 @@
|
|||||||
;; Error: llc generates a branch-on-xcc instead of branch-on-icc, which
|
;; Error: llc generates a branch-on-xcc instead of branch-on-icc, which
|
||||||
;; is wrong because the value being compared (int euclid = x*x + y*y)
|
;; is wrong because the value being compared (int euclid = x*x + y*y)
|
||||||
;; overflows, so that the 64-bit and 32-bit compares are not equal.
|
;; overflows, so that the 64-bit and 32-bit compares are not equal.
|
||||||
;;
|
|
||||||
;; LLC Output:
|
|
||||||
;;
|
|
||||||
;; !****** Outputing Function: CheckOutside_34 ******
|
|
||||||
;; .align 4
|
|
||||||
;; .global CheckOutside_34
|
|
||||||
;; .type CheckOutside_34, 2
|
|
||||||
;; CheckOutside_34:
|
|
||||||
;; .L_CheckOutside_34_LL_0:
|
|
||||||
;; save %o6, -192, %o6
|
|
||||||
;; mulx %i1, %i1, %i1
|
|
||||||
;; mulx %i0, %i0, %i0
|
|
||||||
;; sethi %lm(4194304), %o1
|
|
||||||
;; or %g0, 1, %o0
|
|
||||||
;; add %i0, %i1, %i0
|
|
||||||
;; sra %o1, 0, %o1
|
|
||||||
;; subcc %i0, %o1, %g0
|
|
||||||
;; bg %xcc, .L_CheckOutside_34_LL_3
|
|
||||||
;; nop
|
|
||||||
;; ba .L_CheckOutside_34_LL_1
|
|
||||||
;; nop
|
|
||||||
;; ...
|
|
||||||
;;
|
|
||||||
;;
|
|
||||||
|
|
||||||
|
%.str_1 = internal constant [6 x sbyte] c"true\0A\00"
|
||||||
target endian = little
|
%.str_2 = internal constant [7 x sbyte] c"false\0A\00"
|
||||||
target pointersize = 32
|
|
||||||
%.str_1 = internal constant [6 x sbyte] c"true\0A\00" ; <[6 x sbyte]*> [#uses=1]
|
|
||||||
%.str_2 = internal constant [7 x sbyte] c"false\0A\00" ; <[7 x sbyte]*> [#uses=1]
|
|
||||||
|
|
||||||
implementation ; Functions:
|
implementation ; Functions:
|
||||||
|
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
; RUN: llvm-as -f %s -o - | llc
|
; RUN: llvm-as -f %s -o - | llc
|
||||||
|
|
||||||
target endian = big
|
|
||||||
target pointersize = 64
|
|
||||||
|
|
||||||
%.str_1 = internal constant [42 x sbyte] c" ui = %u (0x%x)\09\09UL-ui = %lld (0x%llx)\0A\00"
|
%.str_1 = internal constant [42 x sbyte] c" ui = %u (0x%x)\09\09UL-ui = %lld (0x%llx)\0A\00"
|
||||||
|
|
||||||
|
@ -10,21 +10,6 @@
|
|||||||
;; (2) (A or NOT(B)) was being folded into A orn B, which is ok
|
;; (2) (A or NOT(B)) was being folded into A orn B, which is ok
|
||||||
;; for bitwise operations but not booleans! For booleans,
|
;; for bitwise operations but not booleans! For booleans,
|
||||||
;; the result has to be compared with 0.
|
;; the result has to be compared with 0.
|
||||||
;;
|
|
||||||
;; LLC Output for the basic block (LLVM assembly is shown below):
|
|
||||||
;;
|
|
||||||
;; .L_adj_7_LL_4:
|
|
||||||
;; sethi 0, %i0
|
|
||||||
;; subcc %i1, 2, %g0
|
|
||||||
;; move %icc, 1, %i0
|
|
||||||
;; orn %i0, %i1, %i0
|
|
||||||
;; ba .L_adj_7_LL_5
|
|
||||||
;; nop
|
|
||||||
;;
|
|
||||||
|
|
||||||
|
|
||||||
target endian = big
|
|
||||||
target pointersize = 64
|
|
||||||
|
|
||||||
%.str_1 = internal constant [30 x sbyte] c"d = %d, ct = %d, d ^ ct = %d\0A\00"
|
%.str_1 = internal constant [30 x sbyte] c"d = %d, ct = %d, d ^ ct = %d\0A\00"
|
||||||
|
|
||||||
|
@ -2,11 +2,6 @@
|
|||||||
|
|
||||||
; On this code, llc did not pass the sixth argument (%reg321) to printf.
|
; On this code, llc did not pass the sixth argument (%reg321) to printf.
|
||||||
; It passed the first five in %o0 - %o4, but never initialized %o5.
|
; It passed the first five in %o0 - %o4, but never initialized %o5.
|
||||||
; Fix in SparcInstrSelection.cpp:
|
|
||||||
; 2030c2030
|
|
||||||
; - if (i < target.getRegInfo().GetNumOfIntArgRegs())
|
|
||||||
; + if (i <= target.getRegInfo().GetNumOfIntArgRegs())
|
|
||||||
;
|
|
||||||
|
|
||||||
%.LC12 = internal global [44 x sbyte] c"\09\09M = %g, I = %g, V = %g\0A\09\09O = %g, E = %g\0A\0A\00" ; <[44 x sbyte]*>
|
%.LC12 = internal global [44 x sbyte] c"\09\09M = %g, I = %g, V = %g\0A\09\09O = %g, E = %g\0A\0A\00" ; <[44 x sbyte]*>
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user