mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-10-31 08:16:47 +00:00 
			
		
		
		
	Essentially the same as the GEP change in r230786.
A similar migration script can be used to update test cases, though a few more
test case improvements/changes were required this time around: (r229269-r229278)
import fileinput
import sys
import re
pat = re.compile(r"((?:=|:|^)\s*load (?:atomic )?(?:volatile )?(.*?))(| addrspace\(\d+\) *)\*($| *(?:%|@|null|undef|blockaddress|getelementptr|addrspacecast|bitcast|inttoptr|\[\[[a-zA-Z]|\{\{).*$)")
for line in sys.stdin:
  sys.stdout.write(re.sub(pat, r"\1, \2\3*\4", line))
Reviewers: rafael, dexonsmith, grosser
Differential Revision: http://reviews.llvm.org/D7649
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@230794 91177308-0d34-0410-b5e6-96231b3b80d8
		
	
		
			
				
	
	
		
			175 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			LLVM
		
	
	
	
	
	
			
		
		
	
	
			175 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			LLVM
		
	
	
	
	
	
| ; RUN: opt -reassociate -disable-output < %s
 | |
| 
 | |
| 
 | |
| ; rdar://7507855
 | |
| define fastcc i32 @test1() nounwind {
 | |
| entry:
 | |
|   %cond = select i1 undef, i32 1, i32 -1          ; <i32> [#uses=2]
 | |
|   br label %for.cond
 | |
| 
 | |
| for.cond:                                         ; preds = %for.body, %entry
 | |
|   %sub889 = sub i32 undef, undef                  ; <i32> [#uses=1]
 | |
|   %sub891 = sub i32 %sub889, %cond                ; <i32> [#uses=0]
 | |
|   %add896 = sub i32 0, %cond                      ; <i32> [#uses=0]
 | |
|   ret i32 undef
 | |
| }
 | |
| 
 | |
| ; PR5981
 | |
| define i32 @test2() nounwind ssp {
 | |
| entry:
 | |
|   %0 = load i32, i32* undef, align 4
 | |
|   %1 = mul nsw i32 undef, %0
 | |
|   %2 = mul nsw i32 undef, %0
 | |
|   %3 = add nsw i32 undef, %1
 | |
|   %4 = add nsw i32 %3, %2
 | |
|   %5 = add nsw i32 %4, 4
 | |
|   %6 = shl i32 %0, 3
 | |
|   %7 = add nsw i32 %5, %6
 | |
|   br label %bb4.i9
 | |
| 
 | |
| bb4.i9:
 | |
|   %8 = add nsw i32 undef, %1
 | |
|   ret i32 0
 | |
| }
 | |
| 
 | |
| 
 | |
| define i32 @test3(i32 %Arg, i32 %x1, i32 %x2, i32 %x3) {
 | |
|  %A = mul i32 %x1, %Arg
 | |
|  %B = mul i32 %Arg, %x2 ;; Part of add operation being factored, also used by C
 | |
|  %C = mul i32 %x3, %B
 | |
| 
 | |
|  %D = add i32 %A, %B
 | |
|  %E = add i32 %D, %C
 | |
|   ret i32 %E
 | |
| }
 | |
| 
 | |
| 
 | |
| ; rdar://9096268
 | |
| define void @x66303361ae3f602889d1b7d0f86e5455(i8* %arg) nounwind {
 | |
| _:
 | |
|   br label %_33
 | |
| 
 | |
| _33:                                              ; preds = %_33, %_
 | |
|   %tmp348 = load i8, i8* %arg, align 1
 | |
|   %tmp349 = lshr i8 %tmp348, 7
 | |
|   %tmp350 = or i8 %tmp349, 42
 | |
|   %tmp351 = add i8 %tmp350, -42
 | |
|   %tmp352 = zext i8 %tmp351 to i32
 | |
|   %tmp358 = add i32 %tmp352, -501049439
 | |
|   %tmp359 = mul i32 %tmp358, %tmp358
 | |
|   %tmp360 = mul i32 %tmp352, %tmp352
 | |
|   %tmp361 = sub i32 %tmp359, %tmp360
 | |
|   %tmp362 = mul i32 %tmp361, -920056735
 | |
|   %tmp363 = add i32 %tmp362, 501049439
 | |
|   %tmp364 = add i32 %tmp362, -2000262972
 | |
|   %tmp365 = sub i32 %tmp363, %tmp364
 | |
|   %tmp366 = sub i32 -501049439, %tmp362
 | |
|   %tmp367 = add i32 %tmp365, %tmp366
 | |
|   br label %_33
 | |
| }
 | |
| 
 | |
| define void @test(i32 %a, i32 %b, i32 %c, i32 %d) {
 | |
|   %tmp.2 = xor i32 %a, %b		; <i32> [#uses=1]
 | |
|   %tmp.5 = xor i32 %c, %d		; <i32> [#uses=1]
 | |
|   %tmp.6 = xor i32 %tmp.2, %tmp.5		; <i32> [#uses=1]
 | |
|   %tmp.9 = xor i32 %c, %a		; <i32> [#uses=1]
 | |
|   %tmp.12 = xor i32 %b, %d		; <i32> [#uses=1]
 | |
|   %tmp.13 = xor i32 %tmp.9, %tmp.12		; <i32> [#uses=1]
 | |
|   %tmp.16 = xor i32 %tmp.6, %tmp.13		; <i32> [#uses=0]
 | |
|   ret void
 | |
| }
 | |
| 
 | |
| define i128 @foo() {
 | |
|   %mul = mul i128 0, 0
 | |
|   ret i128 %mul
 | |
| }
 | |
| 
 | |
| define void @infinite_loop() {
 | |
| entry:
 | |
|   br label %loop
 | |
| loop:
 | |
|   %x = phi i32 [undef, %entry], [%x, %loop]
 | |
|   %dead = add i32 %x, 0
 | |
|   br label %loop
 | |
| unreachable1:
 | |
|   %y1 = add i32 %y1, 0
 | |
|   %z1 = add i32 %y1, 0
 | |
|   ret void
 | |
| unreachable2:
 | |
|   %y2 = add i32 %y2, 0
 | |
|   %z2 = add i32 %y2, %y2
 | |
|   ret void
 | |
| unreachable3:
 | |
|   %y3 = add i32 %y3, %y3
 | |
|   %z3 = add i32 %y3, 0
 | |
|   ret void
 | |
| unreachable4:
 | |
|   %y4 = add i32 %y4, %y4
 | |
|   %z4 = add i32 %y4, %y4
 | |
|   ret void
 | |
| }
 | |
| 
 | |
| ; PR13185
 | |
| define void @pr13185(i16 %p) {
 | |
| entry:
 | |
|   br label %for.cond
 | |
| 
 | |
| for.cond:                                         ; preds = %for.cond, %entry
 | |
|   %x.0 = phi i32 [ undef, %entry ], [ %conv, %for.cond ]
 | |
|   %conv = zext i16 %p to i32
 | |
|   br label %for.cond
 | |
| }
 | |
| 
 | |
| ; PR12963
 | |
| @a = external global i8
 | |
| define i8 @f0(i8 %x) {
 | |
|   %t0 = load i8, i8* @a
 | |
|   %t1 = mul i8 %x, %x
 | |
|   %t2 = mul i8 %t1, %t1
 | |
|   %t3 = mul i8 %t2, %t2
 | |
|   %t4 = mul i8 %t3, %x
 | |
|   %t5 = mul i8 %t4, %t4
 | |
|   %t6 = mul i8 %t5, %x
 | |
|   %t7 = mul i8 %t6, %t0
 | |
|   ret i8 %t7
 | |
| }
 | |
| 
 | |
| define i32 @sozefx_(i32 %x, i32 %y) {
 | |
|   %t0 = sub i32 %x, %x
 | |
|   %t1 = mul i32 %t0, %t0
 | |
|   %t2 = mul i32 %x, %t0
 | |
|   %t3 = mul i32 %t1, %t1
 | |
|   %t4 = add i32 %t2, %t3
 | |
|   %t5 = mul i32 %x, %y
 | |
|   %t6 = add i32 %t4, %t5
 | |
|   ret i32 %t6
 | |
| }
 | |
| 
 | |
| define i32 @bar(i32 %arg, i32 %arg1, i32 %arg2) {
 | |
|   %tmp1 = mul i32 %arg1, 2
 | |
|   %tmp2 = mul i32 %tmp1, 3
 | |
|   %tmp3 = mul i32 %arg2, 2
 | |
|   %tmp4 = add i32 %tmp1, 1 ; dead code
 | |
|   %ret = add i32 %tmp2, %tmp3
 | |
|   ret i32 %ret
 | |
| }
 | |
| 
 | |
| ; PR14060
 | |
| define i8 @hang(i8 %p, i8 %p0, i8 %p1, i8 %p2, i8 %p3, i8 %p4, i8 %p5, i8 %p6, i8 %p7, i8 %p8, i8 %p9) {
 | |
|   %tmp = zext i1 false to i8
 | |
|   %tmp16 = or i8 %tmp, 1
 | |
|   %tmp22 = or i8 %p7, %p0
 | |
|   %tmp23 = or i8 %tmp16, %tmp22
 | |
|   %tmp28 = or i8 %p9, %p1
 | |
|   %tmp31 = or i8 %tmp23, %p2
 | |
|   %tmp32 = or i8 %tmp31, %tmp28
 | |
|   %tmp38 = or i8 %p8, %p3
 | |
|   %tmp39 = or i8 %tmp16, %tmp38
 | |
|   %tmp43 = or i8 %tmp39, %p4
 | |
|   %tmp44 = or i8 %tmp43, 1
 | |
|   %tmp47 = or i8 %tmp32, %p5
 | |
|   %tmp50 = or i8 %tmp47, %p6
 | |
|   %tmp51 = or i8 %tmp44, %tmp50
 | |
|   ret i8 %tmp51
 | |
| }
 |