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:
Chris Lattner 2005-01-07 22:05:31 +00:00
parent 7cc4777a26
commit 9cd87dbccb
9 changed files with 5 additions and 241 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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 }

View File

@ -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

View File

@ -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:

View File

@ -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"

View File

@ -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"

View File

@ -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]*>